From 160ae47bf534a0f86e4859fe1f8415eaed8a8ed4 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Thu, 2 Dec 2021 16:12:53 -0500 Subject: [PATCH] Correct wrong item list usage --- .../v1_17_R1/SpecialPlayerInventory.java | 27 +++++++++++++++++-- .../v1_18_R1/SpecialPlayerInventory.java | 27 +++++++++++++++++-- 2 files changed, 50 insertions(+), 4 deletions(-) diff --git a/internal/v1_17_R1/src/main/java/com/lishid/openinv/internal/v1_17_R1/SpecialPlayerInventory.java b/internal/v1_17_R1/src/main/java/com/lishid/openinv/internal/v1_17_R1/SpecialPlayerInventory.java index 8b2f24a..3fc5c02 100644 --- a/internal/v1_17_R1/src/main/java/com/lishid/openinv/internal/v1_17_R1/SpecialPlayerInventory.java +++ b/internal/v1_17_R1/src/main/java/com/lishid/openinv/internal/v1_17_R1/SpecialPlayerInventory.java @@ -19,6 +19,7 @@ package com.lishid.openinv.internal.v1_17_R1; import com.google.common.collect.ImmutableList; import com.lishid.openinv.internal.ISpecialPlayerInventory; import java.util.Collection; +import java.util.Iterator; import java.util.List; import java.util.function.Function; import java.util.function.Predicate; @@ -113,11 +114,33 @@ public class SpecialPlayerInventory extends Inventory implements ISpecialPlayerI } private @NotNull ItemStack getRawItem(int i) { - return super.getItem(i); + if (i < 0) { + return ItemStack.EMPTY; + } + + NonNullList list; + for (Iterator> iterator = this.compartments.iterator(); iterator.hasNext(); i -= list.size()) { + list = iterator.next(); + if (i < list.size()) { + return list.get(i); + } + } + + return ItemStack.EMPTY; } private void setRawItem(int i, @NotNull ItemStack itemStack) { - super.setItem(i, itemStack); + if (i < 0) { + return; + } + + NonNullList list; + for (Iterator> iterator = this.compartments.iterator(); iterator.hasNext(); i -= list.size()) { + list = iterator.next(); + if (i < list.size()) { + list.set(i, itemStack); + } + } } private static record IndexedCompartment(@Nullable NonNullList compartment, int index) {} diff --git a/internal/v1_18_R1/src/main/java/com/lishid/openinv/internal/v1_18_R1/SpecialPlayerInventory.java b/internal/v1_18_R1/src/main/java/com/lishid/openinv/internal/v1_18_R1/SpecialPlayerInventory.java index ffb96d3..9324231 100644 --- a/internal/v1_18_R1/src/main/java/com/lishid/openinv/internal/v1_18_R1/SpecialPlayerInventory.java +++ b/internal/v1_18_R1/src/main/java/com/lishid/openinv/internal/v1_18_R1/SpecialPlayerInventory.java @@ -19,6 +19,7 @@ package com.lishid.openinv.internal.v1_18_R1; import com.google.common.collect.ImmutableList; import com.lishid.openinv.internal.ISpecialPlayerInventory; import java.util.Collection; +import java.util.Iterator; import java.util.List; import java.util.function.Function; import java.util.function.Predicate; @@ -113,11 +114,33 @@ public class SpecialPlayerInventory extends Inventory implements ISpecialPlayerI } private @NotNull ItemStack getRawItem(int i) { - return super.getItem(i); + if (i < 0) { + return ItemStack.EMPTY; + } + + NonNullList list; + for (Iterator> iterator = this.compartments.iterator(); iterator.hasNext(); i -= list.size()) { + list = iterator.next(); + if (i < list.size()) { + return list.get(i); + } + } + + return ItemStack.EMPTY; } private void setRawItem(int i, @NotNull ItemStack itemStack) { - super.setItem(i, itemStack); + if (i < 0) { + return; + } + + NonNullList list; + for (Iterator> iterator = this.compartments.iterator(); iterator.hasNext(); i -= list.size()) { + list = iterator.next(); + if (i < list.size()) { + list.set(i, itemStack); + } + } } private static record IndexedCompartment(@Nullable NonNullList compartment, int index) {}