Mirror von
https://github.com/GeyserMC/Geyser.git
synchronisiert 2024-10-02 08:00:07 +02:00
Merge remote-tracking branch 'upstream/master' into feature/blocky
Dieser Commit ist enthalten in:
Commit
c74852307b
@ -124,7 +124,11 @@ public class BoatEntity extends Entity {
|
|||||||
|
|
||||||
public void setVariant(IntEntityMetadata entityMetadata) {
|
public void setVariant(IntEntityMetadata entityMetadata) {
|
||||||
variant = entityMetadata.getPrimitiveValue();
|
variant = entityMetadata.getPrimitiveValue();
|
||||||
dirtyMetadata.put(EntityData.VARIANT, variant);
|
dirtyMetadata.put(EntityData.VARIANT, switch (variant) {
|
||||||
|
case 6, 7 -> variant - 1; // Dark oak and mangrove
|
||||||
|
case 5, 8 -> 0; // TODO temp until 1.20. Cherry and bamboo
|
||||||
|
default -> variant;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setPaddlingLeft(BooleanEntityMetadata entityMetadata) {
|
public void setPaddlingLeft(BooleanEntityMetadata entityMetadata) {
|
||||||
|
@ -62,8 +62,10 @@ public class BedrockEntityPickRequestTranslator extends PacketTranslator<EntityP
|
|||||||
case 2 -> "birch";
|
case 2 -> "birch";
|
||||||
case 3 -> "jungle";
|
case 3 -> "jungle";
|
||||||
case 4 -> "acacia";
|
case 4 -> "acacia";
|
||||||
case 5 -> "dark_oak";
|
//case 5 -> "cherry"; TODO
|
||||||
case 6 -> "mangrove";
|
case 6 -> "dark_oak";
|
||||||
|
case 7 -> "mangrove";
|
||||||
|
//case 8 -> "bamboo";
|
||||||
default -> "oak";
|
default -> "oak";
|
||||||
};
|
};
|
||||||
itemName = typeOfBoat + "_" + entity.getDefinition().entityType().name().toLowerCase(Locale.ROOT);
|
itemName = typeOfBoat + "_" + entity.getDefinition().entityType().name().toLowerCase(Locale.ROOT);
|
||||||
|
@ -70,7 +70,7 @@ public class JavaUpdateRecipesTranslator extends PacketTranslator<ClientboundUpd
|
|||||||
/**
|
/**
|
||||||
* Required to use the specified cartography table recipes
|
* Required to use the specified cartography table recipes
|
||||||
*/
|
*/
|
||||||
private static final List<CraftingData> CARTOGRAPHY_RECIPES = Arrays.asList(
|
private static final List<CraftingData> CARTOGRAPHY_RECIPES = List.of(
|
||||||
CraftingData.fromMulti(UUID.fromString("8b36268c-1829-483c-a0f1-993b7156a8f2"), ++LAST_RECIPE_NET_ID), // Map extending
|
CraftingData.fromMulti(UUID.fromString("8b36268c-1829-483c-a0f1-993b7156a8f2"), ++LAST_RECIPE_NET_ID), // Map extending
|
||||||
CraftingData.fromMulti(UUID.fromString("442d85ed-8272-4543-a6f1-418f90ded05d"), ++LAST_RECIPE_NET_ID), // Map cloning
|
CraftingData.fromMulti(UUID.fromString("442d85ed-8272-4543-a6f1-418f90ded05d"), ++LAST_RECIPE_NET_ID), // Map cloning
|
||||||
CraftingData.fromMulti(UUID.fromString("98c84b38-1085-46bd-b1ce-dd38c159e6cc"), ++LAST_RECIPE_NET_ID), // Map upgrading
|
CraftingData.fromMulti(UUID.fromString("98c84b38-1085-46bd-b1ce-dd38c159e6cc"), ++LAST_RECIPE_NET_ID), // Map upgrading
|
||||||
@ -99,6 +99,10 @@ public class JavaUpdateRecipesTranslator extends PacketTranslator<ClientboundUpd
|
|||||||
// Strip NBT - tools won't appear in the recipe book otherwise
|
// Strip NBT - tools won't appear in the recipe book otherwise
|
||||||
output = output.toBuilder().tag(null).build();
|
output = output.toBuilder().tag(null).build();
|
||||||
ItemDescriptorWithCount[][] inputCombinations = combinations(session, shapelessRecipeData.getIngredients());
|
ItemDescriptorWithCount[][] inputCombinations = combinations(session, shapelessRecipeData.getIngredients());
|
||||||
|
if (inputCombinations == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
for (ItemDescriptorWithCount[] inputs : inputCombinations) {
|
for (ItemDescriptorWithCount[] inputs : inputCombinations) {
|
||||||
UUID uuid = UUID.randomUUID();
|
UUID uuid = UUID.randomUUID();
|
||||||
craftingDataPacket.getCraftingData().add(CraftingData.fromShapeless(uuid.toString(),
|
craftingDataPacket.getCraftingData().add(CraftingData.fromShapeless(uuid.toString(),
|
||||||
@ -116,6 +120,9 @@ public class JavaUpdateRecipesTranslator extends PacketTranslator<ClientboundUpd
|
|||||||
// See above
|
// See above
|
||||||
output = output.toBuilder().tag(null).build();
|
output = output.toBuilder().tag(null).build();
|
||||||
ItemDescriptorWithCount[][] inputCombinations = combinations(session, shapedRecipeData.getIngredients());
|
ItemDescriptorWithCount[][] inputCombinations = combinations(session, shapedRecipeData.getIngredients());
|
||||||
|
if (inputCombinations == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
for (ItemDescriptorWithCount[] inputs : inputCombinations) {
|
for (ItemDescriptorWithCount[] inputs : inputCombinations) {
|
||||||
UUID uuid = UUID.randomUUID();
|
UUID uuid = UUID.randomUUID();
|
||||||
craftingDataPacket.getCraftingData().add(CraftingData.fromShaped(uuid.toString(),
|
craftingDataPacket.getCraftingData().add(CraftingData.fromShaped(uuid.toString(),
|
||||||
@ -216,12 +223,14 @@ public class JavaUpdateRecipesTranslator extends PacketTranslator<ClientboundUpd
|
|||||||
* @return the Java ingredient list as an array that Bedrock can understand
|
* @return the Java ingredient list as an array that Bedrock can understand
|
||||||
*/
|
*/
|
||||||
private ItemDescriptorWithCount[][] combinations(GeyserSession session, Ingredient[] ingredients) {
|
private ItemDescriptorWithCount[][] combinations(GeyserSession session, Ingredient[] ingredients) {
|
||||||
|
boolean empty = true;
|
||||||
Map<Set<ItemDescriptorWithCount>, IntSet> squashedOptions = new HashMap<>();
|
Map<Set<ItemDescriptorWithCount>, 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(ItemDescriptorWithCount.EMPTY), k -> new IntOpenHashSet()).add(i);
|
squashedOptions.computeIfAbsent(Collections.singleton(ItemDescriptorWithCount.EMPTY), k -> new IntOpenHashSet()).add(i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
empty = false;
|
||||||
Ingredient ingredient = ingredients[i];
|
Ingredient ingredient = ingredients[i];
|
||||||
Map<GroupedItem, List<ItemDescriptorWithCount>> groupedByIds = Arrays.stream(ingredient.getOptions())
|
Map<GroupedItem, List<ItemDescriptorWithCount>> groupedByIds = Arrays.stream(ingredient.getOptions())
|
||||||
.map(item -> ItemDescriptorWithCount.fromItem(ItemTranslator.translateToBedrock(session, item)))
|
.map(item -> ItemDescriptorWithCount.fromItem(ItemTranslator.translateToBedrock(session, item)))
|
||||||
@ -249,6 +258,11 @@ public class JavaUpdateRecipesTranslator extends PacketTranslator<ClientboundUpd
|
|||||||
}
|
}
|
||||||
squashedOptions.computeIfAbsent(optionSet, k -> new IntOpenHashSet()).add(i);
|
squashedOptions.computeIfAbsent(optionSet, k -> new IntOpenHashSet()).add(i);
|
||||||
}
|
}
|
||||||
|
if (empty) {
|
||||||
|
// Crashes Bedrock 1.19.70 otherwise
|
||||||
|
// Fixes https://github.com/GeyserMC/Geyser/issues/3549
|
||||||
|
return null;
|
||||||
|
}
|
||||||
int totalCombinations = 1;
|
int totalCombinations = 1;
|
||||||
for (Set<ItemDescriptorWithCount> optionSet : squashedOptions.keySet()) {
|
for (Set<ItemDescriptorWithCount> optionSet : squashedOptions.keySet()) {
|
||||||
totalCombinations *= optionSet.size();
|
totalCombinations *= optionSet.size();
|
||||||
|
@ -22,7 +22,7 @@ jline = "3.21.0"
|
|||||||
terminalconsoleappender = "1.2.0"
|
terminalconsoleappender = "1.2.0"
|
||||||
folia = "1.19.4-R0.1-SNAPSHOT"
|
folia = "1.19.4-R0.1-SNAPSHOT"
|
||||||
viaversion = "4.0.0"
|
viaversion = "4.0.0"
|
||||||
adapters = "1.7-SNAPSHOT"
|
adapters = "1.8-SNAPSHOT"
|
||||||
commodore = "2.2"
|
commodore = "2.2"
|
||||||
bungeecord = "a7c6ede"
|
bungeecord = "a7c6ede"
|
||||||
velocity = "3.0.0"
|
velocity = "3.0.0"
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren