Skip to content

Commit

Permalink
Chisel module (#2290)
Browse files Browse the repository at this point in the history
  • Loading branch information
serenibyss committed Dec 16, 2023
1 parent b1f050b commit 4322695
Show file tree
Hide file tree
Showing 6 changed files with 126 additions and 1 deletion.
1 change: 1 addition & 0 deletions dependencies.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ dependencies {
compileOnlyApi rfg.deobf("curse.maven:hwyla-253449:2568751") // HWYLA 1.8.26-B41
compileOnlyApi rfg.deobf("curse.maven:baubles-227083:2518667") // Baubles 1.5.2
compileOnlyApi rfg.deobf("curse.maven:forestry-59751:2684780") // Forestry 5.8.2.387
compileOnlyApi rfg.deobf("curse.maven:chisel-235279:2915375") // Chisel 1.0.2.45

// Mods with Soft compat but which have no need to be in code, such as isModLoaded() checks and getModItem() recipes.
// Uncomment any of these to test them in-game.
Expand Down
3 changes: 2 additions & 1 deletion src/main/java/gregtech/api/GTValues.java
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,8 @@ public class GTValues {
MODID_BOP = "biomesoplenty",
MODID_TCON = "tconstruct",
MODID_PROJRED_CORE = "projectred-core",
MODID_RC = "railcraft";
MODID_RC = "railcraft",
MODID_CHISEL = "chisel";

private static Boolean isClient;

Expand Down
1 change: 1 addition & 0 deletions src/main/java/gregtech/api/unification/ore/OrePrefix.java
Original file line number Diff line number Diff line change
Expand Up @@ -467,6 +467,7 @@ public static void init() {

block.modifyMaterialAmount(Materials.Glowstone, 4);
block.modifyMaterialAmount(Materials.NetherQuartz, 4);
block.modifyMaterialAmount(Materials.CertusQuartz, 4);
block.modifyMaterialAmount(Materials.Brick, 4);
block.modifyMaterialAmount(Materials.Clay, 4);
block.modifyMaterialAmount(Materials.Glass, 1);
Expand Down
119 changes: 119 additions & 0 deletions src/main/java/gregtech/integration/chisel/ChiselModule.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
package gregtech.integration.chisel;

import gregtech.api.GTValues;
import gregtech.api.block.VariantBlock;
import gregtech.api.modules.GregTechModule;
import gregtech.api.unification.material.Material;
import gregtech.api.unification.material.Materials;
import gregtech.common.blocks.BlockColored;
import gregtech.common.blocks.BlockCompressed;
import gregtech.common.blocks.BlockWarningSign;
import gregtech.common.blocks.BlockWarningSign1;
import gregtech.common.blocks.MetaBlocks;
import gregtech.common.blocks.StoneVariantBlock;
import gregtech.common.blocks.StoneVariantBlock.StoneType;
import gregtech.common.blocks.StoneVariantBlock.StoneVariant;
import gregtech.common.blocks.wood.BlockGregPlanks;
import gregtech.integration.IntegrationSubmodule;
import gregtech.modules.GregTechModules;

import net.minecraft.block.Block;
import net.minecraft.item.EnumDyeColor;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.IStringSerializable;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLInterModComms;

import team.chisel.common.carving.Carving;

import java.util.Objects;

@GregTechModule(
moduleID = GregTechModules.MODULE_CHISEL,
containerID = GTValues.MODID,
modDependencies = GTValues.MODID_CHISEL,
name = "GregTech Chisel Integration",
description = "Chisel Integration Module")
public class ChiselModule extends IntegrationSubmodule {

@Override
public void init(FMLInitializationEvent event) {
// GT custom groups
addVariations("gt_warning_sign", MetaBlocks.WARNING_SIGN, BlockWarningSign.SignType.values());
addVariations("gt_warning_sign", MetaBlocks.WARNING_SIGN_1, BlockWarningSign1.SignType.values());
addVariations("gt_studs", MetaBlocks.STUDS);
addVariations("gt_metal_sheet", MetaBlocks.METAL_SHEET);
addVariations("gt_large_metal_sheet", MetaBlocks.LARGE_METAL_SHEET);
for (EnumDyeColor color : EnumDyeColor.values()) {
Block lamp = MetaBlocks.LAMPS.get(color);
Block lampBorderless = MetaBlocks.BORDERLESS_LAMPS.get(color);
String group = "gt_lamp_" + color.getName().toLowerCase();
for (int i = 0; i < 8; i++) {
addVariation(group, lamp, i);
addVariation(group, lampBorderless, i);
}
}

// Chisel shared groups
addVariations("marble", StoneType.MARBLE, false);
addVariations("basalt", StoneType.BASALT, false);
addVariations("black_granite", StoneType.BLACK_GRANITE, false);
addVariations("red_granite", StoneType.RED_GRANITE, false);
addVariations("light_concrete", StoneType.CONCRETE_LIGHT, true);
addVariations("dark_concrete", StoneType.CONCRETE_DARK, true);

// Mod-dependent groups
if (doesGroupExist("treated_wood")) { // IE Treated Wood group
addVariations("treated_wood", MetaBlocks.PLANKS, BlockGregPlanks.BlockType.TREATED_PLANK);
}
if (doesGroupExist("certus")) { // AE2 Certus Quartz group
addVariation("certus", Materials.CertusQuartz);
}
}

@SafeVarargs
private <U extends Enum<U> & IStringSerializable, T extends VariantBlock<U>> void addVariations(String group,
T block,
U... variants) {
if (variants != null) {
for (U variant : variants) {
addVariation(group, block, block.getMetaFromState(block.getState(variant)));
}
}
}

private void addVariations(String group, BlockColored block) {
for (EnumDyeColor color : EnumDyeColor.values()) {
addVariation(group, block, color.getMetadata());
}
}

private void addVariations(String group, StoneType type, boolean enableCobbles) {
for (StoneVariantBlock.StoneVariant variant : StoneVariant.values()) {
if (!enableCobbles && (variant == StoneVariant.COBBLE || variant == StoneVariant.COBBLE_MOSSY)) {
continue;
}
StoneVariantBlock block = MetaBlocks.STONE_BLOCKS.get(variant);
int meta = block.getMetaFromState(block.getState(type));
addVariation(group, block, meta);
}
}

private void addVariation(String group, Material material) {
BlockCompressed block = MetaBlocks.COMPRESSED.get(material);
int meta = block.getMetaFromState(block.getBlock(material));
addVariation(group, block, meta);
}

private void addVariation(String group, Block block, int meta) {
NBTTagCompound tag = new NBTTagCompound();
tag.setString("group", group);
tag.setString("block", Objects.requireNonNull(block.getRegistryName()).toString());
tag.setInteger("meta", meta);
FMLInterModComms.sendMessage(GTValues.MODID_CHISEL, "add_variation", tag);
}

private boolean doesGroupExist(String group) {
return Carving.chisel.getGroup(group) != null;
}
}
2 changes: 2 additions & 0 deletions src/main/java/gregtech/loaders/OreDictionaryLoader.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,14 @@ public class OreDictionaryLoader {

public static final String OREDICT_FUEL_COKE = "fuelCoke";
public static final String OREDICT_BLOCK_FUEL_COKE = "blockFuelCoke";
public static final String OREDICT_BLOCK_COAL_COKE = "blockCoalCoke";

public static void init() {
GTLog.logger.info("Registering OreDict entries.");

OreDictionary.registerOre(OREDICT_FUEL_COKE, OreDictUnifier.get(OrePrefix.gem, Materials.Coke));
OreDictionary.registerOre(OREDICT_BLOCK_FUEL_COKE, OreDictUnifier.get(OrePrefix.block, Materials.Coke));
OreDictionary.registerOre(OREDICT_BLOCK_COAL_COKE, OreDictUnifier.get(OrePrefix.block, Materials.Coke));
OreDictionary.registerOre("crystalCertusQuartz", OreDictUnifier.get(OrePrefix.gem, Materials.CertusQuartz));

OreDictUnifier.registerOre(new ItemStack(Blocks.CLAY), OrePrefix.block, Materials.Clay);
Expand Down
1 change: 1 addition & 0 deletions src/main/java/gregtech/modules/GregTechModules.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ public class GregTechModules implements IModuleContainer {
public static final String MODULE_HWYLA = "hwyla_integration";
public static final String MODULE_BAUBLES = "baubles_integration";
public static final String MODULE_FR = "fr_integration";
public static final String MODULE_CHISEL = "chisel_integration";

@Override
public String getID() {
Expand Down

0 comments on commit 4322695

Please sign in to comment.