diff --git a/src/main/java/org/geysermc/packgenerator/mapping/BedrockItemMapper.java b/src/main/java/org/geysermc/packgenerator/mapping/BedrockItemMapper.java index 9625cea..3059de7 100644 --- a/src/main/java/org/geysermc/packgenerator/mapping/BedrockItemMapper.java +++ b/src/main/java/org/geysermc/packgenerator/mapping/BedrockItemMapper.java @@ -24,6 +24,7 @@ import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.util.ProblemReporter; import net.minecraft.world.item.CrossbowItem; +import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.equipment.trim.TrimMaterial; import net.minecraft.world.level.Level; import org.geysermc.packgenerator.accessor.BlockModelWrapperLocationAccessor; @@ -31,6 +32,7 @@ import org.geysermc.packgenerator.accessor.ResolvedModelAccessor; import org.geysermc.packgenerator.accessor.SelectItemModelCasesAccessor; import org.geysermc.packgenerator.mapping.attachable.AttachableMapper; import org.geysermc.packgenerator.mapping.geometry.GeometryMapper; +import org.geysermc.packgenerator.mapping.geyser.GeyserMappings; import org.geysermc.packgenerator.mapping.geyser.GeyserSingleDefinition; import org.geysermc.packgenerator.mapping.geyser.predicate.GeyserConditionPredicate; import org.geysermc.packgenerator.mapping.geyser.predicate.GeyserMatchPredicate; @@ -50,6 +52,15 @@ public class BedrockItemMapper { .map(ResourceLocation::withDefaultNamespace) .toList(); + public static void tryMapStack(ItemStack stack, ResourceLocation model, ProblemReporter reporter, + GeyserMappings mappings, BedrockItemConsumer itemConsumer, Consumer additionalTextureConsumer) { + String displayName = stack.getHoverName().getString(); + int protectionValue = 0; // TODO check the attributes + + mapItem(model, displayName, protectionValue, stack.getComponentsPatch(), reporter, + mapping -> mappings.map(stack.getItemHolder(), mapping), itemConsumer, additionalTextureConsumer); + } + public static void mapItem(ResourceLocation modelLocation, String displayName, int protectionValue, DataComponentPatch componentPatch, ProblemReporter reporter, Consumer mappingConsumer, BedrockItemConsumer itemConsumer, Consumer additionalTextureConsumer) { ItemModel model = Minecraft.getInstance().getModelManager().getItemModel(modelLocation); diff --git a/src/main/java/org/geysermc/packgenerator/mapping/geyser/GeyserGroupDefinition.java b/src/main/java/org/geysermc/packgenerator/mapping/geyser/GeyserGroupDefinition.java index 00b1f5d..8bd6766 100644 --- a/src/main/java/org/geysermc/packgenerator/mapping/geyser/GeyserGroupDefinition.java +++ b/src/main/java/org/geysermc/packgenerator/mapping/geyser/GeyserGroupDefinition.java @@ -37,6 +37,18 @@ public record GeyserGroupDefinition(Optional model, List additionalTextureConsumer) { - String displayName = stack.getHoverName().getString(); - int protectionValue = 0; // TODO check the attributes - - BedrockItemMapper.mapItem(model, displayName, protectionValue, stack.getComponentsPatch(), reporter, - mapping -> map(stack.getItemHolder(), mapping), itemConsumer, additionalTextureConsumer); + int totalSize = 0; + for (GeyserMapping mapping : mappings.values()) { + if (mapping instanceof GeyserGroupDefinition group) { + totalSize += group.size(); + } else { + totalSize++; + } + } + return totalSize; } public Map, Collection> mappings() { diff --git a/src/main/java/org/geysermc/packgenerator/pack/BedrockPack.java b/src/main/java/org/geysermc/packgenerator/pack/BedrockPack.java index bd5cfad..9e8db32 100644 --- a/src/main/java/org/geysermc/packgenerator/pack/BedrockPack.java +++ b/src/main/java/org/geysermc/packgenerator/pack/BedrockPack.java @@ -10,6 +10,7 @@ import net.minecraft.world.item.ItemStack; import org.apache.commons.io.IOUtils; import org.geysermc.packgenerator.CodecUtil; import org.geysermc.packgenerator.PackConstants; +import org.geysermc.packgenerator.mapping.BedrockItemMapper; import org.geysermc.packgenerator.mapping.geyser.GeyserMappings; import org.geysermc.packgenerator.mixin.SplashRendererAccessor; import org.jetbrains.annotations.NotNull; @@ -99,7 +100,7 @@ public class BedrockPack { } }; - mappings.map(stack, model, mapReporter, bedrockItem -> { + BedrockItemMapper.tryMapStack(stack, model, mapReporter, mappings, bedrockItem -> { itemTextures.withItemTexture(bedrockItem); texturesToExport.add(bedrockItem.texture()); bedrockItems.add(bedrockItem);