Skip to content

Commit 9d0322a

Browse files
committed
对ae2ctl的兼容
1 parent 49e60c0 commit 9d0322a

File tree

6 files changed

+101
-10
lines changed

6 files changed

+101
-10
lines changed

build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,7 @@ dependencies {
213213
compileOnly(rfg.deobf("curse.maven:p455w0rdslib-255232:2830265"))
214214
compileOnly(rfg.deobf("curse.maven:ae2wtlib-304024:2830114"))
215215
compileOnly(rfg.deobf("curse.maven:wireless-crafting-terminal-244559:2830252"))//wct
216+
implementation(rfg.deobf("curse.maven:ae2-crafting-tree-legacy-1121489:5814089"))
216217
}
217218

218219
apply from: 'gradle/scripts/dependencies.gradle'

src/main/java/com/glodblock/github/coremod/LateMixinLoader.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ public class LateMixinLoader implements ILateMixinLoader {
2020
addMixinCFG("mixins.ae2fc.packagedauto.json", () -> Loader.isModLoaded("packagedauto"));
2121
addMixinCFG("mixins.ae2fc.jei.json", () -> Loader.isModLoaded("jei"));
2222
addMixinCFG("mixins.ae2fc.wct.json", () -> Loader.isModLoaded("wct"));
23+
addMixinCFG("mixins.ae2fc.ae2ctl.json", () -> Loader.isModLoaded("ae2ctl"));
2324
addMixinCFG("mixins.ae2fc.mmce.hasGT.json", () -> isClassPresent("hellfirepvp.modularmachinery.common.base.Mods$3"));
2425
addMixinCFG("mixins.ae2fc.mmce.noGT.json", () -> !isClassPresent("hellfirepvp.modularmachinery.common.base.Mods$3") && isClassPresent("hellfirepvp.modularmachinery.common.crafting.component.ComponentItemFluid"));
2526
addMixinCFG("mixins.ae2fc.thaumicenergistics.json", () -> isClassPresent("thaumicenergistics.client.gui.part.GuiArcaneTerminal"));
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
package com.glodblock.github.coremod.mixin.ae2ctl;
2+
3+
import com.glodblock.github.common.item.fake.FakeItemRegister;
4+
import com.glodblock.github.integration.mek.FCGasItems;
5+
import com.glodblock.github.loader.FCItems;
6+
import com.glodblock.github.util.ModAndClassUtil;
7+
import com.glodblock.github.util.Util;
8+
import github.kasuminova.ae2ctl.client.gui.widget.impl.craftingtree.TreeNode;
9+
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
10+
import it.unimi.dsi.fastutil.objects.ObjectLists;
11+
import mekanism.api.gas.GasStack;
12+
import net.minecraft.client.gui.GuiScreen;
13+
import net.minecraft.item.ItemStack;
14+
import net.minecraft.util.text.TextFormatting;
15+
import net.minecraftforge.fluids.FluidRegistry;
16+
import net.minecraftforge.fluids.FluidStack;
17+
import net.minecraftforge.fml.common.Loader;
18+
import net.minecraftforge.fml.common.Optional;
19+
import org.spongepowered.asm.mixin.Mixin;
20+
import org.spongepowered.asm.mixin.Unique;
21+
import org.spongepowered.asm.mixin.injection.At;
22+
import org.spongepowered.asm.mixin.injection.Redirect;
23+
24+
import java.util.List;
25+
26+
@Mixin(value = TreeNode.class, remap = false)
27+
public class MixinTreeNode {
28+
29+
@Redirect(method = "getHoverTooltips", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/GuiScreen;getItemToolTip(Lnet/minecraft/item/ItemStack;)Ljava/util/List;"))
30+
private List<String> getFluidTooltips(final GuiScreen instance, ItemStack stack) {
31+
if (stack.getItem() == FCItems.FLUID_DROP) {
32+
stack = stack.copy();
33+
stack.setCount(1);
34+
final FluidStack fluidStack = FakeItemRegister.getStack(stack);
35+
if (fluidStack != null) {
36+
final String modName = TextFormatting.BLUE.toString() + TextFormatting.ITALIC + Loader.instance().getIndexedModList().get(FluidRegistry.getModId(fluidStack)).getName();
37+
final List<String> list = new ObjectArrayList<>(4);
38+
list.add(fluidStack.getLocalizedName());
39+
list.add(modName);
40+
return list;
41+
}
42+
} else if (ModAndClassUtil.GAS && stack.getItem() == FCGasItems.GAS_DROP) {
43+
final var list = fc$getGasTooltips(stack);
44+
if (!list.isEmpty()) return list;
45+
}
46+
return instance.getItemToolTip(stack);
47+
}
48+
49+
@Unique
50+
@Optional.Method(modid = "mekeng")
51+
private List<String> fc$getGasTooltips(ItemStack stack) {
52+
if (stack.getItem() == FCGasItems.GAS_DROP) {
53+
stack = stack.copy();
54+
stack.setCount(1);
55+
final GasStack gasStack = FakeItemRegister.getStack(stack);
56+
if (gasStack != null) {
57+
final List<String> list = new ObjectArrayList<>(4);
58+
list.add(gasStack.getGas().getLocalizedName());
59+
list.add(Util.mekModName);
60+
return list;
61+
}
62+
}
63+
return ObjectLists.emptyList();
64+
}
65+
66+
}

src/main/java/com/glodblock/github/util/Util.java

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import com.glodblock.github.integration.mek.FakeGases;
2222
import com.glodblock.github.inventory.GuiType;
2323
import com.glodblock.github.inventory.InventoryHandler;
24-
import com.mekeng.github.client.render.GasStackSizeRenderer;
2524
import com.mekeng.github.common.me.data.IAEGasStack;
2625
import com.mekeng.github.common.me.storage.IGasStorageChannel;
2726
import io.netty.buffer.ByteBuf;
@@ -36,11 +35,13 @@
3635
import net.minecraft.network.PacketBuffer;
3736
import net.minecraft.util.EnumFacing;
3837
import net.minecraft.util.math.BlockPos;
38+
import net.minecraft.util.text.TextFormatting;
3939
import net.minecraft.world.World;
4040
import net.minecraftforge.fluids.FluidStack;
4141
import net.minecraftforge.fluids.capability.CapabilityFluidHandler;
4242
import net.minecraftforge.fluids.capability.IFluidHandlerItem;
4343
import net.minecraftforge.fluids.capability.IFluidTankProperties;
44+
import net.minecraftforge.fml.common.Loader;
4445
import net.minecraftforge.fml.common.Optional;
4546
import net.minecraftforge.items.IItemHandler;
4647
import net.minecraftforge.items.IItemHandlerModifiable;
@@ -54,6 +55,14 @@
5455

5556
public final class Util {
5657

58+
public static final String mekModName;
59+
60+
static {
61+
if (ModAndClassUtil.GAS) {
62+
mekModName = "" + TextFormatting.BLUE + TextFormatting.ITALIC + Loader.instance().getIndexedModList().get("mekanism").getName();
63+
} else mekModName = "";
64+
}
65+
5766
public static IStorageChannel<IAEFluidStack> getFluidChannel() {
5867
return AEApi.instance().storage().getStorageChannel(IFluidStorageChannel.class);
5968
}
@@ -67,11 +76,6 @@ public static IStorageChannel<IAEGasStack> getGasChannel() {
6776
return AEApi.instance().storage().getStorageChannel(IGasStorageChannel.class);
6877
}
6978

70-
@Optional.Method(modid = "mekeng")
71-
public static GasStackSizeRenderer getNewGasStackSizeRenderer() {
72-
return new GasStackSizeRenderer();
73-
}
74-
7579
public static IAEItemStack packAEStackToDrop(final Object s) {
7680
if (s instanceof final IAEFluidStack f) {
7781
return FakeFluids.packFluid2AEDrops(f);

src/main/java/com/glodblock/github/util/UtilClient.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@
3636
import java.util.List;
3737
import java.util.Locale;
3838

39+
import static com.glodblock.github.util.Util.mekModName;
40+
3941
@SideOnly(Side.CLIENT)
4042
public final class UtilClient {
4143

@@ -153,8 +155,11 @@ public static ItemStack getJEIMouseItem() {
153155
private static boolean cacheIsStorage = false;
154156

155157
public static boolean rendererFluid(final GuiContainer gui, final IAEItemStack item, final int mouseX, final int mouseY) {
158+
return rendererFluid(gui, item, mouseX, mouseY, gui instanceof GuiMEMonitorable);
159+
}
160+
161+
public static boolean rendererFluid(final GuiContainer gui, final IAEItemStack item, final int mouseX, final int mouseY, final boolean isStorage) {
156162
if (item == null) return false;
157-
final boolean isStorage = gui instanceof GuiMEMonitorable;
158163
if (item.getItem() == FCItems.FLUID_DROP) {
159164
if (cacheTooltip.left == null || !cacheTooltip.left.equals(item) || cacheTooltip.left.getStackSize() != item.getStackSize() || cacheIsStorage != isStorage) {
160165
final IAEFluidStack fluidStack = FakeItemRegister.getAEStack(item.copy().setStackSize(1));
@@ -185,18 +190,21 @@ public static boolean rendererFluid(final GuiContainer gui, final IAEItemStack i
185190

186191
@Optional.Method(modid = "mekeng")
187192
public static boolean rendererGas(final GuiContainer gui, final IAEItemStack item, final int mouseX, final int mouseY) {
193+
return rendererGas(gui, item, mouseX, mouseY, gui instanceof GuiMEMonitorable);
194+
}
195+
196+
@Optional.Method(modid = "mekeng")
197+
public static boolean rendererGas(final GuiContainer gui, final IAEItemStack item, final int mouseX, final int mouseY, final boolean isStorage) {
188198
if (item == null) return false;
189-
final boolean isStorage = gui instanceof GuiMEMonitorable;
190199
if (item.getItem() == FCGasItems.GAS_DROP) {
191200
if (cacheTooltip.left == null || !cacheTooltip.left.equals(item) || cacheTooltip.left.getStackSize() != item.getStackSize() || cacheIsStorage != isStorage) {
192201
final IAEGasStack gs = FakeItemRegister.getAEStack(item.copy().setStackSize(1));
193202
if (gs != null) {
194203
gs.setStackSize(item.getStackSize());
195204
final String formattedAmount = GuiScreen.isShiftKeyDown() ? NumberFormat.getNumberInstance(Locale.US).format(gs.getStackSize()) + " mB" : NumberFormat.getNumberInstance(Locale.US).format((double) gs.getStackSize() / (double) 1000.0F) + " B";
196-
final String modName = "" + TextFormatting.BLUE + TextFormatting.ITALIC + Loader.instance().getIndexedModList().get("mekanism").getName();
197205
final List<String> list = new ObjectArrayList<>();
198206
list.add(gs.getGas().getLocalizedName());
199-
list.add(modName);
207+
list.add(mekModName);
200208
if (isStorage)
201209
list.add(TextFormatting.DARK_GRAY + I18n.format("tooltip.stored") + " : " + formattedAmount);
202210
if (item.isCraftable())
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"package": "com.glodblock.github.coremod.mixin.ae2ctl",
3+
"required": true,
4+
"refmap": "mixins.ae2fc.refmap.json",
5+
"target": "@env(DEFAULT)",
6+
"minVersion": "0.8.5",
7+
"compatibilityLevel": "JAVA_8",
8+
"mixins": [
9+
"MixinTreeNode"
10+
]
11+
}

0 commit comments

Comments
 (0)