Cleanup writeItemStack code
This commit is contained in:
@@ -126,20 +126,10 @@ public final class RSUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void writeItemStack(ByteBuf buf, ItemStack stack) {
|
public static void writeItemStack(ByteBuf buf, ItemStack stack) {
|
||||||
writeItemStack(buf, stack, null, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void writeItemStack(ByteBuf buf, ItemStack stack, @Nullable INetworkMaster network, boolean displayCraftText) {
|
|
||||||
buf.writeInt(Item.getIdFromItem(stack.getItem()));
|
buf.writeInt(Item.getIdFromItem(stack.getItem()));
|
||||||
buf.writeInt(stack.getCount());
|
buf.writeInt(stack.getCount());
|
||||||
buf.writeInt(stack.getItemDamage());
|
buf.writeInt(stack.getItemDamage());
|
||||||
ByteBufUtils.writeTag(buf, stack.getItem().getNBTShareTag(stack));
|
ByteBufUtils.writeTag(buf, stack.getItem().getNBTShareTag(stack));
|
||||||
|
|
||||||
if (network != null) {
|
|
||||||
buf.writeInt(API.instance().getItemStackHashCode(stack));
|
|
||||||
buf.writeBoolean(network.getCraftingManager().hasPattern(stack));
|
|
||||||
buf.writeBoolean(displayCraftText);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ItemStack readItemStack(ByteBuf buf) {
|
public static ItemStack readItemStack(ByteBuf buf) {
|
||||||
@@ -148,6 +138,20 @@ public final class RSUtils {
|
|||||||
return stack;
|
return stack;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void writeItemStack(ByteBuf buf, ItemStack stack, @Nullable INetworkMaster network, boolean displayCraftText) {
|
||||||
|
writeItemStack(buf, stack);
|
||||||
|
|
||||||
|
buf.writeInt(API.instance().getItemStackHashCode(stack));
|
||||||
|
|
||||||
|
if (network != null) {
|
||||||
|
buf.writeBoolean(network.getCraftingManager().hasPattern(stack));
|
||||||
|
buf.writeBoolean(displayCraftText);
|
||||||
|
} else {
|
||||||
|
buf.writeBoolean(false);
|
||||||
|
buf.writeBoolean(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static void writeFluidStack(ByteBuf buf, FluidStack stack) {
|
public static void writeFluidStack(ByteBuf buf, FluidStack stack) {
|
||||||
buf.writeInt(API.instance().getFluidStackHashCode(stack));
|
buf.writeInt(API.instance().getFluidStackHashCode(stack));
|
||||||
ByteBufUtils.writeUTF8String(buf, FluidRegistry.getFluidName(stack.getFluid()));
|
ByteBufUtils.writeUTF8String(buf, FluidRegistry.getFluidName(stack.getFluid()));
|
||||||
|
|||||||
@@ -9,14 +9,12 @@ import com.raoulvdberge.refinedstorage.apiimpl.API;
|
|||||||
import com.raoulvdberge.refinedstorage.network.MessageGridItemDelta;
|
import com.raoulvdberge.refinedstorage.network.MessageGridItemDelta;
|
||||||
import com.raoulvdberge.refinedstorage.network.MessageGridItemUpdate;
|
import com.raoulvdberge.refinedstorage.network.MessageGridItemUpdate;
|
||||||
import com.raoulvdberge.refinedstorage.tile.grid.PortableGrid;
|
import com.raoulvdberge.refinedstorage.tile.grid.PortableGrid;
|
||||||
import io.netty.buffer.ByteBuf;
|
|
||||||
import net.minecraft.entity.player.EntityPlayerMP;
|
import net.minecraft.entity.player.EntityPlayerMP;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.function.Consumer;
|
|
||||||
|
|
||||||
public class StorageCacheItemPortable implements IStorageCache<ItemStack> {
|
public class StorageCacheItemPortable implements IStorageCache<ItemStack> {
|
||||||
private PortableGrid portableGrid;
|
private PortableGrid portableGrid;
|
||||||
@@ -34,15 +32,11 @@ public class StorageCacheItemPortable implements IStorageCache<ItemStack> {
|
|||||||
portableGrid.getStorage().getStacks().forEach(list::add);
|
portableGrid.getStorage().getStacks().forEach(list::add);
|
||||||
}
|
}
|
||||||
|
|
||||||
RS.INSTANCE.network.sendTo(new MessageGridItemUpdate((buf) -> {
|
RS.INSTANCE.network.sendTo(new MessageGridItemUpdate(buf -> {
|
||||||
buf.writeInt(list.getStacks().size());
|
buf.writeInt(list.getStacks().size());
|
||||||
|
|
||||||
for (ItemStack stack : list.getStacks()) {
|
for (ItemStack stack : list.getStacks()) {
|
||||||
RSUtils.writeItemStack(buf, stack, null, false);
|
RSUtils.writeItemStack(buf, stack, null, false);
|
||||||
|
|
||||||
buf.writeInt(API.instance().getItemStackHashCode(stack));
|
|
||||||
buf.writeBoolean(false);
|
|
||||||
buf.writeBoolean(false);
|
|
||||||
}
|
}
|
||||||
}, false), (EntityPlayerMP) portableGrid.getPlayer());
|
}, false), (EntityPlayerMP) portableGrid.getPlayer());
|
||||||
}
|
}
|
||||||
@@ -52,27 +46,17 @@ public class StorageCacheItemPortable implements IStorageCache<ItemStack> {
|
|||||||
list.add(stack, size);
|
list.add(stack, size);
|
||||||
|
|
||||||
if (!rebuilding) {
|
if (!rebuilding) {
|
||||||
RS.INSTANCE.network.sendTo(new MessageGridItemDelta(getSendHandler(stack), size), (EntityPlayerMP) portableGrid.getPlayer());
|
RS.INSTANCE.network.sendTo(new MessageGridItemDelta(null, stack, size), (EntityPlayerMP) portableGrid.getPlayer());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void remove(@Nonnull ItemStack stack, int size) {
|
public void remove(@Nonnull ItemStack stack, int size) {
|
||||||
if (list.remove(stack, size)) {
|
if (list.remove(stack, size)) {
|
||||||
RS.INSTANCE.network.sendTo(new MessageGridItemDelta(getSendHandler(stack), -size), (EntityPlayerMP) portableGrid.getPlayer());
|
RS.INSTANCE.network.sendTo(new MessageGridItemDelta(null, stack, -size), (EntityPlayerMP) portableGrid.getPlayer());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private Consumer<ByteBuf> getSendHandler(@Nonnull ItemStack stack) {
|
|
||||||
return buf -> {
|
|
||||||
RSUtils.writeItemStack(buf, stack, null, false);
|
|
||||||
|
|
||||||
buf.writeInt(API.instance().getItemStackHashCode(stack));
|
|
||||||
buf.writeBoolean(false);
|
|
||||||
buf.writeBoolean(false);
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sort() {
|
public void sort() {
|
||||||
// NO OP
|
// NO OP
|
||||||
|
|||||||
@@ -11,11 +11,12 @@ import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
|
|||||||
import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
|
import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
|
||||||
import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
|
import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
|
||||||
|
|
||||||
import java.util.function.Consumer;
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
public class MessageGridItemDelta implements IMessage, IMessageHandler<MessageGridItemDelta, IMessage> {
|
public class MessageGridItemDelta implements IMessage, IMessageHandler<MessageGridItemDelta, IMessage> {
|
||||||
// @todo: we can remove sendHandler if we improve the network == null condition in RSUtils.writeItemStack
|
@Nullable
|
||||||
private Consumer<ByteBuf> sendHandler;
|
private INetworkMaster network;
|
||||||
|
private ItemStack stack;
|
||||||
private int delta;
|
private int delta;
|
||||||
|
|
||||||
private GridStackItem clientStack;
|
private GridStackItem clientStack;
|
||||||
@@ -23,13 +24,9 @@ public class MessageGridItemDelta implements IMessage, IMessageHandler<MessageGr
|
|||||||
public MessageGridItemDelta() {
|
public MessageGridItemDelta() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public MessageGridItemDelta(INetworkMaster network, ItemStack stack, int delta) {
|
public MessageGridItemDelta(@Nullable INetworkMaster network, ItemStack stack, int delta) {
|
||||||
this.sendHandler = buf -> RSUtils.writeItemStack(buf, stack, network, false);
|
this.network = network;
|
||||||
this.delta = delta;
|
this.stack = stack;
|
||||||
}
|
|
||||||
|
|
||||||
public MessageGridItemDelta(Consumer<ByteBuf> sendHandler, int delta) {
|
|
||||||
this.sendHandler = sendHandler;
|
|
||||||
this.delta = delta;
|
this.delta = delta;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -41,7 +38,7 @@ public class MessageGridItemDelta implements IMessage, IMessageHandler<MessageGr
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void toBytes(ByteBuf buf) {
|
public void toBytes(ByteBuf buf) {
|
||||||
sendHandler.accept(buf);
|
RSUtils.writeItemStack(buf, stack, network, false);
|
||||||
buf.writeInt(delta);
|
buf.writeInt(delta);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -199,6 +199,7 @@ public class ProxyCommon {
|
|||||||
registerItem(RSItems.WIRELESS_GRID);
|
registerItem(RSItems.WIRELESS_GRID);
|
||||||
registerItem(RSItems.WIRELESS_FLUID_GRID);
|
registerItem(RSItems.WIRELESS_FLUID_GRID);
|
||||||
registerItem(RSItems.WIRELESS_CRAFTING_MONITOR);
|
registerItem(RSItems.WIRELESS_CRAFTING_MONITOR);
|
||||||
|
registerItem(RSItems.PORTABLE_GRID);
|
||||||
registerItem(RSItems.PROCESSOR);
|
registerItem(RSItems.PROCESSOR);
|
||||||
registerItem(RSItems.CORE);
|
registerItem(RSItems.CORE);
|
||||||
registerItem(RSItems.SILICON);
|
registerItem(RSItems.SILICON);
|
||||||
@@ -207,7 +208,6 @@ public class ProxyCommon {
|
|||||||
registerItem(RSItems.NETWORK_CARD);
|
registerItem(RSItems.NETWORK_CARD);
|
||||||
registerItem(RSItems.WRENCH);
|
registerItem(RSItems.WRENCH);
|
||||||
registerItem(RSItems.SECURITY_CARD);
|
registerItem(RSItems.SECURITY_CARD);
|
||||||
registerItem(RSItems.PORTABLE_GRID);
|
|
||||||
|
|
||||||
OreDictionary.registerOre("itemSilicon", RSItems.SILICON);
|
OreDictionary.registerOre("itemSilicon", RSItems.SILICON);
|
||||||
|
|
||||||
|
|||||||
@@ -118,7 +118,7 @@ public class PortableGrid implements IGrid {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void drainEnergy(int energy) {
|
public void drainEnergy(int energy) {
|
||||||
if (RS.INSTANCE.config.portableGridUsesEnergy) {
|
if (RS.INSTANCE.config.portableGridUsesEnergy && stack.getItemDamage() != ItemPortableGrid.TYPE_CREATIVE) {
|
||||||
stack.getCapability(CapabilityEnergy.ENERGY, null).extractEnergy(energy, false);
|
stack.getCapability(CapabilityEnergy.ENERGY, null).extractEnergy(energy, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user