Skip to content

Commit a19ff95

Browse files
author
Circulate233
committed
修复通用终端无法从合成界面正确返回原本界面的问题
更新版本号
1 parent cafd40e commit a19ff95

9 files changed

Lines changed: 120 additions & 35 deletions

src/main/java/github/kasuminova/novaeng/client/ClientProxy.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@
66
import github.kasuminova.novaeng.client.handler.BlockAngelRendererHandler;
77
import github.kasuminova.novaeng.client.handler.ClientEventHandler;
88
import github.kasuminova.novaeng.client.handler.HyperNetClientEventHandler;
9+
import github.kasuminova.novaeng.client.handler.WirelessUniversalTerminalHandler;
910
import github.kasuminova.novaeng.client.util.TitleUtils;
1011
import github.kasuminova.novaeng.common.CommonProxy;
1112
import github.kasuminova.novaeng.common.command.CommandPacketProfiler;
1213
import github.kasuminova.novaeng.common.command.ExportResearchDataToJson;
13-
import github.kasuminova.novaeng.common.handler.WirelessUniversalTerminalHandler;
1414
import github.kasuminova.novaeng.common.registry.RegistryBlocks;
1515
import github.kasuminova.novaeng.common.registry.RegistryItems;
1616
import github.kasuminova.novaeng.common.tile.TileHyperNetTerminal;

src/main/java/github/kasuminova/novaeng/common/handler/WirelessUniversalTerminalHandler.java renamed to src/main/java/github/kasuminova/novaeng/client/handler/WirelessUniversalTerminalHandler.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
package github.kasuminova.novaeng.common.handler;
1+
package github.kasuminova.novaeng.client.handler;
22

33
import appeng.client.gui.AEBaseGui;
44
import github.kasuminova.novaeng.NovaEngineeringCore;
5+
import github.kasuminova.novaeng.common.handler.WirelessTerminalRefresh;
56
import github.kasuminova.novaeng.common.registry.RegistryItems;
67
import net.minecraft.client.gui.GuiScreen;
78
import net.minecraftforge.client.event.GuiOpenEvent;

src/main/java/github/kasuminova/novaeng/client/util/TitleUtils.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ public class TitleUtils {
1313
/**
1414
* TODO 喜欢我硬编码吗.jpg
1515
*/
16-
public static final String DEFAULT_TITLE = "Nova Engineering: World 1.17.0 by Hikari_Nova | Core Ver: " + NovaEngineeringCore.VERSION;
16+
public static final String DEFAULT_TITLE = "Nova Engineering: World 1.17.1 by Hikari_Nova | Core Ver: " + NovaEngineeringCore.VERSION;
1717
public static final String VANILLA_TITLE = "Minecraft 1.12.2";
1818

1919
public static String currentTitle = null;

src/main/java/github/kasuminova/novaeng/mixin/ae2exttable/MixinCraftingCPUStatusTWO.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,13 @@ private void onInit(final InventoryPlayer inventoryPlayer, final ITerminalHost t
3333
if (te instanceof WirelessTerminalGuiObject wt) {
3434
ItemStack item = wt.getItemStack();
3535
if (item.getItem() instanceof ItemWirelessUniversalTerminal bt) {
36-
this.novaEngineering_Core$extendedOriginalGui = bt.getGuiType(item);
37-
this.myIcon = item;
36+
if (item.getTagCompound() != null) {
37+
switch (item.getTagCompound().getInteger("mode")){
38+
case 6,7,8,9:
39+
this.novaEngineering_Core$extendedOriginalGui = bt.getGuiType(item);
40+
this.myIcon = item;
41+
}
42+
}
3843
}
3944
}
4045
}

src/main/java/github/kasuminova/novaeng/mixin/ae2exttable/MixinGuiCraftAmount.java

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,14 +43,21 @@ private void onInitGui(CallbackInfo ci) {
4343
Object target = ((AEBaseContainer) this.inventorySlots).getTarget();
4444
if (target instanceof WirelessTerminalGuiObject term)
4545
if (term.getItemStack().getItem() instanceof ItemWirelessUniversalTerminal item) {
46-
for (Object btn: new ArrayList<>(this.buttonList)) {
47-
if (btn instanceof GuiTabButton b) {
48-
this.buttonList.remove(b);
46+
ItemStack itemstack = term.getItemStack();
47+
if (itemstack.getTagCompound() != null) {
48+
switch (itemstack.getTagCompound().getInteger("mode")) {
49+
case 6,7,8,9: {
50+
for (Object btn : new ArrayList<>(this.buttonList)) {
51+
if (btn instanceof GuiTabButton b) {
52+
this.buttonList.remove(b);
53+
}
54+
}
55+
this.novaEngineering_Core$extendedOriginalGui = item.getGuiType(term.getItemStack());
56+
ItemStack myIcon = new ItemStack(ItemRegistry.partByGuiType(this.novaEngineering_Core$extendedOriginalGui));
57+
this.buttonList.add((this.originalGuiBtn = new GuiTabButton(this.guiLeft + 154, this.guiTop, myIcon, myIcon.getDisplayName(), this.itemRender)));
58+
}
4959
}
5060
}
51-
this.novaEngineering_Core$extendedOriginalGui = item.getGuiType(term.getItemStack());
52-
ItemStack myIcon = new ItemStack(ItemRegistry.partByGuiType(this.novaEngineering_Core$extendedOriginalGui));
53-
this.buttonList.add((this.originalGuiBtn = new GuiTabButton(this.guiLeft + 154, this.guiTop, myIcon, myIcon.getDisplayName(), this.itemRender)));
5461
}
5562
}
5663

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package github.kasuminova.novaeng.mixin.ae2fc;
2+
3+
import appeng.api.storage.ITerminalHost;
4+
import appeng.client.gui.implementations.GuiCraftAmount;
5+
import appeng.client.gui.widgets.GuiTabButton;
6+
import appeng.container.AEBaseContainer;
7+
import appeng.helpers.WirelessTerminalGuiObject;
8+
import com.glodblock.github.client.GuiFCCraftAmount;
9+
import com.glodblock.github.inventory.GuiType;
10+
import github.kasuminova.novaeng.common.registry.RegistryItems;
11+
import net.minecraft.entity.player.InventoryPlayer;
12+
import net.minecraft.item.ItemStack;
13+
import org.spongepowered.asm.mixin.Mixin;
14+
import org.spongepowered.asm.mixin.Shadow;
15+
import org.spongepowered.asm.mixin.injection.At;
16+
import org.spongepowered.asm.mixin.injection.Inject;
17+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
18+
19+
@Mixin(value = GuiFCCraftAmount.class,remap = false)
20+
public class MixinGuiFCCraftAmount extends GuiCraftAmount {
21+
22+
@Shadow
23+
private GuiType originGui;
24+
@Shadow
25+
private GuiTabButton originalGuiBtn;
26+
27+
public MixinGuiFCCraftAmount(InventoryPlayer inventoryPlayer, ITerminalHost te) {
28+
super(inventoryPlayer, te);
29+
}
30+
31+
@Inject(method="initGui", at = @At(value="INVOKE", target="Lappeng/helpers/WirelessTerminalGuiObject;getItemStack()Lnet/minecraft/item/ItemStack;", shift = At.Shift.AFTER), cancellable=true)
32+
protected void onInitGui(CallbackInfo ci) {
33+
Object te = ((AEBaseContainer)this.inventorySlots).getTarget();
34+
ItemStack icon = ItemStack.EMPTY;
35+
ItemStack tool = ((WirelessTerminalGuiObject) te).getItemStack();
36+
if (tool.getItem() == RegistryItems.WIRELESS_UNIVERSAL_TERMINAL) {
37+
icon = tool;
38+
this.originGui = GuiType.WIRELESS_FLUID_PATTERN_TERMINAL;
39+
}
40+
if (!icon.isEmpty() && this.originGui != null) {
41+
this.buttonList.remove(this.originalGuiBtn);
42+
this.buttonList.add(this.originalGuiBtn = new GuiTabButton(this.guiLeft + 154, this.guiTop, icon, icon.getDisplayName(), this.itemRender));
43+
ci.cancel();
44+
}
45+
}
46+
47+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package github.kasuminova.novaeng.mixin.ae2fc;
2+
3+
import appeng.api.storage.ITerminalHost;
4+
import appeng.client.gui.implementations.GuiCraftConfirm;
5+
import appeng.container.AEBaseContainer;
6+
import appeng.helpers.WirelessTerminalGuiObject;
7+
import com.glodblock.github.client.GuiFCCraftConfirm;
8+
import com.glodblock.github.inventory.GuiType;
9+
import github.kasuminova.novaeng.common.registry.RegistryItems;
10+
import net.minecraft.entity.player.InventoryPlayer;
11+
import net.minecraft.item.ItemStack;
12+
import org.spongepowered.asm.mixin.Mixin;
13+
import org.spongepowered.asm.mixin.Shadow;
14+
import org.spongepowered.asm.mixin.injection.At;
15+
import org.spongepowered.asm.mixin.injection.Inject;
16+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
17+
18+
@Mixin(value = GuiFCCraftConfirm.class,remap = false)
19+
public class MixinGuiFCCraftConfirm extends GuiCraftConfirm {
20+
@Shadow
21+
private GuiType originGui;
22+
23+
public MixinGuiFCCraftConfirm(InventoryPlayer inventoryPlayer, ITerminalHost te) {
24+
super(inventoryPlayer, te);
25+
}
26+
27+
@Inject(method="initGui", at = @At(value="INVOKE", target="Lappeng/helpers/WirelessTerminalGuiObject;getItemStack()Lnet/minecraft/item/ItemStack;", shift = At.Shift.AFTER))
28+
protected void onInitGui(CallbackInfo ci) {
29+
Object te = ((AEBaseContainer)this.inventorySlots).getTarget();
30+
ItemStack tool = ((WirelessTerminalGuiObject) te).getItemStack();
31+
if (tool.getItem() == RegistryItems.WIRELESS_UNIVERSAL_TERMINAL) {
32+
this.originGui = GuiType.WIRELESS_FLUID_PATTERN_TERMINAL;
33+
}
34+
}
35+
}

src/main/java/github/kasuminova/novaeng/mixin/ae2fc/MixinGuiFluidPatternTerminalCraftingStatus.java

Lines changed: 12 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,19 @@
55
import appeng.client.gui.widgets.GuiTabButton;
66
import appeng.helpers.WirelessTerminalGuiObject;
77
import com.glodblock.github.client.GuiFluidPatternTerminalCraftingStatus;
8-
import com.glodblock.github.common.part.PartExtendedFluidPatternTerminal;
9-
import com.glodblock.github.common.part.PartFluidPatternTerminal;
108
import com.glodblock.github.inventory.GuiType;
119
import com.glodblock.github.inventory.InventoryHandler;
12-
import com.glodblock.github.loader.FCItems;
1310
import github.kasuminova.novaeng.common.registry.RegistryItems;
1411
import net.minecraft.client.gui.GuiButton;
1512
import net.minecraft.entity.player.InventoryPlayer;
1613
import net.minecraft.item.ItemStack;
17-
import org.spongepowered.asm.mixin.*;
18-
19-
import java.io.IOException;
14+
import org.spongepowered.asm.mixin.Final;
15+
import org.spongepowered.asm.mixin.Mixin;
16+
import org.spongepowered.asm.mixin.Mutable;
17+
import org.spongepowered.asm.mixin.Shadow;
18+
import org.spongepowered.asm.mixin.injection.At;
19+
import org.spongepowered.asm.mixin.injection.Inject;
20+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
2021

2122
@Mixin(value = GuiFluidPatternTerminalCraftingStatus.class,remap = false)
2223
public class MixinGuiFluidPatternTerminalCraftingStatus extends GuiCraftingStatus {
@@ -32,24 +33,11 @@ public MixinGuiFluidPatternTerminalCraftingStatus(InventoryPlayer inventoryPlaye
3233
super(inventoryPlayer, te);
3334
}
3435

35-
/**
36-
* @author Circulation_
37-
* @reason 使得无线通用终端可以被返回
38-
*/
39-
@Overwrite
40-
protected void actionPerformed(final GuiButton btn) throws IOException {
41-
if (btn == originalGuiBtn) {
42-
if (part instanceof WirelessTerminalGuiObject) {
43-
ItemStack tool = ((WirelessTerminalGuiObject) part).getItemStack();
44-
if (tool.getItem() == FCItems.WIRELESS_FLUID_PATTERN_TERMINAL || tool.getItem() == RegistryItems.WIRELESS_UNIVERSAL_TERMINAL) {
45-
InventoryHandler.switchGui(GuiType.WIRELESS_FLUID_PATTERN_TERMINAL);
46-
}
47-
} else if (part instanceof PartFluidPatternTerminal)
48-
InventoryHandler.switchGui(GuiType.FLUID_PATTERN_TERMINAL);
49-
else if (part instanceof PartExtendedFluidPatternTerminal)
50-
InventoryHandler.switchGui(GuiType.FLUID_EXTENDED_PATTERN_TERMINAL);
51-
} else {
52-
super.actionPerformed(btn);
36+
@Inject(method="actionPerformed", at = @At(value="INVOKE", target="Lappeng/helpers/WirelessTerminalGuiObject;getItemStack()Lnet/minecraft/item/ItemStack;", shift = At.Shift.AFTER))
37+
protected void onActionPerformed(GuiButton btn, CallbackInfo ci) {
38+
ItemStack tool = ((WirelessTerminalGuiObject) part).getItemStack();
39+
if (tool.getItem() == RegistryItems.WIRELESS_UNIVERSAL_TERMINAL) {
40+
InventoryHandler.switchGui(GuiType.WIRELESS_FLUID_PATTERN_TERMINAL);
5341
}
5442
}
5543
}

src/main/resources/mixins.novaeng_core_ae2fc.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
"compatibilityLevel": "JAVA_8",
77
"mixins": [
88
"MixinCPacketUseKeybindHandler",
9+
"MixinGuiFCCraftAmount",
10+
"MixinGuiFCCraftConfirm",
911
"MixinGuiFluidPatternTerminalCraftingStatus"
1012
],
1113
"client": [

0 commit comments

Comments
 (0)