Skip to content

Commit 50538e6

Browse files
committed
修复bug,bug,和bug
1 parent 8f226fa commit 50538e6

File tree

10 files changed

+92
-149
lines changed

10 files changed

+92
-149
lines changed

src/main/java/com/glodblock/github/client/GuiGeneralLevelMaintainer.java

Lines changed: 7 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,10 @@
11
package com.glodblock.github.client;
22

3-
import appeng.api.storage.data.IAEItemStack;
43
import appeng.client.gui.AEBaseGui;
54
import appeng.client.gui.widgets.GuiNumberBox;
65
import appeng.container.interfaces.IJEIGhostIngredients;
76
import appeng.container.slot.SlotFake;
87
import appeng.core.localization.GuiText;
9-
import appeng.core.sync.network.NetworkHandler;
10-
import appeng.core.sync.packets.PacketInventoryAction;
11-
import appeng.helpers.InventoryAction;
128
import appeng.util.item.AEItemStack;
139
import com.glodblock.github.FluidCraft;
1410
import com.glodblock.github.client.container.ContainerGeneralLevelMaintainer;
@@ -22,19 +18,13 @@
2218
import com.glodblock.github.util.UtilClient;
2319
import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
2420
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
25-
import mekanism.api.gas.GasStack;
2621
import mezz.jei.api.gui.IGhostIngredientHandler;
2722
import net.minecraft.client.resources.I18n;
2823
import net.minecraft.entity.player.InventoryPlayer;
2924
import net.minecraft.inventory.Slot;
30-
import net.minecraft.item.ItemStack;
3125
import net.minecraft.util.ResourceLocation;
32-
import net.minecraftforge.fluids.FluidStack;
33-
import net.minecraftforge.fml.common.Optional;
3426
import net.minecraftforge.items.IItemHandler;
35-
import org.lwjgl.input.Mouse;
3627

37-
import javax.annotation.Nonnull;
3828
import java.io.IOException;
3929
import java.util.List;
4030
import java.util.Map;
@@ -200,17 +190,13 @@ public void drawBG(int offsetX, int offsetY, int mouseX, int mouseY) {
200190
public List<IGhostIngredientHandler.Target<?>> getPhantomTargets(Object ingredient) {
201191
this.mapTargetSlot.clear();
202192
List<IGhostIngredientHandler.Target<?>> list = new ObjectArrayList<>();
203-
if (ModAndClassUtil.GAS && mek$getPhantomTargets(ingredient, list)) return list;
204-
205-
if (ingredient instanceof ItemStack || ingredient instanceof FluidStack) {
206-
if (!this.inventorySlots.inventorySlots.isEmpty()) {
207-
for (Slot slots : this.inventorySlots.inventorySlots) {
208-
if (slots instanceof SlotFake slot) {
209-
final IGhostIngredientHandler.Target<Object> targetItem;
210-
targetItem = new ItemAndFluidPacketTarget(getGuiLeft(), getGuiTop(), slot);
211-
list.add(targetItem);
212-
this.mapTargetSlot.putIfAbsent(targetItem, slot);
213-
}
193+
if (!this.inventorySlots.inventorySlots.isEmpty()) {
194+
for (Slot slots : this.inventorySlots.inventorySlots) {
195+
if (slots instanceof SlotFake slot) {
196+
final IGhostIngredientHandler.Target<Object> targetItem
197+
= new FluidPacketTarget(getGuiLeft(), getGuiTop(), slot);
198+
list.add(targetItem);
199+
this.mapTargetSlot.put(targetItem, slot);
214200
}
215201
}
216202
}
@@ -222,57 +208,4 @@ public Map<IGhostIngredientHandler.Target<?>, Object> getFakeSlotTargetMap() {
222208
return mapTargetSlot;
223209
}
224210

225-
@Optional.Method(modid = "mekeng")
226-
public boolean mek$getPhantomTargets(Object ingredient, List<IGhostIngredientHandler.Target<?>> list) {
227-
if (ingredient instanceof GasStack) {
228-
if (!this.inventorySlots.inventorySlots.isEmpty()) {
229-
for (Slot slots : this.inventorySlots.inventorySlots) {
230-
if (slots instanceof SlotFake slot) {
231-
IGhostIngredientHandler.Target<Object> targetItem = new FluidPacketTarget(getGuiLeft(), getGuiTop(), slot);
232-
list.add(targetItem);
233-
this.mapTargetSlot.putIfAbsent(targetItem, slot);
234-
}
235-
}
236-
}
237-
}
238-
return list.isEmpty();
239-
}
240-
241-
private static class ItemAndFluidPacketTarget extends FluidPacketTarget {
242-
243-
public ItemAndFluidPacketTarget(int guiLeft, int guiTop, Slot slot) {
244-
super(guiLeft, guiTop, slot);
245-
}
246-
247-
@Override
248-
public void accept(@Nonnull Object ingredient) {
249-
if (ingredient instanceof ItemStack s) {
250-
if (Mouse.getEventButton() == 0) {
251-
FluidStack fluid = covertFluid(ingredient);
252-
Object gas = covertGas(ingredient);
253-
if (fluid != null) {
254-
super.accept(fluid);
255-
return;
256-
}
257-
if (gas != null) {
258-
super.accept(gas);
259-
return;
260-
}
261-
}
262-
IAEItemStack stack = AEItemStack.fromItemStack(s);
263-
if (stack == null) {
264-
return;
265-
}
266-
final PacketInventoryAction p;
267-
try {
268-
p = new PacketInventoryAction(InventoryAction.PLACE_JEI_GHOST_ITEM, (SlotFake) slot, stack);
269-
NetworkHandler.instance().sendToServer(p);
270-
} catch (IOException ignored) {
271-
272-
}
273-
return;
274-
}
275-
super.accept(ingredient);
276-
}
277-
}
278211
}

src/main/java/com/glodblock/github/client/GuiUltimateEncoder.java

Lines changed: 7 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
import com.glodblock.github.client.container.ContainerUltimateEncoder;
1717
import com.glodblock.github.common.tile.TileUltimateEncoder;
1818
import com.glodblock.github.integration.jei.FluidPacketTarget;
19-
import com.glodblock.github.integration.jei.ItemTarget;
2019
import com.glodblock.github.network.CPacketFluidPatternTermBtns;
2120
import com.glodblock.github.network.CPacketInventoryAction;
2221
import com.glodblock.github.util.ModAndClassUtil;
@@ -29,13 +28,10 @@
2928
import net.minecraft.entity.player.InventoryPlayer;
3029
import net.minecraft.inventory.ClickType;
3130
import net.minecraft.inventory.Slot;
32-
import net.minecraft.item.ItemStack;
3331
import net.minecraft.util.ResourceLocation;
3432

3533
import javax.annotation.Nonnull;
3634
import java.io.IOException;
37-
import java.util.ArrayList;
38-
import java.util.Collections;
3935
import java.util.HashMap;
4036
import java.util.List;
4137
import java.util.Map;
@@ -215,28 +211,15 @@ public void drawBG(int offsetX, int offsetY, int mouseX, int mouseY) {
215211

216212
@Override
217213
public List<IGhostIngredientHandler.Target<?>> getPhantomTargets(Object ingredient) {
218-
if (FluidPacketTarget.covertFluid(ingredient) != null || FluidPacketTarget.covertGas(ingredient) != null) {
219-
List<IGhostIngredientHandler.Target<?>> targets = new ObjectArrayList<>();
220-
for (Slot slot : this.container.inventorySlots) {
221-
if (slot instanceof SlotFake) {
222-
IGhostIngredientHandler.Target<?> target = new FluidPacketTarget(getGuiLeft(), getGuiTop(), slot);
223-
targets.add(target);
224-
this.mapTargetSlot.putIfAbsent(target, slot);
225-
}
226-
}
227-
return targets;
228-
} else if (ingredient instanceof ItemStack) {
229-
List<IGhostIngredientHandler.Target<?>> targets = new ArrayList<>();
230-
for (Slot slot : this.container.inventorySlots) {
231-
if (slot instanceof SlotFake) {
232-
IGhostIngredientHandler.Target<?> target = new ItemTarget(getGuiLeft(), getGuiTop(), slot);
233-
targets.add(target);
234-
this.mapTargetSlot.putIfAbsent(target, slot);
235-
}
214+
List<IGhostIngredientHandler.Target<?>> targets = new ObjectArrayList<>();
215+
for (Slot slot : this.container.inventorySlots) {
216+
if (slot instanceof SlotFake) {
217+
IGhostIngredientHandler.Target<?> target = new FluidPacketTarget(getGuiLeft(), getGuiTop(), slot);
218+
targets.add(target);
219+
this.mapTargetSlot.putIfAbsent(target, slot);
236220
}
237-
return targets;
238221
}
239-
return Collections.emptyList();
222+
return targets;
240223
}
241224

242225
@Override

src/main/java/com/glodblock/github/client/client/gui/GuiExtendedFluidPatternTerminal.java

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,13 @@
2020
import com.glodblock.github.util.Ae2ReflectClient;
2121
import com.glodblock.github.util.ModAndClassUtil;
2222
import com.glodblock.github.util.UtilClient;
23+
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
2324
import mezz.jei.api.gui.IGhostIngredientHandler.Target;
2425
import net.minecraft.client.gui.GuiButton;
2526
import net.minecraft.entity.player.InventoryPlayer;
2627
import net.minecraft.inventory.ClickType;
2728
import net.minecraft.inventory.Slot;
2829

29-
import java.util.ArrayList;
3030
import java.util.List;
3131

3232
public class GuiExtendedFluidPatternTerminal extends GuiExpandedProcessingPatternTerm {
@@ -127,19 +127,15 @@ protected void handleMouseClick(Slot slot, int slotIdx, int mouseButton, ClickTy
127127

128128
@Override
129129
public List<Target<?>> getPhantomTargets(Object ingredient) {
130-
if (FluidPacketTarget.covertFluid(ingredient) != null || FluidPacketTarget.covertGas(ingredient) != null) {
131-
List<Target<?>> targets = new ArrayList<>();
132-
for (Slot slot : this.inventorySlots.inventorySlots) {
133-
if (slot instanceof SlotFake) {
134-
Target<?> target = new FluidPacketTarget(getGuiLeft(), getGuiTop(), slot);
135-
targets.add(target);
136-
mapTargetSlot.putIfAbsent(target, slot);
137-
}
130+
List<Target<?>> targets = new ObjectArrayList<>();
131+
for (Slot slot : this.inventorySlots.inventorySlots) {
132+
if (slot instanceof SlotFake) {
133+
Target<?> target = new FluidPacketTarget(getGuiLeft(), getGuiTop(), slot);
134+
targets.add(target);
135+
mapTargetSlot.putIfAbsent(target, slot);
138136
}
139-
return targets;
140-
} else {
141-
return super.getPhantomTargets(ingredient);
142137
}
138+
return targets;
143139
}
144140

145141
@Override

src/main/java/com/glodblock/github/client/client/gui/GuiFluidPatternTerminal.java

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,13 @@
2020
import com.glodblock.github.util.Ae2ReflectClient;
2121
import com.glodblock.github.util.ModAndClassUtil;
2222
import com.glodblock.github.util.UtilClient;
23+
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
2324
import mezz.jei.api.gui.IGhostIngredientHandler.Target;
2425
import net.minecraft.client.gui.GuiButton;
2526
import net.minecraft.entity.player.InventoryPlayer;
2627
import net.minecraft.inventory.ClickType;
2728
import net.minecraft.inventory.Slot;
2829

29-
import java.util.ArrayList;
3030
import java.util.List;
3131

3232
public class GuiFluidPatternTerminal extends GuiPatternTerm {
@@ -141,19 +141,15 @@ protected void handleMouseClick(Slot slot, int slotIdx, int mouseButton, ClickTy
141141

142142
@Override
143143
public List<Target<?>> getPhantomTargets(Object ingredient) {
144-
if (!this.container.isCraftingMode() && (FluidPacketTarget.covertFluid(ingredient) != null || FluidPacketTarget.covertGas(ingredient) != null)) {
145-
List<Target<?>> targets = new ArrayList<>();
146-
for (Slot slot : this.inventorySlots.inventorySlots) {
147-
if (slot instanceof SlotFake) {
148-
Target<?> target = new FluidPacketTarget(getGuiLeft(), getGuiTop(), slot);
149-
targets.add(target);
150-
mapTargetSlot.putIfAbsent(target, slot);
151-
}
144+
List<Target<?>> targets = new ObjectArrayList<>();
145+
for (Slot slot : this.inventorySlots.inventorySlots) {
146+
if (slot instanceof SlotFake) {
147+
Target<?> target = new FluidPacketTarget(getGuiLeft(), getGuiTop(), slot);
148+
targets.add(target);
149+
mapTargetSlot.putIfAbsent(target, slot);
152150
}
153-
return targets;
154-
} else {
155-
return super.getPhantomTargets(ingredient);
156151
}
152+
return targets;
157153
}
158154

159155
@Override

src/main/java/com/glodblock/github/client/client/gui/GuiWirelessFluidPatternTerminal.java

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -146,19 +146,15 @@ protected void handleMouseClick(Slot slot, int slotIdx, int mouseButton, ClickTy
146146

147147
@Override
148148
public List<IGhostIngredientHandler.Target<?>> getPhantomTargets(Object ingredient) {
149-
if (!this.container.isCraftingMode() && (FluidPacketTarget.covertFluid(ingredient) != null || FluidPacketTarget.covertGas(ingredient) != null)) {
150-
List<IGhostIngredientHandler.Target<?>> targets = new ArrayList<>();
151-
for (Slot slot : this.inventorySlots.inventorySlots) {
152-
if (slot instanceof SlotFake) {
153-
IGhostIngredientHandler.Target<?> target = new FluidPacketTarget(getGuiLeft(), getGuiTop(), slot);
154-
targets.add(target);
155-
mapTargetSlot.putIfAbsent(target, slot);
156-
}
149+
List<IGhostIngredientHandler.Target<?>> targets = new ArrayList<>();
150+
for (Slot slot : this.inventorySlots.inventorySlots) {
151+
if (slot instanceof SlotFake) {
152+
IGhostIngredientHandler.Target<?> target = new FluidPacketTarget(getGuiLeft(), getGuiTop(), slot);
153+
targets.add(target);
154+
mapTargetSlot.putIfAbsent(target, slot);
157155
}
158-
return targets;
159-
} else {
160-
return super.getPhantomTargets(ingredient);
161156
}
157+
return targets;
162158
}
163159

164160
@Override

src/main/java/com/glodblock/github/coremod/mixin/ae2/MixinGridStorageCache.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,18 @@
11
package com.glodblock.github.coremod.mixin.ae2;
22

33
import appeng.api.networking.IGrid;
4+
import appeng.api.networking.security.IActionSource;
45
import appeng.api.storage.IStorageChannel;
6+
import appeng.api.storage.data.IAEItemStack;
57
import appeng.api.storage.data.IAEStack;
68
import appeng.me.cache.GridStorageCache;
79
import appeng.me.cache.NetworkMonitor;
810
import appeng.me.storage.NetworkInventoryHandler;
911
import com.glodblock.github.interfaces.FCNetworkInventoryHandler;
1012
import com.glodblock.github.interfaces.FCNetworkMonitor;
13+
import com.glodblock.github.util.ModAndClassUtil;
1114
import com.glodblock.github.util.Util;
15+
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
1216
import org.spongepowered.asm.mixin.Final;
1317
import org.spongepowered.asm.mixin.Mixin;
1418
import org.spongepowered.asm.mixin.Shadow;
@@ -36,4 +40,16 @@ public void onBuild(IStorageChannel<?> chan, CallbackInfoReturnable<NetworkInven
3640
var m = ((FCNetworkMonitor) this.storageMonitors.get(Util.getItemChannel()));
3741
((FCNetworkInventoryHandler) cir.getReturnValue()).init(m);
3842
}
43+
44+
@Inject(method = "postAlterationOfStoredItems", at = @At("TAIL"))
45+
public void postAlterationOfStoredItems(IStorageChannel<?> chan, Iterable<? extends IAEStack<?>> input, IActionSource src, CallbackInfo ci) {
46+
if (chan == Util.getFluidChannel() || (ModAndClassUtil.GAS && chan == Util.getGasChannel())) {
47+
var list = new ObjectArrayList<IAEItemStack>();
48+
for (IAEStack<?> i : input) {
49+
var drop = Util.packAEStackToDrop(i);
50+
if (drop != null) list.add(drop);
51+
}
52+
((FCNetworkMonitor) this.storageMonitors.get(Util.getItemChannel())).fc$postChange(true, list, src);
53+
}
54+
}
3955
}

src/main/java/com/glodblock/github/coremod/mixin/ae2/MixinNetworkMonitor.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.glodblock.github.coremod.mixin.ae2;
22

33
import appeng.api.config.FuzzyMode;
4+
import appeng.api.networking.security.IActionSource;
45
import appeng.api.storage.IStorageChannel;
56
import appeng.api.storage.data.IAEFluidStack;
67
import appeng.api.storage.data.IAEItemStack;
@@ -28,7 +29,7 @@
2829
import javax.annotation.Nonnull;
2930

3031
@Mixin(value = NetworkMonitor.class, remap = false)
31-
public class MixinNetworkMonitor<T extends IAEStack<T>> implements FCNetworkMonitor {
32+
public abstract class MixinNetworkMonitor<T extends IAEStack<T>> implements FCNetworkMonitor<T> {
3233

3334
@Shadow
3435
@Final
@@ -40,6 +41,9 @@ public class MixinNetworkMonitor<T extends IAEStack<T>> implements FCNetworkMoni
4041
@Nonnull
4142
private GridStorageCache myGridCache;
4243

44+
@Shadow
45+
protected abstract void postChange(boolean add, Iterable<T> changes, IActionSource src);
46+
4347
@Unique
4448
private FakeMonitor<IAEFluidStack> fluidMonitor;
4549

@@ -104,6 +108,11 @@ public FakeMonitor<?> getGasMonitor() {
104108
return gasMonitor;
105109
}
106110

111+
@Override
112+
public void fc$postChange(boolean add, Iterable<T> changes, IActionSource src) {
113+
this.postChange(add, changes, src);
114+
}
115+
107116
@Inject(method = "getAvailableItems", at = @At("TAIL"))
108117
public void getAvailableItems(IItemList<T> out, CallbackInfoReturnable<IItemList<T>> cir) {
109118
if (this.myChannel == Util.getItemChannel()) {

0 commit comments

Comments
 (0)