From 7e9d7ca8f8ea926632fcdeda1b46fcc9f2ec01d1 Mon Sep 17 00:00:00 2001
From: DBotThePony <dbotthepony@yandex.ru>
Date: Wed, 8 Sep 2021 18:23:11 +0700
Subject: [PATCH] Rename IStorageObject to IStorageStack

---
 .../mc/otm/OverdriveThatMatters.java          |  5 ++-
 .../block/entity/BlockEntityDriveRack.java    |  6 ----
 .../capability/AbstractStorageGridCell.java   |  4 +--
 .../otm/capability/drive/IMatteryDrive.java   |  7 +---
 .../mc/otm/capability/drive/MatteryDrive.java | 34 +++++++++----------
 .../mc/otm/menu/ItemMonitorMenu.java          |  7 ++--
 .../mc/otm/menu/data/NetworkedItemView.java   | 14 ++++----
 .../mc/otm/storage/IStorageComponent.java     |  3 +-
 .../mc/otm/storage/IStorageConsumer.java      |  2 +-
 .../mc/otm/storage/IStorageIdentity.java      |  2 +-
 .../mc/otm/storage/IStorageListener.java      |  3 +-
 ...IStorageObject.java => IStorageStack.java} |  7 ++--
 .../mc/otm/storage/IStorageTrigger.java       |  2 +-
 .../mc/otm/storage/IStorageTuple.java         |  2 +-
 .../mc/otm/storage/IStorageView.java          |  4 +--
 ...emStackObject.java => ItemStackStack.java} | 12 +++----
 .../mc/otm/storage/StorageGrid.java           | 12 +++----
 .../mc/otm/storage/StorageObjectRegistry.java |  8 ++---
 .../mc/otm/storage/StorageObjectTuple.java    |  2 +-
 .../mc/otm/storage/StorageTuple.java          |  2 +-
 .../mc/otm/storage/VirtualComponent.java      |  8 ++---
 21 files changed, 61 insertions(+), 85 deletions(-)
 rename src/main/java/ru/dbotthepony/mc/otm/storage/{IStorageObject.java => IStorageStack.java} (94%)
 rename src/main/java/ru/dbotthepony/mc/otm/storage/{ItemStackObject.java => ItemStackStack.java} (76%)

diff --git a/src/main/java/ru/dbotthepony/mc/otm/OverdriveThatMatters.java b/src/main/java/ru/dbotthepony/mc/otm/OverdriveThatMatters.java
index e8ef8ff7c..75a7d106a 100644
--- a/src/main/java/ru/dbotthepony/mc/otm/OverdriveThatMatters.java
+++ b/src/main/java/ru/dbotthepony/mc/otm/OverdriveThatMatters.java
@@ -1,6 +1,5 @@
 package ru.dbotthepony.mc.otm;
 
-import net.minecraft.server.level.ServerLevel;
 import net.minecraft.world.item.CreativeModeTab;
 import net.minecraft.world.item.ItemStack;
 import net.minecraft.world.level.Level;
@@ -31,7 +30,7 @@ import ru.dbotthepony.mc.otm.item.ItemPortableCondensationDrive;
 import ru.dbotthepony.mc.otm.matter.MatterGrid;
 import ru.dbotthepony.mc.otm.matter.MatterRegistry;
 import ru.dbotthepony.mc.otm.network.MatteryNetworking;
-import ru.dbotthepony.mc.otm.storage.ItemStackObject;
+import ru.dbotthepony.mc.otm.storage.ItemStackStack;
 import ru.dbotthepony.mc.otm.storage.StorageObjectRegistry;
 
 import java.util.ArrayList;
@@ -168,7 +167,7 @@ public class OverdriveThatMatters {
 
 		MatterRegistry.registerInitialItems();
 
-		StorageObjectRegistry.register(ItemStackObject.class, ItemStackObject.EMPTY);
+		StorageObjectRegistry.register(ItemStackStack.class, ItemStackStack.EMPTY);
 	}
 
 	private void setupClient(final FMLClientSetupEvent event) {
diff --git a/src/main/java/ru/dbotthepony/mc/otm/block/entity/BlockEntityDriveRack.java b/src/main/java/ru/dbotthepony/mc/otm/block/entity/BlockEntityDriveRack.java
index 04fe01edf..dc7b87056 100644
--- a/src/main/java/ru/dbotthepony/mc/otm/block/entity/BlockEntityDriveRack.java
+++ b/src/main/java/ru/dbotthepony/mc/otm/block/entity/BlockEntityDriveRack.java
@@ -11,26 +11,20 @@ import net.minecraft.world.entity.player.Player;
 import net.minecraft.world.inventory.AbstractContainerMenu;
 import net.minecraft.world.item.ItemStack;
 import net.minecraft.world.level.Level;
-import net.minecraft.world.level.block.entity.BlockEntityType;
 import net.minecraft.world.level.block.state.BlockState;
 import net.minecraftforge.common.capabilities.Capability;
 import net.minecraftforge.common.util.LazyOptional;
-import ru.dbotthepony.mc.otm.OverdriveThatMatters;
 import ru.dbotthepony.mc.otm.Registry;
 import ru.dbotthepony.mc.otm.capability.AbstractStorageGridCell;
-import ru.dbotthepony.mc.otm.capability.IStorageGridCell;
 import ru.dbotthepony.mc.otm.capability.MatteryCapability;
 import ru.dbotthepony.mc.otm.capability.MatteryMachineEnergyStorage;
 import ru.dbotthepony.mc.otm.container.MatteryContainer;
 import ru.dbotthepony.mc.otm.menu.DriveRackMenu;
-import ru.dbotthepony.mc.otm.storage.IStorageIdentity;
-import ru.dbotthepony.mc.otm.storage.ItemStackObject;
 
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import javax.annotation.ParametersAreNonnullByDefault;
 import java.math.BigDecimal;
-import java.util.List;
 
 @MethodsReturnNonnullByDefault
 @ParametersAreNonnullByDefault
diff --git a/src/main/java/ru/dbotthepony/mc/otm/capability/AbstractStorageGridCell.java b/src/main/java/ru/dbotthepony/mc/otm/capability/AbstractStorageGridCell.java
index b27ba122c..e3bb4e7df 100644
--- a/src/main/java/ru/dbotthepony/mc/otm/capability/AbstractStorageGridCell.java
+++ b/src/main/java/ru/dbotthepony/mc/otm/capability/AbstractStorageGridCell.java
@@ -4,7 +4,7 @@ import net.minecraft.MethodsReturnNonnullByDefault;
 import net.minecraftforge.common.util.LazyOptional;
 import ru.dbotthepony.mc.otm.OverdriveThatMatters;
 import ru.dbotthepony.mc.otm.storage.IStorageIdentity;
-import ru.dbotthepony.mc.otm.storage.IStorageObject;
+import ru.dbotthepony.mc.otm.storage.IStorageStack;
 import ru.dbotthepony.mc.otm.storage.StorageGrid;
 
 import javax.annotation.Nullable;
@@ -26,7 +26,7 @@ public class AbstractStorageGridCell implements IStorageGridCell {
 		return Collections.unmodifiableList(components);
 	}
 
-	public <T extends IStorageObject, U extends IStorageIdentity<T>> U computeIfAbsent(Class<T> identity, Supplier<U> provider) {
+	public <T extends IStorageStack, U extends IStorageIdentity<T>> U computeIfAbsent(Class<T> identity, Supplier<U> provider) {
 		for (var component : components) {
 			if (component.storageIdentity() == identity) {
 				return (U) component;
diff --git a/src/main/java/ru/dbotthepony/mc/otm/capability/drive/IMatteryDrive.java b/src/main/java/ru/dbotthepony/mc/otm/capability/drive/IMatteryDrive.java
index c793d42af..aef1b6baa 100644
--- a/src/main/java/ru/dbotthepony/mc/otm/capability/drive/IMatteryDrive.java
+++ b/src/main/java/ru/dbotthepony/mc/otm/capability/drive/IMatteryDrive.java
@@ -4,20 +4,15 @@ import net.minecraft.MethodsReturnNonnullByDefault;
 import net.minecraft.nbt.CompoundTag;
 import net.minecraft.world.item.Item;
 import net.minecraft.world.item.ItemStack;
-import net.minecraftforge.common.util.INBTSerializable;
-import ru.dbotthepony.mc.otm.menu.DriveViewerMenu;
 import ru.dbotthepony.mc.otm.storage.*;
 
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
 import javax.annotation.ParametersAreNonnullByDefault;
 import java.util.List;
 import java.util.UUID;
-import java.util.function.Predicate;
 
 @ParametersAreNonnullByDefault
 @MethodsReturnNonnullByDefault
-public interface IMatteryDrive extends IStorageComponent<ItemStackObject> {
+public interface IMatteryDrive extends IStorageComponent<ItemStackStack> {
 	record StoredStack(ItemStack stack, UUID id) {};
 
 	List<StoredStack> getItems();
diff --git a/src/main/java/ru/dbotthepony/mc/otm/capability/drive/MatteryDrive.java b/src/main/java/ru/dbotthepony/mc/otm/capability/drive/MatteryDrive.java
index 4eb9012a0..b093f70d9 100644
--- a/src/main/java/ru/dbotthepony/mc/otm/capability/drive/MatteryDrive.java
+++ b/src/main/java/ru/dbotthepony/mc/otm/capability/drive/MatteryDrive.java
@@ -9,14 +9,12 @@ import net.minecraft.world.item.Item;
 import net.minecraft.world.item.ItemStack;
 import net.minecraft.world.item.Items;
 import net.minecraftforge.registries.RegistryManager;
-import ru.dbotthepony.mc.otm.OverdriveThatMatters;
 import ru.dbotthepony.mc.otm.storage.IStorageListener;
 import ru.dbotthepony.mc.otm.storage.IStorageTuple;
-import ru.dbotthepony.mc.otm.storage.ItemStackObject;
+import ru.dbotthepony.mc.otm.storage.ItemStackStack;
 import ru.dbotthepony.mc.otm.storage.StorageTuple;
 
 import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
 import javax.annotation.ParametersAreNonnullByDefault;
 import java.math.BigDecimal;
 import java.util.*;
@@ -175,7 +173,7 @@ public class MatteryDrive implements IMatteryDrive {
 			items_by_id.put(state.id(), state);
 
 			for (var listener : listeners2) {
-				listener.addObject(new ItemStackObject(state.stack()), state.id(), this);
+				listener.addObject(new ItemStackStack(state.stack()), state.id(), this);
 			}
 
 			markDirty();
@@ -187,9 +185,9 @@ public class MatteryDrive implements IMatteryDrive {
 	}
 
 	@Override
-	public ItemStackObject insertObject(ItemStackObject obj, boolean simulate) {
+	public ItemStackStack insertObject(ItemStackStack obj, boolean simulate) {
 		var get = insertItem(obj.stack(), simulate);
-		return get.isEmpty() ? ItemStackObject.EMPTY : new ItemStackObject(get);
+		return get.isEmpty() ? ItemStackStack.EMPTY : new ItemStackStack(get);
 	}
 
 	@Nonnull
@@ -324,49 +322,49 @@ public class MatteryDrive implements IMatteryDrive {
 	}
 
 	@Override
-	public Class<ItemStackObject> storageIdentity() {
-		return ItemStackObject.class;
+	public Class<ItemStackStack> storageIdentity() {
+		return ItemStackStack.class;
 	}
 
 	@Override
-	public ItemStackObject getStoredObject(UUID id) {
+	public ItemStackStack getStoredObject(UUID id) {
 		var get = getItem(id);
-		return get.isEmpty() ? ItemStackObject.EMPTY : new ItemStackObject(get);
+		return get.isEmpty() ? ItemStackStack.EMPTY : new ItemStackStack(get);
 	}
 
 	@Override
-	public ItemStackObject extractObject(UUID id, BigDecimal amount, boolean simulate) {
+	public ItemStackStack extractObject(UUID id, BigDecimal amount, boolean simulate) {
 		var get = extractItem(id, amount.intValue(), simulate);
-		return get.isEmpty() ? ItemStackObject.EMPTY : new ItemStackObject(get);
+		return get.isEmpty() ? ItemStackStack.EMPTY : new ItemStackStack(get);
 	}
 
 	@Override
-	public List<IStorageTuple<ItemStackObject>> getStorageObjects() {
+	public List<IStorageTuple<ItemStackStack>> getStorageObjects() {
 		int amount = 0;
 
 		for (var listing : items.values())
 			amount += listing.size();
 
-		var list = new ArrayList<IStorageTuple<ItemStackObject>>(amount);
+		var list = new ArrayList<IStorageTuple<ItemStackStack>>(amount);
 
 		for (var listing : items.values()) {
 			for (var stack : listing) {
-				list.add(new StorageTuple<>(stack.id(), new ItemStackObject(stack.stack())));
+				list.add(new StorageTuple<>(stack.id(), new ItemStackStack(stack.stack())));
 			}
 		}
 
 		return list;
 	}
 
-	protected final HashSet<IStorageListener<ItemStackObject>> listeners2 = new HashSet<>();
+	protected final HashSet<IStorageListener<ItemStackStack>> listeners2 = new HashSet<>();
 
 	@Override
-	public boolean addListener(IStorageListener<ItemStackObject> listener) {
+	public boolean addListener(IStorageListener<ItemStackStack> listener) {
 		return listeners2.add(listener);
 	}
 
 	@Override
-	public boolean removeListener(IStorageListener<ItemStackObject> listener) {
+	public boolean removeListener(IStorageListener<ItemStackStack> listener) {
 		return listeners2.remove(listener);
 	}
 }
diff --git a/src/main/java/ru/dbotthepony/mc/otm/menu/ItemMonitorMenu.java b/src/main/java/ru/dbotthepony/mc/otm/menu/ItemMonitorMenu.java
index 06ac80bd7..8492d01fa 100644
--- a/src/main/java/ru/dbotthepony/mc/otm/menu/ItemMonitorMenu.java
+++ b/src/main/java/ru/dbotthepony/mc/otm/menu/ItemMonitorMenu.java
@@ -1,14 +1,11 @@
 package ru.dbotthepony.mc.otm.menu;
 
 import net.minecraft.world.entity.player.Inventory;
-import ru.dbotthepony.mc.otm.OverdriveThatMatters;
 import ru.dbotthepony.mc.otm.Registry;
-import ru.dbotthepony.mc.otm.block.entity.BlockEntityDriveRack;
 import ru.dbotthepony.mc.otm.block.entity.BlockEntityItemMonitor;
 import ru.dbotthepony.mc.otm.menu.data.INetworkedItemViewSupplier;
-import ru.dbotthepony.mc.otm.menu.data.InteractPacket;
 import ru.dbotthepony.mc.otm.menu.data.NetworkedItemView;
-import ru.dbotthepony.mc.otm.storage.ItemStackObject;
+import ru.dbotthepony.mc.otm.storage.ItemStackStack;
 
 import javax.annotation.Nonnull;
 
@@ -31,7 +28,7 @@ public class ItemMonitorMenu extends PoweredMatteryMenu implements INetworkedIte
 		view = new NetworkedItemView(inventory.player, this, tile == null);
 
 		if (tile != null) {
-			view.setComponent(tile.cell.getStorageGrid().getVirtualComponent(ItemStackObject.class));
+			view.setComponent(tile.cell.getStorageGrid().getVirtualComponent(ItemStackStack.class));
 		}
 
 		addBatterySlot();
diff --git a/src/main/java/ru/dbotthepony/mc/otm/menu/data/NetworkedItemView.java b/src/main/java/ru/dbotthepony/mc/otm/menu/data/NetworkedItemView.java
index 6d8047ccf..a46607c5a 100644
--- a/src/main/java/ru/dbotthepony/mc/otm/menu/data/NetworkedItemView.java
+++ b/src/main/java/ru/dbotthepony/mc/otm/menu/data/NetworkedItemView.java
@@ -29,7 +29,7 @@ import static net.minecraft.client.gui.screens.Screen.hasShiftDown;
 
 @MethodsReturnNonnullByDefault
 @ParametersAreNonnullByDefault
-public class NetworkedItemView implements IStorageListener<ItemStackObject> {
+public class NetworkedItemView implements IStorageListener<ItemStackStack> {
 	public final boolean remote;
 	public final MatteryMenu menu;
 	public final Player ply;
@@ -47,7 +47,7 @@ public class NetworkedItemView implements IStorageListener<ItemStackObject> {
 
 	private List<NetworkedItem> view_cache;
 
-	protected IStorageComponent<ItemStackObject> provider;
+	protected IStorageComponent<ItemStackStack> provider;
 
 	public NetworkedItemView(Player ply, MatteryMenu menu, boolean remote) {
 		this.remote = remote;
@@ -63,7 +63,7 @@ public class NetworkedItemView implements IStorageListener<ItemStackObject> {
 		MatteryNetworking.send(null, new InteractPacket(menu.containerId, index >= list.size() ? -1 : list.get(index).id(), type, action));
 	}
 
-	public void setComponent(@Nullable IStorageComponent<ItemStackObject> provider) {
+	public void setComponent(@Nullable IStorageComponent<ItemStackStack> provider) {
 		if (provider == this.provider)
 			return;
 
@@ -94,7 +94,7 @@ public class NetworkedItemView implements IStorageListener<ItemStackObject> {
 	}
 
 	@Override
-	public void addObject(ItemStackObject stack, UUID id, IStorageView<ItemStackObject> provider) {
+	public void addObject(ItemStackStack stack, UUID id, IStorageView<ItemStackStack> provider) {
 		addObject(stack.stack(), id);
 	}
 
@@ -238,7 +238,7 @@ public class NetworkedItemView implements IStorageListener<ItemStackObject> {
 				int amount = calculateIOAmount(carried.getCount());
 
 				if (amount == carried.getCount()) {
-					var leftover = provider.insertObject(new ItemStackObject(menu.getCarried()), false);
+					var leftover = provider.insertObject(new ItemStackStack(menu.getCarried()), false);
 					menu.setCarried(leftover.stack());
 					doneIOAmount(amount - leftover.stack().getCount());
 
@@ -248,7 +248,7 @@ public class NetworkedItemView implements IStorageListener<ItemStackObject> {
 					var copy = carried.copy();
 					copy.setCount(amount);
 
-					var leftover = provider.insertObject(new ItemStackObject(copy), false);
+					var leftover = provider.insertObject(new ItemStackStack(copy), false);
 					doneIOAmount(amount - leftover.stack().getCount());
 
 					leftover.setCount(carried.getCount() - amount + leftover.getCountInt());
@@ -261,7 +261,7 @@ public class NetworkedItemView implements IStorageListener<ItemStackObject> {
 				var copy = menu.getCarried().copy();
 				copy.setCount(1);
 
-				if (calculateIOAmount(1) == 1 && provider.insertObject(new ItemStackObject(copy), false).isEmpty()) {
+				if (calculateIOAmount(1) == 1 && provider.insertObject(new ItemStackStack(copy), false).isEmpty()) {
 					menu.getCarried().shrink(1);
 					doneIOAmount(1);
 					MatteryNetworking.send((ServerPlayer) ply, new SetCarriedPacket(menu.getCarried()));
diff --git a/src/main/java/ru/dbotthepony/mc/otm/storage/IStorageComponent.java b/src/main/java/ru/dbotthepony/mc/otm/storage/IStorageComponent.java
index 92bf12656..282876316 100644
--- a/src/main/java/ru/dbotthepony/mc/otm/storage/IStorageComponent.java
+++ b/src/main/java/ru/dbotthepony/mc/otm/storage/IStorageComponent.java
@@ -3,10 +3,9 @@ package ru.dbotthepony.mc.otm.storage;
 import net.minecraft.MethodsReturnNonnullByDefault;
 
 import javax.annotation.ParametersAreNonnullByDefault;
-import java.util.List;
 
 @MethodsReturnNonnullByDefault
 @ParametersAreNonnullByDefault
-public interface IStorageComponent<T extends IStorageObject> extends IStorageView<T>, IStorageConsumer<T> {
+public interface IStorageComponent<T extends IStorageStack> extends IStorageView<T>, IStorageConsumer<T> {
 
 }
diff --git a/src/main/java/ru/dbotthepony/mc/otm/storage/IStorageConsumer.java b/src/main/java/ru/dbotthepony/mc/otm/storage/IStorageConsumer.java
index 7f3d71316..6f9cc0a1c 100644
--- a/src/main/java/ru/dbotthepony/mc/otm/storage/IStorageConsumer.java
+++ b/src/main/java/ru/dbotthepony/mc/otm/storage/IStorageConsumer.java
@@ -6,6 +6,6 @@ import javax.annotation.ParametersAreNonnullByDefault;
 
 @MethodsReturnNonnullByDefault
 @ParametersAreNonnullByDefault
-public interface IStorageConsumer<T extends IStorageObject> extends IStorageIdentity<T> {
+public interface IStorageConsumer<T extends IStorageStack> extends IStorageIdentity<T> {
 	T insertObject(T obj, boolean simulate);
 }
diff --git a/src/main/java/ru/dbotthepony/mc/otm/storage/IStorageIdentity.java b/src/main/java/ru/dbotthepony/mc/otm/storage/IStorageIdentity.java
index b70efca84..bf40c902e 100644
--- a/src/main/java/ru/dbotthepony/mc/otm/storage/IStorageIdentity.java
+++ b/src/main/java/ru/dbotthepony/mc/otm/storage/IStorageIdentity.java
@@ -6,6 +6,6 @@ import javax.annotation.ParametersAreNonnullByDefault;
 
 @MethodsReturnNonnullByDefault
 @ParametersAreNonnullByDefault
-public interface IStorageIdentity<T extends IStorageObject> {
+public interface IStorageIdentity<T extends IStorageStack> {
 	Class<T> storageIdentity();
 }
diff --git a/src/main/java/ru/dbotthepony/mc/otm/storage/IStorageListener.java b/src/main/java/ru/dbotthepony/mc/otm/storage/IStorageListener.java
index 682b1b76d..d821280d6 100644
--- a/src/main/java/ru/dbotthepony/mc/otm/storage/IStorageListener.java
+++ b/src/main/java/ru/dbotthepony/mc/otm/storage/IStorageListener.java
@@ -1,7 +1,6 @@
 package ru.dbotthepony.mc.otm.storage;
 
 import net.minecraft.MethodsReturnNonnullByDefault;
-import net.minecraft.world.item.ItemStack;
 
 import javax.annotation.ParametersAreNonnullByDefault;
 import java.math.BigDecimal;
@@ -9,7 +8,7 @@ import java.util.UUID;
 
 @MethodsReturnNonnullByDefault
 @ParametersAreNonnullByDefault
-public interface IStorageListener<T extends IStorageObject> {
+public interface IStorageListener<T extends IStorageStack> {
 	void addObject(T stack, UUID id, IStorageView<T> provider);
 	void changeObject(UUID id, BigDecimal new_count);
 	void removeObject(UUID id);
diff --git a/src/main/java/ru/dbotthepony/mc/otm/storage/IStorageObject.java b/src/main/java/ru/dbotthepony/mc/otm/storage/IStorageStack.java
similarity index 94%
rename from src/main/java/ru/dbotthepony/mc/otm/storage/IStorageObject.java
rename to src/main/java/ru/dbotthepony/mc/otm/storage/IStorageStack.java
index bab226d51..1ca8144c8 100644
--- a/src/main/java/ru/dbotthepony/mc/otm/storage/IStorageObject.java
+++ b/src/main/java/ru/dbotthepony/mc/otm/storage/IStorageStack.java
@@ -2,7 +2,6 @@ package ru.dbotthepony.mc.otm.storage;
 
 import net.minecraft.MethodsReturnNonnullByDefault;
 
-import javax.annotation.Nullable;
 import javax.annotation.ParametersAreNonnullByDefault;
 import java.math.BigDecimal;
 import java.util.Optional;
@@ -16,8 +15,8 @@ import java.util.Optional;
  */
 @MethodsReturnNonnullByDefault
 @ParametersAreNonnullByDefault
-public interface IStorageObject {
-	IStorageObject copy();
+public interface IStorageStack {
+	IStorageStack copy();
 
 	void setCount(BigDecimal value);
 	BigDecimal getCount();
@@ -53,7 +52,7 @@ public interface IStorageObject {
 	 *         this include tags, mapping IDs, capabilities, excluding amount;
 	 *         behavior is pretty much the same as ItemStack.isSameItemSameTags
 	 */
-	boolean sameItem(IStorageObject other);
+	boolean sameItem(IStorageStack other);
 
 	default void grow(BigDecimal amount) {
 		setCount(getCount().add(amount));
diff --git a/src/main/java/ru/dbotthepony/mc/otm/storage/IStorageTrigger.java b/src/main/java/ru/dbotthepony/mc/otm/storage/IStorageTrigger.java
index 9bd04557c..de79c8931 100644
--- a/src/main/java/ru/dbotthepony/mc/otm/storage/IStorageTrigger.java
+++ b/src/main/java/ru/dbotthepony/mc/otm/storage/IStorageTrigger.java
@@ -6,7 +6,7 @@ import javax.annotation.ParametersAreNonnullByDefault;
 
 @MethodsReturnNonnullByDefault
 @ParametersAreNonnullByDefault
-public interface IStorageTrigger<T extends IStorageObject> extends IStorageIdentity<T> {
+public interface IStorageTrigger<T extends IStorageStack> extends IStorageIdentity<T> {
 	boolean addListener(IStorageListener<T> listener);
 	boolean removeListener(IStorageListener<T> listener);
 }
diff --git a/src/main/java/ru/dbotthepony/mc/otm/storage/IStorageTuple.java b/src/main/java/ru/dbotthepony/mc/otm/storage/IStorageTuple.java
index b37e03178..2438a5041 100644
--- a/src/main/java/ru/dbotthepony/mc/otm/storage/IStorageTuple.java
+++ b/src/main/java/ru/dbotthepony/mc/otm/storage/IStorageTuple.java
@@ -2,7 +2,7 @@ package ru.dbotthepony.mc.otm.storage;
 
 import java.util.UUID;
 
-public interface IStorageTuple<T extends IStorageObject> {
+public interface IStorageTuple<T extends IStorageStack> {
 	UUID id();
 	T object();
 }
diff --git a/src/main/java/ru/dbotthepony/mc/otm/storage/IStorageView.java b/src/main/java/ru/dbotthepony/mc/otm/storage/IStorageView.java
index ea1d2cc47..fa35b368c 100644
--- a/src/main/java/ru/dbotthepony/mc/otm/storage/IStorageView.java
+++ b/src/main/java/ru/dbotthepony/mc/otm/storage/IStorageView.java
@@ -3,16 +3,14 @@ package ru.dbotthepony.mc.otm.storage;
 
 import net.minecraft.MethodsReturnNonnullByDefault;
 
-import javax.annotation.Nullable;
 import javax.annotation.ParametersAreNonnullByDefault;
 import java.math.BigDecimal;
 import java.util.List;
-import java.util.Optional;
 import java.util.UUID;
 
 @MethodsReturnNonnullByDefault
 @ParametersAreNonnullByDefault
-public interface IStorageView<T extends IStorageObject> extends IStorageTrigger<T> {
+public interface IStorageView<T extends IStorageStack> extends IStorageTrigger<T> {
 	/**
 	 * @param id identifier of object
 	 * @return stored object (not a copy). Do not edit it.
diff --git a/src/main/java/ru/dbotthepony/mc/otm/storage/ItemStackObject.java b/src/main/java/ru/dbotthepony/mc/otm/storage/ItemStackStack.java
similarity index 76%
rename from src/main/java/ru/dbotthepony/mc/otm/storage/ItemStackObject.java
rename to src/main/java/ru/dbotthepony/mc/otm/storage/ItemStackStack.java
index abcf8cdba..e44218509 100644
--- a/src/main/java/ru/dbotthepony/mc/otm/storage/ItemStackObject.java
+++ b/src/main/java/ru/dbotthepony/mc/otm/storage/ItemStackStack.java
@@ -9,12 +9,12 @@ import java.util.Optional;
 
 @MethodsReturnNonnullByDefault
 @ParametersAreNonnullByDefault
-public record ItemStackObject(ItemStack stack) implements IStorageObject {
-	public static final ItemStackObject EMPTY = new ItemStackObject(ItemStack.EMPTY);
+public record ItemStackStack(ItemStack stack) implements IStorageStack {
+	public static final ItemStackStack EMPTY = new ItemStackStack(ItemStack.EMPTY);
 
 	@Override
-	public IStorageObject copy() {
-		return new ItemStackObject(stack.copy());
+	public IStorageStack copy() {
+		return new ItemStackStack(stack.copy());
 	}
 
 	@Override
@@ -51,11 +51,11 @@ public record ItemStackObject(ItemStack stack) implements IStorageObject {
 	}
 
 	@Override
-	public boolean sameItem(IStorageObject other) {
+	public boolean sameItem(IStorageStack other) {
 		if (other == this)
 			return true;
 
-		if (other instanceof ItemStackObject obj)
+		if (other instanceof ItemStackStack obj)
 			return ItemStack.isSameItemSameTags(stack, obj.stack);
 
 		return false;
diff --git a/src/main/java/ru/dbotthepony/mc/otm/storage/StorageGrid.java b/src/main/java/ru/dbotthepony/mc/otm/storage/StorageGrid.java
index 3ab8719bc..45880dd5a 100644
--- a/src/main/java/ru/dbotthepony/mc/otm/storage/StorageGrid.java
+++ b/src/main/java/ru/dbotthepony/mc/otm/storage/StorageGrid.java
@@ -7,9 +7,7 @@ import net.minecraftforge.common.util.LazyOptional;
 import ru.dbotthepony.mc.otm.OverdriveThatMatters;
 import ru.dbotthepony.mc.otm.capability.IStorageGridCell;
 
-import javax.annotation.Nullable;
 import javax.annotation.ParametersAreNonnullByDefault;
-import java.math.BigDecimal;
 import java.util.*;
 
 @MethodsReturnNonnullByDefault
@@ -17,11 +15,11 @@ import java.util.*;
 public class StorageGrid {
 	private final HashSet<IStorageGridCell> cells = new HashSet<>();
 
-	private final HashMap<Class<? extends IStorageObject>, VirtualComponent<? extends IStorageObject>> virtual_components = new HashMap<>();
+	private final HashMap<Class<? extends IStorageStack>, VirtualComponent<? extends IStorageStack>> virtual_components = new HashMap<>();
 
 	public StorageGrid() {}
 
-	public <T extends IStorageObject> T insertObject(Class<T> type, T object, boolean simulate) {
+	public <T extends IStorageStack> T insertObject(Class<T> type, T object, boolean simulate) {
 		return getVirtualComponent(type).insertObject(object, simulate);
 	}
 
@@ -31,7 +29,7 @@ public class StorageGrid {
 	 * @return a virtual IStorageComponent<T>, or null if storage grid contain no view for provided type
 	 */
 	@SuppressWarnings("unchecked")
-	public <T extends IStorageObject> VirtualComponent<T> getVirtualComponent(final Class<T> type) {
+	public <T extends IStorageStack> VirtualComponent<T> getVirtualComponent(final Class<T> type) {
 		return (VirtualComponent<T>) virtual_components.computeIfAbsent(type, (k) -> new VirtualComponent<>(type));
 	}
 
@@ -39,7 +37,7 @@ public class StorageGrid {
 		return cells.size();
 	}
 
-	public <T extends IStorageObject> void add(IStorageIdentity<T> identity) {
+	public <T extends IStorageStack> void add(IStorageIdentity<T> identity) {
 		getVirtualComponent(identity.storageIdentity()).add(identity);
 	}
 
@@ -75,7 +73,7 @@ public class StorageGrid {
 		return false;
 	}
 
-	public <T extends IStorageObject> void remove(IStorageIdentity<T> identity) {
+	public <T extends IStorageStack> void remove(IStorageIdentity<T> identity) {
 		getVirtualComponent(identity.storageIdentity()).remove(identity);
 	}
 
diff --git a/src/main/java/ru/dbotthepony/mc/otm/storage/StorageObjectRegistry.java b/src/main/java/ru/dbotthepony/mc/otm/storage/StorageObjectRegistry.java
index fe2d6deaa..044e09cf5 100644
--- a/src/main/java/ru/dbotthepony/mc/otm/storage/StorageObjectRegistry.java
+++ b/src/main/java/ru/dbotthepony/mc/otm/storage/StorageObjectRegistry.java
@@ -4,9 +4,9 @@ import java.util.HashMap;
 import java.util.Objects;
 
 public class StorageObjectRegistry {
-	private static final HashMap<Class<? extends IStorageObject>, StorageObjectTuple<? extends IStorageObject>> REGISTRY = new HashMap<>();
+	private static final HashMap<Class<? extends IStorageStack>, StorageObjectTuple<? extends IStorageStack>> REGISTRY = new HashMap<>();
 
-	public static <T extends IStorageObject> boolean register(Class<T> identity, T empty) {
+	public static <T extends IStorageStack> boolean register(Class<T> identity, T empty) {
 		final var tuple = new StorageObjectTuple<>(identity, empty);
 		final boolean removed = REGISTRY.remove(identity) != null;
 		REGISTRY.put(identity, tuple);
@@ -15,11 +15,11 @@ public class StorageObjectRegistry {
 	}
 
 	@SuppressWarnings("unchecked")
-	public static <T extends IStorageObject> StorageObjectTuple<T> get(Class<T> identity) {
+	public static <T extends IStorageStack> StorageObjectTuple<T> get(Class<T> identity) {
 		return (StorageObjectTuple<T>) REGISTRY.get(identity);
 	}
 
-	public static <T extends IStorageObject> StorageObjectTuple<T> getOrError(Class<T> identity) {
+	public static <T extends IStorageStack> StorageObjectTuple<T> getOrError(Class<T> identity) {
 		return Objects.requireNonNull(get(identity), "No storage mapping present for " + identity.toString());
 	}
 }
diff --git a/src/main/java/ru/dbotthepony/mc/otm/storage/StorageObjectTuple.java b/src/main/java/ru/dbotthepony/mc/otm/storage/StorageObjectTuple.java
index c4d0d81da..81ef55251 100644
--- a/src/main/java/ru/dbotthepony/mc/otm/storage/StorageObjectTuple.java
+++ b/src/main/java/ru/dbotthepony/mc/otm/storage/StorageObjectTuple.java
@@ -1,6 +1,6 @@
 package ru.dbotthepony.mc.otm.storage;
 
-public record StorageObjectTuple<T extends IStorageObject>(Class<T> identity, T empty) {
+public record StorageObjectTuple<T extends IStorageStack>(Class<T> identity, T empty) {
 	@Override
 	public boolean equals(Object obj) {
 		if (obj instanceof StorageObjectTuple tuple)
diff --git a/src/main/java/ru/dbotthepony/mc/otm/storage/StorageTuple.java b/src/main/java/ru/dbotthepony/mc/otm/storage/StorageTuple.java
index f7859c475..b5835df56 100644
--- a/src/main/java/ru/dbotthepony/mc/otm/storage/StorageTuple.java
+++ b/src/main/java/ru/dbotthepony/mc/otm/storage/StorageTuple.java
@@ -2,5 +2,5 @@ package ru.dbotthepony.mc.otm.storage;
 
 import java.util.UUID;
 
-public record StorageTuple<T extends IStorageObject>(UUID id, T object) implements IStorageTuple<T> {
+public record StorageTuple<T extends IStorageStack>(UUID id, T object) implements IStorageTuple<T> {
 }
diff --git a/src/main/java/ru/dbotthepony/mc/otm/storage/VirtualComponent.java b/src/main/java/ru/dbotthepony/mc/otm/storage/VirtualComponent.java
index 2f257a65e..92f5a1380 100644
--- a/src/main/java/ru/dbotthepony/mc/otm/storage/VirtualComponent.java
+++ b/src/main/java/ru/dbotthepony/mc/otm/storage/VirtualComponent.java
@@ -12,8 +12,8 @@ import java.util.function.Supplier;
 
 @MethodsReturnNonnullByDefault
 @ParametersAreNonnullByDefault
-public class VirtualComponent<T extends IStorageObject> implements IStorageComponent<T>, IStorageListener<T> {
-	public record LocalTuple<T extends IStorageObject>(T object, UUID id, List<RemoteTuple<T>> tuples) implements IStorageTuple<T> {
+public class VirtualComponent<T extends IStorageStack> implements IStorageComponent<T>, IStorageListener<T> {
+	public record LocalTuple<T extends IStorageStack>(T object, UUID id, List<RemoteTuple<T>> tuples) implements IStorageTuple<T> {
 		@Override
 		public boolean equals(Object obj) {
 			return obj instanceof LocalTuple tuple && tuple.id.equals(id) || obj instanceof UUID id && this.id.equals(id);
@@ -25,7 +25,7 @@ public class VirtualComponent<T extends IStorageObject> implements IStorageCompo
 		}
 	}
 
-	public record RemoteTuple<T extends IStorageObject>(T object, UUID remote_id, IStorageView<T> provider, LocalTuple<T> local) {
+	public record RemoteTuple<T extends IStorageStack>(T object, UUID remote_id, IStorageView<T> provider, LocalTuple<T> local) {
 		public T extract(BigDecimal amount, boolean simulate) {
 			return provider.extractObject(remote_id, amount, simulate);
 		}
@@ -56,7 +56,7 @@ public class VirtualComponent<T extends IStorageObject> implements IStorageCompo
 		this.identity = StorageObjectRegistry.getOrError(identity);
 	}
 
-	public static <T extends IStorageObject> Supplier<VirtualComponent<T>> factory(Class<T> identity) {
+	public static <T extends IStorageStack> Supplier<VirtualComponent<T>> factory(Class<T> identity) {
 		return () -> new VirtualComponent<>(identity);
 	}