Skip to content

Commit 2f83e98

Browse files
committed
确保MMCE相关的Mixin对2.1.0-2.2.3之间的所有版本兼容
1 parent 20955d3 commit 2f83e98

File tree

1 file changed

+92
-6
lines changed

1 file changed

+92
-6
lines changed
Lines changed: 92 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,105 @@
11
package com.circulation.random_complement.mixin.mmce;
22

3+
import appeng.api.config.Actionable;
4+
import appeng.api.config.Upgrades;
5+
import appeng.api.networking.crafting.ICraftingLink;
6+
import appeng.api.storage.data.IAEItemStack;
7+
import appeng.api.util.IConfigManager;
38
import appeng.helpers.DualityInterface;
9+
import appeng.helpers.IInterfaceHost;
410
import com.circulation.random_complement.common.interfaces.RCIConfigManager;
511
import com.circulation.random_complement.common.interfaces.RCIConfigurableObject;
12+
import com.glodblock.github.common.tile.TileDualInterface;
13+
import com.google.common.collect.ImmutableSet;
614
import github.kasuminova.mmce.common.tile.MEPatternProvider;
15+
import github.kasuminova.mmce.common.tile.base.MEMachineComponent;
16+
import net.minecraft.tileentity.TileEntity;
17+
import net.minecraft.util.EnumFacing;
18+
import net.minecraftforge.items.IItemHandler;
19+
import org.spongepowered.asm.mixin.Implements;
20+
import org.spongepowered.asm.mixin.Interface;
21+
import org.spongepowered.asm.mixin.Intrinsic;
722
import org.spongepowered.asm.mixin.Mixin;
8-
import org.spongepowered.asm.mixin.Shadow;
23+
import org.spongepowered.asm.mixin.Unique;
24+
import org.spongepowered.asm.mixin.injection.At;
25+
import org.spongepowered.asm.mixin.injection.Inject;
26+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
27+
28+
import java.util.EnumSet;
929

1030
@Mixin(value = MEPatternProvider.class, remap = false)
11-
public abstract class MixinMEPatternProvider implements RCIConfigurableObject {
12-
@Shadow
13-
public abstract DualityInterface getInterfaceDuality();
31+
@Implements(@Interface(iface = IInterfaceHost.class, prefix = "soft$"))
32+
public abstract class MixinMEPatternProvider extends MEMachineComponent implements RCIConfigurableObject, IInterfaceHost {
33+
34+
@Unique
35+
private DualityInterface r$d;
36+
37+
@Inject(method = "<init>", at = @At("TAIL"))
38+
public void onInit(CallbackInfo ci) {
39+
if (soft$getInterfaceDuality() == null) {
40+
r$d = new DualityInterface(this.proxy, new TileDualInterface());
41+
}
42+
}
1443

15-
@Override
44+
@Intrinsic
45+
public DualityInterface soft$getInterfaceDuality() {
46+
return r$d;
47+
}
48+
49+
@Intrinsic
1650
public RCIConfigManager r$getConfigManager() {
17-
return ((RCIConfigurableObject) this.getInterfaceDuality()).r$getConfigManager();
51+
return ((RCIConfigurableObject) soft$getInterfaceDuality()).r$getConfigManager();
52+
}
53+
54+
@Intrinsic
55+
public EnumSet<EnumFacing> soft$getTargets() {
56+
return EnumSet.noneOf(EnumFacing.class);
57+
}
58+
59+
@Intrinsic
60+
public TileEntity soft$getTileEntity() {
61+
return this;
62+
}
63+
64+
@Intrinsic
65+
public void soft$saveChanges() {
66+
67+
}
68+
69+
@Intrinsic
70+
public int soft$getInstalledUpgrades(Upgrades upgrades) {
71+
return 0;
1872
}
73+
74+
@Intrinsic
75+
public TileEntity soft$getTile() {
76+
return this;
77+
}
78+
79+
@Intrinsic
80+
public IItemHandler soft$getInventoryByName(String s) {
81+
return null;
82+
}
83+
84+
@Intrinsic
85+
public ImmutableSet<ICraftingLink> soft$getRequestedJobs() {
86+
return ImmutableSet.of();
87+
}
88+
89+
@Intrinsic
90+
public IAEItemStack soft$injectCraftedItems(ICraftingLink iCraftingLink, IAEItemStack iaeItemStack, Actionable actionable) {
91+
return soft$getInterfaceDuality().injectCraftedItems(iCraftingLink, iaeItemStack, actionable);
92+
}
93+
94+
@Intrinsic
95+
public void soft$jobStateChange(ICraftingLink iCraftingLink) {
96+
soft$getInterfaceDuality().jobStateChange(iCraftingLink);
97+
}
98+
99+
@Intrinsic
100+
public IConfigManager soft$getConfigManager() {
101+
return soft$getInterfaceDuality().getConfigManager();
102+
}
103+
104+
19105
}

0 commit comments

Comments
 (0)