Fix some TODOs
This commit is contained in:
@@ -123,16 +123,6 @@ public final class RS {
|
||||
PROXY.preInit(e);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void init(FMLInitializationEvent e) {
|
||||
PROXY.init(e);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void postInit(FMLPostInitializationEvent e) {
|
||||
PROXY.postInit(e);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onServerStarting(FMLServerStartingEvent e) {
|
||||
e.registerServerCommand(new CommandCreateDisk());
|
||||
|
@@ -37,43 +37,41 @@ public class FluidGridHandler implements IFluidGridHandler {
|
||||
return;
|
||||
}
|
||||
|
||||
if (StackUtils.hasFluidBucket(stack)) {
|
||||
ItemStack bucket = null;
|
||||
ItemStack bucket = ItemStack.EMPTY;
|
||||
|
||||
for (int i = 0; i < player.inventory.getSizeInventory(); ++i) {
|
||||
ItemStack slot = player.inventory.getStackInSlot(i);
|
||||
for (int i = 0; i < player.inventory.getSizeInventory(); ++i) {
|
||||
ItemStack slot = player.inventory.getStackInSlot(i);
|
||||
|
||||
if (API.instance().getComparer().isEqualNoQuantity(StackUtils.EMPTY_BUCKET, slot)) {
|
||||
bucket = StackUtils.EMPTY_BUCKET.copy();
|
||||
if (API.instance().getComparer().isEqualNoQuantity(StackUtils.EMPTY_BUCKET, slot)) {
|
||||
bucket = StackUtils.EMPTY_BUCKET.copy();
|
||||
|
||||
player.inventory.decrStackSize(i, 1);
|
||||
player.inventory.decrStackSize(i, 1);
|
||||
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (bucket == null) {
|
||||
bucket = network.extractItem(StackUtils.EMPTY_BUCKET, 1, Action.PERFORM);
|
||||
}
|
||||
if (bucket.isEmpty()) {
|
||||
bucket = network.extractItem(StackUtils.EMPTY_BUCKET, 1, Action.PERFORM);
|
||||
}
|
||||
|
||||
if (bucket != null) {
|
||||
bucket.getCapability(CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY, null).ifPresent(fluidHandler -> {
|
||||
network.getFluidStorageTracker().changed(player, stack.copy());
|
||||
if (!bucket.isEmpty()) {
|
||||
bucket.getCapability(CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY, null).ifPresent(fluidHandler -> {
|
||||
network.getFluidStorageTracker().changed(player, stack.copy());
|
||||
|
||||
fluidHandler.fill(network.extractFluid(stack, FluidAttributes.BUCKET_VOLUME, Action.PERFORM), IFluidHandler.FluidAction.EXECUTE);
|
||||
fluidHandler.fill(network.extractFluid(stack, FluidAttributes.BUCKET_VOLUME, Action.PERFORM), IFluidHandler.FluidAction.EXECUTE);
|
||||
|
||||
if (shift) {
|
||||
if (!player.inventory.addItemStackToInventory(fluidHandler.getContainer().copy())) {
|
||||
InventoryHelper.spawnItemStack(player.getEntityWorld(), player.getPosition().getX(), player.getPosition().getY(), player.getPosition().getZ(), fluidHandler.getContainer());
|
||||
}
|
||||
} else {
|
||||
player.inventory.setItemStack(fluidHandler.getContainer());
|
||||
player.updateHeldItem();
|
||||
if (shift) {
|
||||
if (!player.inventory.addItemStackToInventory(fluidHandler.getContainer().copy())) {
|
||||
InventoryHelper.spawnItemStack(player.getEntityWorld(), player.getPosition().getX(), player.getPosition().getY(), player.getPosition().getZ(), fluidHandler.getContainer());
|
||||
}
|
||||
} else {
|
||||
player.inventory.setItemStack(fluidHandler.getContainer());
|
||||
player.updateHeldItem();
|
||||
}
|
||||
|
||||
network.getNetworkItemHandler().drainEnergy(player, RS.INSTANCE.config.wirelessFluidGridExtractUsage);
|
||||
});
|
||||
}
|
||||
network.getNetworkItemHandler().drainEnergy(player, RS.INSTANCE.config.wirelessFluidGridExtractUsage);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -33,39 +33,37 @@ public class FluidGridHandlerPortable implements IFluidGridHandler {
|
||||
return;
|
||||
}
|
||||
|
||||
if (StackUtils.hasFluidBucket(stack)) {
|
||||
ItemStack bucket = null;
|
||||
ItemStack bucket = ItemStack.EMPTY;
|
||||
|
||||
for (int i = 0; i < player.inventory.getSizeInventory(); ++i) {
|
||||
ItemStack slot = player.inventory.getStackInSlot(i);
|
||||
for (int i = 0; i < player.inventory.getSizeInventory(); ++i) {
|
||||
ItemStack slot = player.inventory.getStackInSlot(i);
|
||||
|
||||
if (API.instance().getComparer().isEqualNoQuantity(StackUtils.EMPTY_BUCKET, slot)) {
|
||||
bucket = StackUtils.EMPTY_BUCKET.copy();
|
||||
if (API.instance().getComparer().isEqualNoQuantity(StackUtils.EMPTY_BUCKET, slot)) {
|
||||
bucket = StackUtils.EMPTY_BUCKET.copy();
|
||||
|
||||
player.inventory.decrStackSize(i, 1);
|
||||
player.inventory.decrStackSize(i, 1);
|
||||
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (bucket != null) {
|
||||
bucket.getCapability(CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY, null).ifPresent(fluidHandler -> {
|
||||
portableGrid.getFluidStorageTracker().changed(player, stack.copy());
|
||||
if (!bucket.isEmpty()) {
|
||||
bucket.getCapability(CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY, null).ifPresent(fluidHandler -> {
|
||||
portableGrid.getFluidStorageTracker().changed(player, stack.copy());
|
||||
|
||||
fluidHandler.fill(portableGrid.getFluidStorage().extract(stack, FluidAttributes.BUCKET_VOLUME, IComparer.COMPARE_NBT, Action.PERFORM), IFluidHandler.FluidAction.EXECUTE);
|
||||
fluidHandler.fill(portableGrid.getFluidStorage().extract(stack, FluidAttributes.BUCKET_VOLUME, IComparer.COMPARE_NBT, Action.PERFORM), IFluidHandler.FluidAction.EXECUTE);
|
||||
|
||||
if (shift) {
|
||||
if (!player.inventory.addItemStackToInventory(fluidHandler.getContainer().copy())) {
|
||||
InventoryHelper.spawnItemStack(player.getEntityWorld(), player.getPosition().getX(), player.getPosition().getY(), player.getPosition().getZ(), fluidHandler.getContainer());
|
||||
}
|
||||
} else {
|
||||
player.inventory.setItemStack(fluidHandler.getContainer());
|
||||
player.updateHeldItem();
|
||||
if (shift) {
|
||||
if (!player.inventory.addItemStackToInventory(fluidHandler.getContainer().copy())) {
|
||||
InventoryHelper.spawnItemStack(player.getEntityWorld(), player.getPosition().getX(), player.getPosition().getY(), player.getPosition().getZ(), fluidHandler.getContainer());
|
||||
}
|
||||
} else {
|
||||
player.inventory.setItemStack(fluidHandler.getContainer());
|
||||
player.updateHeldItem();
|
||||
}
|
||||
|
||||
portableGrid.drainEnergy(RS.INSTANCE.config.portableGridExtractUsage);
|
||||
});
|
||||
}
|
||||
portableGrid.drainEnergy(RS.INSTANCE.config.portableGridExtractUsage);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -2,12 +2,9 @@ package com.raoulvdberge.refinedstorage.gui.grid.stack;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.api.storage.IStorageTracker;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.storage.StorageTrackerEntry;
|
||||
import com.raoulvdberge.refinedstorage.gui.GuiBase;
|
||||
import com.raoulvdberge.refinedstorage.util.StackUtils;
|
||||
import net.minecraft.client.resources.I18n;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.network.PacketBuffer;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
@@ -28,16 +25,12 @@ public class GridStackItem implements IGridStack {
|
||||
this.stack = stack;
|
||||
}
|
||||
|
||||
public GridStackItem(PacketBuffer buf) {
|
||||
this.stack = StackUtils.readItemStack(buf);
|
||||
this.hash = buf.readInt();
|
||||
this.craftable = buf.readBoolean();
|
||||
|
||||
setDisplayCraftText(buf.readBoolean());
|
||||
|
||||
if (buf.readBoolean()) {
|
||||
this.entry = new StorageTrackerEntry(buf);
|
||||
}
|
||||
public GridStackItem(int hash, ItemStack stack, boolean craftable, boolean displayCraftText, IStorageTracker.IStorageTrackerEntry entry) {
|
||||
this.hash = hash;
|
||||
this.stack = stack;
|
||||
this.craftable = craftable;
|
||||
this.displayCraftText = displayCraftText;
|
||||
this.entry = entry;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
|
@@ -1,9 +1,13 @@
|
||||
package com.raoulvdberge.refinedstorage.util;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.api.network.INetwork;
|
||||
import com.raoulvdberge.refinedstorage.api.storage.IStorageTracker;
|
||||
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDisk;
|
||||
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskProvider;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.storage.StorageTrackerEntry;
|
||||
import com.raoulvdberge.refinedstorage.gui.grid.stack.GridStackFluid;
|
||||
import com.raoulvdberge.refinedstorage.gui.grid.stack.GridStackItem;
|
||||
import net.minecraft.inventory.IInventory;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
@@ -21,7 +25,6 @@ import net.minecraftforge.fluids.capability.IFluidHandlerItem;
|
||||
import net.minecraftforge.items.IItemHandler;
|
||||
import net.minecraftforge.items.IItemHandlerModifiable;
|
||||
import net.minecraftforge.items.ItemHandlerHelper;
|
||||
import net.minecraftforge.registries.ForgeRegistries;
|
||||
import org.apache.commons.lang3.tuple.Pair;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
@@ -34,21 +37,45 @@ public final class StackUtils {
|
||||
private static final String NBT_INVENTORY = "Inventory_%d";
|
||||
private static final String NBT_SLOT = "Slot";
|
||||
|
||||
// TODO: can we remove this?
|
||||
public static void writeItemStack(PacketBuffer buf, ItemStack stack) {
|
||||
buf.writeInt(Item.getIdFromItem(stack.getItem()));
|
||||
buf.writeInt(stack.getCount());
|
||||
buf.writeCompoundTag(stack.getItem().getShareTag(stack));
|
||||
// @Volatile: from PacketBuffer#writeItemStack, with some tweaks to allow int stack counts
|
||||
public static void writeItemStack(PacketBuffer buf, @Nonnull ItemStack stack) {
|
||||
if (stack.isEmpty()) {
|
||||
buf.writeBoolean(false);
|
||||
} else {
|
||||
buf.writeBoolean(true);
|
||||
|
||||
Item item = stack.getItem();
|
||||
|
||||
buf.writeVarInt(Item.getIdFromItem(item));
|
||||
buf.writeByte(stack.getCount());
|
||||
|
||||
CompoundNBT tag = null;
|
||||
|
||||
if (item.isDamageable() || item.shouldSyncTag()) {
|
||||
tag = stack.getTag();
|
||||
}
|
||||
|
||||
buf.writeCompoundTag(tag);
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: Removal
|
||||
// @Volatile: from PacketBuffer#readItemStack, with some tweaks to allow int stack counts
|
||||
public static ItemStack readItemStack(PacketBuffer buf) {
|
||||
ItemStack stack = new ItemStack(Item.getItemById(buf.readInt()), buf.readInt());
|
||||
stack.setTag(buf.readCompoundTag());
|
||||
return stack;
|
||||
if (!buf.readBoolean()) {
|
||||
return ItemStack.EMPTY;
|
||||
} else {
|
||||
int id = buf.readVarInt();
|
||||
int count = buf.readByte();
|
||||
|
||||
ItemStack stack = new ItemStack(Item.getItemById(id), count);
|
||||
|
||||
stack.readShareTag(buf.readCompoundTag());
|
||||
|
||||
return stack;
|
||||
}
|
||||
}
|
||||
|
||||
public static void writeItemStack(PacketBuffer buf, ItemStack stack, @Nullable INetwork network, boolean displayCraftText) {
|
||||
public static void writeItemGridStack(PacketBuffer buf, ItemStack stack, @Nullable INetwork network, boolean displayCraftText, @Nullable IStorageTracker.IStorageTrackerEntry entry) {
|
||||
writeItemStack(buf, stack);
|
||||
|
||||
buf.writeInt(API.instance().getItemStackHashCode(stack));
|
||||
@@ -60,28 +87,66 @@ public final class StackUtils {
|
||||
buf.writeBoolean(false);
|
||||
buf.writeBoolean(false);
|
||||
}
|
||||
|
||||
if (entry == null) {
|
||||
buf.writeBoolean(false);
|
||||
} else {
|
||||
buf.writeBoolean(true);
|
||||
|
||||
buf.writeLong(entry.getTime());
|
||||
buf.writeString(entry.getName());
|
||||
}
|
||||
}
|
||||
|
||||
public static void writeFluidStackAndHash(PacketBuffer buf, FluidStack stack) {
|
||||
public static GridStackItem readItemGridStack(PacketBuffer buf) {
|
||||
ItemStack stack = readItemStack(buf);
|
||||
int hash = buf.readInt();
|
||||
boolean craftable = buf.readBoolean();
|
||||
boolean displayCraftText = buf.readBoolean();
|
||||
|
||||
IStorageTracker.IStorageTrackerEntry entry = null;
|
||||
if (buf.readBoolean()) {
|
||||
entry = new StorageTrackerEntry(buf.readLong(), buf.readString());
|
||||
}
|
||||
|
||||
return new GridStackItem(hash, stack, craftable, displayCraftText, entry);
|
||||
}
|
||||
|
||||
public static void writeFluidGridStack(PacketBuffer buf, FluidStack stack, @Nullable INetwork network, boolean displayCraftText, @Nullable IStorageTracker.IStorageTrackerEntry entry) {
|
||||
stack.writeToPacket(buf);
|
||||
|
||||
buf.writeInt(API.instance().getFluidStackHashCode(stack));
|
||||
|
||||
writeFluidStack(buf, stack);
|
||||
if (network != null) {
|
||||
buf.writeBoolean(network.getCraftingManager().getPattern(stack) != null);
|
||||
buf.writeBoolean(displayCraftText);
|
||||
} else {
|
||||
buf.writeBoolean(false);
|
||||
buf.writeBoolean(false);
|
||||
}
|
||||
|
||||
if (entry == null) {
|
||||
buf.writeBoolean(false);
|
||||
} else {
|
||||
buf.writeBoolean(true);
|
||||
|
||||
buf.writeLong(entry.getTime());
|
||||
buf.writeString(entry.getName());
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: Removal
|
||||
public static void writeFluidStack(PacketBuffer buf, FluidStack stack) {
|
||||
buf.writeResourceLocation(stack.getFluid().getRegistryName()); // TODO: Probably wrong
|
||||
buf.writeInt(stack.getAmount());
|
||||
buf.writeCompoundTag(stack.getTag());
|
||||
}
|
||||
public static GridStackFluid readFluidGridStack(PacketBuffer buf) {
|
||||
FluidStack stack = FluidStack.readFromPacket(buf);
|
||||
int hash = buf.readInt();
|
||||
boolean craftable = buf.readBoolean();
|
||||
boolean displayCraftText = buf.readBoolean();
|
||||
|
||||
// TODO: Removal
|
||||
public static FluidStack readFluidStack(PacketBuffer buf) {
|
||||
return new FluidStack(ForgeRegistries.FLUIDS.getValue(buf.readResourceLocation()), buf.readInt(), buf.readCompoundTag());
|
||||
}
|
||||
IStorageTracker.IStorageTrackerEntry entry = null;
|
||||
if (buf.readBoolean()) {
|
||||
entry = new StorageTrackerEntry(buf.readLong(), buf.readString());
|
||||
}
|
||||
|
||||
public static Pair<Integer, FluidStack> readFluidStackAndHash(PacketBuffer buf) {
|
||||
return Pair.of(buf.readInt(), readFluidStack(buf));
|
||||
return new GridStackFluid(hash, stack, entry, craftable, displayCraftText);
|
||||
}
|
||||
|
||||
public static ItemStack nullToEmpty(@Nullable ItemStack stack) {
|
||||
@@ -195,14 +260,6 @@ public final class StackUtils {
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean hasFluidBucket(FluidStack stack) {
|
||||
return true; // TODO
|
||||
/*return stack.getFluid() == Fluids.WATER ||
|
||||
stack.getFluid() == Fluids.LAVA ||
|
||||
//stack.getFluid().getName().equals("milk") ||
|
||||
FluidRegistry.getBucketFluids().contains(stack.getFluid());*/
|
||||
}
|
||||
|
||||
public static FluidStack copy(FluidStack stack, int size) {
|
||||
FluidStack copy = stack.copy();
|
||||
copy.setAmount(size);
|
||||
@@ -249,7 +306,6 @@ public final class StackUtils {
|
||||
itemTag.put(NBT_ITEM_NBT, stack.getTag());
|
||||
}
|
||||
|
||||
// TODO: Better way now?
|
||||
stack.write(dummy);
|
||||
|
||||
if (dummy.contains("ForgeCaps")) {
|
||||
|
Reference in New Issue
Block a user