Skip to content
This repository has been archived by the owner on Sep 9, 2022. It is now read-only.

Commit

Permalink
Added TGregworks integration (#126)
Browse files Browse the repository at this point in the history
  • Loading branch information
bartimaeusnek authored Mar 3, 2021
1 parent 0988abe commit 457c0b5
Show file tree
Hide file tree
Showing 5 changed files with 166 additions and 1 deletion.
14 changes: 14 additions & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,10 @@ java {
this.sourceCompatibility = JavaVersion.VERSION_1_8
this.targetCompatibility = JavaVersion.VERSION_1_8
}

configurations.all {
resolutionStrategy.cacheChangingModulesFor(0, TimeUnit.SECONDS)
isTransitive = false
}

tasks.withType<JavaCompile> {
Expand Down Expand Up @@ -103,6 +105,10 @@ repositories {
this.name = "BuildCraft"
this.artifactPattern("http://www.mod-buildcraft.com/releases/BuildCraft/[revision]/[module]-[revision](-[classifier]).[ext]")
}
ivy {
this.name = "vexatos"
this.artifactPattern("https://files.vexatos.com/[organisation]/[module]-[revision]-[classifier].[ext]")
}
maven("http://maven.cil.li/") { this.name = "OpenComputers" }
maven("http://default.mobiusstrip.eu/maven") { this.name = "Jabba" }
maven("http://chickenbones.net/maven/") { this.name = "CodeChicken" }
Expand All @@ -118,12 +124,19 @@ dependencies {
val applecoreVersion: String by project
val enderCoreVersion: String by project
val enderioVersion: String by project

//hard deps
compile("net.industrial-craft:industrialcraft-2:$ic2Version:dev")
//jitpack
compile("com.github.GTNewHorizons:GT5-Unofficial:experimental-SNAPSHOT:dev") {
this.isChanging = true
}
compile("com.github.GTNewHorizons:TinkersConstruct:master-SNAPSHOT:deobf") {
this.isChanging = true
}
compileOnly("com.github.GTNewHorizons:Applied-Energistics-2-Unofficial:rv3-1.7.10-SNAPSHOT:dev") {
this.isChanging = true
}
//soft deps
compileOnly("com.azanor.baubles:Baubles:1.7.10-1.0.1.10:deobf")
compileOnly("thaumcraft:Thaumcraft:1.7.10-4.2.3.5:dev")
Expand All @@ -133,6 +146,7 @@ dependencies {
compile("micdoodle8.mods:Galacticraft-Planets:$galacticraftVersion:Dev")
compileOnly("li.cil.oc:OpenComputers:MC1.7.10-1.5.+:api")
compileOnly("net.sengir.forestry:forestry_1.7.10:4.2.16.64:dev")
compileOnly("TGregworks:TGregworks:1.7.10-GTNH-1.0.19:deobf")
//jitpack
compileOnly("com.github.GTNewHorizons:GalacticGregGT5:master-SNAPSHOT") {
this.isChanging = true
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
#
majorUpdate=0
minorUpdate=5
buildNumber=15
buildNumber=16
apiVersion=11
ic2Version=2.2.828-experimental
applecoreVersion=1.7.10-3.1.1
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ private LoaderReference(){}
public static boolean EnderIO;
public static boolean HardcoreEnderExpension;
public static boolean betterloadingscreen;
public static boolean TGregworks;

public static void init() {
Natura = Loader.isModLoaded("Natura");
Expand Down Expand Up @@ -84,5 +85,6 @@ public static void init() {
EnderIO = Loader.isModLoaded("EnderIO");
HardcoreEnderExpension = Loader.isModLoaded("HardcoreEnderExpension");
betterloadingscreen = Loader.isModLoaded("betterloadingscreen");
TGregworks = Loader.isModLoaded("TGregworks");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
import com.github.bartimaeusnek.crossmod.galacticraft.GalacticraftProxy;
import com.github.bartimaeusnek.crossmod.tectech.TecTechResearchLoader;
import com.github.bartimaeusnek.crossmod.tectech.tileentites.multi.GT_Replacement.*;
import com.github.bartimaeusnek.crossmod.tgregworks.MaterialsInjector;
import com.github.bartimaeusnek.crossmod.thaumcraft.CustomAspects;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.event.FMLInitializationEvent;
Expand All @@ -46,6 +47,7 @@
dependencies = "required-after:IC2; "
+ "required-after:gregtech; "
+ "required-after:bartworks;"
+ "before:TGregworks; "
+ "after:GalacticraftMars; "
+ "after:GalacticraftCore; "
+ "after:Micdoodlecore; "
Expand Down Expand Up @@ -87,6 +89,8 @@ public void init(FMLInitializationEvent init) {

new BW_TT_HeatExchanger(null, null);
}
if (LoaderReference.TGregworks)
MaterialsInjector.run();
}

@Mod.EventHandler
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
package com.github.bartimaeusnek.crossmod.tgregworks;

import com.github.bartimaeusnek.bartworks.MainMod;
import com.github.bartimaeusnek.bartworks.system.material.Werkstoff;
import cpw.mods.fml.common.FMLCommonHandler;
import gregtech.api.enums.Materials;
import gregtech.api.enums.OrePrefixes;
import net.minecraftforge.common.config.Property;
import tconstruct.library.TConstructRegistry;
import vexatos.tgregworks.TGregworks;
import vexatos.tgregworks.integration.TGregRegistry;
import vexatos.tgregworks.item.ItemTGregPart;
import vexatos.tgregworks.reference.Config;

import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashMap;

@SuppressWarnings("unchecked")
public class MaterialsInjector {
private static HashMap<Materials, Property> configProps;
private static ArrayList<Integer> configIDs;
private static Method getGlobalMultiplierMethod;
private static Method getGlobalMultiplierMethodTwoArguments;
private static Method getMultiplierMethod;
private static Method getMaterialIDMethod;
private static Method getReinforcedLevelMethod;
private static Method getStoneboundLevelMethod;

static {
try {
getFields();
getMethodes();
} catch (
IllegalArgumentException
| IllegalAccessException
| NoSuchFieldException
| NoSuchMethodException
| SecurityException
e) {
MainMod.LOGGER.catching(e);
FMLCommonHandler.instance().exitJava(1, true);
}
}

private static void getFields() throws IllegalArgumentException, IllegalAccessException, NoSuchFieldException {
Field configPropsField = TGregRegistry.class.getDeclaredField("configProps");
configPropsField.setAccessible(true);
configProps = (HashMap<Materials, Property>) configPropsField.get(TGregworks.registry);

Field configIDsField = TGregRegistry.class.getDeclaredField("configIDs");
configIDsField.setAccessible(true);
configIDs = (ArrayList<Integer>) configIDsField.get(TGregworks.registry);
}

private static void getMethodes() throws NoSuchMethodException, SecurityException {
getGlobalMultiplierMethod = TGregRegistry.class.getDeclaredMethod("getGlobalMultiplier", String.class);
getGlobalMultiplierMethod.setAccessible(true);

getGlobalMultiplierMethodTwoArguments = TGregRegistry.class.getDeclaredMethod("getGlobalMultiplier", String.class, double.class);
getGlobalMultiplierMethodTwoArguments.setAccessible(true);

getMultiplierMethod = TGregRegistry.class.getDeclaredMethod("getMultiplier", Materials.class, String.class);
getMultiplierMethod.setAccessible(true);

getMaterialIDMethod = TGregRegistry.class.getDeclaredMethod("getMaterialID", Materials.class);
getMaterialIDMethod.setAccessible(true);

getReinforcedLevelMethod = TGregRegistry.class.getDeclaredMethod("getReinforcedLevel", Materials.class);
getReinforcedLevelMethod.setAccessible(true);

getStoneboundLevelMethod = TGregRegistry.class.getDeclaredMethod("getStoneboundLevel", Materials.class);
getStoneboundLevelMethod.setAccessible(true);
}

public static void run() {
MainMod.LOGGER.info("Registering TGregworks - BartWorks tool parts.");
Werkstoff.werkstoffHashSet.stream()
.filter(x -> x.hasItemType(OrePrefixes.gem) || x.hasItemType(OrePrefixes.plate))
.map(Werkstoff::getBridgeMaterial)
.filter(x -> x.mMetaItemSubID == -1)
.filter(x -> x.mDurability != 0)
.forEach(m -> {
setConfigProps(m);
registerParts(m);
});

configProps.clear();
configIDs.clear();

ItemTGregPart.toolMaterialNames = TGregworks.registry.toolMaterialNames;
}

private static void registerParts(Materials m) {
try {
TGregworks.registry.toolMaterialNames.add(m.mDefaultLocalName);
int matID = (int) getMaterialIDMethod.invoke(TGregworks.registry, m);

addToolMaterial(matID, m);
addBowMaterial(matID, m);
addArrowMaterial(matID, m);

TGregworks.registry.matIDs.put(m, matID);
TGregworks.registry.materialIDMap.put(matID, m);
} catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
MainMod.LOGGER.catching(e);
FMLCommonHandler.instance().exitJava(1, true);
}
}

private static void setConfigProps(Materials m){
if (TGregworks.config.get(Config.Category.Enable, m.mName, true).getBoolean(true)) {
TGregworks.registry.toolMaterials.add(m);
Property configProp = TGregworks.config.get(Config.onMaterial(Config.MaterialID), m.mName, 0, null, 0, 100000);
configProps.put(m, configProp);
configIDs.add(configProp.getInt());
}
}

private static void addToolMaterial(int matID, Materials m)
throws IllegalAccessException, IllegalArgumentException, InvocationTargetException {
TConstructRegistry.addToolMaterial(matID, m.mName, m.mLocalizedName, m.mToolQuality,
(int) (m.mDurability * (float) getGlobalMultiplierMethod.invoke(TGregworks.registry, Config.Durability) * (float) getMultiplierMethod.invoke(TGregworks.registry, m, Config.Durability)), // Durability
(int) (m.mToolSpeed * 100F * (float) getGlobalMultiplierMethod.invoke(TGregworks.registry, Config.MiningSpeed) * (float) getMultiplierMethod.invoke(TGregworks.registry, m, Config.MiningSpeed)), // Mining speed
(int) (m.mToolQuality * (float) getGlobalMultiplierMethod.invoke(TGregworks.registry, Config.Attack) * (float) getMultiplierMethod.invoke(TGregworks.registry, m, Config.Attack)), // Attack
(m.mToolQuality - 0.5F) * (float) getGlobalMultiplierMethod.invoke(TGregworks.registry, Config.HandleModifier) * (float) getMultiplierMethod.invoke(TGregworks.registry, m, Config.HandleModifier), // Handle Modifier
(int) getReinforcedLevelMethod.invoke(TGregworks.registry, m), (float) getStoneboundLevelMethod.invoke(TGregworks.registry, m), "", (m.getRGBA()[0] << 16) | (m.getRGBA()[1] << 8) | (m.getRGBA()[2]));
}

private static void addBowMaterial(int matID, Materials m)
throws IllegalAccessException, IllegalArgumentException, InvocationTargetException {
TConstructRegistry.addBowMaterial(matID,
(int) ((float) m.mToolQuality * 10F * (float) getGlobalMultiplierMethod.invoke(TGregworks.registry, Config.BowDrawSpeed) * (float) getMultiplierMethod.invoke(TGregworks.registry, m, Config.BowDrawSpeed)),
(((float) m.mToolQuality) - 0.5F) * (float) getGlobalMultiplierMethod.invoke(TGregworks.registry, Config.BowFlightSpeed) * (float) getMultiplierMethod.invoke(TGregworks.registry, m, Config.BowFlightSpeed));
}

private static void addArrowMaterial(int matID, Materials m)
throws IllegalAccessException, IllegalArgumentException, InvocationTargetException {
TConstructRegistry.addArrowMaterial(matID,
(float) ((((double) m.getMass()) / 10F) * (float) getGlobalMultiplierMethod.invoke(TGregworks.registry, Config.ArrowMass) * (float) getMultiplierMethod.invoke(TGregworks.registry, m, Config.ArrowMass)),
(float) getGlobalMultiplierMethodTwoArguments.invoke(TGregworks.registry, Config.ArrowBreakChance, 0.9) * (float) getMultiplierMethod.invoke(TGregworks.registry, m, Config.ArrowBreakChance));
}
}

0 comments on commit 457c0b5

Please sign in to comment.