Fix some TODOs

This commit is contained in:
raoulvdberge
2019-09-16 18:47:32 +02:00
parent aa04cbc74b
commit 7fcad167e3
5 changed files with 141 additions and 106 deletions

View File

@@ -123,16 +123,6 @@ public final class RS {
PROXY.preInit(e); PROXY.preInit(e);
} }
@EventHandler
public void init(FMLInitializationEvent e) {
PROXY.init(e);
}
@EventHandler
public void postInit(FMLPostInitializationEvent e) {
PROXY.postInit(e);
}
@EventHandler @EventHandler
public void onServerStarting(FMLServerStartingEvent e) { public void onServerStarting(FMLServerStartingEvent e) {
e.registerServerCommand(new CommandCreateDisk()); e.registerServerCommand(new CommandCreateDisk());

View File

@@ -37,8 +37,7 @@ public class FluidGridHandler implements IFluidGridHandler {
return; return;
} }
if (StackUtils.hasFluidBucket(stack)) { ItemStack bucket = ItemStack.EMPTY;
ItemStack bucket = null;
for (int i = 0; i < player.inventory.getSizeInventory(); ++i) { for (int i = 0; i < player.inventory.getSizeInventory(); ++i) {
ItemStack slot = player.inventory.getStackInSlot(i); ItemStack slot = player.inventory.getStackInSlot(i);
@@ -52,11 +51,11 @@ public class FluidGridHandler implements IFluidGridHandler {
} }
} }
if (bucket == null) { if (bucket.isEmpty()) {
bucket = network.extractItem(StackUtils.EMPTY_BUCKET, 1, Action.PERFORM); bucket = network.extractItem(StackUtils.EMPTY_BUCKET, 1, Action.PERFORM);
} }
if (bucket != null) { if (!bucket.isEmpty()) {
bucket.getCapability(CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY, null).ifPresent(fluidHandler -> { bucket.getCapability(CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY, null).ifPresent(fluidHandler -> {
network.getFluidStorageTracker().changed(player, stack.copy()); network.getFluidStorageTracker().changed(player, stack.copy());
@@ -75,7 +74,6 @@ public class FluidGridHandler implements IFluidGridHandler {
}); });
} }
} }
}
@Nullable @Nullable
@Override @Override

View File

@@ -33,8 +33,7 @@ public class FluidGridHandlerPortable implements IFluidGridHandler {
return; return;
} }
if (StackUtils.hasFluidBucket(stack)) { ItemStack bucket = ItemStack.EMPTY;
ItemStack bucket = null;
for (int i = 0; i < player.inventory.getSizeInventory(); ++i) { for (int i = 0; i < player.inventory.getSizeInventory(); ++i) {
ItemStack slot = player.inventory.getStackInSlot(i); ItemStack slot = player.inventory.getStackInSlot(i);
@@ -48,7 +47,7 @@ public class FluidGridHandlerPortable implements IFluidGridHandler {
} }
} }
if (bucket != null) { if (!bucket.isEmpty()) {
bucket.getCapability(CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY, null).ifPresent(fluidHandler -> { bucket.getCapability(CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY, null).ifPresent(fluidHandler -> {
portableGrid.getFluidStorageTracker().changed(player, stack.copy()); portableGrid.getFluidStorageTracker().changed(player, stack.copy());
@@ -67,7 +66,6 @@ public class FluidGridHandlerPortable implements IFluidGridHandler {
}); });
} }
} }
}
@Nullable @Nullable
@Override @Override

View File

@@ -2,12 +2,9 @@ package com.raoulvdberge.refinedstorage.gui.grid.stack;
import com.raoulvdberge.refinedstorage.api.storage.IStorageTracker; import com.raoulvdberge.refinedstorage.api.storage.IStorageTracker;
import com.raoulvdberge.refinedstorage.apiimpl.API; import com.raoulvdberge.refinedstorage.apiimpl.API;
import com.raoulvdberge.refinedstorage.apiimpl.storage.StorageTrackerEntry;
import com.raoulvdberge.refinedstorage.gui.GuiBase; import com.raoulvdberge.refinedstorage.gui.GuiBase;
import com.raoulvdberge.refinedstorage.util.StackUtils;
import net.minecraft.client.resources.I18n; import net.minecraft.client.resources.I18n;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.network.PacketBuffer;
import javax.annotation.Nullable; import javax.annotation.Nullable;
@@ -28,16 +25,12 @@ public class GridStackItem implements IGridStack {
this.stack = stack; this.stack = stack;
} }
public GridStackItem(PacketBuffer buf) { public GridStackItem(int hash, ItemStack stack, boolean craftable, boolean displayCraftText, IStorageTracker.IStorageTrackerEntry entry) {
this.stack = StackUtils.readItemStack(buf); this.hash = hash;
this.hash = buf.readInt(); this.stack = stack;
this.craftable = buf.readBoolean(); this.craftable = craftable;
this.displayCraftText = displayCraftText;
setDisplayCraftText(buf.readBoolean()); this.entry = entry;
if (buf.readBoolean()) {
this.entry = new StorageTrackerEntry(buf);
}
} }
@Nullable @Nullable

View File

@@ -1,9 +1,13 @@
package com.raoulvdberge.refinedstorage.util; package com.raoulvdberge.refinedstorage.util;
import com.raoulvdberge.refinedstorage.api.network.INetwork; 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.IStorageDisk;
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskProvider; import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskProvider;
import com.raoulvdberge.refinedstorage.apiimpl.API; 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.inventory.IInventory;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@@ -21,7 +25,6 @@ import net.minecraftforge.fluids.capability.IFluidHandlerItem;
import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.IItemHandler;
import net.minecraftforge.items.IItemHandlerModifiable; import net.minecraftforge.items.IItemHandlerModifiable;
import net.minecraftforge.items.ItemHandlerHelper; import net.minecraftforge.items.ItemHandlerHelper;
import net.minecraftforge.registries.ForgeRegistries;
import org.apache.commons.lang3.tuple.Pair; import org.apache.commons.lang3.tuple.Pair;
import javax.annotation.Nonnull; 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_INVENTORY = "Inventory_%d";
private static final String NBT_SLOT = "Slot"; private static final String NBT_SLOT = "Slot";
// TODO: can we remove this? // @Volatile: from PacketBuffer#writeItemStack, with some tweaks to allow int stack counts
public static void writeItemStack(PacketBuffer buf, ItemStack stack) { public static void writeItemStack(PacketBuffer buf, @Nonnull ItemStack stack) {
buf.writeInt(Item.getIdFromItem(stack.getItem())); if (stack.isEmpty()) {
buf.writeInt(stack.getCount()); buf.writeBoolean(false);
buf.writeCompoundTag(stack.getItem().getShareTag(stack)); } 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();
} }
// TODO: Removal buf.writeCompoundTag(tag);
}
}
// @Volatile: from PacketBuffer#readItemStack, with some tweaks to allow int stack counts
public static ItemStack readItemStack(PacketBuffer buf) { public static ItemStack readItemStack(PacketBuffer buf) {
ItemStack stack = new ItemStack(Item.getItemById(buf.readInt()), buf.readInt()); if (!buf.readBoolean()) {
stack.setTag(buf.readCompoundTag()); 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; 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); writeItemStack(buf, stack);
buf.writeInt(API.instance().getItemStackHashCode(stack)); buf.writeInt(API.instance().getItemStackHashCode(stack));
@@ -60,28 +87,66 @@ public final class StackUtils {
buf.writeBoolean(false); buf.writeBoolean(false);
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)); 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);
} }
// TODO: Removal if (entry == null) {
public static void writeFluidStack(PacketBuffer buf, FluidStack stack) { buf.writeBoolean(false);
buf.writeResourceLocation(stack.getFluid().getRegistryName()); // TODO: Probably wrong } else {
buf.writeInt(stack.getAmount()); buf.writeBoolean(true);
buf.writeCompoundTag(stack.getTag());
buf.writeLong(entry.getTime());
buf.writeString(entry.getName());
}
} }
// TODO: Removal public static GridStackFluid readFluidGridStack(PacketBuffer buf) {
public static FluidStack readFluidStack(PacketBuffer buf) { FluidStack stack = FluidStack.readFromPacket(buf);
return new FluidStack(ForgeRegistries.FLUIDS.getValue(buf.readResourceLocation()), buf.readInt(), buf.readCompoundTag()); 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());
} }
public static Pair<Integer, FluidStack> readFluidStackAndHash(PacketBuffer buf) { return new GridStackFluid(hash, stack, entry, craftable, displayCraftText);
return Pair.of(buf.readInt(), readFluidStack(buf));
} }
public static ItemStack nullToEmpty(@Nullable ItemStack stack) { 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) { public static FluidStack copy(FluidStack stack, int size) {
FluidStack copy = stack.copy(); FluidStack copy = stack.copy();
copy.setAmount(size); copy.setAmount(size);
@@ -249,7 +306,6 @@ public final class StackUtils {
itemTag.put(NBT_ITEM_NBT, stack.getTag()); itemTag.put(NBT_ITEM_NBT, stack.getTag());
} }
// TODO: Better way now?
stack.write(dummy); stack.write(dummy);
if (dummy.contains("ForgeCaps")) { if (dummy.contains("ForgeCaps")) {