Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions buildscript.properties
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ debug_eio = false
debug_deda = false
debug_avaritia = false
debug_chisel = false
debug_bbw = 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:
Expand Down
7 changes: 6 additions & 1 deletion dependencies.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,6 @@ dependencies {
}

// Debug AE2UEL 0.56.7
compileOnly rfg.deobf("curse.maven:ae2-extended-life-570458:6302098")
if (project.debug_all.toBoolean() || project.debug_chisel.toBoolean()) {
runtimeOnly rfg.deobf("curse.maven:ae2-extended-life-570458:6302098")
}
Expand Down Expand Up @@ -93,6 +92,12 @@ dependencies {
runtimeOnly rfg.deobf("curse.maven:ctm-267602:2915363") // CTM 1.0.2.31
}

// Debug Better Builder's Wands: 0.13.2
compileOnly rfg.deobf("curse.maven:better-builders-wands-238403:2691084")
if (project.debug_all.toBoolean() || project.debug_bbw.toBoolean()) {
runtimeOnly rfg.deobf("curse.maven:better-builders-wands-238403:2691084")
}

// Boot error fix
if (project.debug_all.toBoolean() || project.debug_eio.toBoolean()) {
runtimeOnly files("libs/EnderCore-1.12.2-0.5.78-core.jar")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ public enum Mods {
Avaritia(Names.AVARITIA),
Avaritiaaddons(Names.AVARITIAADDONS),
Baubles(Names.BAUBLES),
BetterBuildersWands(Names.BETTER_BUILDERS_WANDS),
Chisel(Names.CHISEL),
CTM(Names.CONNECTED_TEXTURES_MOD),
CraftTweaker(Names.CRAFT_TWEAKER),
Expand Down Expand Up @@ -102,6 +103,7 @@ public static class Names {
public static final String AVARITIAADDONS = "avaritiaddons";
public static final String BAUBLES = "baubles";
public static final String BOTANY = "botany";
public static final String BETTER_BUILDERS_WANDS = "betterbuilderswands";
public static final String CHISEL = "chisel";
public static final String CONNECTED_TEXTURES_MOD = "ctm";
public static final String CRAFT_TWEAKER = "crafttweaker";
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
package com.github.gtexpert.gtmoretools.integration.bbw;

import java.util.Collections;
import java.util.List;

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.FMLPreInitializationEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import net.minecraftforge.registries.IForgeRegistry;

import org.jetbrains.annotations.NotNull;

import gregtech.api.items.toolitem.IGTTool;

import com.github.gtexpert.gtmoretools.api.ModValues;
import com.github.gtexpert.gtmoretools.api.modules.TModule;
import com.github.gtexpert.gtmoretools.api.util.Mods;
import com.github.gtexpert.gtmoretools.integration.IntegrationSubmodule;
import com.github.gtexpert.gtmoretools.integration.bbw.recipes.BBWToolsRecipe;
import com.github.gtexpert.gtmoretools.integration.bbw.tools.BBWToolItems;
import com.github.gtexpert.gtmoretools.integration.bbw.tools.BBWToolRecipeHandler;
import com.github.gtexpert.gtmoretools.modules.Modules;

@TModule(
moduleID = Modules.MODULE_BBW,
containerID = ModValues.MODID,
modDependencies = Mods.Names.BETTER_BUILDERS_WANDS,
name = "GTMoreTools Better Builder's Wands Integration",
description = "Better Builder's Wands Integration Module")
public class BBWModule extends IntegrationSubmodule {

@NotNull
@Override
public List<Class<?>> getEventBusSubscribers() {
return Collections.singletonList(BBWModule.class);
}

@Override
public void preInit(FMLPreInitializationEvent event) {
BBWToolItems.init();
}

@SubscribeEvent
public static void onRegisterItems(RegistryEvent.Register<Item> event) {
IForgeRegistry<Item> registry = event.getRegistry();
for (IGTTool tool : BBWToolItems.getAllTools()) {
registry.register(tool.get());
}
}

@SubscribeEvent
@SideOnly(Side.CLIENT)
public static void onRegisterModels(ModelRegistryEvent event) {
BBWToolItems.registerModels();
}

@SubscribeEvent
@SideOnly(Side.CLIENT)
public static void onRegisterColors(ColorHandlerEvent.Item event) {
BBWToolItems.registerColors(event.getItemColors());
}

@Override
public void registerRecipesNormal(RegistryEvent.Register<IRecipe> event) {
BBWToolItems.registerOreDict();
}

@Override
public void registerRecipesLowest(RegistryEvent.Register<IRecipe> event) {
BBWToolsRecipe.init();
BBWToolRecipeHandler.registerRecipes();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.github.gtexpert.gtmoretools.integration.bbw.recipes;

import gregtech.api.recipes.ModHandler;
import gregtech.common.ConfigHolder;

import com.github.gtexpert.gtmoretools.api.util.Mods;

public class BBWToolsRecipe {

public static void init() {
if (ConfigHolder.recipes.hardToolArmorRecipes) {
// Remove original BBW mod recipes
ModHandler.removeRecipeByName(Mods.BetterBuildersWands.getResource("recipewandstone"));
ModHandler.removeRecipeByName(Mods.BetterBuildersWands.getResource("recipewandiron"));
ModHandler.removeRecipeByName(Mods.BetterBuildersWands.getResource("recipewanddiamond"));
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
package com.github.gtexpert.gtmoretools.integration.bbw.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.gtmoretools.api.ModValues;

public final class BBWToolItems {

private static final List<IGTTool> TOOLS = new ArrayList<>();

public static IGTTool WAND;

private BBWToolItems() {}

public static List<IGTTool> getAllTools() {
return TOOLS;
}

public static void init() {
WAND = register(ItemGTTool.Builder.of(ModValues.MODID, "wand")
.toolStats(b -> b.behaviors(WandBehavior.INSTANCE)
.cannotAttack().attackSpeed(-1.0F))
.oreDict("toolWand")
.toolClasses("wand")
.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));
});
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
package com.github.gtexpert.gtmoretools.integration.bbw.tools;

import static gregtech.api.unification.material.info.MaterialFlags.*;

import gregtech.api.GregTechAPI;
import gregtech.api.recipes.ModHandler;
import gregtech.api.unification.material.Material;
import gregtech.api.unification.material.Materials;
import gregtech.api.unification.material.properties.PropertyKey;
import gregtech.api.unification.ore.OrePrefix;
import gregtech.api.unification.stack.UnificationEntry;
import gregtech.common.ConfigHolder;

public class BBWToolRecipeHandler {

public static void registerRecipes() {
for (Material material : GregTechAPI.materialManager.getRegisteredMaterials()) {
if (!material.hasProperty(PropertyKey.TOOL)) continue;

// Flint uses gem instead of plate/ingot
if (material == Materials.Flint) {
processFlintWandRecipe();
continue;
}

if (!material.hasFlag(GENERATE_PLATE)) continue;

processWandRecipe(material);
}
}

private static void processWandRecipe(Material material) {
if (ConfigHolder.recipes.hardToolArmorRecipes) {
ModHandler.addShapedRecipe(String.format("wand_%s", material.getName()),
BBWToolItems.WAND.get(material),
" fP", " Sh", "S ",
'P', new UnificationEntry(OrePrefix.plate, material),
'S', new UnificationEntry(OrePrefix.stick, Materials.Wood));
} else {
ModHandler.addShapedRecipe(String.format("wand_%s", material.getName()),
BBWToolItems.WAND.get(material),
" I", " S ", "S ",
'I', new UnificationEntry(OrePrefix.ingot, material),
'S', new UnificationEntry(OrePrefix.stick, Materials.Wood));
}
}

private static void processFlintWandRecipe() {
if (ConfigHolder.recipes.hardToolArmorRecipes) {
ModHandler.addShapedRecipe("wand_flint",
BBWToolItems.WAND.get(Materials.Flint),
" fF", " Sh", "S ",
'F', new UnificationEntry(OrePrefix.gem, Materials.Flint),
'S', new UnificationEntry(OrePrefix.stick, Materials.Wood));
} else {
ModHandler.addShapedRecipe("wand_flint",
BBWToolItems.WAND.get(Materials.Flint),
" F", " S ", "S ",
'F', new UnificationEntry(OrePrefix.gem, Materials.Flint),
'S', new UnificationEntry(OrePrefix.stick, Materials.Wood));
}
}
}
Loading
Loading