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

Commit

Permalink
Refactoring code
Browse files Browse the repository at this point in the history
  • Loading branch information
wohaopa committed May 14, 2024
1 parent 0528c19 commit 6973c43
Show file tree
Hide file tree
Showing 22 changed files with 390 additions and 36 deletions.
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ accessTransformersFile =
usesMixins = true

# Adds some debug arguments like verbose output and class export.
usesMixinDebug = true
usesMixinDebug = false

# Specify the location of your implementation of IMixinConfigPlugin. Leave it empty otherwise.
mixinPlugin = mixins.MixinPlugin
Expand Down
5 changes: 4 additions & 1 deletion src/main/java/com/github/wohaopa/GTNHModify/CommonProxy.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.github.wohaopa.GTNHModify;

import com.github.wohaopa.GTNHModify.config.Config;
import com.github.wohaopa.GTNHModify.handler.Handlers;

import cpw.mods.fml.common.event.FMLInitializationEvent;
Expand All @@ -11,7 +12,9 @@ public class CommonProxy {

// preInit "Run before anything else. Read your config, create blocks, items, etc, and register them with the
// GameRegistry." (Remove if not needed)
public void preInit(FMLPreInitializationEvent event) {}
public void preInit(FMLPreInitializationEvent event) {
Config.init(event.getSuggestedConfigurationFile());
}

// load "Do your mod setup. Build whatever data structures you care about. Register recipes." (Remove if not needed)
public void init(FMLInitializationEvent event) {}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
@Mod(
modid = GTNHModifyMod.MODID,
version = Tags.VERSION,
guiFactory = "com.github.wohaopa.GTNHModify.client.gui.GuiFactory",
name = "GTNHModify",
acceptedMinecraftVersions = "[1.7.10]",
dependencies = "required-after:dreamcraft")
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package com.github.wohaopa.GTNHModify.client.gui;

import net.minecraft.client.gui.GuiScreen;
import net.minecraftforge.common.config.ConfigElement;
import net.minecraftforge.common.config.Configuration;

import com.github.wohaopa.GTNHModify.GTNHModifyMod;
import com.github.wohaopa.GTNHModify.config.Config;

import cpw.mods.fml.client.config.GuiConfig;

public class GTNHModifyGuiConfig extends GuiConfig {

@SuppressWarnings({ "unchecked", "rawtypes" })
public GTNHModifyGuiConfig(GuiScreen guiScreen) {
super(
guiScreen,
new ConfigElement(Config.config.getCategory(Configuration.CATEGORY_GENERAL)).getChildElements(),
GTNHModifyMod.MODID,
false,
false,
GuiConfig.getAbridgedConfigPath(Config.config.toString()));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package com.github.wohaopa.GTNHModify.client.gui;

import java.util.Set;

import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiScreen;

import cpw.mods.fml.client.IModGuiFactory;

public class GuiFactory implements IModGuiFactory {

@Override
public void initialize(Minecraft minecraftInstance) {

}

@Override
public Class<? extends GuiScreen> mainConfigGuiClass() {
return GTNHModifyGuiConfig.class;
}

@Override
public Set<RuntimeOptionCategoryElement> runtimeGuiCategories() {
return null;
}

@Override
public RuntimeOptionGuiHandler getHandlerFor(RuntimeOptionCategoryElement element) {
return null;
}
}
68 changes: 68 additions & 0 deletions src/main/java/com/github/wohaopa/GTNHModify/config/Config.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
package com.github.wohaopa.GTNHModify.config;

import java.io.File;

import net.minecraftforge.common.config.Configuration;

import com.github.wohaopa.GTNHModify.GTNHModifyMod;
import com.github.wohaopa.GTNHModify.strategies.Energyless;
import com.github.wohaopa.GTNHModify.strategies.None;
import com.github.wohaopa.GTNHModify.strategies.OneTick;
import com.github.wohaopa.GTNHModify.strategies.Output64;
import com.github.wohaopa.GTNHModify.strategies.Strategy;
import com.github.wohaopa.GTNHModify.strategies.Tenths;

import cpw.mods.fml.client.event.ConfigChangedEvent;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;

public class Config {

public static Configuration config;

public static Strategy strategy = new None();

private static boolean doSave;

public static void init(File configFile) {
if (config == null) {
config = new Configuration(configFile);
}
doSave = false;
loadConfig();
FMLCommonHandler.instance()
.bus()
.register(new Config());
}

@SubscribeEvent
public void onConfigChangedEvent(ConfigChangedEvent.OnConfigChangedEvent event) {
if (event.modID.equalsIgnoreCase(GTNHModifyMod.MODID)) {
loadConfig();
}
}

private static void loadConfig() {

String strategyName = config.getString(
"Strategy",
Configuration.CATEGORY_GENERAL,
"None",
"Possible values: [None, OneTick, Tenths, Output64, Energyless]");

switch (strategyName) {
case "OneTick" -> strategy = new OneTick();
case "Tenths" -> strategy = new Tenths();
case "Output64" -> strategy = new Output64();
case "Energyless" -> strategy = new Energyless();
default -> strategy = new None();
}

if (config.hasChanged() || doSave) {
config.save();

doSave = false;
}
}

}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.github.wohaopa.GTNHModify.handler;

import net.minecraft.item.crafting.FurnaceRecipes;

import com.github.wohaopa.GTNHModify.config.Config;

@IHandler("init")
public class Furnace_RecipesHandler {

public static void init() {
FurnaceRecipes.smelting()
.getSmeltingList()
.forEach((itemStack, itemStack2) -> Config.strategy.handler_FurnaceRecipe(itemStack, itemStack2));
}

public static int handle(Object owner, int number) {
return Config.strategy.handler_FurnaceProcessingTime(owner, number);
}
}
Original file line number Diff line number Diff line change
@@ -1,17 +1,24 @@
package com.github.wohaopa.GTNHModify.handler;

import com.github.wohaopa.GTNHModify.config.Config;

import gregtech.api.recipe.RecipeMap;
import gregtech.api.util.GT_Recipe;

@IHandler("init")
public class GT_RecipesHandler {

protected static void init() {
RecipeMap.ALL_RECIPE_MAPS.forEach(
(s, recipeMap) -> recipeMap.getAllRecipes()
.forEach(recipe -> { recipe.mDuration = 1; }));
.forEach(recipe -> Config.strategy.handler_GT_Recipe(recipe)));
GT_Recipe.GT_Recipe_AssemblyLine.sAssemblylineRecipes
.forEach(gtRecipeAssemblyLine -> { gtRecipeAssemblyLine.mDuration = 1; });
.forEach(gtRecipeAssemblyLine -> { Config.strategy.handler_GT_Recipe_AssemblyLine(gtRecipeAssemblyLine); });

}

public static int handle(Object owner, int number) {
return Config.strategy.handler_GT_ProcessingTime(owner, number);
}

}
26 changes: 24 additions & 2 deletions src/main/java/com/github/wohaopa/GTNHModify/handler/Handlers.java
Original file line number Diff line number Diff line change
@@ -1,9 +1,31 @@
package com.github.wohaopa.GTNHModify.handler;

import java.lang.reflect.InvocationTargetException;
import java.util.Arrays;
import java.util.List;

public class Handlers {

public static List<String> handlers = Arrays.asList("Furnace", "GT");
private static final String Suffix = "_RecipesHandler";

public static void init() {
GT_RecipesHandler.init();
FurnaceRecipesHandler.init();
String pkg = Handlers.class.getName()
.replace("Handlers", "");
for (String name : handlers) {
String className = pkg + name + Suffix;
try {
Class<?> clazz = Class.forName(className);
IHandler iHandler = clazz.getAnnotation(IHandler.class);
if (iHandler != null) {
clazz.getDeclaredMethod(iHandler.value())
.invoke(null);
}
} catch (ClassNotFoundException | InvocationTargetException | IllegalAccessException
| NoSuchMethodException e) {
throw new RuntimeException(e);
}
}

}
}
13 changes: 13 additions & 0 deletions src/main/java/com/github/wohaopa/GTNHModify/handler/IHandler.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.github.wohaopa.GTNHModify.handler;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface IHandler {

String value();
}
Original file line number Diff line number Diff line change
@@ -1,20 +1,17 @@
package com.github.wohaopa.GTNHModify.mixins;

import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Redirect;

import gregtech.common.misc.GT_DrillingLogicDelegate;
import gregtech.common.misc.GT_IDrillingLogicDelegateOwner;

@Mixin(value = GT_DrillingLogicDelegate.class, remap = false)
public abstract class GT_DrillingLogicDelegateMixin {

@Redirect(
method = "onPostTickRetract",
at = @At(value = "INVOKE", target = "Lgregtech/common/misc/GT_IDrillingLogicDelegateOwner;getMachineSpeed()I"))
private int injected(GT_IDrillingLogicDelegateOwner owner) {
return 50;
}
// @Redirect(
// method = "onPostTickRetract",
// at = @At(value = "INVOKE", target = "Lgregtech/common/misc/GT_IDrillingLogicDelegateOwner;getMachineSpeed()I"))
// private int injected(GT_IDrillingLogicDelegateOwner owner) {
// return 100;
// }

}
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,6 @@
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Mutable;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;

import gregtech.common.tileentities.machines.basic.GT_MetaTileEntity_Miner;

Expand All @@ -18,8 +15,9 @@ public class GT_MetaTileEntity_MinerMixin {
@Shadow(remap = false)
private int mSpeed;

@Inject(method = "name=/bar$/ desc=/.+/", at = @At("TAIL"))
public void injectInit(CallbackInfo callbackInfo) {
mSpeed = 1;
}
// @Inject(method = "name=/bar$/ desc=/.+/", at = @At("TAIL"))
// public void injectInit(CallbackInfo callbackInfo) {
// mSpeed = 1;
// }

}
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,15 @@
import org.spongepowered.asm.mixin.injection.Constant;
import org.spongepowered.asm.mixin.injection.ModifyConstant;

import com.github.wohaopa.GTNHModify.handler.GT_RecipesHandler;

import gregtech.common.tileentities.machines.multi.GT_MetaTileEntity_MultiFurnace;

@Mixin(value = GT_MetaTileEntity_MultiFurnace.class, remap = false)
public class GT_MetaTileEntity_MultiFurnaceMixin {

@ModifyConstant(method = "checkProcessing", constant = @Constant(intValue = 512))
private int injected(int value) {
return 1;
return GT_RecipesHandler.handle(this, value);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,15 @@
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.ModifyArg;

import com.github.wohaopa.GTNHModify.handler.GT_RecipesHandler;

import gregtech.common.tileentities.machines.basic.GT_MetaTileEntity_Scanner;

@Mixin(value = GT_MetaTileEntity_Scanner.class, remap = false)
public abstract class GT_MetaTileEntity_ScannerMixin {

@ModifyArg(method = "checkRecipe", at = @At(value = "INVOKE", target = "calculateOverclockedNess"), index = 1)
private int injected(int x) {
return 1;
return GT_RecipesHandler.handle(this, x);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,13 @@
import org.spongepowered.asm.mixin.injection.Constant;
import org.spongepowered.asm.mixin.injection.ModifyConstant;

import com.github.wohaopa.GTNHModify.handler.Furnace_RecipesHandler;

@Mixin(TileEntityFurnace.class)
public abstract class TileEntityFurnaceMixin {

@ModifyConstant(method = "updateEntity", constant = @Constant(intValue = 200))
private int injected(int value) {
return 1;
return Furnace_RecipesHandler.handle(this, value);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.github.wohaopa.GTNHModify.strategies;

import gregtech.api.util.GT_Recipe;

public class Energyless extends Strategy {

@Override
public void handler_GT_Recipe(GT_Recipe gtRecipe) {
if (gtRecipe.mEUt > 0) gtRecipe.mEUt = 0;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package com.github.wohaopa.GTNHModify.strategies;

public class None extends Strategy {

}
Loading

0 comments on commit 6973c43

Please sign in to comment.