3
0
Mirror von https://github.com/GeyserMC/Geyser.git synchronisiert 2024-12-28 09:00:11 +01:00

Update JavaDeclareRecipesTranslator.java

Dieser Commit ist enthalten in:
AJ Ferguson 2019-11-30 15:24:01 -09:00
Ursprung 8bb8208a46
Commit 8c93ca65f5

Datei anzeigen

@ -34,6 +34,8 @@ import com.nukkitx.nbt.tag.CompoundTag;
import com.nukkitx.protocol.bedrock.data.CraftingData; import com.nukkitx.protocol.bedrock.data.CraftingData;
import com.nukkitx.protocol.bedrock.data.ItemData; import com.nukkitx.protocol.bedrock.data.ItemData;
import com.nukkitx.protocol.bedrock.packet.CraftingDataPacket; import com.nukkitx.protocol.bedrock.packet.CraftingDataPacket;
import it.unimi.dsi.fastutil.ints.IntOpenHashSet;
import it.unimi.dsi.fastutil.ints.IntSet;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import org.geysermc.connector.network.session.GeyserSession; import org.geysermc.connector.network.session.GeyserSession;
@ -82,10 +84,10 @@ public class JavaDeclareRecipesTranslator extends PacketTranslator<ServerDeclare
} }
private ItemData[][] combinations(Ingredient[] ingredients) { private ItemData[][] combinations(Ingredient[] ingredients) {
Map<Set<ItemData>, Set<Integer>> squashedOptions = new HashMap<>(); Map<Set<ItemData>, IntSet> squashedOptions = new HashMap<>();
for (int i = 0; i < ingredients.length; i++) { for (int i = 0; i < ingredients.length; i++) {
if (ingredients[i].getOptions().length == 0) { if (ingredients[i].getOptions().length == 0) {
squashedOptions.computeIfAbsent(Collections.singleton(ItemData.AIR), k -> new HashSet<>()).add(i); squashedOptions.computeIfAbsent(Collections.singleton(ItemData.AIR), k -> new IntOpenHashSet()).add(i);
continue; continue;
} }
Ingredient ingredient = ingredients[i]; Ingredient ingredient = ingredients[i];
@ -98,7 +100,7 @@ public class JavaDeclareRecipesTranslator extends PacketTranslator<ServerDeclare
GroupedItem groupedItem = entry.getKey(); GroupedItem groupedItem = entry.getKey();
int idCount = 0; int idCount = 0;
//not optimal //not optimal
for (ItemEntry itemEntry : Toolbox.ITEM_ENTRIES.valueCollection()) { for (ItemEntry itemEntry : Toolbox.ITEM_ENTRIES.values()) {
if (itemEntry.getBedrockId() == groupedItem.id) { if (itemEntry.getBedrockId() == groupedItem.id) {
idCount++; idCount++;
} }
@ -113,7 +115,7 @@ public class JavaDeclareRecipesTranslator extends PacketTranslator<ServerDeclare
optionSet.add(item); optionSet.add(item);
} }
} }
squashedOptions.computeIfAbsent(optionSet, k -> new HashSet<>()).add(i); squashedOptions.computeIfAbsent(optionSet, k -> new IntOpenHashSet()).add(i);
} }
int totalCombinations = 1; int totalCombinations = 1;
for (Set optionSet : squashedOptions.keySet()) { for (Set optionSet : squashedOptions.keySet()) {
@ -135,7 +137,7 @@ public class JavaDeclareRecipesTranslator extends PacketTranslator<ServerDeclare
ItemData[][] combinations = new ItemData[totalCombinations][ingredients.length]; ItemData[][] combinations = new ItemData[totalCombinations][ingredients.length];
int x = 1; int x = 1;
for (Set<ItemData> set : sortedSets) { for (Set<ItemData> set : sortedSets) {
Set<Integer> slotSet = squashedOptions.get(set); IntSet slotSet = squashedOptions.get(set);
int i = 0; int i = 0;
for (ItemData item : set) { for (ItemData item : set) {
for (int j = 0; j < totalCombinations / set.size(); j++) { for (int j = 0; j < totalCombinations / set.size(); j++) {