Skip to content
This repository has been archived by the owner on Mar 8, 2024. It is now read-only.

Commit

Permalink
Fix non-positive TiC tool stats (#339)
Browse files Browse the repository at this point in the history
Former-commit-id: b3fa21373ca2dc10e4feed1e325a7d334fa80597
  • Loading branch information
miozune authored Jun 29, 2023
1 parent c02c43a commit 84d0a18
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 127 deletions.
2 changes: 1 addition & 1 deletion dependencies.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,6 @@ dependencies {
api("com.github.GTNewHorizons:Avaritia:1.42:dev")
implementation("com.github.GTNewHorizons:TinkersConstruct:1.9.35-GTNH:dev")

compileOnly("TGregworks:TGregworks:1.7.10-GTNH-1.0.23:deobf") {transitive = false}
compileOnly("TGregworks:TGregworks:1.7.10-GTNH-1.0.24:deobf") {transitive = false}
compileOnly("com.github.GTNewHorizons:OpenComputers:1.9.5-GTNH:api") {transitive = false}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,26 +2,17 @@

import static gregtech.api.enums.Mods.TinkersGregworks;

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

import net.minecraftforge.common.config.Property;

import com.github.bartimaeusnek.bartworks.API.API_REFERENCE;
import com.github.bartimaeusnek.bartworks.MainMod;
import com.github.bartimaeusnek.bartworks.system.material.Werkstoff;

import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import gregtech.api.enums.Materials;
import gregtech.api.enums.OrePrefixes;
import tconstruct.library.TConstructRegistry;
import vexatos.tgregworks.TGregworks;
import vexatos.tgregworks.integration.TGregRegistry;
import vexatos.tgregworks.item.ItemTGregPart;
import vexatos.tgregworks.reference.Config;

Expand All @@ -33,72 +24,19 @@
+ "required-after:bartworks;"
+ "before:TGregworks;"
+ "before:miscutils; ")
@SuppressWarnings("unchecked")
public class MaterialsInjector {

public static final String NAME = "BartWorks Mod Additions - TGregworks Container";
public static final String VERSION = API_REFERENCE.VERSION;
public static final String MOD_ID = "bartworkscrossmodtgregworkscontainer";

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;

@Mod.EventHandler
public void init(FMLInitializationEvent init) {
if (TinkersGregworks.isModLoaded()) {
MaterialsInjector.preinit();
MaterialsInjector.run();
}
}

private static void preinit() {
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()
Expand All @@ -109,84 +47,31 @@ public static void run() {
registerParts(m);
});

configProps.clear();
configIDs.clear();
TGregworks.registry.configProps.clear();
TGregworks.registry.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);
TGregworks.registry.toolMaterialNames.add(m.mDefaultLocalName);
int matID = TGregworks.registry.getMaterialID(m);

addToolMaterial(matID, m);
addBowMaterial(matID, m);
addArrowMaterial(matID, m);
TGregworks.registry.addToolMaterial(matID, m);
TGregworks.registry.addBowMaterial(matID, m);
TGregworks.registry.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);
}
TGregworks.registry.matIDs.put(m, matID);
TGregworks.registry.materialIDMap.put(matID, m);
}

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());
TGregworks.registry.configProps.put(m, configProp);
TGregworks.registry.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 84d0a18

Please sign in to comment.