Skip to content

Commit 1a65949

Browse files
committed
For MC versions 1.20 and later; replace explicit usages of NonNullList<ItemStack> by List<ItemStack> for compatibility with UniverseSpigot.
1 parent d73923a commit 1a65949

File tree

29 files changed

+87
-84
lines changed

29 files changed

+87
-84
lines changed

InvSee++_Platforms/Impl_1_20_1_R1/src/main/java/com/janboerman/invsee/spigot/impl_1_20_1_R1/EnderNmsInventory.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import com.janboerman.invsee.spigot.api.target.Target;
55
import com.janboerman.invsee.spigot.api.template.EnderChestSlot;
66
import com.janboerman.invsee.spigot.internal.inventory.AbstractNmsInventory;
7-
import net.minecraft.core.NonNullList;
7+
88
import net.minecraft.network.chat.Component;
99
import net.minecraft.world.Container;
1010
import net.minecraft.world.ContainerHelper;
@@ -21,9 +21,9 @@
2121

2222
class EnderNmsInventory extends AbstractNmsInventory<EnderChestSlot, EnderBukkitInventory, EnderNmsInventory> implements Container, MenuProvider {
2323

24-
protected NonNullList<ItemStack> storageContents;
24+
protected /*NonNull*/List<ItemStack> storageContents;
2525

26-
EnderNmsInventory(UUID targetPlayerUuid, String targetPlayerName, NonNullList<ItemStack> storageContents, CreationOptions<EnderChestSlot> creationOptions) {
26+
EnderNmsInventory(UUID targetPlayerUuid, String targetPlayerName, /*NonNull*/List<ItemStack> storageContents, CreationOptions<EnderChestSlot> creationOptions) {
2727
super(targetPlayerUuid, targetPlayerName, creationOptions);
2828
this.storageContents = storageContents;
2929
}

InvSee++_Platforms/Impl_1_20_1_R1/src/main/java/com/janboerman/invsee/spigot/impl_1_20_1_R1/HybridServerSupport.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.janboerman.invsee.spigot.impl_1_20_1_R1;
22

33
import com.janboerman.invsee.utils.FuzzyReflection;
4-
import net.minecraft.core.NonNullList;
54
import net.minecraft.server.level.ServerPlayer;
65
import net.minecraft.world.inventory.PlayerEnderChestContainer;
76
import net.minecraft.world.item.ItemStack;
@@ -14,6 +13,7 @@
1413
import java.lang.reflect.Field;
1514
import java.lang.reflect.InvocationTargetException;
1615
import java.lang.reflect.Method;
16+
import java.util.List;
1717

1818
public class HybridServerSupport {
1919

@@ -62,14 +62,15 @@ public static int nextContainerCounter(ServerPlayer nmsPlayer) {
6262
}
6363
}
6464

65-
public static NonNullList<ItemStack> enderChestItems(PlayerEnderChestContainer enderChest) {
65+
// return List<ItemStack> instead of NonNullList<ItemStack> to ensure compatibility with UniverseSpigot
66+
public static List<ItemStack> enderChestItems(PlayerEnderChestContainer enderChest) {
6667
try {
6768
return enderChest.items;
6869
} catch (NoSuchFieldError | IllegalAccessError vanillaFieldIsActuallyPrivate) {
6970
try {
7071
//call the forge method: getContents()Ljava/util/List<net/minecraft/world/item/ItemStack>;
7172
//fortunately CraftBukkit contains this method as well, so we can just call it directly without reflection! :D
72-
return (NonNullList<ItemStack>) enderChest.getContents();
73+
return enderChest.getContents();
7374
} catch (Throwable forgeMethodNotFound) {
7475
RuntimeException ex = new RuntimeException("No method known of getting the enderchest items");
7576
ex.addSuppressed(vanillaFieldIsActuallyPrivate);

InvSee++_Platforms/Impl_1_20_1_R1/src/main/java/com/janboerman/invsee/spigot/impl_1_20_1_R1/MainNmsInventory.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@
2222

2323
class MainNmsInventory extends AbstractNmsInventory<PlayerInventorySlot, MainBukkitInventory, MainNmsInventory> implements Container, MenuProvider {
2424

25-
protected NonNullList<ItemStack> storageContents;
26-
protected NonNullList<ItemStack> armourContents;
27-
protected NonNullList<ItemStack> offHand;
25+
protected /*NonNull*/List<ItemStack> storageContents;
26+
protected /*NonNull*/List<ItemStack> armourContents;
27+
protected /*NonNull*/List<ItemStack> offHand;
2828

2929
protected Ref<ItemStack> onCursor;
3030
protected List<ItemStack> craftingContents;

InvSee++_Platforms/Impl_1_20_4_R3/src/main/java/com/janboerman/invsee/spigot/impl_1_20_4_R3/EnderNmsInventory.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import com.janboerman.invsee.spigot.api.target.Target;
55
import com.janboerman.invsee.spigot.api.template.EnderChestSlot;
66
import com.janboerman.invsee.spigot.internal.inventory.AbstractNmsInventory;
7-
import net.minecraft.core.NonNullList;
87
import net.minecraft.network.chat.Component;
98
import net.minecraft.world.Container;
109
import net.minecraft.world.ContainerHelper;
@@ -21,9 +20,9 @@
2120

2221
class EnderNmsInventory extends AbstractNmsInventory<EnderChestSlot, EnderBukkitInventory, EnderNmsInventory> implements Container, MenuProvider {
2322

24-
protected NonNullList<ItemStack> storageContents;
23+
protected /*NonNull*/List<ItemStack> storageContents;
2524

26-
EnderNmsInventory(UUID targetPlayerUuid, String targetPlayerName, NonNullList<ItemStack> storageContents, CreationOptions<EnderChestSlot> creationOptions) {
25+
EnderNmsInventory(UUID targetPlayerUuid, String targetPlayerName, /*NonNull*/List<ItemStack> storageContents, CreationOptions<EnderChestSlot> creationOptions) {
2726
super(targetPlayerUuid, targetPlayerName, creationOptions);
2827
this.storageContents = storageContents;
2928
}

InvSee++_Platforms/Impl_1_20_4_R3/src/main/java/com/janboerman/invsee/spigot/impl_1_20_4_R3/HybridServerSupport.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import java.lang.reflect.Field;
1515
import java.lang.reflect.InvocationTargetException;
1616
import java.lang.reflect.Method;
17+
import java.util.List;
1718

1819
public class HybridServerSupport {
1920

@@ -62,14 +63,15 @@ public static int nextContainerCounter(ServerPlayer nmsPlayer) {
6263
}
6364
}
6465

65-
public static NonNullList<ItemStack> enderChestItems(PlayerEnderChestContainer enderChest) {
66+
// return List<ItemStack> instead of NonNullList<ItemStack> to ensure compatibility with UniverseSpigot
67+
public static /*NonNull*/List<ItemStack> enderChestItems(PlayerEnderChestContainer enderChest) {
6668
try {
6769
return enderChest.items;
6870
} catch (NoSuchFieldError | IllegalAccessError vanillaFieldIsActuallyPrivate) {
6971
try {
7072
//call the forge method: getContents()Ljava/util/List<net/minecraft/world/item/ItemStack>;
7173
//fortunately CraftBukkit contains this method as well, so we can just call it directly without reflection! :D
72-
return (NonNullList<ItemStack>) enderChest.getContents();
74+
return enderChest.getContents();
7375
} catch (Throwable forgeMethodNotFound) {
7476
RuntimeException ex = new RuntimeException("No method known of getting the enderchest items");
7577
ex.addSuppressed(vanillaFieldIsActuallyPrivate);

InvSee++_Platforms/Impl_1_20_4_R3/src/main/java/com/janboerman/invsee/spigot/impl_1_20_4_R3/MainNmsInventory.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@
2222

2323
class MainNmsInventory extends AbstractNmsInventory<PlayerInventorySlot, MainBukkitInventory, MainNmsInventory> implements Container, MenuProvider {
2424

25-
protected NonNullList<ItemStack> storageContents;
26-
protected NonNullList<ItemStack> armourContents;
27-
protected NonNullList<ItemStack> offHand;
25+
protected /*NonNull*/List<ItemStack> storageContents;
26+
protected /*NonNull*/List<ItemStack> armourContents;
27+
protected /*NonNull*/List<ItemStack> offHand;
2828

2929
protected Ref<ItemStack> onCursor;
3030
protected List<ItemStack> craftingContents;

InvSee++_Platforms/Impl_1_20_6_R4/src/main/java/com/janboerman/invsee/spigot/impl_1_20_6_R4/EnderNmsInventory.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import com.janboerman.invsee.spigot.api.target.Target;
55
import com.janboerman.invsee.spigot.api.template.EnderChestSlot;
66
import com.janboerman.invsee.spigot.internal.inventory.AbstractNmsInventory;
7-
import net.minecraft.core.NonNullList;
87
import net.minecraft.network.chat.Component;
98
import net.minecraft.world.Container;
109
import net.minecraft.world.ContainerHelper;
@@ -21,7 +20,7 @@
2120

2221
class EnderNmsInventory extends AbstractNmsInventory<EnderChestSlot, EnderBukkitInventory, EnderNmsInventory> implements Container, MenuProvider {
2322

24-
protected NonNullList<ItemStack> storageContents;
23+
protected List<ItemStack> storageContents;
2524

2625
EnderNmsInventory(Player target, CreationOptions<EnderChestSlot> creationOptions) {
2726
super(target.getUUID(), target.getScoreboardName(), creationOptions);

InvSee++_Platforms/Impl_1_20_6_R4/src/main/java/com/janboerman/invsee/spigot/impl_1_20_6_R4/HybridServerSupport.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import java.lang.reflect.Field;
1515
import java.lang.reflect.InvocationTargetException;
1616
import java.lang.reflect.Method;
17+
import java.util.List;
1718

1819
public class HybridServerSupport {
1920

@@ -62,14 +63,15 @@ public static int nextContainerCounter(ServerPlayer nmsPlayer) {
6263
}
6364
}
6465

65-
public static NonNullList<ItemStack> enderChestItems(PlayerEnderChestContainer enderChest) {
66+
// return List<ItemStack> instead of NonNullList<ItemStack> to ensure compatibility with UniverseSpigot
67+
public static List<ItemStack> enderChestItems(PlayerEnderChestContainer enderChest) {
6668
try {
6769
return enderChest.items;
6870
} catch (NoSuchFieldError | IllegalAccessError vanillaFieldIsActuallyPrivate) {
6971
try {
7072
//call the forge method: getContents()Ljava/util/List<net/minecraft/world/item/ItemStack>;
7173
//fortunately CraftBukkit contains this method as well, so we can just call it directly without reflection! :D
72-
return (NonNullList<ItemStack>) enderChest.getContents();
74+
return enderChest.getContents();
7375
} catch (Throwable forgeMethodNotFound) {
7476
RuntimeException ex = new RuntimeException("No method known of getting the enderchest items");
7577
ex.addSuppressed(vanillaFieldIsActuallyPrivate);

InvSee++_Platforms/Impl_1_20_6_R4/src/main/java/com/janboerman/invsee/spigot/impl_1_20_6_R4/MainNmsInventory.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@
2222

2323
class MainNmsInventory extends AbstractNmsInventory<PlayerInventorySlot, MainBukkitInventory, MainNmsInventory> implements Container, MenuProvider {
2424

25-
protected NonNullList<ItemStack> storageContents;
26-
protected NonNullList<ItemStack> armourContents;
27-
protected NonNullList<ItemStack> offHand;
25+
protected /*NonNull*/List<ItemStack> storageContents;
26+
protected /*NonNull*/List<ItemStack> armourContents;
27+
protected /*NonNull*/List<ItemStack> offHand;
2828

2929
protected Ref<ItemStack> onCursor;
3030
protected List<ItemStack> craftingContents;

InvSee++_Platforms/Impl_1_21_11_R7/src/main/java/com/janboerman/invsee/spigot/impl_1_21_11_R7/HybridServerSupport.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@
77
import java.lang.reflect.Field;
88
import java.lang.reflect.InvocationTargetException;
99
import java.lang.reflect.Method;
10+
import java.util.List;
1011
import java.util.Optional;
1112
import java.util.UUID;
1213

1314
import com.janboerman.invsee.utils.FuzzyReflection;
1415

15-
import net.minecraft.core.NonNullList;
1616
import net.minecraft.core.RegistryAccess;
1717
import net.minecraft.nbt.CompoundTag;
1818
import net.minecraft.server.MinecraftServer;
@@ -77,14 +77,15 @@ public static int nextContainerCounter(ServerPlayer nmsPlayer) {
7777
}
7878
}
7979

80-
public static NonNullList<ItemStack> enderChestItems(PlayerEnderChestContainer enderChest) {
80+
// return List<ItemStack> instead of NonNullList<ItemStack> to ensure compatibility with UniverseSpigot
81+
public static List<ItemStack> enderChestItems(PlayerEnderChestContainer enderChest) {
8182
try {
8283
return enderChest.items;
8384
} catch (NoSuchFieldError | IllegalAccessError vanillaFieldIsActuallyPrivate) {
8485
try {
8586
//call the forge method: getContents()Ljava/util/List<net/minecraft/world/item/ItemStack>;
8687
//fortunately CraftBukkit contains this method as well, so we can just call it directly without reflection! :D
87-
return (NonNullList<ItemStack>) enderChest.getContents();
88+
return enderChest.getContents();
8889
} catch (Throwable forgeMethodNotFound) {
8990
RuntimeException ex = new RuntimeException("No method known of getting the enderchest items");
9091
ex.addSuppressed(vanillaFieldIsActuallyPrivate);

0 commit comments

Comments
 (0)