Skip to content

Commit 34fda8a

Browse files
committed
Small optimizations in Enchantment
1 parent ed5195a commit 34fda8a

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

core/src/main/java/org/geysermc/geyser/item/enchantment/Enchantment.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525

2626
package org.geysermc.geyser.item.enchantment;
2727

28+
import it.unimi.dsi.fastutil.ints.IntArrays;
2829
import net.kyori.adventure.key.Key;
2930
import org.checkerframework.checker.nullness.qual.Nullable;
3031
import org.cloudburstmc.nbt.NbtMap;
@@ -33,13 +34,14 @@
3334
import org.geysermc.geyser.registry.Registries;
3435
import org.geysermc.geyser.session.cache.registry.RegistryEntryContext;
3536
import org.geysermc.geyser.translator.text.MessageTranslator;
37+
import org.geysermc.geyser.util.MinecraftKey;
3638
import org.geysermc.mcprotocollib.protocol.data.game.item.component.HolderSet;
3739

3840
import java.util.HashSet;
3941
import java.util.List;
4042
import java.util.Map;
4143
import java.util.Set;
42-
import java.util.function.Function;
44+
import java.util.function.ToIntFunction;
4345

4446
/**
4547
* @param description only populated if {@link #bedrockEnchantment()} is not null.
@@ -86,21 +88,21 @@ private static Set<EnchantmentComponent> readEnchantmentComponents(NbtMap effect
8688
}
8789

8890
// TODO holder set util?
89-
private static HolderSet readHolderSet(@Nullable Object holderSet, Function<Key, Integer> keyIdMapping) {
91+
private static HolderSet readHolderSet(@Nullable Object holderSet, ToIntFunction<Key> keyIdMapping) {
9092
if (holderSet == null) {
91-
return new HolderSet(new int[]{});
93+
return new HolderSet(IntArrays.EMPTY_ARRAY);
9294
}
9395

9496
if (holderSet instanceof String stringTag) {
9597
// Tag
9698
if (stringTag.startsWith("#")) {
97-
return new HolderSet(Key.key(stringTag.substring(1))); // Remove '#' at beginning that indicates tag
99+
return new HolderSet(MinecraftKey.key(stringTag.substring(1))); // Remove '#' at beginning that indicates tag
98100
} else {
99-
return new HolderSet(new int[]{keyIdMapping.apply(Key.key(stringTag))});
101+
return new HolderSet(new int[]{keyIdMapping.applyAsInt(MinecraftKey.key(stringTag))});
100102
}
101103
} else if (holderSet instanceof List<?> list) {
102104
// Assume the list is a list of strings
103-
return new HolderSet(list.stream().map(o -> (String) o).map(Key::key).map(keyIdMapping).mapToInt(Integer::intValue).toArray());
105+
return new HolderSet(list.stream().map(o -> (String) o).map(Key::key).mapToInt(keyIdMapping).toArray());
104106
}
105107
throw new IllegalArgumentException("Holder set must either be a tag, a string ID or a list of string IDs");
106108
}

0 commit comments

Comments
 (0)