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:
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
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);
|
||||
int totalSize = 0;
|
||||
for (GeyserMapping mapping : mappings.values()) {
|
||||
if (mapping instanceof GeyserGroupDefinition group) {
|
||||
totalSize += group.size();
|
||||
} else {
|
||||
totalSize++;
|
||||
}
|
||||
}
|
||||
return totalSize;
|
||||
}
|
||||
|
||||
public Map<Holder<Item>, Collection<GeyserMapping>> mappings() {
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user