PrettyPipes/src/main/java/de/ellpeck/prettypipes/network/NetworkLocation.java

64 lines
2 KiB
Java
Raw Normal View History

2020-04-17 20:03:54 +02:00
package de.ellpeck.prettypipes.network;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.ListMultimap;
import de.ellpeck.prettypipes.misc.ItemEqualityType;
2020-04-17 20:03:54 +02:00
import net.minecraft.item.ItemStack;
import net.minecraft.util.Direction;
import net.minecraft.util.math.BlockPos;
import net.minecraftforge.items.IItemHandler;
2020-04-17 20:03:54 +02:00
import org.apache.commons.lang3.tuple.Pair;
2020-05-07 18:30:40 +02:00
import java.util.*;
2020-05-07 21:10:29 +02:00
import java.util.stream.Collectors;
2020-04-17 20:03:54 +02:00
public class NetworkLocation {
public final BlockPos pipePos;
public final Direction direction;
public final BlockPos pos;
public final IItemHandler handler;
private Map<Integer, ItemStack> items;
2020-04-17 20:03:54 +02:00
public NetworkLocation(BlockPos pipePos, Direction direction, IItemHandler handler) {
2020-04-17 20:03:54 +02:00
this.pipePos = pipePos;
this.direction = direction;
this.pos = pipePos.offset(direction);
this.handler = handler;
2020-04-17 22:29:02 +02:00
}
public void addItem(int slot, ItemStack stack) {
2020-04-17 22:29:02 +02:00
if (this.items == null)
this.items = new HashMap<>();
this.items.put(slot, stack);
2020-04-17 20:03:54 +02:00
}
public List<Integer> getStackSlots(ItemStack stack, ItemEqualityType... equalityTypes) {
2020-04-17 22:29:02 +02:00
if (this.isEmpty())
2020-05-07 21:10:29 +02:00
return Collections.emptyList();
return this.items.entrySet().stream()
.filter(e -> ItemEqualityType.compareItems(e.getValue(), stack, equalityTypes))
2020-05-07 21:10:29 +02:00
.map(Map.Entry::getKey)
.collect(Collectors.toList());
2020-04-17 20:03:54 +02:00
}
2020-04-17 22:29:02 +02:00
public int getItemAmount(ItemStack stack, ItemEqualityType... equalityTypes) {
2020-04-20 03:37:23 +02:00
return this.items.values().stream()
.filter(i -> ItemEqualityType.compareItems(stack, i, equalityTypes))
2020-04-20 03:37:23 +02:00
.mapToInt(ItemStack::getCount).sum();
}
2020-05-07 18:30:40 +02:00
public Collection<ItemStack> getItems() {
return this.items.values();
}
2020-04-17 22:29:02 +02:00
public boolean isEmpty() {
return this.items == null || this.items.isEmpty();
}
@Override
public String toString() {
return this.items.values().toString();
}
2020-04-17 20:03:54 +02:00
}