all done?

This commit is contained in:
asdflj committed 2023-02-01 16:25:42 +08:00
1 parent 5ea7f44058
commit 8081eb2c2c
10 files changed
+172 -24

No files matched your search

@@ -1,5 +1,7 @@
package com.glodblock.github.util;
import static com.glodblock.github.common.item.ItemBaseWirelessTerminal.infinityBoosterCard;
import java.io.IOException;
import java.util.Map;
@@ -11,6 +13,7 @@ import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.*;
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.MutablePair;
import appeng.api.AEApi;
@@ -30,8 +33,10 @@ import appeng.api.util.WorldCoord;
import appeng.items.tools.powered.ToolWirelessTerminal;
import appeng.tile.networking.TileCableBus;
import appeng.tile.networking.TileWireless;
import appeng.util.Platform;
import appeng.util.item.AEFluidStack;
import com.glodblock.github.common.item.ItemBaseWirelessTerminal;
import com.glodblock.github.common.item.ItemFluidDrop;
import com.glodblock.github.common.item.ItemFluidPacket;
import com.glodblock.github.inventory.IAEFluidTank;
@@ -42,6 +47,14 @@ import io.netty.buffer.ByteBuf;
public final class Util {
public static boolean hasInfinityBoosterCard(ItemStack is) {
if (ModAndClassUtil.WCT && is.getItem() instanceof ItemBaseWirelessTerminal) {
NBTTagCompound data = Platform.openNbtData(is);
return data.hasKey(infinityBoosterCard) && data.getBoolean(infinityBoosterCard);
}
return false;
}
public static IGridNode getWirelessGrid(ItemStack is) {
if (is.getItem() instanceof ToolWirelessTerminal) {
String key = ((ToolWirelessTerminal) is.getItem()).getEncryptionKey(is);
@@ -60,22 +73,33 @@ public final class Util {
if (gridNode == null) return null;
IGrid grid = gridNode.getGrid();
if (grid == null) return null;
for (IGridNode node : grid.getMachines(TileWireless.class)) {
IWirelessAccessPoint accessPoint = (IWirelessAccessPoint) node.getMachine();
WorldCoord distance = accessPoint.getLocation()
.subtract((int) player.posX, (int) player.posY, (int) player.posZ);
int squaredDistance = distance.x * distance.x + distance.y * distance.y + distance.z * distance.z;
if (squaredDistance <= accessPoint.getRange() * accessPoint.getRange()) {
IStorageGrid gridCache = grid.getCache(IStorageGrid.class);
if (gridCache != null) {
if (channel == StorageChannel.FLUIDS) {
return gridCache.getFluidInventory();
} else {
return gridCache.getItemInventory();
boolean canConnect = false;
if (hasInfinityBoosterCard(is)) {
canConnect = true;
} else {
for (IGridNode node : grid.getMachines(TileWireless.class)) {
IWirelessAccessPoint accessPoint = (IWirelessAccessPoint) node.getMachine();
if (accessPoint.isActive() && accessPoint.getLocation().getDimension() == player.dimension) {
WorldCoord distance = accessPoint.getLocation()
.subtract((int) player.posX, (int) player.posY, (int) player.posZ);
int squaredDistance = distance.x * distance.x + distance.y * distance.y + distance.z * distance.z;
if (squaredDistance <= accessPoint.getRange() * accessPoint.getRange()) {
canConnect = true;
break;
}
}
}
}
if (canConnect) {
IStorageGrid gridCache = grid.getCache(IStorageGrid.class);
if (gridCache != null) {
if (channel == StorageChannel.FLUIDS) {
return gridCache.getFluidInventory();
} else {
return gridCache.getItemInventory();
}
}
}
return null;
}
@@ -279,11 +303,11 @@ public final class Util {
return value | (type.ordinal() << 29) | y;
}
public static MutablePair<GuiType, Integer> decodeType(int y) {
public static ImmutablePair<GuiType, Integer> decodeType(int y) {
if (Math.abs(y) > (1 << 28)) {
return new MutablePair<>(GuiType.values()[y >> 29 & 1], y - (3 << 29 & y));
return new ImmutablePair<>(GuiType.values()[y >> 29 & 1], y - (3 << 29 & y));
} else {
return new MutablePair<>(GuiType.TILE, y);
return new ImmutablePair<>(GuiType.TILE, y);
}
}
}