Skip to content

Commit cff4383

Browse files
committed
修复bug
现在流体样板终端在标记流体物品时,左键标记流体,右键标记物品
1 parent 817cc57 commit cff4383

32 files changed

+507
-90
lines changed

gradle.properties

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ show_testing_output = false
1616

1717
# Mod Information
1818
# HIGHLY RECOMMEND complying with SemVer for mod_version: https://semver.org/
19-
mod_version = 1.7.13
19+
mod_version = 1.8.0
2020
root_package = com.circulation
2121
mod_id = random_complement
2222
mod_name = RandomComplement
@@ -118,9 +118,9 @@ use_mixins_debugClassLoading = false
118118
# Only make a coremod if you are absolutely sure of what you are doing
119119
# Change the property `coremod_includes_mod` to false if your coremod doesn't have a @Mod annotation
120120
# You MUST state a class name for `coremod_plugin_class_name` if you are making a coremod, the class should implement `IFMLLoadingPlugin`
121-
is_coremod = false
121+
is_coremod = true
122122
coremod_includes_mod = true
123-
coremod_plugin_class_name =
123+
coremod_plugin_class_name = com.circulation.random_complement.mixin.rcEarlyMixinLoader
124124

125125
# AssetMover
126126
# Convenient way to allow downloading of assets from official vanilla Minecraft servers, CurseForge, or any direct links

src/main/java/com/circulation/random_complement/client/ClientProxy.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,18 @@
55
import com.circulation.random_complement.client.handler.RCJEIInputHandler;
66
import com.circulation.random_complement.common.CommonProxy;
77
import com.circulation.random_complement.common.util.Functions;
8+
import com.circulation.random_complement.mixin.jei.AccessorGhostIngredientDragManager;
9+
import com.circulation.random_complement.mixin.jei.AccessorInputHandler;
810
import it.unimi.dsi.fastutil.objects.ReferenceArrayList;
911
import it.unimi.dsi.fastutil.objects.ReferenceList;
12+
import mezz.jei.Internal;
13+
import net.minecraft.client.Minecraft;
14+
import net.minecraft.item.ItemStack;
1015
import net.minecraftforge.client.event.ModelRegistryEvent;
1116
import net.minecraftforge.common.MinecraftForge;
1217
import net.minecraftforge.fml.common.Loader;
1318
import net.minecraftforge.fml.common.Mod;
19+
import net.minecraftforge.fml.common.Optional;
1420
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
1521
import net.minecraftforge.fml.relauncher.Side;
1622

@@ -72,4 +78,25 @@ public void onRegisterModels(ModelRegistryEvent event) {
7278

7379
}
7480

81+
public static ItemStack getMouseItem() {
82+
var i = Minecraft.getMinecraft().player.inventory.getItemStack();
83+
if (!i.isEmpty()) return i;
84+
85+
if (Loader.isModLoaded("jei")) return getJEIMouseItem();
86+
87+
return ItemStack.EMPTY;
88+
}
89+
90+
@Optional.Method(modid = "jei")
91+
public static ItemStack getJEIMouseItem() {
92+
var ii = ((AccessorGhostIngredientDragManager) ((AccessorInputHandler) Internal.getInputHandler()).getGhostIngredientDragManager()).getGhostIngredientDrag();
93+
if (ii != null && ii.getIngredient() instanceof ItemStack stack) return stack;
94+
return ItemStack.EMPTY;
95+
}
96+
97+
@Override
98+
@Optional.Method(modid = "jei")
99+
public boolean isMouseHasItem() {
100+
return !Minecraft.getMinecraft().player.inventory.getItemStack().isEmpty() || ((AccessorGhostIngredientDragManager) ((AccessorInputHandler) Internal.getInputHandler()).getGhostIngredientDragManager()).getGhostIngredientDrag() != null;
101+
}
75102
}

src/main/java/com/circulation/random_complement/common/CommonProxy.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import com.circulation.random_complement.common.network.WirelessPickBlock;
1010
import com.circulation.random_complement.common.util.Functions;
1111
import net.minecraftforge.fml.common.Loader;
12+
import net.minecraftforge.fml.common.Optional;
1213
import net.minecraftforge.fml.relauncher.Side;
1314

1415
import static com.circulation.random_complement.RandomComplement.NET_CHANNEL;
@@ -42,4 +43,9 @@ public void postInit() {
4243
if (Loader.isModLoaded("appliedenergistics2")) CraftingUnitHandler.register();
4344
}
4445

46+
@Optional.Method(modid = "jei")
47+
public boolean isMouseHasItem() {
48+
return false;
49+
}
50+
4551
}

src/main/java/com/circulation/random_complement/common/util/MEHandler.java

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,12 @@
2121
import com.glodblock.github.common.item.fake.FakeFluids;
2222
import com.glodblock.github.common.item.fake.FakeItemRegister;
2323
import com.glodblock.github.integration.mek.FakeGases;
24+
import com.glodblock.github.util.ModAndClassUtil;
25+
import com.glodblock.github.util.Util;
2426
import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
2527
import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet;
2628
import lombok.Getter;
29+
import mekanism.api.gas.Gas;
2730
import mekanism.api.gas.GasStack;
2831
import net.minecraft.client.Minecraft;
2932
import net.minecraft.client.renderer.BufferBuilder;
@@ -94,8 +97,8 @@ public static void drawSlotPluses(List<Slot> slots) {
9497
* https://github.com/GTNewHorizons/Applied-Energistics-2-Unofficial/blob/c3cd45df5db9db256b9fb4774b2cb57fdf11e389/src/main/java/appeng/container/implementations/ContainerMEMonitorable.java#L397
9598
*/
9699
public static void refillBlankPatterns(ContainerMEMonitorable container, SlotRestrictedInput slot) {
97-
if (container instanceof PatternTermConfigs) {
98-
if (((PatternTermConfigs) container).r$getAutoFillPattern() == PatternTermAutoFillPattern.CLOSE) return;
100+
if (container instanceof PatternTermConfigs p) {
101+
if (p.r$getAutoFillPattern() == PatternTermAutoFillPattern.CLOSE) return;
99102
if (Platform.isServer()) {
100103
ItemStack blanks = slot.getStack();
101104
int blanksToRefill = 64;
@@ -235,6 +238,37 @@ private static ItemStack packMEKEngItem(Object obj) {
235238
return ItemStack.EMPTY;
236239
}
237240

241+
@Optional.Method(modid = "ae2fc")
242+
public static FluidStack covertFluid(Object ingredient) {
243+
if (ingredient instanceof FluidStack) {
244+
return (FluidStack) ingredient;
245+
} else {
246+
return ingredient instanceof ItemStack ? Util.getFluidFromItem((ItemStack) ingredient) : null;
247+
}
248+
}
249+
250+
@Optional.Method(modid = "mekeng")
251+
public static String getGasName(Object gas) {
252+
if (gas instanceof GasStack g) return g.getGas().getLocalizedName();
253+
if (gas instanceof Gas g) return g.getLocalizedName();
254+
return "";
255+
}
256+
257+
@Optional.Method(modid = "ae2fc")
258+
public static Object covertGas(Object ingredient) {
259+
if (ModAndClassUtil.GAS) {
260+
if (ingredient instanceof GasStack) {
261+
return ingredient;
262+
}
263+
264+
if (ingredient instanceof ItemStack) {
265+
return Util.getGasFromItem((ItemStack) ingredient);
266+
}
267+
}
268+
269+
return null;
270+
}
271+
238272
@SideOnly(Side.CLIENT)
239273
private static void drawPlusesPre() {
240274
RenderHelper.disableStandardItemLighting();

src/main/java/com/circulation/random_complement/mixin/ae2fc/container/MixinContainerExpandedProcessingPatternTerm.java renamed to src/main/java/com/circulation/random_complement/mixin/ae2/container/MixinContainerExpandedProcessingPatternTerm.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
1-
package com.circulation.random_complement.mixin.ae2fc.container;
1+
package com.circulation.random_complement.mixin.ae2.container;
22

33
import appeng.api.storage.ITerminalHost;
44
import appeng.container.implementations.ContainerExpandedProcessingPatternTerm;
5-
import appeng.container.implementations.ContainerPatternEncoder;
65
import com.circulation.random_complement.common.util.MEHandler;
76
import net.minecraft.entity.player.InventoryPlayer;
87
import org.spongepowered.asm.mixin.Mixin;
@@ -11,10 +10,10 @@
1110
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
1211

1312
@Mixin(value = ContainerExpandedProcessingPatternTerm.class, remap = false)
14-
public abstract class MixinContainerExpandedProcessingPatternTerm extends ContainerPatternEncoder {
13+
public abstract class MixinContainerExpandedProcessingPatternTerm extends MixinContainerPatternEncoder {
1514

16-
protected MixinContainerExpandedProcessingPatternTerm(InventoryPlayer ip, ITerminalHost monitorable, boolean bindInventory) {
17-
super(ip, monitorable, bindInventory);
15+
public MixinContainerExpandedProcessingPatternTerm(InventoryPlayer ip, ITerminalHost monitorable) {
16+
super(ip, monitorable);
1817
}
1918

2019
@Inject(method = "<init>", at = @At("TAIL"))

src/main/java/com/circulation/random_complement/mixin/ae2/container/MixinContainerPatternTerm.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.circulation.random_complement.mixin.ae2.container;
22

33
import appeng.api.storage.ITerminalHost;
4-
import appeng.container.implementations.ContainerPatternEncoder;
54
import appeng.container.implementations.ContainerPatternTerm;
65
import com.circulation.random_complement.common.util.MEHandler;
76
import net.minecraft.entity.player.InventoryPlayer;
@@ -11,10 +10,10 @@
1110
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
1211

1312
@Mixin(value = ContainerPatternTerm.class, remap = false)
14-
public abstract class MixinContainerPatternTerm extends ContainerPatternEncoder {
13+
public abstract class MixinContainerPatternTerm extends MixinContainerPatternEncoder {
1514

16-
protected MixinContainerPatternTerm(InventoryPlayer ip, ITerminalHost monitorable, boolean bindInventory) {
17-
super(ip, monitorable, bindInventory);
15+
public MixinContainerPatternTerm(InventoryPlayer ip, ITerminalHost monitorable) {
16+
super(ip, monitorable);
1817
}
1918

2019
@Inject(method = "<init>", at = @At("TAIL"))

src/main/java/com/circulation/random_complement/mixin/ae2/container/MixinContainerWirelessPatternTerminal.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.circulation.random_complement.mixin.ae2.container;
22

33
import appeng.api.storage.ITerminalHost;
4-
import appeng.container.implementations.ContainerPatternEncoder;
54
import appeng.container.implementations.ContainerWirelessPatternTerminal;
65
import appeng.helpers.WirelessTerminalGuiObject;
76
import com.circulation.random_complement.common.util.MEHandler;
@@ -12,10 +11,10 @@
1211
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
1312

1413
@Mixin(value = ContainerWirelessPatternTerminal.class, remap = false)
15-
public abstract class MixinContainerWirelessPatternTerminal extends ContainerPatternEncoder {
14+
public abstract class MixinContainerWirelessPatternTerminal extends MixinContainerPatternEncoder {
1615

17-
protected MixinContainerWirelessPatternTerminal(InventoryPlayer ip, ITerminalHost monitorable, boolean bindInventory) {
18-
super(ip, monitorable, bindInventory);
16+
public MixinContainerWirelessPatternTerminal(InventoryPlayer ip, ITerminalHost monitorable) {
17+
super(ip, monitorable);
1918
}
2019

2120
@Inject(method = "<init>", at = @At("TAIL"))

src/main/java/com/circulation/random_complement/mixin/ae2/gui/MixinAEBaseGui.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ private void drawSlotFake(Slot slot, CallbackInfo ci) {
6666
if (slot.xPos < 0 || slot.yPos < 0) return;
6767
if (this instanceof RCAECraftablesGui) {
6868
if (slot instanceof SlotFake slotFake) {
69+
if (!slotFake.shouldDisplay()) return;
6970
var item = slotFake.getDisplayStack();
7071
if (!item.isEmpty()) {
7172
if (r$getCraftablesCache().contains(MEHandler.packAEItem(item))) {
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.circulation.random_complement.mixin.ae2.jei;
2+
3+
import appeng.client.gui.AEBaseGui;
4+
import com.circulation.random_complement.RandomComplement;
5+
import net.minecraft.client.gui.inventory.GuiContainer;
6+
import net.minecraft.inventory.Container;
7+
import org.spongepowered.asm.mixin.Intrinsic;
8+
import org.spongepowered.asm.mixin.Mixin;
9+
10+
@Mixin(value = AEBaseGui.class)
11+
public abstract class MixinAEBaseGui extends GuiContainer {
12+
13+
public MixinAEBaseGui(Container inventorySlotsIn) {
14+
super(inventorySlotsIn);
15+
}
16+
17+
@Intrinsic
18+
protected void renderHoveredToolTip(int mouseX, int mouseY) {
19+
if (!RandomComplement.proxy.isMouseHasItem()
20+
&& this.hoveredSlot != null
21+
&& this.hoveredSlot.getHasStack()
22+
) {
23+
this.renderToolTip(this.hoveredSlot.getStack(), mouseX, mouseY);
24+
}
25+
}
26+
27+
}

src/main/java/com/circulation/random_complement/mixin/ae2fc/container/AccessorContainerWirelessPatternTerminal.java

Lines changed: 0 additions & 12 deletions
This file was deleted.

0 commit comments

Comments
 (0)