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.resources.ResourceLocation;
import net.minecraft.util.ProblemReporter; import net.minecraft.util.ProblemReporter;
import net.minecraft.world.item.CrossbowItem; import net.minecraft.world.item.CrossbowItem;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.equipment.trim.TrimMaterial; import net.minecraft.world.item.equipment.trim.TrimMaterial;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import org.geysermc.packgenerator.accessor.BlockModelWrapperLocationAccessor; 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.accessor.SelectItemModelCasesAccessor;
import org.geysermc.packgenerator.mapping.attachable.AttachableMapper; import org.geysermc.packgenerator.mapping.attachable.AttachableMapper;
import org.geysermc.packgenerator.mapping.geometry.GeometryMapper; 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.GeyserSingleDefinition;
import org.geysermc.packgenerator.mapping.geyser.predicate.GeyserConditionPredicate; import org.geysermc.packgenerator.mapping.geyser.predicate.GeyserConditionPredicate;
import org.geysermc.packgenerator.mapping.geyser.predicate.GeyserMatchPredicate; import org.geysermc.packgenerator.mapping.geyser.predicate.GeyserMatchPredicate;
@@ -50,6 +52,15 @@ public class BedrockItemMapper {
.map(ResourceLocation::withDefaultNamespace) .map(ResourceLocation::withDefaultNamespace)
.toList(); .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, public static void mapItem(ResourceLocation modelLocation, String displayName, int protectionValue, DataComponentPatch componentPatch, ProblemReporter reporter,
Consumer<GeyserSingleDefinition> mappingConsumer, BedrockItemConsumer itemConsumer, Consumer<ResourceLocation> additionalTextureConsumer) { Consumer<GeyserSingleDefinition> mappingConsumer, BedrockItemConsumer itemConsumer, Consumer<ResourceLocation> additionalTextureConsumer) {
ItemModel model = Minecraft.getInstance().getModelManager().getItemModel(modelLocation); ItemModel model = Minecraft.getInstance().getModelManager().getItemModel(modelLocation);

View File

@@ -37,6 +37,18 @@ public record GeyserGroupDefinition(Optional<ResourceLocation> model, List<Geyse
return false; 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 @Override
public Type type() { public Type type() {
return Type.GROUP; return Type.GROUP;

View File

@@ -6,19 +6,14 @@ import com.mojang.serialization.Codec;
import com.mojang.serialization.codecs.RecordCodecBuilder; import com.mojang.serialization.codecs.RecordCodecBuilder;
import net.minecraft.core.Holder; import net.minecraft.core.Holder;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.util.ProblemReporter;
import net.minecraft.world.item.Item; import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import org.geysermc.packgenerator.CodecUtil; import org.geysermc.packgenerator.CodecUtil;
import org.geysermc.packgenerator.mapping.BedrockItemConsumer;
import org.geysermc.packgenerator.mapping.BedrockItemMapper;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Optional; import java.util.Optional;
import java.util.function.Consumer;
import java.util.function.Function; import java.util.function.Function;
public class GeyserMappings { public class GeyserMappings {
@@ -72,15 +67,15 @@ public class GeyserMappings {
} }
public int size() { public int size() {
return mappings.size(); int totalSize = 0;
} for (GeyserMapping mapping : mappings.values()) {
if (mapping instanceof GeyserGroupDefinition group) {
public void map(ItemStack stack, ResourceLocation model, ProblemReporter reporter, BedrockItemConsumer itemConsumer, Consumer<ResourceLocation> additionalTextureConsumer) { totalSize += group.size();
String displayName = stack.getHoverName().getString(); } else {
int protectionValue = 0; // TODO check the attributes totalSize++;
}
BedrockItemMapper.mapItem(model, displayName, protectionValue, stack.getComponentsPatch(), reporter, }
mapping -> map(stack.getItemHolder(), mapping), itemConsumer, additionalTextureConsumer); return totalSize;
} }
public Map<Holder<Item>, Collection<GeyserMapping>> mappings() { 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.apache.commons.io.IOUtils;
import org.geysermc.packgenerator.CodecUtil; import org.geysermc.packgenerator.CodecUtil;
import org.geysermc.packgenerator.PackConstants; import org.geysermc.packgenerator.PackConstants;
import org.geysermc.packgenerator.mapping.BedrockItemMapper;
import org.geysermc.packgenerator.mapping.geyser.GeyserMappings; import org.geysermc.packgenerator.mapping.geyser.GeyserMappings;
import org.geysermc.packgenerator.mixin.SplashRendererAccessor; import org.geysermc.packgenerator.mixin.SplashRendererAccessor;
import org.jetbrains.annotations.NotNull; 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); itemTextures.withItemTexture(bedrockItem);
texturesToExport.add(bedrockItem.texture()); texturesToExport.add(bedrockItem.texture());
bedrockItems.add(bedrockItem); bedrockItems.add(bedrockItem);