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.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);
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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() {
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user