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:
Ursprung
8bb8208a46
Commit
8c93ca65f5
@ -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++) {
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren