1
0
mirror of https://github.com/GeyserMC/Rainbow.git synced 2025-12-19 14:59:16 +00:00

More small refactors, move all actual mapping code out of GeyserMappings

This commit is contained in:
Eclipse
2025-07-04 15:07:30 +00:00
parent cc5c7216b5
commit d24203b0bf
4 changed files with 34 additions and 15 deletions

View File

@@ -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<ResourceLocation> 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<GeyserSingleDefinition> mappingConsumer, BedrockItemConsumer itemConsumer, Consumer<ResourceLocation> additionalTextureConsumer) {
ItemModel model = Minecraft.getInstance().getModelManager().getItemModel(modelLocation);

View File

@@ -37,6 +37,18 @@ public record GeyserGroupDefinition(Optional<ResourceLocation> model, List<Geyse
return false;
}
public int size() {
int totalSize = 0;
for (GeyserMapping definition : definitions) {
if (definition instanceof GeyserGroupDefinition group) {
totalSize += group.size();
} else {
totalSize++;
}
}
return totalSize;
}
@Override
public Type type() {
return Type.GROUP;

View File

@@ -6,19 +6,14 @@ import com.mojang.serialization.Codec;
import com.mojang.serialization.codecs.RecordCodecBuilder;
import net.minecraft.core.Holder;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.util.ProblemReporter;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import org.geysermc.packgenerator.CodecUtil;
import org.geysermc.packgenerator.mapping.BedrockItemConsumer;
import org.geysermc.packgenerator.mapping.BedrockItemMapper;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.function.Consumer;
import java.util.function.Function;
public class GeyserMappings {
@@ -72,15 +67,15 @@ public class GeyserMappings {
}
public int size() {
return mappings.size();
int totalSize = 0;
for (GeyserMapping mapping : mappings.values()) {
if (mapping instanceof GeyserGroupDefinition group) {
totalSize += group.size();
} else {
totalSize++;
}
public void map(ItemStack stack, ResourceLocation model, ProblemReporter reporter, BedrockItemConsumer itemConsumer, Consumer<ResourceLocation> 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);
}
return totalSize;
}
public Map<Holder<Item>, Collection<GeyserMapping>> mappings() {

View File

@@ -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);