aboutsummaryrefslogtreecommitdiff
path: root/src/mixin/java
diff options
context:
space:
mode:
authorRaven Szewczyk <git@eigenraven.me>2024-07-27 07:12:04 +0100
committerGitHub <noreply@github.com>2024-07-27 13:12:04 +0700
commitc7b38c23c5b34a324256966f0a9335694fe8d63b (patch)
tree92aab6471745549a79c9f84f38c3076d9275ac4f /src/mixin/java
parentc55db9d91fa0a065d7565107a1eca679698eab04 (diff)
downloadGT5-Unofficial-c7b38c23c5b34a324256966f0a9335694fe8d63b.tar.gz
GT5-Unofficial-c7b38c23c5b34a324256966f0a9335694fe8d63b.tar.bz2
GT5-Unofficial-c7b38c23c5b34a324256966f0a9335694fe8d63b.zip
Optimize load time (#2774)
* Load time optimization: replace recipe reflection with mixin accessor * Save an inner loop allocation in StaticRecipeChangeLoaders * Move Bauble event handler from individual items to GT++ proxy * Update mobs info with more optimizations
Diffstat (limited to 'src/mixin/java')
-rw-r--r--src/mixin/java/gregtech/mixin/mixins/early/minecraft/ForgeShapedRecipeMixin.java34
-rw-r--r--src/mixin/java/gregtech/mixin/mixins/early/minecraft/ForgeShapelessRecipeMixin.java36
-rw-r--r--src/mixin/java/gregtech/mixin/mixins/early/minecraft/VanillaShapedRecipeMixin.java36
-rw-r--r--src/mixin/java/gregtech/mixin/mixins/early/minecraft/VanillaShapelessRecipeMixin.java38
4 files changed, 144 insertions, 0 deletions
diff --git a/src/mixin/java/gregtech/mixin/mixins/early/minecraft/ForgeShapedRecipeMixin.java b/src/mixin/java/gregtech/mixin/mixins/early/minecraft/ForgeShapedRecipeMixin.java
new file mode 100644
index 0000000000..041df1937f
--- /dev/null
+++ b/src/mixin/java/gregtech/mixin/mixins/early/minecraft/ForgeShapedRecipeMixin.java
@@ -0,0 +1,34 @@
+package gregtech.mixin.mixins.early.minecraft;
+
+import net.minecraft.item.ItemStack;
+import net.minecraftforge.oredict.ShapedOreRecipe;
+
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.Shadow;
+
+import gregtech.api.interfaces.IRecipeMutableAccess;
+
+@Mixin(value = ShapedOreRecipe.class, remap = false)
+public class ForgeShapedRecipeMixin implements IRecipeMutableAccess {
+
+ @Shadow
+ private ItemStack output;
+
+ @Shadow
+ private Object[] input;
+
+ @Override
+ public ItemStack gt5u$getRecipeOutputItem() {
+ return this.output;
+ }
+
+ @Override
+ public void gt5u$setRecipeOutputItem(ItemStack newItem) {
+ this.output = newItem;
+ }
+
+ @Override
+ public Object gt5u$getRecipeInputs() {
+ return this.input;
+ }
+}
diff --git a/src/mixin/java/gregtech/mixin/mixins/early/minecraft/ForgeShapelessRecipeMixin.java b/src/mixin/java/gregtech/mixin/mixins/early/minecraft/ForgeShapelessRecipeMixin.java
new file mode 100644
index 0000000000..7bf4ba489e
--- /dev/null
+++ b/src/mixin/java/gregtech/mixin/mixins/early/minecraft/ForgeShapelessRecipeMixin.java
@@ -0,0 +1,36 @@
+package gregtech.mixin.mixins.early.minecraft;
+
+import java.util.ArrayList;
+
+import net.minecraft.item.ItemStack;
+import net.minecraftforge.oredict.ShapelessOreRecipe;
+
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.Shadow;
+
+import gregtech.api.interfaces.IRecipeMutableAccess;
+
+@Mixin(value = ShapelessOreRecipe.class, remap = false)
+public class ForgeShapelessRecipeMixin implements IRecipeMutableAccess {
+
+ @Shadow
+ private ItemStack output;
+
+ @Shadow
+ private ArrayList<Object> input;
+
+ @Override
+ public ItemStack gt5u$getRecipeOutputItem() {
+ return this.output;
+ }
+
+ @Override
+ public void gt5u$setRecipeOutputItem(ItemStack newItem) {
+ this.output = newItem;
+ }
+
+ @Override
+ public Object gt5u$getRecipeInputs() {
+ return this.input;
+ }
+}
diff --git a/src/mixin/java/gregtech/mixin/mixins/early/minecraft/VanillaShapedRecipeMixin.java b/src/mixin/java/gregtech/mixin/mixins/early/minecraft/VanillaShapedRecipeMixin.java
new file mode 100644
index 0000000000..0eecaef6ea
--- /dev/null
+++ b/src/mixin/java/gregtech/mixin/mixins/early/minecraft/VanillaShapedRecipeMixin.java
@@ -0,0 +1,36 @@
+package gregtech.mixin.mixins.early.minecraft;
+
+import net.minecraft.item.ItemStack;
+import net.minecraft.item.crafting.ShapedRecipes;
+
+import org.spongepowered.asm.mixin.Final;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.Shadow;
+
+import gregtech.api.interfaces.IRecipeMutableAccess;
+
+@Mixin(ShapedRecipes.class)
+public class VanillaShapedRecipeMixin implements IRecipeMutableAccess {
+
+ @Shadow
+ private ItemStack recipeOutput;
+
+ @Shadow
+ @Final
+ public ItemStack[] recipeItems;
+
+ @Override
+ public ItemStack gt5u$getRecipeOutputItem() {
+ return this.recipeOutput;
+ }
+
+ @Override
+ public void gt5u$setRecipeOutputItem(ItemStack newItem) {
+ this.recipeOutput = newItem;
+ }
+
+ @Override
+ public Object gt5u$getRecipeInputs() {
+ return this.recipeItems;
+ }
+}
diff --git a/src/mixin/java/gregtech/mixin/mixins/early/minecraft/VanillaShapelessRecipeMixin.java b/src/mixin/java/gregtech/mixin/mixins/early/minecraft/VanillaShapelessRecipeMixin.java
new file mode 100644
index 0000000000..926ae6630c
--- /dev/null
+++ b/src/mixin/java/gregtech/mixin/mixins/early/minecraft/VanillaShapelessRecipeMixin.java
@@ -0,0 +1,38 @@
+package gregtech.mixin.mixins.early.minecraft;
+
+import java.util.List;
+
+import net.minecraft.item.ItemStack;
+import net.minecraft.item.crafting.ShapelessRecipes;
+
+import org.spongepowered.asm.mixin.Final;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.Shadow;
+
+import gregtech.api.interfaces.IRecipeMutableAccess;
+
+@Mixin(ShapelessRecipes.class)
+public class VanillaShapelessRecipeMixin implements IRecipeMutableAccess {
+
+ @Shadow
+ private ItemStack recipeOutput;
+
+ @Shadow
+ @Final
+ public List<ItemStack> recipeItems;
+
+ @Override
+ public ItemStack gt5u$getRecipeOutputItem() {
+ return this.recipeOutput;
+ }
+
+ @Override
+ public void gt5u$setRecipeOutputItem(ItemStack newItem) {
+ this.recipeOutput = newItem;
+ }
+
+ @Override
+ public Object gt5u$getRecipeInputs() {
+ return this.recipeItems;
+ }
+}