diff options
author | Raven Szewczyk <git@eigenraven.me> | 2024-07-27 07:12:04 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-07-27 13:12:04 +0700 |
commit | c7b38c23c5b34a324256966f0a9335694fe8d63b (patch) | |
tree | 92aab6471745549a79c9f84f38c3076d9275ac4f /src/mixin/java | |
parent | c55db9d91fa0a065d7565107a1eca679698eab04 (diff) | |
download | GT5-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')
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; + } +} |