From 90885fb3367b9fb1e8a524c27da7896296520d50 Mon Sep 17 00:00:00 2001 From: ko_no <90126004+MrKono@users.noreply.github.com> Date: Sat, 25 Jul 2026 14:30:44 +0900 Subject: [PATCH 01/16] [add] new dependencies --- buildscript.properties | 1 + dependencies.gradle | 8 ++++++++ 2 files changed, 9 insertions(+) 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") + } } From da57129301784f488b78cb271f053f1e77838e02 Mon Sep 17 00:00:00 2001 From: ko_no <90126004+MrKono@users.noreply.github.com> Date: Sat, 25 Jul 2026 16:14:14 +0900 Subject: [PATCH 02/16] [add] ExNihilo Integration --- .../github/gtexpert/gtmt/api/util/Mods.java | 2 + .../integration/exnihilo/ExNihiloModule.java | 65 +++++++++++++++++++ .../github/gtexpert/gtmt/modules/Modules.java | 1 + 3 files changed, 68 insertions(+) create mode 100644 src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/ExNihiloModule.java 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..12d52f5 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_NIHOLO), 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_NIHOLO = "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/ExNihiloModule.java b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/ExNihiloModule.java new file mode 100644 index 0000000..3c99034 --- /dev/null +++ b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/ExNihiloModule.java @@ -0,0 +1,65 @@ +package com.github.gtexpert.gtmt.integration.exnihilo; + +import java.util.Collections; +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.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 org.jetbrains.annotations.NotNull; + +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.IntegrationModule; +import com.github.gtexpert.gtmt.modules.Modules; + +@TModule( + moduleID = Modules.MODULE_EXNIHILO, + containerID = ModValues.MODID, + modDependencies = Mods.Names.EX_NIHOLO, + name = "GTMoreTools Ex Nihilo Creatio Integration", + description = "Ex Nihilo Creatio Module") +public class ExNihiloModule extends IntegrationModule { + + @NotNull + @Override + public List> getEventBusSubscribers() { + return Collections.singletonList(ExNihiloModule.class); + } + + @Override + public void preInit(FMLPreInitializationEvent event) {} + + @Override + public void postInit(FMLPostInitializationEvent event) {} + + @SubscribeEvent + public static void onRegisterItems(RegistryEvent.Register event) {} + + @SubscribeEvent + @SideOnly(Side.CLIENT) + public static void onRegisterModels(ModelRegistryEvent event) {} + + @SubscribeEvent + @SideOnly(Side.CLIENT) + public static void onRegisterColors(ColorHandlerEvent.Item event) {} + + @Override + public void registerBlocks(RegistryEvent.Register event) {} + + @Override + public void registerRecipesNormal(RegistryEvent.Register event) {} + + @Override + public void registerRecipesLowest(RegistryEvent.Register event) {} +} 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"; From 1e8eed20faeadb8e5903eef661f84ebd4ad997d6 Mon Sep 17 00:00:00 2001 From: ko_no <90126004+MrKono@users.noreply.github.com> Date: Sat, 25 Jul 2026 22:39:00 +0900 Subject: [PATCH 03/16] Crook Time!! --- .../exnihilo/ExNihiloConfigHolder.java | 17 ++++ .../integration/exnihilo/ExNihiloModule.java | 28 +++++-- .../exnihilo/recipes/ExNihiloToolRecipe.java | 76 ++++++++++++++++++ .../exnihilo/tools/ExNihiloToolsItems.java | 61 ++++++++++++++ .../resources/assets/gtmt/lang/en_us.lang | 3 + .../resources/assets/gtmt/lang/ja_jp.lang | 3 + .../assets/gtmt/models/item/tools/crook.json | 7 ++ .../gtmt/textures/items/tools/crook.png | Bin 0 -> 404 bytes 8 files changed, 190 insertions(+), 5 deletions(-) create mode 100644 src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/ExNihiloConfigHolder.java create mode 100644 src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/recipes/ExNihiloToolRecipe.java create mode 100644 src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/tools/ExNihiloToolsItems.java create mode 100644 src/main/resources/assets/gtmt/models/item/tools/crook.json create mode 100644 src/main/resources/assets/gtmt/textures/items/tools/crook.png 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..4383b09 --- /dev/null +++ b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/ExNihiloConfigHolder.java @@ -0,0 +1,17 @@ +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({ "Replaces the original Crooks with GT Crooks or recipe.", "Affected: Wood, Iron, Gold, Diamond.", + "Default: false" }) + public static boolean replaceCrook = false; +} 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 index 3c99034..869bec8 100644 --- a/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/ExNihiloModule.java +++ b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/ExNihiloModule.java @@ -14,13 +14,18 @@ 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.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.IntegrationModule; +import com.github.gtexpert.gtmt.integration.exnihilo.recipes.ExNihiloToolRecipe; +import com.github.gtexpert.gtmt.integration.exnihilo.tools.ExNihiloToolsItems; import com.github.gtexpert.gtmt.modules.Modules; @TModule( @@ -38,21 +43,32 @@ public List> getEventBusSubscribers() { } @Override - public void preInit(FMLPreInitializationEvent event) {} + public void preInit(FMLPreInitializationEvent event) { + ExNihiloToolsItems.init(); + } @Override public void postInit(FMLPostInitializationEvent event) {} @SubscribeEvent - public static void onRegisterItems(RegistryEvent.Register event) {} + public static void onRegisterItems(RegistryEvent.Register event) { + IForgeRegistry registry = event.getRegistry(); + for (IGTTool tool : ExNihiloToolsItems.getAllTools()) { + registry.register(tool.get()); + } + } @SubscribeEvent @SideOnly(Side.CLIENT) - public static void onRegisterModels(ModelRegistryEvent event) {} + public static void onRegisterModels(ModelRegistryEvent event) { + ExNihiloToolsItems.registerModels(); + } @SubscribeEvent @SideOnly(Side.CLIENT) - public static void onRegisterColors(ColorHandlerEvent.Item event) {} + public static void onRegisterColors(ColorHandlerEvent.Item event) { + ExNihiloToolsItems.registerColors(event.getItemColors()); + } @Override public void registerBlocks(RegistryEvent.Register event) {} @@ -61,5 +77,7 @@ public void registerBlocks(RegistryEvent.Register event) {} public void registerRecipesNormal(RegistryEvent.Register event) {} @Override - public void registerRecipesLowest(RegistryEvent.Register event) {} + public void registerRecipesLowest(RegistryEvent.Register event) { + ExNihiloToolRecipe.registerRecipes(); + } } 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..112c466 --- /dev/null +++ b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/recipes/ExNihiloToolRecipe.java @@ -0,0 +1,76 @@ +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 (!ExNihiloConfigHolder.replaceCrook && + (material == Materials.Iron || material == Materials.Gold || material == Materials.Diamond)) { + 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() { + // replace recipes + // Gold + ModHandler.removeRecipeByOutput(Mods.ExNihilo.getItem("crook_gold")); + ModHandler.addShapedRecipe("crook_gold", Mods.ExNihilo.getItem("crook_gold"), + "RR", " R", " R", + 'R', new UnificationEntry(OrePrefix.stick, Materials.Gold)); + + // replace crooks + // Wood, Iron, Diamond + ModHandler.removeRecipeByOutput(Mods.ExNihilo.getItem("crook_wood")); + ModHandler.addShapedRecipe("crook_wood", + ToolHelper.getAndSetToolData(ExNihiloToolsItems.CROOK, Materials.Wood, 47, 1, 4F, 1F), + "RR", " R", " R", + 'R', new UnificationEntry(OrePrefix.stick, Materials.Wood)); + + ModHandler.removeRecipeByOutput(Mods.ExNihilo.getItem("crook_iron")); + ModHandler.addShapedRecipe("crook_diamond", ExNihiloToolsItems.CROOK.get(Materials.Iron), + "RR", " R", " R", + 'R', new UnificationEntry(OrePrefix.stick, Materials.Iron)); + + ModHandler.removeRecipeByOutput(Mods.ExNihilo.getItem("crook_diamond")); + ModHandler.addShapedRecipe("crook_diamond", 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/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/resources/assets/gtmt/lang/en_us.lang b/src/main/resources/assets/gtmt/lang/en_us.lang index 625e025..3a47bfc 100644 --- a/src/main/resources/assets/gtmt/lang/en_us.lang +++ b/src/main/resources/assets/gtmt/lang/en_us.lang @@ -4,6 +4,9 @@ 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) diff --git a/src/main/resources/assets/gtmt/lang/ja_jp.lang b/src/main/resources/assets/gtmt/lang/ja_jp.lang index 09116f2..76a0154 100644 --- a/src/main/resources/assets/gtmt/lang/ja_jp.lang +++ b/src/main/resources/assets/gtmt/lang/ja_jp.lang @@ -4,6 +4,9 @@ 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) 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/tools/crook.png b/src/main/resources/assets/gtmt/textures/items/tools/crook.png new file mode 100644 index 0000000000000000000000000000000000000000..40bc29c095772ed11014ed2763de1d2148b41d2d GIT binary patch literal 404 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jPK-BC>eK@{Ea{HEjtmSN z`?>!lvI6-E$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZKG z?e4wK@dQY7Gvr4uF@2hoA|MLCtgY9~$?s_hE`Ql}nyS7{U1~bSU-^pk0 o%j_WH`aRC%w2{qu=YP@mWqj3-?+J132l|o0)78&qol`;+0FC{X#Q*>R literal 0 HcmV?d00001 From 4db332846a76052b479f6dab41d07e0fbf52190c Mon Sep 17 00:00:00 2001 From: ko_no <90126004+MrKono@users.noreply.github.com> Date: Sun, 26 Jul 2026 14:24:45 +0900 Subject: [PATCH 04/16] Hammer Time!! --- .../exnihilo/ExNihiloEventHandlers.java | 50 +++++++++++++++++++ .../integration/exnihilo/ExNihiloModule.java | 10 ++-- .../integration/exnihilo/ExNihiloUtil.java | 29 +++++++++++ .../integration/jei/ExNihiloJEIPlugin.java | 34 +++++++++++++ 4 files changed, 119 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/ExNihiloEventHandlers.java create mode 100644 src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/ExNihiloUtil.java create mode 100644 src/main/java/com/github/gtexpert/gtmt/integration/jei/ExNihiloJEIPlugin.java 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..acaee99 --- /dev/null +++ b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/ExNihiloEventHandlers.java @@ -0,0 +1,50 @@ +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 gregtech.api.items.toolitem.IGTTool; +import gregtech.api.items.toolitem.ToolClasses; + +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); + } + } +} 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 index 869bec8..5e66fa3 100644 --- a/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/ExNihiloModule.java +++ b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/ExNihiloModule.java @@ -1,6 +1,7 @@ package com.github.gtexpert.gtmt.integration.exnihilo; -import java.util.Collections; +import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import net.minecraft.block.Block; @@ -23,7 +24,7 @@ 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.IntegrationModule; +import com.github.gtexpert.gtmt.integration.IntegrationSubmodule; import com.github.gtexpert.gtmt.integration.exnihilo.recipes.ExNihiloToolRecipe; import com.github.gtexpert.gtmt.integration.exnihilo.tools.ExNihiloToolsItems; import com.github.gtexpert.gtmt.modules.Modules; @@ -34,12 +35,12 @@ modDependencies = Mods.Names.EX_NIHOLO, name = "GTMoreTools Ex Nihilo Creatio Integration", description = "Ex Nihilo Creatio Module") -public class ExNihiloModule extends IntegrationModule { +public class ExNihiloModule extends IntegrationSubmodule { @NotNull @Override public List> getEventBusSubscribers() { - return Collections.singletonList(ExNihiloModule.class); + return new ArrayList<>(Arrays.asList(ExNihiloModule.class, ExNihiloEventHandlers.class)); } @Override @@ -79,5 +80,6 @@ public void registerRecipesNormal(RegistryEvent.Register event) {} @Override public void registerRecipesLowest(RegistryEvent.Register event) { ExNihiloToolRecipe.registerRecipes(); + ExNihiloUtil.init(); } } 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/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); + } + } + } +} From 9adc8eceb93f6b271dd8866981200392b516cbfc Mon Sep 17 00:00:00 2001 From: ko_no <90126004+MrKono@users.noreply.github.com> Date: Sun, 26 Jul 2026 20:54:43 +0900 Subject: [PATCH 05/16] Pebbles --- .../integration/exnihilo/ExNihiloModule.java | 8 ++ .../exnihilo/items/ExNihiloItems.java | 10 ++ .../exnihilo/items/ItemGTMTPebbles.java | 136 ++++++++++++++++++ .../exnihilo/recipes/SieveDrops.java | 27 ++++ .../assets/gtmt/blockstates/gtpebble.json | 31 ++++ .../resources/assets/gtmt/lang/en_us.lang | 5 + .../resources/assets/gtmt/lang/ja_jp.lang | 5 + .../items/ex_nihilo/basalt_pebble.png | Bin 0 -> 446 bytes .../items/ex_nihilo/black_granite_pebble.png | Bin 0 -> 409 bytes .../items/ex_nihilo/marble_pebble.png | Bin 0 -> 396 bytes .../items/ex_nihilo/red_granite_pebble.png | Bin 0 -> 467 bytes 11 files changed, 222 insertions(+) create mode 100644 src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/items/ExNihiloItems.java create mode 100644 src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/items/ItemGTMTPebbles.java create mode 100644 src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/recipes/SieveDrops.java create mode 100644 src/main/resources/assets/gtmt/blockstates/gtpebble.json create mode 100644 src/main/resources/assets/gtmt/textures/items/ex_nihilo/basalt_pebble.png create mode 100644 src/main/resources/assets/gtmt/textures/items/ex_nihilo/black_granite_pebble.png create mode 100644 src/main/resources/assets/gtmt/textures/items/ex_nihilo/marble_pebble.png create mode 100644 src/main/resources/assets/gtmt/textures/items/ex_nihilo/red_granite_pebble.png 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 index 5e66fa3..8006d5f 100644 --- a/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/ExNihiloModule.java +++ b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/ExNihiloModule.java @@ -25,10 +25,14 @@ 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.recipes.ExNihiloToolRecipe; +import com.github.gtexpert.gtmt.integration.exnihilo.recipes.SieveDrops; 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, @@ -46,6 +50,8 @@ public List> getEventBusSubscribers() { @Override public void preInit(FMLPreInitializationEvent event) { ExNihiloToolsItems.init(); + ExNihiloItems.init(); + ExNihiloRegistryManager.registerSieveDefaultRecipeHandler(new SieveDrops()); } @Override @@ -57,12 +63,14 @@ public static void onRegisterItems(RegistryEvent.Register event) { 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(); + // ItemGTMTPebbles.registerModels(); } @SubscribeEvent 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..77d80cb --- /dev/null +++ b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/items/ItemGTMTPebbles.java @@ -0,0 +1,136 @@ +/* + * Copyright 2019, TheLimePixel, dan + * GregBlock Utilities + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +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 { + + BASALT("basalt"), + BLACK_GRANITE("black_granite"), + MARBLE("marble"), + RED_GRANITE("red_granite"); + + 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/recipes/SieveDrops.java b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/recipes/SieveDrops.java new file mode 100644 index 0000000..ce94bd6 --- /dev/null +++ b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/recipes/SieveDrops.java @@ -0,0 +1,27 @@ +package com.github.gtexpert.gtmt.integration.exnihilo.recipes; + +import static com.github.gtexpert.gtmt.integration.exnihilo.items.ExNihiloItems.pebbleItem; + +import org.jetbrains.annotations.NotNull; + +import gregtech.common.blocks.MetaBlocks; + +import exnihilocreatio.blocks.BlockSieve; +import exnihilocreatio.registries.manager.ISieveDefaultRegistryProvider; +import exnihilocreatio.registries.registries.SieveRegistry; +import exnihilocreatio.util.ItemInfo; + +public class SieveDrops implements ISieveDefaultRegistryProvider { + + @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()); + } +} 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 3a47bfc..0021ab8 100644 --- a/src/main/resources/assets/gtmt/lang/en_us.lang +++ b/src/main/resources/assets/gtmt/lang/en_us.lang @@ -10,6 +10,11 @@ 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 + # singleblock # Auto Chisel gtmt.machine.auto_chisel.lv.name=Basic Auto Chisel diff --git a/src/main/resources/assets/gtmt/lang/ja_jp.lang b/src/main/resources/assets/gtmt/lang/ja_jp.lang index 76a0154..a2abe91 100644 --- a/src/main/resources/assets/gtmt/lang/ja_jp.lang +++ b/src/main/resources/assets/gtmt/lang/ja_jp.lang @@ -10,6 +10,11 @@ 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=赤色花崗岩の小石 + # singleblock # Auto Chisel gtmt.machine.auto_chisel.lv.name=基本型自動彫刻機 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 0000000000000000000000000000000000000000..e294fbca5cd6160a92ad8e9023d2b4422082bd02 GIT binary patch literal 446 zcmV;v0YUzWP)_g=KcW;#n_&!_(%k1b-1{A7Ia!!ZNQ z05iZ0uo%0cu4_)G6983JMF6d}I3ADGbv@+0bN;IW--{PTfl>-%OsuLZE|<$`6_8SL zI2>r2CMu=aY&LlB0SF;rjEP!n@q9j~>w%_eVo?-qw_Eo6J*(A<5CVCg4{D52;;)-9 z&+|c*vMjOI@_M~Uk_2N+oCKh4+o+VHEK2~c*DGn70+6ODQcA`?@1qrvQhr%mYXNvX z9*pt+pDnP~4#m&sGv0f;t|QB`X#qkAv~Byggv;f^dc8&n0f2LET7digPKR07*qoM6N<$f(%Ey%K!iX literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..3065199f9c4b84607299b49ea4e13388f9b7c739 GIT binary patch literal 409 zcmV;K0cQS*P)eKp?Y8tXm~$=PXbjU!e5r+kE;L*pa2RW z8!(PzT3c(yS}WJ=pdDnFqV{p!iwN~1;JvM>5uDRWASZl=?L)UdQ zO~bx+&SfLANAP$&(x0EtXHKURB0}4?DUBS&uMgqgL@7nz_bkgojFGyoan8vhfamim z#u)m(2VkCOwAKJMRuh$E$HQTnKwI;@RTmsv+ zF-;Qy(=_pZziFB#?dPVD4OrI|5lM)>VF&@G6uD2lEWj`f)w-_C^NjZ%?>$;;y!T%c zx?C>RVP{|%h6+em?en~2j0ySEs>-Xl01BW0{ypFWBq5BwLRKqO00000NkvXXu0mjf Do9(S4 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..59aa56a44b8d9bc468965f8b0a781346efee6b1d GIT binary patch literal 396 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7l!{JxM1({$v_d#0*}aI z1_o|n5N2eUHAjMhflLT<0fWkNcvx*R^b~Q~yO@v%5co_O`wc z%IFX|tCe=^>J9;}W?r_&1OGp&Dq0&qo}K>S^m68s2EGf7vlx#Rt|`ZMs`H$OXX z_il!s$0z>Qt$$?b7UcD0&e|zSnoDbCKin(c8FS-EQcuPEn~&xc8@m*9uDibas6?k> zk&PUuVnSMrz$$570eSO>4+|I$Sh{<03MR&ew nt53f-YO9ql1Nrcu>H+?TkLUAcJ-NFJ7?=#6u6{1-oD!M}E)T9@^|Z=19-O*%RoB;l z{ROQ=gs%+E7e@_H1JnRDfca=amSv2`V*vJ>TLO>|QZ*Wl$g*sa_nPxx6?or#)3oWE z4!y}#_M2N`t&OWdk|Yd=LmCH1(l;G8k`{$jU^+bEVKS9`kSga~JP$Muj%3rcNzG4o zmwK$|22Xg_baSD`N0j)q3D#K)g1*4Gyaks+b0Y5#Wg?;Py>8>fM=9Cm_LDDAAA4+002ov JPDHLkV1muj#47** literal 0 HcmV?d00001 From 07f5d6592c87e072cb66ecbf629bb8f950238d6c Mon Sep 17 00:00:00 2001 From: ko_no <90126004+MrKono@users.noreply.github.com> Date: Sun, 26 Jul 2026 21:36:52 +0900 Subject: [PATCH 06/16] [add] Ore Chunks --- .../material/info/GTMTMaterialIconType.java | 12 ++++++++++ .../material/ore/GTMTOrePrefix.java | 22 ++++++++++++++++++ .../exnihilo/ExNihiloEventHandlers.java | 18 ++++++++++++++ .../item/material_sets/diamond/ore_chunk.json | 7 ++++++ .../diamond/ore_ender_chunk.json | 7 ++++++ .../diamond/ore_nether_chunk.json | 7 ++++++ .../diamond/ore_sandy_chunk.json | 7 ++++++ .../item/material_sets/dull/ore_chunk.json | 7 ++++++ .../material_sets/dull/ore_ender_chunk.json | 7 ++++++ .../material_sets/dull/ore_nether_chunk.json | 7 ++++++ .../material_sets/dull/ore_sandy_chunk.json | 7 ++++++ .../item/material_sets/emerald/ore_chunk.json | 7 ++++++ .../emerald/ore_ender_chunk.json | 7 ++++++ .../emerald/ore_nether_chunk.json | 7 ++++++ .../emerald/ore_sandy_chunk.json | 7 ++++++ .../item/material_sets/fine/ore_chunk.json | 7 ++++++ .../material_sets/fine/ore_ender_chunk.json | 7 ++++++ .../material_sets/fine/ore_nether_chunk.json | 7 ++++++ .../material_sets/fine/ore_sandy_chunk.json | 7 ++++++ .../item/material_sets/flint/ore_chunk.json | 7 ++++++ .../material_sets/flint/ore_ender_chunk.json | 7 ++++++ .../material_sets/flint/ore_nether_chunk.json | 7 ++++++ .../material_sets/flint/ore_sandy_chunk.json | 7 ++++++ .../gem_horizontal/ore_chunk.json | 7 ++++++ .../gem_horizontal/ore_ender_chunk.json | 7 ++++++ .../gem_horizontal/ore_nether_chunk.json | 7 ++++++ .../gem_horizontal/ore_sandy_chunk.json | 7 ++++++ .../material_sets/gem_vertical/ore_chunk.json | 7 ++++++ .../gem_vertical/ore_ender_chunk.json | 7 ++++++ .../gem_vertical/ore_nether_chunk.json | 7 ++++++ .../gem_vertical/ore_sandy_chunk.json | 7 ++++++ .../item/material_sets/lapis/ore_chunk.json | 7 ++++++ .../material_sets/lapis/ore_ender_chunk.json | 7 ++++++ .../material_sets/lapis/ore_nether_chunk.json | 7 ++++++ .../material_sets/lapis/ore_sandy_chunk.json | 7 ++++++ .../item/material_sets/lignite/ore_chunk.json | 7 ++++++ .../lignite/ore_ender_chunk.json | 7 ++++++ .../lignite/ore_nether_chunk.json | 7 ++++++ .../lignite/ore_sandy_chunk.json | 7 ++++++ .../material_sets/metallic/ore_chunk.json | 7 ++++++ .../metallic/ore_ender_chunk.json | 7 ++++++ .../metallic/ore_nether_chunk.json | 7 ++++++ .../metallic/ore_sandy_chunk.json | 7 ++++++ .../material_sets/netherstar/ore_chunk.json | 7 ++++++ .../netherstar/ore_ender_chunk.json | 7 ++++++ .../netherstar/ore_nether_chunk.json | 7 ++++++ .../netherstar/ore_sandy_chunk.json | 7 ++++++ .../item/material_sets/opal/ore_chunk.json | 7 ++++++ .../material_sets/opal/ore_ender_chunk.json | 7 ++++++ .../material_sets/opal/ore_nether_chunk.json | 7 ++++++ .../material_sets/opal/ore_sandy_chunk.json | 7 ++++++ .../item/material_sets/quartz/ore_chunk.json | 7 ++++++ .../material_sets/quartz/ore_ender_chunk.json | 7 ++++++ .../quartz/ore_nether_chunk.json | 7 ++++++ .../material_sets/quartz/ore_sandy_chunk.json | 7 ++++++ .../item/material_sets/rough/ore_chunk.json | 7 ++++++ .../material_sets/rough/ore_ender_chunk.json | 7 ++++++ .../material_sets/rough/ore_nether_chunk.json | 7 ++++++ .../material_sets/rough/ore_sandy_chunk.json | 7 ++++++ .../item/material_sets/ruby/ore_chunk.json | 7 ++++++ .../material_sets/ruby/ore_ender_chunk.json | 7 ++++++ .../material_sets/ruby/ore_nether_chunk.json | 7 ++++++ .../material_sets/ruby/ore_sandy_chunk.json | 7 ++++++ .../item/material_sets/sand/ore_chunk.json | 7 ++++++ .../material_sets/sand/ore_ender_chunk.json | 7 ++++++ .../material_sets/sand/ore_nether_chunk.json | 7 ++++++ .../material_sets/sand/ore_sandy_chunk.json | 7 ++++++ .../item/material_sets/shiny/ore_chunk.json | 7 ++++++ .../material_sets/shiny/ore_ender_chunk.json | 7 ++++++ .../material_sets/shiny/ore_nether_chunk.json | 7 ++++++ .../material_sets/shiny/ore_sandy_chunk.json | 7 ++++++ .../items/material_sets/diamond/ore_chunk.png | Bin 0 -> 332 bytes .../diamond/ore_chunk_overlay.png | Bin 0 -> 3190 bytes .../diamond/ore_ender_chunk_overlay.png | Bin 0 -> 376 bytes .../diamond/ore_nether_chunk_overlay.png | Bin 0 -> 343 bytes .../diamond/ore_sandy_chunk_overlay.png | Bin 0 -> 387 bytes .../items/material_sets/dull/ore_chunk.png | Bin 0 -> 372 bytes .../material_sets/dull/ore_chunk_overlay.png | Bin 0 -> 451 bytes .../dull/ore_ender_chunk_overlay.png | Bin 0 -> 454 bytes .../dull/ore_nether_chunk_overlay.png | Bin 0 -> 420 bytes .../dull/ore_sandy_chunk_overlay.png | Bin 0 -> 478 bytes .../items/material_sets/emerald/ore_chunk.png | Bin 0 -> 380 bytes .../emerald/ore_chunk_overlay.png | Bin 0 -> 406 bytes .../emerald/ore_ender_chunk_overlay.png | Bin 0 -> 455 bytes .../emerald/ore_nether_chunk_overlay.png | Bin 0 -> 370 bytes .../emerald/ore_sandy_chunk_overlay.png | Bin 0 -> 456 bytes .../items/material_sets/fine/ore_chunk.png | Bin 0 -> 258 bytes .../material_sets/fine/ore_chunk_overlay.png | Bin 0 -> 233 bytes .../fine/ore_ender_chunk_overlay.png | Bin 0 -> 229 bytes .../fine/ore_nether_chunk_overlay.png | Bin 0 -> 227 bytes .../fine/ore_sandy_chunk_overlay.png | Bin 0 -> 230 bytes .../items/material_sets/flint/ore_chunk.png | Bin 0 -> 342 bytes .../material_sets/flint/ore_chunk_overlay.png | Bin 0 -> 527 bytes .../flint/ore_ender_chunk_overlay.png | Bin 0 -> 531 bytes .../flint/ore_nether_chunk_overlay.png | Bin 0 -> 483 bytes .../flint/ore_sandy_chunk_overlay.png | Bin 0 -> 550 bytes .../gem_horizontal/ore_chunk.png | Bin 0 -> 342 bytes .../gem_horizontal/ore_chunk_overlay.png | Bin 0 -> 352 bytes .../ore_ender_chunk_overlay.png | Bin 0 -> 342 bytes .../ore_nether_chunk_overlay.png | Bin 0 -> 328 bytes .../ore_sandy_chunk_overlay.png | Bin 0 -> 372 bytes .../material_sets/gem_vertical/ore_chunk.png | Bin 0 -> 365 bytes .../gem_vertical/ore_chunk_overlay.png | Bin 0 -> 411 bytes .../gem_vertical/ore_ender_chunk_overlay.png | Bin 0 -> 398 bytes .../gem_vertical/ore_nether_chunk_overlay.png | Bin 0 -> 389 bytes .../gem_vertical/ore_sandy_chunk_overlay.png | Bin 0 -> 409 bytes .../items/material_sets/lapis/ore_chunk.png | Bin 0 -> 229 bytes .../material_sets/lapis/ore_chunk_overlay.png | Bin 0 -> 378 bytes .../lapis/ore_ender_chunk_overlay.png | Bin 0 -> 397 bytes .../lapis/ore_nether_chunk_overlay.png | Bin 0 -> 362 bytes .../lapis/ore_sandy_chunk_overlay.png | Bin 0 -> 405 bytes .../items/material_sets/lignite/ore_chunk.png | Bin 0 -> 364 bytes .../lignite/ore_chunk_overlay.png | Bin 0 -> 378 bytes .../lignite/ore_ender_chunk_overlay.png | Bin 0 -> 406 bytes .../lignite/ore_nether_chunk_overlay.png | Bin 0 -> 358 bytes .../lignite/ore_sandy_chunk_overlay.png | Bin 0 -> 406 bytes .../material_sets/metallic/ore_chunk.png | Bin 0 -> 282 bytes .../metallic/ore_chunk_overlay.png | Bin 0 -> 447 bytes .../metallic/ore_ender_chunk_overlay.png | Bin 0 -> 448 bytes .../metallic/ore_nether_chunk_overlay.png | Bin 0 -> 410 bytes .../metallic/ore_sandy_chunk_overlay.png | Bin 0 -> 475 bytes .../material_sets/netherstar/ore_chunk.png | Bin 0 -> 372 bytes .../netherstar/ore_chunk_overlay.png | Bin 0 -> 451 bytes .../netherstar/ore_ender_chunk_overlay.png | Bin 0 -> 454 bytes .../netherstar/ore_nether_chunk_overlay.png | Bin 0 -> 420 bytes .../netherstar/ore_sandy_chunk_overlay.png | Bin 0 -> 478 bytes .../items/material_sets/quartz/ore_chunk.png | Bin 0 -> 354 bytes .../quartz/ore_chunk_overlay.png | Bin 0 -> 443 bytes .../quartz/ore_ender_chunk_overlay.png | Bin 0 -> 455 bytes .../quartz/ore_nether_chunk_overlay.png | Bin 0 -> 416 bytes .../quartz/ore_sandy_chunk_overlay.png | Bin 0 -> 472 bytes .../items/material_sets/rough/ore_chunk.png | Bin 0 -> 467 bytes .../material_sets/rough/ore_chunk_overlay.png | Bin 0 -> 503 bytes .../rough/ore_ender_chunk_overlay.png | Bin 0 -> 512 bytes .../rough/ore_nether_chunk_overlay.png | Bin 0 -> 460 bytes .../rough/ore_sandy_chunk_overlay.png | Bin 0 -> 536 bytes .../items/material_sets/ruby/ore_chunk.png | Bin 0 -> 406 bytes .../material_sets/ruby/ore_chunk_overlay.png | Bin 0 -> 421 bytes .../ruby/ore_ender_chunk_overlay.png | Bin 0 -> 453 bytes .../ruby/ore_nether_chunk_overlay.png | Bin 0 -> 396 bytes .../ruby/ore_sandy_chunk_overlay.png | Bin 0 -> 462 bytes .../items/material_sets/shiny/ore_chunk.png | Bin 0 -> 463 bytes .../material_sets/shiny/ore_chunk_overlay.png | Bin 0 -> 482 bytes .../shiny/ore_ender_chunk_overlay.png | Bin 0 -> 494 bytes .../shiny/ore_nether_chunk_overlay.png | Bin 0 -> 444 bytes .../shiny/ore_sandy_chunk_overlay.png | Bin 0 -> 516 bytes .../resources/assets/gtmt/lang/en_us.lang | 5 ++++ .../resources/assets/gtmt/lang/ja_jp.lang | 5 ++++ 148 files changed, 538 insertions(+) create mode 100644 src/main/java/com/github/gtexpert/gtmt/api/unification/material/info/GTMTMaterialIconType.java create mode 100644 src/main/java/com/github/gtexpert/gtmt/api/unification/material/ore/GTMTOrePrefix.java create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/diamond/ore_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/diamond/ore_ender_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/diamond/ore_nether_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/diamond/ore_sandy_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/dull/ore_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/dull/ore_ender_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/dull/ore_nether_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/dull/ore_sandy_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/emerald/ore_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/emerald/ore_ender_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/emerald/ore_nether_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/emerald/ore_sandy_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/fine/ore_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/fine/ore_ender_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/fine/ore_nether_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/fine/ore_sandy_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/flint/ore_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/flint/ore_ender_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/flint/ore_nether_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/flint/ore_sandy_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/gem_horizontal/ore_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/gem_horizontal/ore_ender_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/gem_horizontal/ore_nether_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/gem_horizontal/ore_sandy_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/gem_vertical/ore_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/gem_vertical/ore_ender_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/gem_vertical/ore_nether_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/gem_vertical/ore_sandy_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/lapis/ore_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/lapis/ore_ender_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/lapis/ore_nether_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/lapis/ore_sandy_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/lignite/ore_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/lignite/ore_ender_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/lignite/ore_nether_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/lignite/ore_sandy_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/metallic/ore_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/metallic/ore_ender_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/metallic/ore_nether_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/metallic/ore_sandy_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/netherstar/ore_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/netherstar/ore_ender_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/netherstar/ore_nether_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/netherstar/ore_sandy_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/opal/ore_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/opal/ore_ender_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/opal/ore_nether_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/opal/ore_sandy_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/quartz/ore_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/quartz/ore_ender_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/quartz/ore_nether_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/quartz/ore_sandy_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/rough/ore_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/rough/ore_ender_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/rough/ore_nether_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/rough/ore_sandy_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/ruby/ore_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/ruby/ore_ender_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/ruby/ore_nether_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/ruby/ore_sandy_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/sand/ore_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/sand/ore_ender_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/sand/ore_nether_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/sand/ore_sandy_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/shiny/ore_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/shiny/ore_ender_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/shiny/ore_nether_chunk.json create mode 100644 src/main/resources/assets/gregtech/models/item/material_sets/shiny/ore_sandy_chunk.json create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/diamond/ore_chunk.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/diamond/ore_chunk_overlay.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/diamond/ore_ender_chunk_overlay.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/diamond/ore_nether_chunk_overlay.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/diamond/ore_sandy_chunk_overlay.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/dull/ore_chunk.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/dull/ore_chunk_overlay.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/dull/ore_ender_chunk_overlay.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/dull/ore_nether_chunk_overlay.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/dull/ore_sandy_chunk_overlay.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/emerald/ore_chunk.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/emerald/ore_chunk_overlay.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/emerald/ore_ender_chunk_overlay.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/emerald/ore_nether_chunk_overlay.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/emerald/ore_sandy_chunk_overlay.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/fine/ore_chunk.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/fine/ore_chunk_overlay.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/fine/ore_ender_chunk_overlay.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/fine/ore_nether_chunk_overlay.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/fine/ore_sandy_chunk_overlay.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/flint/ore_chunk.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/flint/ore_chunk_overlay.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/flint/ore_ender_chunk_overlay.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/flint/ore_nether_chunk_overlay.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/flint/ore_sandy_chunk_overlay.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/gem_horizontal/ore_chunk.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/gem_horizontal/ore_chunk_overlay.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/gem_horizontal/ore_ender_chunk_overlay.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/gem_horizontal/ore_nether_chunk_overlay.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/gem_horizontal/ore_sandy_chunk_overlay.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/gem_vertical/ore_chunk.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/gem_vertical/ore_chunk_overlay.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/gem_vertical/ore_ender_chunk_overlay.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/gem_vertical/ore_nether_chunk_overlay.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/gem_vertical/ore_sandy_chunk_overlay.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/lapis/ore_chunk.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/lapis/ore_chunk_overlay.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/lapis/ore_ender_chunk_overlay.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/lapis/ore_nether_chunk_overlay.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/lapis/ore_sandy_chunk_overlay.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/lignite/ore_chunk.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/lignite/ore_chunk_overlay.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/lignite/ore_ender_chunk_overlay.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/lignite/ore_nether_chunk_overlay.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/lignite/ore_sandy_chunk_overlay.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/metallic/ore_chunk.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/metallic/ore_chunk_overlay.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/metallic/ore_ender_chunk_overlay.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/metallic/ore_nether_chunk_overlay.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/metallic/ore_sandy_chunk_overlay.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/netherstar/ore_chunk.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/netherstar/ore_chunk_overlay.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/netherstar/ore_ender_chunk_overlay.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/netherstar/ore_nether_chunk_overlay.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/netherstar/ore_sandy_chunk_overlay.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/quartz/ore_chunk.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/quartz/ore_chunk_overlay.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/quartz/ore_ender_chunk_overlay.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/quartz/ore_nether_chunk_overlay.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/quartz/ore_sandy_chunk_overlay.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/rough/ore_chunk.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/rough/ore_chunk_overlay.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/rough/ore_ender_chunk_overlay.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/rough/ore_nether_chunk_overlay.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/rough/ore_sandy_chunk_overlay.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/ruby/ore_chunk.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/ruby/ore_chunk_overlay.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/ruby/ore_ender_chunk_overlay.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/ruby/ore_nether_chunk_overlay.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/ruby/ore_sandy_chunk_overlay.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/shiny/ore_chunk.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/shiny/ore_chunk_overlay.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/shiny/ore_ender_chunk_overlay.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/shiny/ore_nether_chunk_overlay.png create mode 100644 src/main/resources/assets/gregtech/textures/items/material_sets/shiny/ore_sandy_chunk_overlay.png 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/integration/exnihilo/ExNihiloEventHandlers.java b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/ExNihiloEventHandlers.java index acaee99..be97192 100644 --- a/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/ExNihiloEventHandlers.java +++ b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/ExNihiloEventHandlers.java @@ -8,8 +8,15 @@ 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.PostMaterialEvent; +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; @@ -47,4 +54,15 @@ public static void hammer(BlockEvent.HarvestDropsEvent event) { event.getDrops().addAll(rewards); } } + + // Material Event + @SubscribeEvent + public static void postRegisterMaterials(@NotNull PostMaterialEvent 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/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/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 0000000000000000000000000000000000000000..bb341708dd490a86f7c5e1fdb60bdd2aa73e6785 GIT binary patch literal 332 zcmV-S0ki&zP)_-IhUs6f8LNsm*!DWRKFxO2cHpvuR2wr#$ z^JeDUH;)+RT82FO+6bTuNH>7^*_ZayDD_j!H}9{~h#s45G?kmud5a|M`1k0tb z3}C%pv(IxDaopSZUY0E4n5Q4GzXzYk<1p2!b?>Ry1NT(#mrIv&SFoGu)VXv1q`iN^ e_Ya09f2MChwT5f_`{3IE0000@BFehFYOQPR-_&a+Rx-R;4SVcd#+I3BCAaL7V_*)X# zv9ml7DE-YyHF}MSM-|P=2326CVKA4qk#-=kYCW*X?*A^kG zu|uLUQBOoI2NGgXqBK_Eh>#p)B}V3iN`hn95Y2>WmZun2VI+l@iQfj^;QDX;5yL>8Ux&bQh0Uh(T9#4BIm-lfV|$ zwAJoKNEB%yg{pFWV-y`fdOaSE);pGNWRSp3uBsv8wNZ(cC5hsK zY(CsXLW!HMr35S6O!eNPGbb+HZQ4lB@2qMLcye0`6tFbzAl&6pq zv$S^1N&J4HJ%Obm8`r`Up~!|b2q=M(Rf^LEiAsloKml14MGopLufq{*k2waK5Nc+$ zRU8$-Q8Aj#g+hSRbs>y;SWv039O5Y{jN)NgjgfenBrquyWCn$#;x>$sDAoL8BPM62 zy|5VK81$i8d@ahGCXrtguQ3f&3yvf(tqSlrpb3XyM!xcE^+pb68e;}R#w`RPjg~Zx zmEd8A`%$SgTtv&R;y7x68;f@tgUGj_qH2ZkHB4X#$l|gwUJ<7RSHWy&D?~uufZ7E$ z*V4UC)q&M52;E5k!Rb#<8M;7O>L(B&n2Sq8Kp30=<6p?al99BT#5TK zzl|&7&YCIm5AEv;+8!p^Fm%AlP~agYODv!mfVUqg=oAd=Y8o(%h?X&%u{G;vHw-*K z@-U1#x{WNM^B}(U52EP7KgvQA^{j&qs>!n#$v~iFX*^b)3UA%Lz1n=5nO8fQ`sCHR z-Dl3uZL)_O-aB?rvZCU?c{S@R5A~dyFPuzNHXS(HH$43L=AJ+LT238rIKAS|xre_q zJKpSXFs3!{-TKtkCzs!H`L*@EKMAMTu6d?^plrtchwIl29QaYXed9wzxk0n!!~T8K zXXr!gU&vnC`N)}Vd(Lh9`p5%U_HTS8(YJkf#R+-%@v>=^{m(^aUwB__-ahov`AsD? zi=X)F;H7nCckmk)zU>B=98cX%R3CY8MeiPG+3UUE-aqug*>Bn#PM$8G`TZ9MtB!M3 zFMW2bbl1_`%nMiV9XwIi*!E8U!1SHx7l^aOm0y+*8N_Q> K$M)4UZ}|(KL@R0l literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..2878240756c2442d576539b2ff593646224777e2 GIT binary patch literal 376 zcmV-;0f+vHP)L374 zOEJCvfO4DLr*+BIQrF#5X`()DmU60J*f;spX| zRbgQ(_HvseUC$K7N&wX$&1Ur>lz&zq>`?`1T~@`S<~D$+R5TP=#Eul}uQ%hW)5DNh z%xCOCTLA<>kuOcBu^$IWlT184zYql7%4J&!f^NmWca4o9rb#BolWAjJJ8PWspX~?B W#e@$nxvGW$0000Nkl6QOcHy!;L3dt4yo9@+pk2Cf?b=15tB69SLTQSDYM>J1 zj0=;YO;R^5d@wNczxV$Ce=`IB9irG=U7T+v0@v2%x+qQzaCvHyG6t%Z~w zEUSr9sopy{5&AYY=lchv3gCN=_B~j>zM0ys5u!L@G#F}ta5BaB z9DL6aKaGx_&Xxd-!`bh5kR|IfWFlAJO%TP2xV@XuZZ!(XjL>d13iYkuSh>U~PQ*Bz h=`x;2h*e+`~A-GcpUM*CVJI52f${t zq3?T1(^Qirnf&NoK%H~MaZH})?Du=DwODJ#d#`}L3%ra_6ou4vjWI^kG-W=YOB6jQ zi^W3Tn@0j&*8$+YmkrhJvjc##ED;d}B!nQR)9IOs5qFe>^Z861$J}l=nayT@->a%Zb##QW zfcKs>P06y1=LPDz7C?Vjes(a0KM@ulL7L3Nf8!fgTZGfe S@-Tq_0000fC)EZT%v zaoF^(Mw&a{oO|XBJh0SqasK|SX2?C$I z&>TE{qHg0G!(4 zJ$@tF7}YewIzaqEPr^kcNs=k4L_O;6VcQmeu5Z{69!n7TLfzQ9f+S4=&{~TrjSPpE z>c`bDzKtgog{Cwm@6JwGhir`Cc`g896az>Y#menC^!r@^u73XB?m?R70K9&6gwdKL z$<&>)jL~?4>pCl+mMYc(D}%lcFHx$c04Yr=)7f0TIDAfCXkH#2))Z{yU=c>xwuRP4 zc3S`Vqwxf(gioKpU|H5yfHJ0(j?-q>X|Ec?MI?aoJXb8sVmh0z6gMSNMYl=qsr*5Y tI8KP;ge)&=<8F&`Eim^HZu|=muD|FJtQ2M*GCcqQ002ovPDHLkV1h3v%Ps%_ literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..7c21ccf1570a05ccb7f1dda38569792362781ea4 GIT binary patch literal 454 zcmV;%0XhDOP)%-?yAIt8gtan}S-haUT7y6r%6P4RcK&=@|fyf>&6(6nAG=Ij$~!X$!#g3^m6^drhYI5p~^U z|LCRU)~f$Wkgn;-FuWF<{Zt~N>e{E~?66!Uc>Yr{JtGfg6c~)Y-vE%#XCiqnlOLg) zPj5-aG1jgS$v8cGTkv8_LaQABuv(@7vRbCfaW!?l_Zxh6SM5O*-2(8u{hB;q5l1%) zz-9}Qag5{cZhTs^_#0qj(DXh;DWw1r$z+ixs<|JK+l;+~7X=1eLAt#B!r{RaCX<p5P-uLMx@St_mI8OO)org0cv3!qxVs;=n} w4P&BV%xH91kX!W^3V|8)FV_3t3euzN7l;m`6dUxrT>t<807*qoM6N<$g1Q0KEC2ui literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..a0f79b00b3d25bf75ffdcb743c9a0fcb05a59639 GIT binary patch literal 420 zcmV;V0bBlwP)-l z2|ga)cX0_XEcdkda&xHDe6#K^RE7+I;&<}%5(oG2N=Vrr?5QxKoNqnwro_uYXDmYN=3Jb#jPFIm0Qdiv}orGKH{-@2)^ zjwDHh51-qT1yabF70<1S){#^iH&kWwDvi2xo>4x4=hgslyay!VP>PnVR#(i-m*xOG zw}xphVQ*e%)cweU<*;d8eWuyNrG|`4vUP<1-#Uew6ZJPQrTC24HXy0Lb7VP{p#1VO;|t zYVYQIaNHXLaO>V(bU5Ltd!hi6u+MRGo7IXn^J&WBZ-ALW{@eGIiUkEoJU)~D-Z!;& z`wm)1SQ}d@26I9B^0kA#yo3&8F%07myXH1YB7A!N3ah-B3!vi3sVtOC)~;By#+Dxl zpw_FlSmi}_T8A^nSy5K)@4eKj8g&Q1)5q`h=?z9Hxp{vf6_}mY;dK9VLAr4L2JGsj Uh!7w|LjV8(07*qoM6N<$f=1omuK)l5 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..9718bd04b52c15eb4b34952d682861e376a825bf GIT binary patch literal 380 zcmV-?0fYXDP)Uv6{(DLLVm6!cdc9aKmpJFhvJ8Ojc1xCJ>YS6+YW4L#`U&p!dH{Mlo%DD- z>S#2Qx~`c{r=Ja4u(2&&0$LP>mSri!;ZVlou}&rvjpG=A zZnxV2+6MAIRaF7toRjPID%M&x#_03;Yyh2h6Mv9+?=i;cAH}{I=;damD3UzSNs@%WE)u|EvA|j@>-Abf2s|DS`u)D-d9H2v a-_S2>DXSoz&k0!o0000=Ob literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..ea7ad7c10cb47de4d93474e9ab1974705a4a7777 GIT binary patch literal 406 zcmV;H0crk;P)z?St3X zEs!}UQ!6A9LPqBtR0Wf1jC!qJu5s*;uz`>wg4HS!RpBh2qh71a(L(}&{$L1I#c2G= zjrAPH7|!CkRKo`+D5~3Omj~mV$62GX7yg&}2CHPOV literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..f36419b097a7faa58fbec7eef882bc052a9a1257 GIT binary patch literal 455 zcmV;&0XY7NP)!( zvX%h=mW^1;(xZIxT$gkdrUYK=5YseCZ4EO#a#KIo3LrMg3u4)TIRw#{Q6n5vscQ>t zv;ZIx29X0IqL+FDl}feEWy*n489F>Tl7+%FhK7fvd{-u87{O~(o}cS*JQwF@SLn}W zlQ!Ct_?ZPP6sBPei|4txxxFXHbLH~l8vVH}ZES8Q_uG=Vx>kZx862OSiebi^4w292 xK&jg(Q@T@zhVFY002ovPDHLkV1h!R!4v=h literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..bc43ccb5e4afcc30b3ca0d72bbf53e68164a16e5 GIT binary patch literal 370 zcmV-&0ge8NP)nV(WO)pV+o8iyyv1oTS|?I&TfEn=Fa88AD7&E z@s#JZX4da#BC;up-wAs7Wwj!x0`OWClaebz4?pKQUX^$60r(7oz4sDT*_P$-z55AH zodb|MMyX%;UBsymgNy2@S zNR=e)s>-@DFMzRNF!$woRST-jM8uBI?Hm{jrfuC;&2VxV;pz%?+YW&5u5%t+PqQH~ zDzQ7%>b5mN;xRf-QPsREPK39nA#rYqbZe04B?25` z6enW)4!$`^0Gs2;va2dnGg>oJ=WO3JGKMD;^lP1E!!P?%TBT7)Br1M^VmtI26_Lnxg!M6) z#Wk}#Gxr_^Gco%i5>9f9n|q%p?>RZZAB#FYtgkMh5h{-Fwk4>vRsNkIhF6M9;4lCH zY;W$jm9z+AczJCRT6(ytQ~>~2cTYI2RLO5d*w{Tt{u@8RMqdU1$Z;jzI&U;NI>_%{ zor{I}_JTO}7fj)`LjX7kL(ca1FaXR=jo{s@b6Wub;xHiPN{XBsTlpO4XU1r5cAP9B z005RHQb4nSCOUP6L+Y+?1cf`{Z!-$mTn+KPa*6? zCgJ4#61|!3q>WCCgz1T4D6Lr-2Cna4$TW%1DpmAmx~bzL0YGW14BHYoJig#4Vl)DU yY<~}*RjSksw@naNu`r)3OilV2$_=!@|56`(Le?sPYJzG20000xGa%x~|La07&k19EZ=B1OR~68hY=Rmr^i-R|MJ#0I1e#4*GoJV*C-k&MZd8nOz-{%UXkV`4%H>HHu8ibfe@Qpx+CY>myWJU4}c?TwZRDi_#cfj>Z;p7ldX!I zlqvDW8P+huNeyZMRFP@F_py h-`nF^(SQE|@5glpZ-t|O+5_Fr;OXk;vd$@?2>?f~SwsK; literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..6a4c733bb067b69d495e31c8f97241e0a79931db GIT binary patch literal 229 zcmV^P)$t+cYS+0I7LO2qpgKx8|?#tT?%A)7`t+hoFIGGZydDm>=>%mn@(jXc8R z4iGg5@P0iBUMdi)q_AWJYOtrV7y*#1<{&;#%lqPgcU!tgbX?9By-;&j064Y zj3cf@8g>OQS=P$!+y)+`Q4&^SYYiZIA*C`kB&+*m-R89IQC7@*ou+6i<2HG`+CpUXO@geCx1{#A?s literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..ded381bb387f236578ec3d1144e71d8913ac616a GIT binary patch literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ydu{YLo9l)PSoXNG8Aatuc|#E zLr03QLFHhw1=I4w56m6kv0iv>;gEV&>~iL^%Zl2Z{-*k$>(aRD`~Bn|+A^t}Wjs@? z(&ibQS-oTG%s76gs~@U1Z*I(#i4(mzyYXB$m~2&{X0`w`IL44$rjF6*2UngE65S%?4t literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..8bf2bbfe610e8e8912f9260b3c96dce40954f4ce GIT binary patch literal 342 zcmV-c0jd6pP)l8g@vb(T*0HH2)Rx41l~gS3O06DVp1=xArUs19jib5@aK=c1Fv~7 z-+ME__lP7&;(EOfb2uFMvoDHb)EE2*)LJ9UGHKhEkH3=zliXoLZvloID0t+mqkJpiDtYl)(Wv)N3HG1DD*?=hdx zB@9CXVBhyxtyb{fOI20eY&M?(i^T#;DJjcR+O{1^GsejMexC;Hc026%dn}hrL{S6) oxLhvix(?gz7VGtT6z~Ol1M6L?;Tkq#_6o+jB4h z?ZsP7%%$hDb2-a_O-M{|B>0c^g0+7B^{oy6Thf21DgfJCnFT>4-f0={o90LC_xaZB{DWVl3;sllY_%A{n)Ip z-o+S0vvs0-URiG4yf!h#*b2LDSvS^}wb$!Or_%*szBH@89}Xf6a~d&ly^5|sxPvi< zdcCP(6p5-5$1$JwkM#Q0D|{$_)V}cu1J|o?Z{-HQ9}t-~-A)J7?vO}W*vTZRDTh6; zjAaRa5R4m$h;}<&3Bpk0UJO7K8Fd_6EXz_q2+3wMoXO|dKlrSieu2RXs!Ae}P}{Zz zkXV&`K8vbqtyY(FXA3kMEm|l3WQegUwrwLKTCLU9nDzjgAB0-1)tMd#r&BU! zu(Y@!FJJADnsRU)2Y|z)uXMXTN^_Se6mop~eoQWxmAToO$ycyM54v^(x~K`?Bq%yxw`Ir(gj%{!t^HPD`XP)0v@6o#LGWLCJD#|S zQYWSNH}^um$WnHN zCpg=p-TEb!N?F~@JRF#!Z-iWKRhF_VBI1;D7J%Eg?ucpo0fTN%JqCq*Q5Kh<;%u9i z-xOJd%>#)>n+awclMlW2XR4NOnUmzI48jJF@cv`EIO(8rK z0TKDx*j1^kDK@`s(b(VZVHPAX*5Y{@P;zvz&zVS6X&n}TT5Vg5wam`mrBYpEd~7rT z8YD=k=hUkg&(S)}(Afw8n;V~T&M`f6gKMcND%CZnCMVSN%=N*q5Yk$`fBTx@*cf}? zzsb4SFo(?s*7#IEej=H;q~a5k6!OLX5ju*-qUzn7mvRa=;1iFJtINqNJ%|5^egmci V*?n#pf2sfg002ovPDHLkV1oIL^$q|4 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..2a48136a61e9bf85fbf196430be3327ed1ed1c3e GIT binary patch literal 483 zcmV<90UZ8`P)KWjFLskcp0D!accq8GwEC~QdgF&17@$wQPi%|WIeWEo^ zivsV9q9uBacs=-Ve7s)FHwOo(os)a#s6;x&8w$?GV_ensN;ck&Mwok#nYFwqOF7x! z->RZB!g*Qpv?%C85E}vj;AOwh%DGm;x=$Mf6Rr7n+4*PF@WFc_2~Xl%Rq@r{9=^_I zToG@0Fwq*XheK4>!h`@D0*v>FM35?lCsBlpvV;;rCscoa3D_7-bo>waB7KIs`|9fqc5Y#!eJrM=h?e>KZNt9OgNmr73>Q=jg|=yy*3| zZ$XL3m+2ITc@AwYQ>9=+K0@?kEP)e&55+JS8s4>;Sn9!Jx0y^nz7$r(dVKPbw{tN~a9gWd})Tz%2*_--| zVK8bMm4>9WHd3^_7G8n&-FqCQFRia}GVz{i+#;n~0Dzk}#@ROO4uft^JqBsr z;N;>gl(f*^+h%3%5!(!I+jy7#$oJ-M;nnIo^I^-)AgvonJh%gCn^2Yo)oelSAAnAH zApAaz4EeF98_+buw{6pHpb28dha}Agb6Wxce$@6k7#N_F9uHTlCL-Y>L?fek{U*;i z{sPVlwqg)@nS5RXKx|8dA|p^z@@Anzm!o6YDDGhE`)+@TiWP+Lfi#VaU(0;dIB=j< zswRIbR4^I8h>cPe;o$(e3}&V$=;@+#Q8I$ zGk&^n2;~ zhyZH0+j;OX3<@BMBC4ulHk--ia#33Aj|;}F_xt_BuQ7%=j_Lb;#DWRu<=4x=S}WFC zx~?ONBD${oT_DeM0ES^0F>5Vt+tRiz0E@*!L}Xm#2`raOilV?dhcQNsF{)`AoO8-K zC+qc^^Z85|{y6tCxL&WMX{z@7y#zs^09LCN^Z6Wr)9EB(7%J!7%dRg_mL-qJgSxIq o>~_0(86`==^ZDfU5B@-X0dSayZ?pQEPXGV_07*qoM6N<$f(@IS{Qv*} literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..c5a9360e3baafe12ba13d497e867fc7cb411b984 GIT binary patch literal 352 zcmV-m0iXVfP) zrZk!@l~2pnYgGX5?%N3@fC|Du0LtYOk54aR+qQ9(Ay}ybuyB`a{c1fYUnt=FzQJ<8 z-XwN2GYF$dg;9j(Y4VnZ=jqJ^H@6P}1YuyXFp6;9CGN^mvACsT5hIi#D3!Ju3`a;T zXswmjS{8E`iA5w9b#!<@um6E%{gh>9Fq?gHc6uz&?T%6^CjgboE{@{>@YZ`*mX#BU y#k9M&2m5WkrSj8VypFl;C6C7Sc{D{%HyrDduiPjqZ z;h2u&PJ}RRI8IyWV^6)@j>mkJ zC87M7^fD+;C!W$&Kek(ub4U+KLL7zwe3qqzBI*Y1Ud+LLlCY}l;lF!%L}5tNwsdpw a2kIMStATx)&0uN(0000pl12Z--*%h9^c$>+bJNKM>&s_Kq;l146T&oRv*$rVc?Q2{Ra(n+e9PG5~VsYRqKa6ZIF13t=hs@J)R%eC4QP_lS}RAg-ENuB=Nym6*6;A)lclu= zz!-xuhRI~Ye!pkAT(Vd!rlq%2D{o6Sg)L@t+$dPmR(WLYMFdOn|W zyWI$apw|;00mc}o#3i^>I&XguUQtyQ)>?|9U_2hXvReE^AZ1yqs;Z=}Yw|n?kkM$= z3-l3mrHkkOD}i!jyx;F!uUD+Ktk-LHyIqgOTf%0u;dDAN91fXIr>s^h(ljLuL!u~p zJ4VtpC5j>`ih{@Eq0Z;Cgkh+xwODJv%k3sNyWracapk@4!k_U8TeyOdKp{dq00000 LNkvXXu0mjfseGZ< literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..dccb5a83c9f32a232de177ac2abd5ecfb3425601 GIT binary patch literal 411 zcmV;M0c8G(P)Vvb=gN^3AvnS{B{ zcy%~!M#-7c7A-of%RTpg_k6z#{CAOm<2;|k#pM-yJ@)srnKYf{^0NVZyIbrX9QXO| z{sAi~4b4^?6}<+%`aHR}5H^-~8TE#Ndc%O0jH6VpVrz2)>ual1k1o#A(yLGGDUj_9 zIF-_HeRE5lt~u7537B|yx+Vc&W+uxLP!uJQNf-e2hB5K?K?9kEX7IDzkqaq@5W+?x zu{_rL6+pH#V0Yxw$aNt^9{^}677ZK>1NcX$ko8;uSM(YHpl{nS%^sv2;^=S(rSf9{ z5~^@|a*S514OLa4CF3~Q-$tRRLsb>TqS2`gLVux9tRNDJkPv-1&VWBYJEW=#OF4v; za=t<~lctx~H+nakY<~6Fb{t44*|G#lDUr>j13CPuz5$k>ow}|dEkXbQ002ovPDHLk FV1mU7uSoy^ literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..5c0fdee1b89342bc1b6c582ce51900646b34342a GIT binary patch literal 398 zcmV;90df9`P)WL)HZzhlLoQl$HuvM4^YFgsa^b&2crUtNI%lUR(#c70KAp*mXnbyT4tWclX40AL z2-1455RE11+U8F<08>G-(wQs(wxwfRI@3{wVzI!Cy2!!)?wD$y0+-%y)udxV3~UMjlTa0wmljxAT_bmXNm5mq4o4P?{Tp|b{z5Gy2k-G-7e<`cYS_Yt#H|D;d8UW zBnU7K!~H#3HCBEZbEPm>3Ip55tLNdm)4^4{eekGtOlum3oGS=T#23vbo)-(TjN_f& zQNZ4N8OH(uGa#bv7H3kHGN}S!uGHSY04-%!nZeH@W+cWy5#hYi*lGO=5SoaISx}Z? zO#}d#6WBiL zZofS+&jO)!%C=W#adVj=1!K;q+Kq>u*)ODCNDuK3jsj9pXXq5Vz?J#8Cm86B0Jo=5ThAg(M1y#RmI6BVKYjBt(H2 zWeZiEvZsPhBvD|N?ZRrf5x+g*{RQ81xR!XLo9mF25jVIRuuT`s<|(f z(d8&t4ukPwww#82RT~+UC#We@FlmGq2_2QZ{oMM&b=TbFwRb-nGZ-BUd9YKNxgls( z)4kta>v=X^+hulcXXdM!jIr0JwhGK$Ii*N}kL_%V)8=E*KF=%5{v20f?Amc8y+>4M zz0j8Vp=T`L^KJKXc-jhdl-J6Y6&?pHkLPLyd6mep2YFRD-TFd|d literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..57172f5759f38e81e912c7f4d8e14ef8a8d5f911 GIT binary patch literal 378 zcmV-=0fqjFP)e+`ip$47^o`Wm2Kt5Pf$7z{_t`J3B&0QR=22YwgNbpYtJTgy6+9|Z!x zi%b>cNkXM;5kK|_qZrS1bmk18xXJd}=?PcYcLLy`X)~M62%}gu8}{!Ur0EnuciJss zmJ9%z4I9febRyMm0huc7dR3(9R6oQ|gi(xT8YEJQe2^Oj0>3K&(b%tPfWdG?y;c>8 zRN3vC-1qVsXwP+!siHp^(R=RmKK{US9g#?-Ez=;3;_VrPQH)tK@LY#Np(ucCGvi5; zjjf!p@`b?fa(;0s06f>xm9j-574!KgFRyQFk?6OeR+{IR{(}yBbU$8AGqK6o7+bKQoGbU-8RAU z4R1Q9Qq|G40+#J;VGeeY*I|G+ol`0o`FMZDvK?AYQ$@~xbD(-xJzmB`0dQKYvJL|* z+Yybr5d$YW2*VYCs#JB6N@oCQ)D1MPprrKo3#`L{qvI11hATDmCRnzErWKIV7n_ev z6zFu@0ub5Up#ta+TnxP?r1YcP6&vYo{y?>wChIU@G8(f80w&`bt)?lY^i@&0sa!-#pXFkOI~>KxF@fi&p=i_% r1t6tQf8cJ8W8|L#;%m!Z(*LSYsT+kM{dW#O00000NkvXXu0mjflWME$ literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..b930d70929a62b560af2075306463d430ee3550b GIT binary patch literal 362 zcmV-w0hRuVP)Ml&n!E;&2ZMdyj`b=alUG(TKKr;r#CqR&54675zCp;9qO2<3 zo#Sn_;$yQRS4yn+A&Vl4`gLa&6voi&cDc_T9+ULOq~0iLauVeQ>|&(yhg`DpknKBPGj_JAs@=A(+>mJi`&^1*C&Hy6IY@eLgX3aSe0>d!}yNZ}jM$*1&V_FVMI)Ur? zA{^vW0mG;XK*X|H31GK-lnNQ)dVX-bB=o&-22$5lro%DK+Xr6l4xPs*bWIhm=SwA> zz_gsz8JLzsBpK&O+h=<#Du7@!U3U5B!uulBxbhJ zthfgzJOSu*I+SIpzVD0g`;QX< zdN>?vhifW8ZQB-rR_pI{_X1iJg&1RM$LnIZ+sXNS)^@v%F-95%mW!DXMhpf6%Cgk$ zb}N=;0pK_e*91jT=))T<7c&SW?RL9jSr)xskM(+ekCA)c3)e3fc7nPbMx(I+0000< KMNUMnLSTYlSDl~$ literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..4f24ddc158d87569c01a1bf7aea86a0a647a2dd3 GIT binary patch literal 378 zcmV-=0fqjFP)u>32K>jy}y61{_d9i8CKr(>3=L*1mf1v7~ zE8R{TfVcNC%|_+ZN;TcdN|`uG)NnWw zt=DdOtuc&(0EEj(ZM2yYHrqXNY|%Q$>B%tYW%)fQ9~gkm3HE8oMym$0IexF!^eK(_D) zg$s;@t}F}2&csvQJDEB2qVle})-x!ay0x%X6 z0iVJ{RnB*8WP(wYCmuH`~^-W|f-<^%d zjr98imEK74&~D3I1IMa>3&lbn8H=jd>$0@82*64rL3$%80FSM%a;(bd#;`$fnzCDE zZ+Axk_H#KdFR!LBg9~^+8GM;YbRa5kUh&WM0W1@bMe5!bfB*mh07*qoM6N<$f>XD( A&;S4c literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..4f3643eed671c2895076b53f89de033f6828a3c6 GIT binary patch literal 358 zcmV-s0h#`ZP)*J;}GXMpotha?R3CJ5TX0b~G3!cYMoHXBL8P*-sbK$_<) ze18Dx0hUpu3*YB@JmwDcb~Ym`OPLs>+oE7(+sr+$2N@*D>l%Pn9P_l>@m`ipjp3~< zX;gVFil0Xq*)~~OlGn8WOpQ^1iQ`bIO5nO0xGn(qX)2eNDBGd{(6dzHh$w(1rx51= z*;keB>l)8-XjH$PFUO-cs^Z!HZM!*^h5eb}P}kCW2P3rG zof@N-2v?&Kk6Cu^IYsV1bbsP9inLSE^R>z@UH-W~07LtMNsXKef&c&j07*qoM6N<$ Ef?pV#Y5)KL literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..d0641124d82fedde690cc07d324046ed46c99584 GIT binary patch literal 406 zcmV;H0crk;P)~pf0oYDX01oz#lAkpj@f|u)4fJ&vn(wd0li(1HdriOz4^b+&{OK?~RP$Z+AA65?#|+ zoS)(F`1HHyD{}B5_!A48YZ533`Fzy|UH-W~0M&?oMzD`Bd;kCd07*qoM6N<$g5wah A-2eap literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..9ae00ef412871e25a02cd27393cd3094154f7573 GIT binary patch literal 282 zcmV+#0pqSdM`wXNDB7p3;X`uCLoWv_B@=uxr`Z)M*svtOZi5?VA%giQS*KE3-kF@H9oFTDp@9` gTvk7jH%fgc5Qd*I^+)WA#Bpm7LP!-V5+JpQs)vdL;+I!F6;AvB5>i476(vz(gTHp2<$|ju zb$Wrh>}Yr2XJ&Wbg?|ibl6P-U+SX0m-X>1Z&e^&LZgzM2h$Xm=&DYCo(+06NiKBjx zFzoX5$s@{25y#PbNB08oJeTdDLtc~|9~}U+LN)H&o>@HuD)FZ5QbgjcRWeb-vIm_O%V9aYsfml#BpQ*eBWa@8k6OP0VK-`v{Jl! zxeq{|mzyu~#r_^;rFg#gjLCFHt!o2_h{dPD#ci=BSus+rYu{& literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..f7346b1b41f3d0375ceffe058591c3477dc3ca3f GIT binary patch literal 448 zcmV;x0YCnUP)rvgD$DnW>rizwYVz2mUc6pM3uGv1nh5&gSv%{RiAf;A+|}KqxsbUoI}R2vXW5 zZkaPYKcG^5N@i0`+iX|#C;-RxargGIc1gYQ3ZM|O3m}=b9M)gr`BkR3L-EU1N{;&g zQV1|@LpgZDauHK<_VD~bRaI>Ii$U0@WzOy)+W>uY{#I2}wRR=(WW;=W&D~9iW|=1Q znE(>~xY~IINoHdJJpVu)*O%2Y0pRbbr_DzG8nO*g(>D62f&0Xh5jI^YAfw?GS+?SN z^ECj&;q~q&9vrKCC ze%{<|tglxf-A<2kB|z0O2>T4eJ^-i9hMt@}6W{lk&k|U3+Zf5J3Wxxg zAv`r3l2=B`s{Gk(@WycST>S3{DREF$#24Mi6Ua734yuZxN|O>zN&p;Mt8-(-h)`7F zg(JsSmTipcj2VP%V;lsNR-XC`5=&8F7ZfO5Tn zl~s#*BZt@cqRj0F==#zvNGzae*s5iT_FVWa~jO+Sr>>toNza$8U0;r^xp!)Ii zO|ob*VWc1&^7ZW-(ksi R{lfqN002ovPDHLkV1god+-?8> literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..423000290998839c883b7a75d5cc4a8c57885ccd GIT binary patch literal 372 zcmV-)0gL{LP)h*e+`~A-GcpUM*CVJI52f${t zq3?T1(^Qirnf&NoK%H~MaZH})?Du=DwODJ#d#`}L3%ra_6ou4vjWI^kG-W=YOB6jQ zi^W3Tn@0j&*8$+YmkrhJvjc##ED;d}B!nQR)9IOs5qFe>^Z861$J}l=nayT@->a%Zb##QW zfcKs>P06y1=LPDz7C?Vjes(a0KM@ulL7L3Nf8!fgTZGfe S@-Tq_0000fC)EZT%v zaoF^(Mw&a{oO|XBJh0SqasK|SX2?C$I z&>TE{qHg0G!(4 zJ$@tF7}YewIzaqEPr^kcNs=k4L_O;6VcQmeu5Z{69!n7TLfzQ9f+S4=&{~TrjSPpE z>c`bDzKtgog{Cwm@6JwGhir`Cc`g896az>Y#menC^!r@^u73XB?m?R70K9&6gwdKL z$<&>)jL~?4>pCl+mMYc(D}%lcFHx$c04Yr=)7f0TIDAfCXkH#2))Z{yU=c>xwuRP4 zc3S`Vqwxf(gioKpU|H5yfHJ0(j?-q>X|Ec?MI?aoJXb8sVmh0z6gMSNMYl=qsr*5Y tI8KP;ge)&=<8F&`Eim^HZu|=muD|FJtQ2M*GCcqQ002ovPDHLkV1h3v%Ps%_ literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..7c21ccf1570a05ccb7f1dda38569792362781ea4 GIT binary patch literal 454 zcmV;%0XhDOP)%-?yAIt8gtan}S-haUT7y6r%6P4RcK&=@|fyf>&6(6nAG=Ij$~!X$!#g3^m6^drhYI5p~^U z|LCRU)~f$Wkgn;-FuWF<{Zt~N>e{E~?66!Uc>Yr{JtGfg6c~)Y-vE%#XCiqnlOLg) zPj5-aG1jgS$v8cGTkv8_LaQABuv(@7vRbCfaW!?l_Zxh6SM5O*-2(8u{hB;q5l1%) zz-9}Qag5{cZhTs^_#0qj(DXh;DWw1r$z+ixs<|JK+l;+~7X=1eLAt#B!r{RaCX<p5P-uLMx@St_mI8OO)org0cv3!qxVs;=n} w4P&BV%xH91kX!W^3V|8)FV_3t3euzN7l;m`6dUxrT>t<807*qoM6N<$g1Q0KEC2ui literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..a0f79b00b3d25bf75ffdcb743c9a0fcb05a59639 GIT binary patch literal 420 zcmV;V0bBlwP)-l z2|ga)cX0_XEcdkda&xHDe6#K^RE7+I;&<}%5(oG2N=Vrr?5QxKoNqnwro_uYXDmYN=3Jb#jPFIm0Qdiv}orGKH{-@2)^ zjwDHh51-qT1yabF70<1S){#^iH&kWwDvi2xo>4x4=hgslyay!VP>PnVR#(i-m*xOG zw}xphVQ*e%)cweU<*;d8eWuyNrG|`4vUP<1-#Uew6ZJPQrTC24HXy0Lb7VP{p#1VO;|t zYVYQIaNHXLaO>V(bU5Ltd!hi6u+MRGo7IXn^J&WBZ-ALW{@eGIiUkEoJU)~D-Z!;& z`wm)1SQ}d@26I9B^0kA#yo3&8F%07myXH1YB7A!N3ah-B3!vi3sVtOC)~;By#+Dxl zpw_FlSmi}_T8A^nSy5K)@4eKj8g&Q1)5q`h=?z9Hxp{vf6_}mY;dK9VLAr4L2JGsj Uh!7w|LjV8(07*qoM6N<$f=1omuK)l5 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..952210318fa5da2ca0f89f8f5b1033fe8f3ef5a4 GIT binary patch literal 354 zcmV-o0iFJdP)P7nWrivhMf$7#I=;a~x-I#r1lnu4_Ec1JLL5 z+1S;T!BnSk9EY}T`Jt+trUBq`x$t~G7XW&*+2DB|P1E4IF301M?RE=*Qc9doCjhFd zGT06PqONN#rDVNc)A#+jBtT0kMGyo4?Du;nHA8|>O6kMlfRqwIXIUlyk|fbx*9}8r zGPAgXQ5>}9c@99DrefCr`x)n;x7+RGNBVnv1Hf5kvOo`{ivR!s07*qoM6N<$f@i{; AIRF3v literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..7b9bdddcf1efe6cd9275b3f46f9955226cdd5679 GIT binary patch literal 443 zcmV;s0Yv_ZP)#Rl}i#05LXT3>S{Zqh}KTM-z_fP2}KyR?Wmk3PvH@65c@1cS{F&~1>8v1>uaQ1i-@q|EYXb%oDfB^co#koN|QXPtGGoZ#)U`o^5*rvvMr0Lhg0-)k5l(tj4^6+qs~mVEXG`^kDoq^_j@MF z55h43fb6|$P_0(z_YLRX1zBd4ZCfNsDge0|;64C=JbU^WW3CVx7D>I9pT{mdeh}Uc laYX9mv?+JaWYqXibq(=zv34%TyYc`4002ovPDHLkV1h+K&wl^_ literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..f0581f7ca5f5054d3a6ea7a0ce54a943d768618f GIT binary patch literal 455 zcmV;&0XY7NP)>ql{ip0044EAv;4!P)gCez5u|gE~xM4Z8qM% z`#Zq*97<-5shlC9e@Ec;0cbp1R{o&NWxJCl`6D0=Z&eqFbtEFfOua#@1H!=ON9QUV z%BRhAxklb75$gcg=}F-A$>j~q$}CanNUS6Dz0bkn=do9^1ipKV@7|C%ip)PU zH|R1P#wrSIT&IUwna$Eo0M^#uNUS4V`-;f7nXc5-+36Q{wznvho~XITbCN`Ja{5(v z_nPpq0@)s{uDk@051a2PTXlwsW`Dm$_olBb%jDa6TL4DQ&DQY*06^B)UUPeAlO##1 xsolM18awkeTgSgYairA8Ph0XxlTqV8tzQxPtw`AjrAYt)002ovPDHLkV1g@<(jx!> literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..8ad94d8fcf139ff07ef2aff5612ced2101c707e5 GIT binary patch literal 416 zcmV;R0bl-!P)j1c{D%E+<`=r^?327p>_-P>r>;&hfY`r*va6edBtukk^}y z%9Dg5O)(+xS!;1Is%Oh3%RHAp1of`2rQYuWRAcQC06<=?*Hn2<9|Bj#(1)P1B%$+O z07f&weE)Td)Wv8Qul}0000< KMNUMnLSTX;D!9V{ literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..1720b7129b1d10170c2e3861f8db2078c61d0b8c GIT binary patch literal 472 zcmV;}0Vn>6P)NklDvnurwfOC}JaNz$(<0F0`N^2o}L7=mT_7=qq$nXqWDM0`0=B3rmG= zYDB3fY9m*34BRwnlAAV(nwvXa)O(wlcGqPG4$PS||2IE}f&Zc0B)$F$fQ(seX^2kE z@%`W%_j^o|d~vom+zs0OU$2&F^ghfII#!?}*egdCkIdJS=j4w7*L@&5j-4%u z*bb4g2zEWs*}lfiSzeRRP5gsH_-@?8uIEALr0_XKXyi8Ckzp>&TI_6zYC2CmdD=3? zb5J`zqE<}M>ATDD^sFjc6|6)8$EhhZp)quhU@YdjYXdAiU-~uWY=?`g=KfH>`m|@T zy8MpbSXjlTCUBf8helR5w^MMn0^S}xei#OjH!l|%2#2t&D(|CpLvz+t`(BHE9<9)A$K|v#(-XCu6Mu O0000+d@1wQG^E`&bp?n{a(hb0NyR87; zBiQr#Y|CxN7?#VW#BnUf7)jIAW?9B!vA}VhSB!Un0OEO`1+3N@0IfC6W)r290QPV= z{OW+qMt1dw$d23(24*6002ov JPDHLkV1huH*d71? literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..5dd3c1aab6180237f7bb44626c24b8d51960b0ea GIT binary patch literal 503 zcmVAQ1?dxGt0x?Nf zoz>{h=(}@9XW*V8>*V~byHzyC04P9~W%7Uh?YocE?jjpw^vThotg;*}mFv+&tu4gb zveLH`V2sfy>afakJ$n2|ZsJtSvSd7&DpVoPuCb%2BLHu@r=-i3?u8BU{W<^-58Ak{ zvm5Z|XRRAgJME_Q`(J4__j!H#io7T`_p&X)7^9tbllg2x7zTtvpbz%<#2AlX*CP(2 z0|2gmj+Bk%Z%!adnhHRk=M=V}*SpYfmp}B&V5nJ^i!ChYXI)&krfV6S00lG*0|8{d zhyj={VuFTGtF^CyTz70v~`V>fpLHtpKbo z{_6VNyFkPNP+M3TPo_LOe#$D#_4&zh#ZX&5n9Ua$7oDt literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..0076a39083601e909ca0ac1951eeb17e3bd17b67 GIT binary patch literal 512 zcmV+b0{{JqP);g) zXtUK2K;mcxKpd^GY=@Gwr+}=MSG$)u8eIbD)7DGPvRH!AjiNLOSxf^g+XcXM44&)i z24J~f-x_5;86YA6s+vf+T2S>HWND&%`_DEEwPmEUvmYGn*O<+gIF6H#CW~pHpbUO? zwOsLJ3lN79%NuKJv+;zZqjFxT!@-3D(rh)fT=D4lPBpjohJqY&e*SCYRBdz2Xc*{d z7|3{h#bi3$JwhBtOv30^V$mr{zjvAg^`TGosQ3quea??yAt9dt0000ez=5QV?l+j!5Ml~}RDp$Iw(3Mwk9{P;-xh(Ic6h$Tzb65F}E-Fp=AMLuk*OtsR? zd^2zK7G4=PJZ|dxC>fjs5J1!S_HX|7;Q{|Ya&S%`s><4&5wLuEQj#o7qq>uT;GF8R zq|I6HtI9ShDNC%HM!*Q-POV*+r2%}sx?-1-D(`Jt6ac&}OA52ofc<1mib9JJ?0bw{ zhQOEWYr4J%VB*Fz{bBPW1lC>0Ok(D}=97s9=UA@Syqit|_`TbSgX16KY@3n+bbU{f zxQkIgw_E*)QElH_lDMgByqN|WhX4VZd2fKlwgn)zEtU6Nh9JOxZ8jqbBSE{I0rYu3 zS0~wKztJWo?qlSQe^y+VCEiRUK$2c`-NiVFRFZ7fG<-Zir_EWPE-prfI`YA~Z3#s| z*Y~(*odWDWMhW<~Ti_)Xr_afq zM=qI$+~2vbJkKYJg!doY;s>D$=TV|A6;Lt_sXJ9X&zH5@H5HAAQd>kcTgL)PNG5IU zx>HpEmHGps=~%Lst=3mf0PftVqHEc7z@N@ynugd{uc%4?1G-gVrR3mEW&qe`A<-~% z_H%8!LaXEA_QxP1npswvOkRb7&#JRU-Kp}bc_^s>K%KZh6~K5pLxMSnuiuLQ{Xix^ z8uH8c)ht->@X;-~bV#qU$NHKDK;5ZgV0JT}R z#VQtPwvHvXc4C4U(*8C`tg5zMq0=2or#n=G(S(ubpD!VtM}+f#hofs*b!uS%B<-j! a6u$wnFx-{AH-kO^0000W93G);dt`LkJ)B#}mW zo|ES}%jHsvqLAHg_m_!kZ(b}G7-N`BCLE8)rX^KXQP;J~vWzecDa(@edQBY1y#Mqa z=iGBip6Al<_tk#CM{E6@d27uJAVCmdt!=;Iz2|bdsNrxZ-h1l0enRa8>UzC4kgBSR z2F|jKs;cOAyQ;2h@!mg~b^-tfgMl)}0Lb}##u$Thj_GvDcDqGut?u{x*CRHEoX_Wk zVaVZdpwsCP1c8i3Behzs&{}i5-LTdY$MIK##$+~|0bs4AEK70DsqbKb;MHKW*)SfD z(OUC(Jm~d$A4(~4&V9VX-zI1$X-NR}3jY&*0(TqTBK65@D*ylh07*qoM6N<$f@nj( Af&c&j literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..9498513511613d34f05fde749efe19446c536207 GIT binary patch literal 421 zcmV;W0b2fvP)#7j_+2D(%s5+Ec3e~zg52V`Ri#DEezk2_z6g4iN<(jl?k-OkMJ zj28Isl68%4r_J);{ljAgUt2@QUGEasW*~{tD9Kwai&O-h(Er>*IHU9$4mC)7nygxO9Wwrqr-iKQNO^D z1Uct$l)~2yOr|pgL4^B(pB7(Q~ zcxglD9MbWaO4TKEt{6}bk&Cni0J#7;=P(>5;GFP0k0ixqZsi7f+8o5603c~P!65#G zu@-x~I|!d&(eyQE3#&^Z=0TpFw%}`x{(FoK&x44FZYVwl5t_cnbY_qwX>nAQ%j$O8 zY@HnAC%6=o=}e5VTt!|fkc%Ab@4~qZa}vf_u{L9wyjCC=Dd8$-{3rDdJK)H!{Rnvn P00000NkvXXu0mjf`b4?& literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..a4740bd769b98ee721cbc40110cbe73a148f8127 GIT binary patch literal 453 zcmV;$0XqJPP)Wab6o9{HJFN;-te~3+RpKB>phjhfB9K^sy6PQzgxn#koPusZ9036$J7`rwMC>+k z65B~UGmizb6&pu_6|oD`_ca5(vHNL*kXf)Jl zG}I>PAI3qyr`_kTNEVR@QUadu6uhAa5e`(`F(+N z2Iq{bGrC?SA_7;J-*7H3nN5KJA_&WLTFKBkM>rm-=eHzDQ`FiL3N{3qud@QuqDbc) z%Ou7aMMTsZE7>w_6cpXoRW_%!drM5dV*K+501plyGW_z1cKbjllUdoj$`}Xzo*o}R z#SeB^rZM6Pf{5q0^z+9LwA%-S;e@XjSLG-h-$AEy1VFw{iNdkm+|0BIZWI)fCyyWD voI$N+8c$_5OSBGe6%>+Moc{G+_?PtyT8G%m6Pfb{00000NkvXXu0mjf<}$~j literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..817e6fe5c3a6a0f3b56e0f0da8c77331d0f48368 GIT binary patch literal 396 zcmV;70dxL|P)2!O3Mo z*9xRgn*gL~vh@}m07Z%bEUyS!A=YWjSEYc)T70J|^0LI^c#MrP@U@oOT06uh$axrI zRr|%iewf90DyzFNUUY%oZJH6Bxp#Ud>^*H q#N0U+&Pf-1m!Ki(^!3j8PwE$g>%qHwRSod~0000a%3cgkkX|@98uyMA9-;AuqCQ@2n?CtoX~jhkN4NHOVcnkX?8s)_e|YK1b`y z7OR+-te*Vev$*GK4FeZpj z01VnbfC4n{9GRQR=(q3JER_mF%%}wcMAAa=Tpv@YL5O|t>TF?Fe80!Qn290k-?Rl# z?f)Z)w`bNM-z}Z~y=R07*qoM6N<$ EfYq4*c&DuZP)e20*LT!Y~XyolZrg(ZIHC*6THSp1*~++bv(8#6Mv? z&l8i$M2BHWmSqG%fMr=VgRjr9@B07@heI64K`BKTh5$c8Y6iVt4?th9R{&v}rq1&m z-}kX?n;;1EE2IY4?REq~Ai^-zfCjKEi|6yn;c!4oiRXFWCT{@4Fjy{^6h%Rv=P0E_ znx?E)E3K5GvN|4*`fmn0NfN48P1Dp;N&z6H)BvvQ!tdYHH9!yq0??z;h$xDLQVKw) zX)12F8}s=bfYa$zLFzLYkH;d*GQu!qzu$|ZC;)V`*<`cXeBUd}5`gAwxF`x1iv|6D zUq?|?EtvpFl7vpDqc4}s+w#2`#Bofw+vR@0Bc()2N!9mYFreLTi?S?rS(ZE=kGesg z=frW0<2VA)uIq|8j^A1=%TiR~8lZwy>gV%We+K?}{Q@9}wi+pKdL;k=002ovPDHLk FV1kF#&C&n> literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..473d5423feec9c4bfb00b43bbbe9e1d92de55ac5 GIT binary patch literal 482 zcmV<80UiE{P)Ca(Djr-A5|>sJ`#v`xOp5ZNw9zFyPz8mF|Oh z_lPxVH?`Gj$dktpS(<`0O|~5E1^B+lVW$m197i0~tK^F%Z@MP{dm%dx!Y~Ao!dhOR zywX;)A^rYWl6I3Q3`o;NZbNneS3j>cO%r{TcI4OZYYD@E2aN-CrDWNH*>q0QZf=}x z0A=>G(=N_Bj4Ajs80y944|=_GvCdKy1%PIGF84W*%kNhJv|0^n)mUcp8wHrnZv>!T zuK_6Q6S(D|qG_5aAhlXde=yW6UjRs!Ez}kTFJBx3kmt)1vb%%l$49y}1<#J2G8#|R zSqC5@9-n*Xn|IDx0k#jxS;zYipNOJJ`h#J)>2-uZ1VKfNDfWM(F-At?2|*CBTCJE( z=gg*a%G}jB!uLG2)`@dgoLjNuU=7hY3Kfugy{4n_WGkX`mQuU}C?RXxx>y>yEBNpA Y7jH($yj+vO*8l(j07*qoM6N<$f;hh1D*ylh literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..94aa0a9345d95ea655e273a2a3eba353c654a46e GIT binary patch literal 494 zcmV8=bl2lV36Zi+D`6ldX)s`H z!1i>5QHjZ_oz+P5zfbSYKk$zwdGr0-*TV3yQP;em1XFo9|Md9_=00lKws0K>uiF8H zl3{XwcBcCvrANft@lMsUU8&ZdlBEe=*V}Ql7f`k>-o1STfMMF0Wrs9f(QLf}*b6B* zFpM&QWNAvH`BE*rCbP*9yHcZMn0Q@J{)Q9)7w0|ox}H|tLs>27QZmX|wu`EgCNTrQ zPscmmI@tp9?C(E(L^UBz*UW>FE@rn(?|soMBU*$2I{tMdk2#PiyaT|p4=_wy)~iSX z)~iSWPTDO1Wpe^sfa^Hwbv*^dFdgQ>NYi8qAfw@pX4#tO?biSdhqpPTxPyZyFEmRN zYK<1lXs)UWfQSgQiNAdp#<2jqhoqX|Utdsl>oN~U`KA@%$MsL@byt4hPxpW0B$&!& z?}|#*MKxvM_Zj$o^4!PA&#-Mv7hxn}9LsvSqTpZy(W9fL0&>!B>1FR~Ct?`KPN08sMD`M`jEnE(I)07*qoM6N<$g0MH|egFUf literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..6ec74c522de4283bc10243f4f16fd3e4eee98be5 GIT binary patch literal 444 zcmV;t0Ym4z^5QV?lU29K~v4w-zWSXTmwEHzSzwzN#=_;yq7IqjM1V#;}$#Y7wJ- zoXzM;p{}YUMP~ti|0=-LduAc9%b9OCHvnfLCkiIc0a!l_e7(KZB1Zd>63ZBwcu!qb z_BZ4N@O!sYT~+!po!V-%vFIH0$piu0oZ0j}%NP$z4uH}7U0stUx?$jFO8T|k@{p2c ziGCOWw9VPxQeaO_1Hd9iW+7PWIsv4vGl0tw0L1&yvz^;@La=L@h*VpPw;nUR>>$X*v0L*}gln#AaGT``-vc&yrMdiIcrZjH)#X{e6 z;heRlod3pl7;N3PTsTLO*z`S{zGw73^&W4gB3YKKyeK) z4AWtsLgg{QO30FfjGY7!Z!ltgqoi@CAcOV^nY~-sc8W@=D1Sqi0Pm`2S}7GZTiTVt zHxh{?h}n5i#clVgH(bj5g}IYCAk6;c=@BD;!f#_3{5n4S<+)6DysO?zyV~-E&s}cJdhjWp)B{Kq?W}N~x%TY~>tUr^h-Sb^zp}-BWKE zaQD$e09u#*5VE`jXZL}6o?-jmeL7!%=*XV{NYskZ`1pDL&iH`H9nq*`y{q?3#%Q|b+udc!5my}juWk6Jnk#$x&=CT#t#U^OMnnEv#poifm{{*_xb}swa94_RAEp60000 Date: Mon, 27 Jul 2026 21:04:48 +0900 Subject: [PATCH 07/16] [add] Sieve Drop --- .../exnihilo/ExNihiloConfigHolder.java | 283 ++++++++++++++++++ .../exnihilo/ExNihiloEventHandlers.java | 4 +- .../integration/exnihilo/ExNihiloModule.java | 15 +- .../exnihilo/recipes/SieveDrops.java | 27 -- .../LayeredVeinMaterialDistribution.java | 236 +++++++++++++++ .../exnihilo/recipes/sieve/SieveDrops.java | 235 +++++++++++++++ .../recipes/sieve/VeinGroupIndex.java | 94 ++++++ .../exnihilo/recipes/sieve/VeinPathUtils.java | 77 +++++ .../sieve/VeinProbabilityReporter.java | 110 +++++++ 9 files changed, 1050 insertions(+), 31 deletions(-) delete mode 100644 src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/recipes/SieveDrops.java create mode 100644 src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/recipes/sieve/LayeredVeinMaterialDistribution.java create mode 100644 src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/recipes/sieve/SieveDrops.java create mode 100644 src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/recipes/sieve/VeinGroupIndex.java create mode 100644 src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/recipes/sieve/VeinPathUtils.java create mode 100644 src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/recipes/sieve/VeinProbabilityReporter.java 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 index 4383b09..d650c19 100644 --- a/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/ExNihiloConfigHolder.java +++ b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/ExNihiloConfigHolder.java @@ -11,7 +11,290 @@ 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" }) public static boolean replaceCrook = false; + + public static class SieveCategory { + + @Config.Comment({ + "Outputs GTCEu vein and material probability information to the log.", + "This option is intended to help configure generated sieve drops.", + "Default: false" + }) + public boolean outputVeinProbabilities = false; + + @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" + }; + } } 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 index be97192..0c37a9a 100644 --- a/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/ExNihiloEventHandlers.java +++ b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/ExNihiloEventHandlers.java @@ -12,7 +12,7 @@ import gregtech.api.items.toolitem.IGTTool; import gregtech.api.items.toolitem.ToolClasses; -import gregtech.api.unification.material.event.PostMaterialEvent; +import gregtech.api.unification.material.event.MaterialEvent; import gregtech.api.unification.ore.OrePrefix; import gregtech.common.items.MetaItems; @@ -57,7 +57,7 @@ public static void hammer(BlockEvent.HarvestDropsEvent event) { // Material Event @SubscribeEvent - public static void postRegisterMaterials(@NotNull PostMaterialEvent event) { + public static void registerOrePrefix(@NotNull MaterialEvent event) { MetaItems.addOrePrefix(GTMTOrePrefix.oreChunk, GTMTOrePrefix.oreEnderChunk, GTMTOrePrefix.oreNetherChunk, GTMTOrePrefix.oreSandyChunk); GTMTOrePrefix.oreChunk.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 index 8006d5f..6a9c1b5 100644 --- a/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/ExNihiloModule.java +++ b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/ExNihiloModule.java @@ -10,6 +10,7 @@ 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; @@ -27,7 +28,8 @@ import com.github.gtexpert.gtmt.integration.IntegrationSubmodule; import com.github.gtexpert.gtmt.integration.exnihilo.items.ExNihiloItems; import com.github.gtexpert.gtmt.integration.exnihilo.recipes.ExNihiloToolRecipe; -import com.github.gtexpert.gtmt.integration.exnihilo.recipes.SieveDrops; +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; @@ -51,11 +53,20 @@ public List> getEventBusSubscribers() { public void preInit(FMLPreInitializationEvent event) { ExNihiloToolsItems.init(); ExNihiloItems.init(); + } + + @Override + public void init(FMLInitializationEvent evet) { + SieveDrops.readSieveDropsFromConfig(); ExNihiloRegistryManager.registerSieveDefaultRecipeHandler(new SieveDrops()); } @Override - public void postInit(FMLPostInitializationEvent event) {} + public void postInit(FMLPostInitializationEvent event) { + if (ExNihiloConfigHolder.drops.outputVeinProbabilities) { + VeinProbabilityReporter.output(); + } + } @SubscribeEvent public static void onRegisterItems(RegistryEvent.Register event) { diff --git a/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/recipes/SieveDrops.java b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/recipes/SieveDrops.java deleted file mode 100644 index ce94bd6..0000000 --- a/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/recipes/SieveDrops.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.github.gtexpert.gtmt.integration.exnihilo.recipes; - -import static com.github.gtexpert.gtmt.integration.exnihilo.items.ExNihiloItems.pebbleItem; - -import org.jetbrains.annotations.NotNull; - -import gregtech.common.blocks.MetaBlocks; - -import exnihilocreatio.blocks.BlockSieve; -import exnihilocreatio.registries.manager.ISieveDefaultRegistryProvider; -import exnihilocreatio.registries.registries.SieveRegistry; -import exnihilocreatio.util.ItemInfo; - -public class SieveDrops implements ISieveDefaultRegistryProvider { - - @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()); - } -} 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..9ebd18c --- /dev/null +++ b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/recipes/sieve/SieveDrops.java @@ -0,0 +1,235 @@ +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 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) { + 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); + } + } + } + + 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) { + throw new IllegalArgumentException( + "Expected format [modid:]material@chance*mesh_level: " + recipe); + } + + 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; + } + + 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 = null; + } + + enum SieveDropType implements IStringSerializable { + + SAND("sand", GTMTOrePrefix.oreSandyChunk, null), + GRAVEL("gravel", GTMTOrePrefix.oreChunk, null), + GRANITE("crushedGranite", GTMTOrePrefix.oreChunk, null), + DIORITE("crushedDiorite", GTMTOrePrefix.oreChunk, null), + ANDESITE("crushedAndesite", GTMTOrePrefix.oreChunk, null), + + NETHERRACK("nether", GTMTOrePrefix.oreNetherChunk, + new ItemStack(ModBlocks.netherrackCrushed)), + END("end", GTMTOrePrefix.oreEnderChunk, + new ItemStack(ModBlocks.endstoneCrushed)); + + private final String registryName; + private final OrePrefix outputPrefix; + private final ItemStack explicitInput; + + SieveDropType(String registryName, OrePrefix outputPrefix, ItemStack explicitInput) { + this.registryName = registryName; + this.outputPrefix = outputPrefix; + this.explicitInput = explicitInput; + } + + @Override + @Nonnull + public String getName() { + return registryName; + } + + public OrePrefix getOutputPrefix() { + return outputPrefix; + } + + public boolean hasExplicitInput() { + return explicitInput != null; + } + + public ItemStack getExplicitInput() { + return explicitInput == null ? ItemStack.EMPTY : explicitInput.copy(); + } + } + + /** + * 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..90b3c9e --- /dev/null +++ b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/recipes/sieve/VeinProbabilityReporter.java @@ -0,0 +1,110 @@ +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 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()))); + + 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(); + + ModLog.logger.info( + " Material: {} | chance: {}", + material.getKey().getRegistryName(), + formatPercent(finalChance)); + } + } + + ModLog.logger.info("===================================================="); + } + + private static String formatPercent(double probability) { + return String.format( + java.util.Locale.ROOT, + "%.4f", + probability); + } +} From 7322b39a59a929bff70c2c0ec9a09a5528c7a984 Mon Sep 17 00:00:00 2001 From: ko_no <90126004+MrKono@users.noreply.github.com> Date: Wed, 29 Jul 2026 23:03:35 +0900 Subject: [PATCH 08/16] [add] Auto Sieve --- .../exnihilo/ExNihiloConfigHolder.java | 23 +++-- .../integration/exnihilo/ExNihiloModule.java | 19 ++-- .../exnihilo/ExNihiloRecipeMaps.java | 18 ++++ .../exnihilo/items/ItemGTMTPebbles.java | 17 ---- .../ExNihiloMetaTileEntities.java | 22 +++++ .../MetaTileEntityElectricSieve.java | 63 ++++++++++++++ .../MetaTileEntitySteamSieve.java | 68 +++++++++++++++ .../metatileentities/SieveRecipeMap.java | 51 +++++++++++ .../exnihilo/recipes/ExNihiloMiscRecipe.java | 81 ++++++++++++++++++ .../exnihilo/recipes/ExNihiloSieveRecipe.java | 48 +++++++++++ .../exnihilo/recipes/sieve/SieveDrops.java | 2 + .../sieve/VeinProbabilityReporter.java | 17 +++- .../progress_bar/progress_bar_sift_bronze.png | Bin 0 -> 465 bytes .../progress_bar/progress_bar_sift_steel.png | Bin 0 -> 475 bytes .../resources/assets/gtmt/lang/en_us.lang | 34 ++++++++ .../resources/assets/gtmt/lang/ja_jp.lang | 34 ++++++++ 16 files changed, 464 insertions(+), 33 deletions(-) create mode 100644 src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/ExNihiloRecipeMaps.java create mode 100644 src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/metatileentities/ExNihiloMetaTileEntities.java create mode 100644 src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/metatileentities/MetaTileEntityElectricSieve.java create mode 100644 src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/metatileentities/MetaTileEntitySteamSieve.java create mode 100644 src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/metatileentities/SieveRecipeMap.java create mode 100644 src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/recipes/ExNihiloMiscRecipe.java create mode 100644 src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/recipes/ExNihiloSieveRecipe.java create mode 100644 src/main/resources/assets/gregtech/textures/gui/progress_bar/progress_bar_sift_bronze.png create mode 100644 src/main/resources/assets/gregtech/textures/gui/progress_bar/progress_bar_sift_steel.png 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 index d650c19..5bd183a 100644 --- a/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/ExNihiloConfigHolder.java +++ b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/ExNihiloConfigHolder.java @@ -17,16 +17,25 @@ public class ExNihiloConfigHolder { @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; - public static class SieveCategory { + @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({ - "Outputs GTCEu vein and material probability information to the log.", - "This option is intended to help configure generated sieve drops.", - "Default: false" - }) - public 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.", 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 index 6a9c1b5..7747938 100644 --- a/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/ExNihiloModule.java +++ b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/ExNihiloModule.java @@ -20,6 +20,7 @@ import org.jetbrains.annotations.NotNull; +import gregtech.api.gui.resources.SteamTexture; import gregtech.api.items.toolitem.IGTTool; import com.github.gtexpert.gtmt.api.ModValues; @@ -27,7 +28,8 @@ 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.recipes.ExNihiloToolRecipe; +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; @@ -43,6 +45,9 @@ 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() { @@ -53,17 +58,17 @@ public List> getEventBusSubscribers() { public void preInit(FMLPreInitializationEvent event) { ExNihiloToolsItems.init(); ExNihiloItems.init(); + ExNihiloMetaTileEntities.init(); } @Override public void init(FMLInitializationEvent evet) { - SieveDrops.readSieveDropsFromConfig(); ExNihiloRegistryManager.registerSieveDefaultRecipeHandler(new SieveDrops()); } @Override public void postInit(FMLPostInitializationEvent event) { - if (ExNihiloConfigHolder.drops.outputVeinProbabilities) { + if (ExNihiloConfigHolder.outputVeinProbabilities) { VeinProbabilityReporter.output(); } } @@ -81,7 +86,6 @@ public static void onRegisterItems(RegistryEvent.Register event) { @SideOnly(Side.CLIENT) public static void onRegisterModels(ModelRegistryEvent event) { ExNihiloToolsItems.registerModels(); - // ItemGTMTPebbles.registerModels(); } @SubscribeEvent @@ -94,11 +98,14 @@ public static void onRegisterColors(ColorHandlerEvent.Item event) { public void registerBlocks(RegistryEvent.Register event) {} @Override - public void registerRecipesNormal(RegistryEvent.Register event) {} + public void registerRecipesNormal(RegistryEvent.Register event) { + SieveDrops.readSieveDropsFromConfig(); + } @Override public void registerRecipesLowest(RegistryEvent.Register event) { - ExNihiloToolRecipe.registerRecipes(); 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..fef1de7 --- /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("auto_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/items/ItemGTMTPebbles.java b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/items/ItemGTMTPebbles.java index 77d80cb..68bb943 100644 --- 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 @@ -1,20 +1,3 @@ -/* - * Copyright 2019, TheLimePixel, dan - * GregBlock Utilities - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ package com.github.gtexpert.gtmt.integration.exnihilo.items; import javax.annotation.Nonnull; 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..4078976 --- /dev/null +++ b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/recipes/ExNihiloMiscRecipe.java @@ -0,0 +1,81 @@ +package com.github.gtexpert.gtmt.integration.exnihilo.recipes; + +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 com.github.gtexpert.gtmt.api.util.Mods; +import com.github.gtexpert.gtmt.integration.exnihilo.ExNihiloConfigHolder; + +import exnihilocreatio.ModBlocks; + +public class ExNihiloMiscRecipe { + + public static void init() { + // 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(); + } +} 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..024f169 --- /dev/null +++ b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/recipes/ExNihiloSieveRecipe.java @@ -0,0 +1,48 @@ +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.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/sieve/SieveDrops.java b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/recipes/sieve/SieveDrops.java index 9ebd18c..7e0e107 100644 --- 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 @@ -23,6 +23,7 @@ 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; @@ -155,6 +156,7 @@ public void registerRecipeDefaults(@NotNull SieveRegistry registry) { } } SIEVE_DROPS_MAP = null; + ExNihiloSieveRecipe.register(registry); } enum SieveDropType implements IStringSerializable { 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 index 90b3c9e..6789f5a 100644 --- 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 @@ -8,6 +8,7 @@ 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; @@ -41,6 +42,11 @@ public static void output() { Comparator.comparing(definition -> VeinPathUtils.normalize( definition.getDepositName()))); + int min = ConfigHolder.worldgen.minVeinsInSection; + int add = ConfigHolder.worldgen.additionalVeinsInSection; + int ave = min + add / 2; + boolean overflowed = false; + ModLog.logger.info("========== GTCEu Vein Probability Report =========="); for (Map.Entry group : index.getTotalWeightByGroup().entrySet()) { @@ -89,12 +95,17 @@ public static void output() { for (Map.Entry material : materialRatios.entrySet()) { - double finalChance = veinChance * material.getValue(); + double finalChance = veinChance * material.getValue() * ave; + if (finalChance > 1) { + finalChance = 1; + overflowed = true; + } ModLog.logger.info( - " Material: {} | chance: {}", + " Material: {} | Suggested Sieve Chance: {}{}", material.getKey().getRegistryName(), - formatPercent(finalChance)); + formatPercent(finalChance), + overflowed ? " (Overflow)" : ""); } } 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 0000000000000000000000000000000000000000..ebdea364f1f2879397c80237f95e061d9deaf362 GIT binary patch literal 465 zcmV;?0WSWDP)e zSad^gZEa<4bO1wgWnpw>WFU8GbZ8()Nlj2!fese{00B8kL_t(Y$K6!B4Z<)GeMVUz zlDmijA~69i>;Mz6Kq{IPG*m3W0!%iDb=9eRBfd_%moLi`C_d+_R#sEauzgd+NnH|Lo^pRzGV0 z!E!|IQ3n&aVv-wtF|})akW@*^GecG-smtQeBDF0J|6E^_;o}x1QU5%Ke*^iz$q>YC z78f53PC!bg4!0#uwW@{blDTR*;XzJIhck?XFJi>$tfB5ZYi{bB6Y!=_k4|UJYleM= zNonyTUXEczFLOlBzbY?>+~AHV$u<6LB~sQMBvq2SEWRFh)0AAj`WwAh00000NkvXX Hu0mjf3ah&K literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..8a7535fdc6321896e42fea4cd9f2cc2bbf532e6a GIT binary patch literal 475 zcmeAS@N?(olHy`uVBq!ia0vp^B0#Lc!3HG%8Q!`Lq}Y|gW!U_%O?XxI14-? ziy0X7ltGxWVyS%@P>{XE)7O>#8Iu$XuNeQmt0_Ps$r9Iy66gHf+|;}h2Ir#G#FEq$ zh4Rdj3cf$<%nhkhL1d>(iCUkag-JiJr2(yHQgrvl; z2Cuu7q3U%FQ*7rhYD!i2^9o%#FQ90jg!OZY2eX%zKD9e4{@XV>YsRwn$ri^yFfg>A zwQamMHG5X~;d72gHCAd5_=IPxU)WVNDdXk|jdZ=J9`$Y^UlWF&$DxHkjGkn?U3P0* z@jMmn{70t@D_V;ae0X2~YPqxZ(hR9v+pKeRPTN-V)~$Og(RS77smDw6iUad{f|=EX zSF<(m@CaHbnc_O>md?L3LG|5-#CLSbXoi1H5cs{i@xAob$RqxYt_NhNt;z1PxMD6k zRsH_lt?TX>+~He$e|_|BO`t23eyV1hAAPtu|CG)5bM@&@b)O0@|M1GE_gwM+a}Ohz zZF)Avc&p6e4N=QvH2-#OkqKg!TXy6!+qtzRn{=I~M_pRANw4PHm8!PA4B7U|GrV>H P89?Ca>gTe~DWM4f1)aqi literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtmt/lang/en_us.lang b/src/main/resources/assets/gtmt/lang/en_us.lang index 5b921ce..6942219 100644 --- a/src/main/resources/assets/gtmt/lang/en_us.lang +++ b/src/main/resources/assets/gtmt/lang/en_us.lang @@ -39,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.steam_sieve_steel.name=High Pressure Steam Sieve +gtmt.machine.steam_sieve_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.auto_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 41331c7..5826d98 100644 --- a/src/main/resources/assets/gtmt/lang/ja_jp.lang +++ b/src/main/resources/assets/gtmt/lang/ja_jp.lang @@ -39,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.steam_sieve.steel.name=高圧蒸気式ふるい +gtmt.machine.steam_sieve.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.auto_sieve.name=自動ふるい # Tinkers' Construct連携 — カスタムトレイト modifier.gtmt_heat_resistant.name=耐熱性 From 4376179314286db927583ac161b08c5afab7314f Mon Sep 17 00:00:00 2001 From: ko_no <90126004+MrKono@users.noreply.github.com> Date: Tue, 4 Aug 2026 21:55:17 +0900 Subject: [PATCH 09/16] [fix] lang --- src/main/resources/assets/gtmt/lang/en_us.lang | 8 ++++---- src/main/resources/assets/gtmt/lang/ja_jp.lang | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/resources/assets/gtmt/lang/en_us.lang b/src/main/resources/assets/gtmt/lang/en_us.lang index 6942219..375864e 100644 --- a/src/main/resources/assets/gtmt/lang/en_us.lang +++ b/src/main/resources/assets/gtmt/lang/en_us.lang @@ -40,10 +40,10 @@ 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.steam_sieve_steel.name=High Pressure Steam Sieve -gtmt.machine.steam_sieve_steel.tooltip=Tired of Right-Clicking all day? +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 diff --git a/src/main/resources/assets/gtmt/lang/ja_jp.lang b/src/main/resources/assets/gtmt/lang/ja_jp.lang index 5826d98..ace2d32 100644 --- a/src/main/resources/assets/gtmt/lang/ja_jp.lang +++ b/src/main/resources/assets/gtmt/lang/ja_jp.lang @@ -42,8 +42,8 @@ gtmt.machine.auto_chisel.uv.tooltip=あなたの理想、彫刻します/n左が # Auto Sieve gtmt.machine.sieve_steam.name=蒸気式ふるい gtmt.machine.sieve_steam.tooltip=一日中右クリックするのはもう疲れただろう? -gtmt.machine.steam_sieve.steel.name=高圧蒸気式ふるい -gtmt.machine.steam_sieve.steel.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シミュレータ From 326c65850abd7f6f059fcb5dc43bef1eb0d77d6c Mon Sep 17 00:00:00 2001 From: ko_no <90126004+MrKono@users.noreply.github.com> Date: Tue, 4 Aug 2026 21:55:39 +0900 Subject: [PATCH 10/16] [add] sieve recipe --- .../exnihilo/items/ItemGTMTPebbles.java | 4 +- .../exnihilo/recipes/ExNihiloMiscRecipe.java | 64 +++++++++++++++++++ 2 files changed, 66 insertions(+), 2 deletions(-) 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 index 68bb943..5dbf18a 100644 --- 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 @@ -98,10 +98,10 @@ public void initModel(ModelRegistryEvent e) { public enum GTPebbles implements IStringSerializable { - BASALT("basalt"), BLACK_GRANITE("black_granite"), + RED_GRANITE("red_granite"), MARBLE("marble"), - RED_GRANITE("red_granite"); + BASALT("basalt"); private final String name; public static final GTPebbles[] VALUES = values(); 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 index 4078976..aa1abac 100644 --- 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 @@ -1,5 +1,14 @@ 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; @@ -9,15 +18,27 @@ 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); @@ -77,5 +98,48 @@ public static void init() { .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)); } } From ac122386c5cb5092c8080606507db8c8550a8f48 Mon Sep 17 00:00:00 2001 From: ko_no <90126004+MrKono@users.noreply.github.com> Date: Tue, 4 Aug 2026 22:08:58 +0900 Subject: [PATCH 11/16] [add] debug cfg --- .../integration/exnihilo/ExNihiloConfigHolder.java | 4 ++++ .../exnihilo/recipes/sieve/SieveDrops.java | 13 +++++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) 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 index 5bd183a..c4204c2 100644 --- a/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/ExNihiloConfigHolder.java +++ b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/ExNihiloConfigHolder.java @@ -305,5 +305,9 @@ public static class SieveCategory { "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/recipes/sieve/SieveDrops.java b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/recipes/sieve/SieveDrops.java index 7e0e107..0a57bb6 100644 --- 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 @@ -54,6 +54,7 @@ public static void readSieveDropsFromConfig() { } private static void readSieveDropsFromConfig(String[] recipes, SieveDropType type) { + ModLog.logger.info("Reading SieveDrops from config..."); if (recipes == null || recipes.length == 0) { ModLog.logger.info("No configurations found for {} sieve category, skipping...", type.getName()); return; @@ -66,6 +67,7 @@ private static void readSieveDropsFromConfig(String[] recipes, SieveDropType typ SIEVE_DROPS_MAP.get(type).add(drop); } } + ModLog.logger.info("Complete."); } private static SieveDrop validateInputs(String recipe) { @@ -80,8 +82,8 @@ private static SieveDrop validateInputs(String recipe) { int starIndex = trimmed.lastIndexOf('*'); if (atIndex <= 0 || starIndex <= atIndex + 1 || starIndex >= trimmed.length() - 1) { - throw new IllegalArgumentException( - "Expected format [modid:]material@chance*mesh_level: " + recipe); + ModLog.logger.error("Expected format [modid:]material@chance*mesh_level: " + recipe); + return drop; } String materialText = trimmed.substring(0, atIndex).trim(); @@ -123,8 +125,11 @@ private static SieveDrop validateInputs(String recipe) { return drop; } - ModLog.logger.info("Register SieveDropEntry: Material={}, Chance={}, MeshLevel={}", material.getRegistryName(), - chance, meshLevel); + if (ExNihiloConfigHolder.drops.outputsDebugs) { + ModLog.logger.info("Register SieveDropEntry: Material={}, Chance={}, MeshLevel={}", + material.getRegistryName(), + chance, meshLevel); + } drop = new SieveDrop(material, chance, meshLevel); return drop; } From 2237e8fed4bdd0ebdc2a6d172b7d776044fd4f35 Mon Sep 17 00:00:00 2001 From: ko_no <90126004+MrKono@users.noreply.github.com> Date: Tue, 4 Aug 2026 23:03:07 +0900 Subject: [PATCH 12/16] Changelog, Readme, and LICENSES... --- CHANGELOG.md | 14 +++++++++++++ DEVELOPER.md | 45 +++++++++++++++++++++++++++++++++++++++++ LICENSE-ExNihiloCreatio | 25 +++++++++++++++++++++++ LICENSE-Gregification | 21 +++++++++++++++++++ README.md | 9 +++++++++ 5 files changed, 114 insertions(+) create mode 100644 LICENSE-ExNihiloCreatio create mode 100644 LICENSE-Gregification 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 From b1454a3249ffacc7f278661d5c7131c9117b60cd Mon Sep 17 00:00:00 2001 From: ko_no <90126004+MrKono@users.noreply.github.com> Date: Wed, 5 Aug 2026 17:45:31 +0900 Subject: [PATCH 13/16] apply review --- .../exnihilo/recipes/ExNihiloSieveRecipe.java | 6 ++-- .../exnihilo/recipes/ExNihiloToolRecipe.java | 29 +++++++--------- .../exnihilo/recipes/sieve/SieveDrops.java | 33 ++++++------------- .../sieve/VeinProbabilityReporter.java | 9 ++--- 4 files changed, 28 insertions(+), 49 deletions(-) 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 index 024f169..fdcd6f9 100644 --- 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 @@ -33,13 +33,15 @@ public static void register(@NotNull SieveRegistry registry) { NBTCondition.ANY); for (Siftable siftable : registry.getDrops(stack)) { if (siftable.getDrop() == null) continue; - if (siftable.getMeshLevel() == recipe.getMesh().getMetadata()) - if ((int) (siftable.getChance() * 10000) >= 10000) { + 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 index 112c466..46f0f78 100644 --- 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 @@ -22,15 +22,14 @@ public static void registerRecipes() { crooks(material); } - if (ExNihiloConfigHolder.replaceCrook) { replaceCrooks(); } } public static void crooks(Material material) { - if (!ExNihiloConfigHolder.replaceCrook && - (material == Materials.Iron || material == Materials.Gold || material == Materials.Diamond)) { + if (material == Materials.Iron || material == Materials.Gold || material == Materials.Diamond || + material == Materials.Wood) { return; } @@ -48,28 +47,24 @@ public static void crooks(Material material) { } public static void replaceCrooks() { - // replace recipes - // Gold + // remove ModHandler.removeRecipeByOutput(Mods.ExNihilo.getItem("crook_gold")); - ModHandler.addShapedRecipe("crook_gold", 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)); - - // replace crooks - // Wood, Iron, Diamond - ModHandler.removeRecipeByOutput(Mods.ExNihilo.getItem("crook_wood")); - ModHandler.addShapedRecipe("crook_wood", + 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.removeRecipeByOutput(Mods.ExNihilo.getItem("crook_iron")); - ModHandler.addShapedRecipe("crook_diamond", ExNihiloToolsItems.CROOK.get(Materials.Iron), + ModHandler.addShapedRecipe("crook_iron_replaced", ExNihiloToolsItems.CROOK.get(Materials.Iron), "RR", " R", " R", 'R', new UnificationEntry(OrePrefix.stick, Materials.Iron)); - - ModHandler.removeRecipeByOutput(Mods.ExNihilo.getItem("crook_diamond")); - ModHandler.addShapedRecipe("crook_diamond", ExNihiloToolsItems.CROOK.get(Materials.Diamond), + 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/SieveDrops.java b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/recipes/sieve/SieveDrops.java index 0a57bb6..6fea3b5 100644 --- 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 @@ -54,7 +54,7 @@ public static void readSieveDropsFromConfig() { } private static void readSieveDropsFromConfig(String[] recipes, SieveDropType type) { - ModLog.logger.info("Reading SieveDrops from config..."); + 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; @@ -160,31 +160,26 @@ public void registerRecipeDefaults(@NotNull SieveRegistry registry) { } } } - SIEVE_DROPS_MAP = null; + SIEVE_DROPS_MAP.clear(); ExNihiloSieveRecipe.register(registry); } enum SieveDropType implements IStringSerializable { - SAND("sand", GTMTOrePrefix.oreSandyChunk, null), - GRAVEL("gravel", GTMTOrePrefix.oreChunk, null), - GRANITE("crushedGranite", GTMTOrePrefix.oreChunk, null), - DIORITE("crushedDiorite", GTMTOrePrefix.oreChunk, null), - ANDESITE("crushedAndesite", GTMTOrePrefix.oreChunk, null), - - NETHERRACK("nether", GTMTOrePrefix.oreNetherChunk, - new ItemStack(ModBlocks.netherrackCrushed)), - END("end", GTMTOrePrefix.oreEnderChunk, - new ItemStack(ModBlocks.endstoneCrushed)); + 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; - private final ItemStack explicitInput; - SieveDropType(String registryName, OrePrefix outputPrefix, ItemStack explicitInput) { + SieveDropType(String registryName, OrePrefix outputPrefix) { this.registryName = registryName; this.outputPrefix = outputPrefix; - this.explicitInput = explicitInput; } @Override @@ -196,14 +191,6 @@ public String getName() { public OrePrefix getOutputPrefix() { return outputPrefix; } - - public boolean hasExplicitInput() { - return explicitInput != null; - } - - public ItemStack getExplicitInput() { - return explicitInput == null ? ItemStack.EMPTY : explicitInput.copy(); - } } /** 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 index 6789f5a..e3db91f 100644 --- 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 @@ -45,7 +45,6 @@ public static void output() { int min = ConfigHolder.worldgen.minVeinsInSection; int add = ConfigHolder.worldgen.additionalVeinsInSection; int ave = min + add / 2; - boolean overflowed = false; ModLog.logger.info("========== GTCEu Vein Probability Report =========="); @@ -96,16 +95,12 @@ public static void output() { for (Map.Entry material : materialRatios.entrySet()) { double finalChance = veinChance * material.getValue() * ave; - if (finalChance > 1) { - finalChance = 1; - overflowed = true; - } ModLog.logger.info( " Material: {} | Suggested Sieve Chance: {}{}", material.getKey().getRegistryName(), formatPercent(finalChance), - overflowed ? " (Overflow)" : ""); + finalChance > 1 ? " (Overflow)" : ""); } } @@ -116,6 +111,6 @@ private static String formatPercent(double probability) { return String.format( java.util.Locale.ROOT, "%.4f", - probability); + probability > 1 ? 1 : probability); } } From c8525f9c384f8cc53eade8a6088f005b31e0979f Mon Sep 17 00:00:00 2001 From: ko_no <90126004+MrKono@users.noreply.github.com> Date: Wed, 5 Aug 2026 17:47:33 +0900 Subject: [PATCH 14/16] =?UTF-8?q?=E5=BF=98=E3=82=8C=E7=89=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/github/gtexpert/gtmt/api/util/Mods.java | 4 ++-- .../gtexpert/gtmt/integration/exnihilo/ExNihiloModule.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) 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 12d52f5..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,7 +43,7 @@ public enum Mods { EnderIOMachines(Names.ENDER_MACHINES), EnderIOConduits(Names.ENDER_CONDUITS), EnderIOAE2Conduits(Names.ENDER_AE2_CONDUITS), - ExNihilo(Names.EX_NIHOLO), + ExNihilo(Names.EX_NIHILO), ExtraCPUs(Names.EXTRA_CPUS), GalacticraftCore(Names.GALACTICRAFT_CORE), GregicalityMultiblocks(Names.GREGICALITY_MULTIBLOCKS), @@ -117,7 +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_NIHOLO = "exnihilocreatio"; + 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/ExNihiloModule.java b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/ExNihiloModule.java index 7747938..cbd3c55 100644 --- a/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/ExNihiloModule.java +++ b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/ExNihiloModule.java @@ -40,7 +40,7 @@ @TModule( moduleID = Modules.MODULE_EXNIHILO, containerID = ModValues.MODID, - modDependencies = Mods.Names.EX_NIHOLO, + modDependencies = Mods.Names.EX_NIHILO, name = "GTMoreTools Ex Nihilo Creatio Integration", description = "Ex Nihilo Creatio Module") public class ExNihiloModule extends IntegrationSubmodule { From ad646440c2496c530ed99acc77c84036de55d24a Mon Sep 17 00:00:00 2001 From: ko_no <90126004+MrKono@users.noreply.github.com> Date: Wed, 5 Aug 2026 20:28:07 +0900 Subject: [PATCH 15/16] =?UTF-8?q?gcym=E9=80=A3=E6=90=BA=E3=81=AE=E3=81=9F?= =?UTF-8?q?=E3=82=81=E3=81=AB`SIEVE=5FRECIPES`=E3=81=AEunlocalizedName?= =?UTF-8?q?=E3=82=92=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gtexpert/gtmt/integration/exnihilo/ExNihiloRecipeMaps.java | 2 +- src/main/resources/assets/gtmt/lang/en_us.lang | 2 +- src/main/resources/assets/gtmt/lang/ja_jp.lang | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) 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 index fef1de7..102151a 100644 --- a/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/ExNihiloRecipeMaps.java +++ b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/ExNihiloRecipeMaps.java @@ -11,7 +11,7 @@ public class ExNihiloRecipeMaps { - public static final RecipeMap SIEVE_RECIPES = new SieveRecipeMap("auto_sieve", 2, 42, 0, 0, + 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/resources/assets/gtmt/lang/en_us.lang b/src/main/resources/assets/gtmt/lang/en_us.lang index 375864e..832e77e 100644 --- a/src/main/resources/assets/gtmt/lang/en_us.lang +++ b/src/main/resources/assets/gtmt/lang/en_us.lang @@ -74,7 +74,7 @@ gtmt.machine.electric_sieve.opv.tooltip=From nothing, something # recipemaps recipemap.auto_chisel.name=Auto Chisel -recipemap.auto_sieve.name=Auto Sieve +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 ace2d32..764534f 100644 --- a/src/main/resources/assets/gtmt/lang/ja_jp.lang +++ b/src/main/resources/assets/gtmt/lang/ja_jp.lang @@ -74,7 +74,7 @@ gtmt.machine.electric_sieve.opv.tooltip=無から有を # recipemaps recipemap.auto_chisel.name=自動彫刻機 -recipemap.auto_sieve.name=自動ふるい +recipemap.electric_sieve.name=自動ふるい # Tinkers' Construct連携 — カスタムトレイト modifier.gtmt_heat_resistant.name=耐熱性 From 1acc43509e40c519b633b0f5468eda07e6523d5e Mon Sep 17 00:00:00 2001 From: ko_no <90126004+MrKono@users.noreply.github.com> Date: Wed, 5 Aug 2026 20:43:32 +0900 Subject: [PATCH 16/16] add ExNihiloCreatio --- .github/workflows/publish.yml | 1 + 1 file changed, 1 insertion(+) 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