Fix java items getting registered at the wrong index

Co-authored-by: AJ Ferguson <AJ-Ferguson@users.noreply.github.com>
This commit is contained in:
rtm516 2023-05-13 19:54:16 +01:00
parent 870a838c0f
commit 2b56927d27
No known key found for this signature in database
GPG Key ID: 331715B8B007C67A
1 changed files with 7 additions and 1 deletions

View File

@ -29,6 +29,8 @@ import org.geysermc.geyser.item.components.ToolTier;
import org.geysermc.geyser.item.type.*;
import org.geysermc.geyser.registry.Registries;
import java.util.Collections;
import static org.geysermc.geyser.item.type.Item.builder;
/**
@ -1271,7 +1273,11 @@ public final class Items {
public static <T extends Item> T register(T item, int id) {
item.setJavaId(id);
Registries.JAVA_ITEMS.get().add(item);
// This makes sure that the array is large enough to put the java item at the correct location
if (Registries.JAVA_ITEMS.get().size() <= id) {
Registries.JAVA_ITEMS.get().addAll(Collections.nCopies(id - Registries.JAVA_ITEMS.get().size() + 1, AIR));
}
Registries.JAVA_ITEMS.get().set(id, item);
Registries.JAVA_ITEM_IDENTIFIERS.register(item.javaIdentifier(), item);
return item;
}