Skip to content

Commit f1e6449

Browse files
committed
修修修修修修修修修修修修
1 parent a34f727 commit f1e6449

File tree

6 files changed

+130
-4
lines changed

6 files changed

+130
-4
lines changed

build.gradle

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
//file:noinspection SpellCheckingInspection
55
import com.gtnewhorizons.retrofuturagradle.mcp.InjectTagsTask
66
import org.jetbrains.changelog.Changelog
7-
import org.jetbrains.gradle.ext.Gradle
87

98
plugins {
109
id 'java'
@@ -213,7 +212,7 @@ dependencies {
213212
implementation(rfg.deobf("curse.maven:ae2-extended-life-570458:6302098"))
214213
implementation(rfg.deobf("curse.maven:ae2-fluid-crafting-rework-623955:5504001"))
215214
implementation(rfg.deobf("curse.maven:baubles-227083:2518667"))
216-
compileOnly(rfg.deobf("curse.maven:not-enough-energistics-515565:5234732"))
215+
implementation(rfg.deobf("curse.maven:not-enough-energistics-515565:5234732"))
217216
implementation(rfg.deobf("curse.maven:extended-crafting-nomifactory-edition-398267:5778512"))
218217
implementation(rfg.deobf("curse.maven:libnine-322344:3509087"))
219218
implementation(rfg.deobf("curse.maven:lazy-ae2-322347:3254160"))
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package com.circulation.random_complement.mixin.ae2fc.new_patten_gui;
2+
3+
import com.glodblock.github.client.GuiFluidPatternTerminal;
4+
import com.glodblock.github.client.button.GuiFCImgButton;
5+
import org.objectweb.asm.Opcodes;
6+
import org.spongepowered.asm.mixin.Mixin;
7+
import org.spongepowered.asm.mixin.injection.At;
8+
import org.spongepowered.asm.mixin.injection.Redirect;
9+
10+
@Mixin(value = GuiFluidPatternTerminal.class,remap = false)
11+
public class MixinGuiFluidPatternTerminal {
12+
13+
@Redirect(method = "drawFG", at = @At(value = "FIELD", opcode = Opcodes.PUTFIELD, target = "Lcom/glodblock/github/client/button/GuiFCImgButton;visible:Z", remap = true))
14+
public void r$serVisible(GuiFCImgButton instance, boolean value) {
15+
if (instance != null) {
16+
instance.visible = value;
17+
}
18+
}
19+
20+
}
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
package com.circulation.random_complement.mixin.nee.new_patten_gui;
2+
3+
import appeng.api.networking.IGridNode;
4+
import appeng.container.implementations.ContainerPatternTerm;
5+
import appeng.util.helpers.ItemHandlerUtil;
6+
import appeng.util.inv.WrapperInvItemHandler;
7+
import com.github.vfyjxf.nee.network.packet.PacketRecipeTransfer;
8+
import net.minecraft.entity.player.EntityPlayerMP;
9+
import net.minecraft.inventory.Container;
10+
import net.minecraft.item.ItemStack;
11+
import net.minecraft.nbt.NBTTagCompound;
12+
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
13+
import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
14+
import net.minecraftforge.items.IItemHandler;
15+
import org.spongepowered.asm.mixin.Mixin;
16+
import org.spongepowered.asm.mixin.Overwrite;
17+
import org.spongepowered.asm.mixin.Shadow;
18+
19+
@Mixin(PacketRecipeTransfer.Handler.class)
20+
public abstract class MixinPacketRecipeTransfer {
21+
22+
@Shadow(remap = false)
23+
protected abstract void setCraftingRecipe(ContainerPatternTerm container, boolean craftingMode);
24+
25+
/**
26+
* @author circulation
27+
* @reason 防止出现数组越界
28+
*/
29+
@Overwrite(remap = false)
30+
public IMessage onMessage(PacketRecipeTransfer message, MessageContext ctx) {
31+
EntityPlayerMP player = ctx.getServerHandler().player;
32+
Container container = player.openContainer;
33+
player.getServerWorld().addScheduledTask(() -> {
34+
if (container instanceof ContainerPatternTerm cct) {
35+
IItemHandler craftMatrix = cct.getInventoryByName("crafting");
36+
37+
this.setCraftingRecipe(cct, message.getCraftingMode());
38+
ItemStack[] recipeInputs = new ItemStack[craftMatrix.getSlots()];
39+
ItemStack[] recipeOutputs = null;
40+
41+
for (int i = 0; i < recipeInputs.length; ++i) {
42+
NBTTagCompound currentStack = message.getInput().getCompoundTag("#" + i);
43+
recipeInputs[i] = currentStack.isEmpty() ? ItemStack.EMPTY : new ItemStack(currentStack);
44+
}
45+
46+
if (!message.getOutput().isEmpty()) {
47+
recipeOutputs = new ItemStack[cct.getInventoryByName("output").getSlots()];
48+
49+
for (int i = 0; i < recipeOutputs.length; ++i) {
50+
NBTTagCompound currentStack = message.getOutput().getCompoundTag("O" + i);
51+
recipeOutputs[i] = currentStack.isEmpty() ? ItemStack.EMPTY : new ItemStack(currentStack);
52+
}
53+
}
54+
55+
IGridNode node = cct.getNetworkNode();
56+
if (node == null) {
57+
return;
58+
}
59+
60+
if (message.getInput() != null) {
61+
for (int i = 0; i < craftMatrix.getSlots(); ++i) {
62+
ItemStack currentItem = ItemStack.EMPTY;
63+
if (recipeInputs[i] != null) {
64+
currentItem = recipeInputs[i].copy();
65+
}
66+
67+
ItemHandlerUtil.setStackInSlot(craftMatrix, i, currentItem);
68+
}
69+
70+
if (recipeOutputs != null && !message.getCraftingMode()) {
71+
IItemHandler outputMatrix = cct.getInventoryByName("output");
72+
73+
for (int i = 0; i < outputMatrix.getSlots(); ++i) {
74+
ItemStack currentItem = ItemStack.EMPTY;
75+
if (recipeOutputs[i] != null) {
76+
currentItem = recipeOutputs[i].copy();
77+
}
78+
79+
ItemHandlerUtil.setStackInSlot(outputMatrix, i, currentItem);
80+
}
81+
}
82+
83+
container.onCraftMatrixChanged(new WrapperInvItemHandler(craftMatrix));
84+
}
85+
}
86+
87+
});
88+
return null;
89+
}
90+
}

src/main/java/com/circulation/random_complement/mixin/rcLateMixinLoader.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,16 @@ public class rcLateMixinLoader implements ILateMixinLoader {
2929

3030
if (modLoaded("appliedenergistics2")) {
3131
addMixinCFG("mixins.random_complement.ae2.json");
32-
addMixinCFG("mixins.random_complement.ae2.new_patten_gui.json", () -> RCConfig.AE2.newPattenGui);
33-
addMixinCFG("mixins.random_complement.ae2fc.new_patten_gui.json", () -> modLoaded("ae2fc") && RCConfig.AE2.newPattenGui);
32+
addMixinCFG("mixins.random_complement.ae2.new_patten_gui.json",
33+
() -> RCConfig.AE2.newPattenGui);
34+
addMixinCFG("mixins.random_complement.ae2fc.new_patten_gui.json",
35+
() -> modLoaded("ae2fc") && RCConfig.AE2.newPattenGui);
3436
addModdedMixinCFG("mixins.random_complement.ae2.jei.json", "jei");
3537
addModdedMixinCFG("mixins.random_complement.ae2e.json", "ae2exttable");
3638
addModdedMixinCFG("mixins.random_complement.nae2.json", "nae2");
3739
if (modLoaded("neenergistics")) {
40+
addMixinCFG("mixins.random_complement.nee.new_patten_gui.json",
41+
() -> RCConfig.AE2.newPattenGui);
3842
addMixinCFG("mixins.random_complement.nee.json");
3943
addModdedMixinCFG("mixins.random_complement.nee.baubles.json", "baubles");
4044
addModdedMixinCFG("mixins.random_complement.nee.ae2e.json", "ae2exttable");

src/main/resources/mixins.random_complement.ae2fc.new_patten_gui.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,8 @@
66
"compatibilityLevel": "JAVA_8",
77
"mixins": [
88
"MixinPartFluidPatternTerminal"
9+
],
10+
"client": [
11+
"MixinGuiFluidPatternTerminal"
912
]
1013
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"package": "com.circulation.random_complement.mixin.nee.new_patten_gui",
3+
"refmap": "mixins.random_complement.refmap.json",
4+
"target": "@env(DEFAULT)",
5+
"minVersion": "0.8.5",
6+
"compatibilityLevel": "JAVA_8",
7+
"mixins": [
8+
"MixinPacketRecipeTransfer"
9+
]
10+
}

0 commit comments

Comments
 (0)