diff --git a/converter/src/main/java/org/geysermc/pack/converter/PackConverter.java b/converter/src/main/java/org/geysermc/pack/converter/PackConverter.java index 354d86c..da9e601 100644 --- a/converter/src/main/java/org/geysermc/pack/converter/PackConverter.java +++ b/converter/src/main/java/org/geysermc/pack/converter/PackConverter.java @@ -42,7 +42,6 @@ import javax.imageio.ImageIO; import java.io.IOException; -import java.nio.file.Files; import java.nio.file.Path; import java.util.ArrayList; import java.util.IdentityHashMap; @@ -152,7 +151,7 @@ public PackConverter converter(@NotNull Converter converter) { * @param converters the converters to add * @return this instance */ - public PackConverter converters(@NotNull List> converters) { + public PackConverter converters(@NotNull List> converters) { this.converters.addAll(converters); return this; } @@ -259,9 +258,13 @@ public PackConverter convert() throws IOException { ResourcePack javaResourcePack = this.compressed ? MinecraftResourcePackReader.minecraft().readFromZipFile(this.input) : MinecraftResourcePackReader.minecraft().read(NioDirectoryFileTreeReader.read(this.input)); BedrockResourcePack bedrockResourcePack = new BedrockResourcePack(this.tmpDir); + final Converter.ConversionDataCreationContext conversionDataCreationContext = new Converter.ConversionDataCreationContext( + this, logListener, input, this.tmpDir, javaResourcePack + ); + int errors = 0; for (Converter converter : this.converters) { - ConversionData data = converter.createConversionData(this, input, this.tmpDir); + ConversionData data = converter.createConversionData(conversionDataCreationContext); PackConversionContext context = new PackConversionContext<>(data, this, javaResourcePack, bedrockResourcePack, this.logListener); List> actionListeners = this.actionListeners.getOrDefault(data.getClass(), List.of()); diff --git a/converter/src/main/java/org/geysermc/pack/converter/converter/BaseConverter.java b/converter/src/main/java/org/geysermc/pack/converter/converter/BaseConverter.java index 4ff6229..faa0370 100644 --- a/converter/src/main/java/org/geysermc/pack/converter/converter/BaseConverter.java +++ b/converter/src/main/java/org/geysermc/pack/converter/converter/BaseConverter.java @@ -26,16 +26,13 @@ package org.geysermc.pack.converter.converter; -import org.geysermc.pack.converter.PackConverter; import org.geysermc.pack.converter.data.BaseConversionData; import org.jetbrains.annotations.NotNull; -import java.nio.file.Path; - public abstract class BaseConverter implements Converter { @Override - public BaseConversionData createConversionData(@NotNull PackConverter converter, @NotNull Path inputDirectory, @NotNull Path outputDirectory) { - return new BaseConversionData(inputDirectory, outputDirectory); + public BaseConversionData createConversionData(@NotNull ConversionDataCreationContext context) { + return new BaseConversionData(context.inputDirectory(), context.outputDirectory()); } } diff --git a/converter/src/main/java/org/geysermc/pack/converter/converter/Converter.java b/converter/src/main/java/org/geysermc/pack/converter/converter/Converter.java index 428564e..d624fd9 100644 --- a/converter/src/main/java/org/geysermc/pack/converter/converter/Converter.java +++ b/converter/src/main/java/org/geysermc/pack/converter/converter/Converter.java @@ -29,7 +29,9 @@ import org.geysermc.pack.converter.PackConversionContext; import org.geysermc.pack.converter.PackConverter; import org.geysermc.pack.converter.data.ConversionData; +import org.geysermc.pack.converter.util.LogListener; import org.jetbrains.annotations.NotNull; +import team.unnamed.creative.ResourcePack; import java.nio.file.Path; @@ -37,9 +39,18 @@ public interface Converter { void convert(@NotNull PackConversionContext context) throws Exception; - T createConversionData(@NotNull PackConverter converter, @NotNull Path inputDirectory, @NotNull Path outputDirectory); + T createConversionData(@NotNull ConversionDataCreationContext context); default boolean isExperimental() { return false; } + + record ConversionDataCreationContext( + @NotNull PackConverter converter, + @NotNull LogListener logListener, + @NotNull Path inputDirectory, + @NotNull Path outputDirectory, + @NotNull ResourcePack javaResourcePack + ) { + } } diff --git a/converter/src/main/java/org/geysermc/pack/converter/converter/Converters.java b/converter/src/main/java/org/geysermc/pack/converter/converter/Converters.java index 3864037..69b9eb2 100644 --- a/converter/src/main/java/org/geysermc/pack/converter/converter/Converters.java +++ b/converter/src/main/java/org/geysermc/pack/converter/converter/Converters.java @@ -31,14 +31,14 @@ public class Converters { - public static List> defaultConverters() { + public static List> defaultConverters() { return defaultConverters(false); } - @SuppressWarnings({ "rawtypes", "unchecked" }) - public static List> defaultConverters(boolean experimental) { - return (List) ServiceLoader.load(Converter.class).stream() + public static List> defaultConverters(boolean experimental) { + return ServiceLoader.load(Converter.class).stream() .map(ServiceLoader.Provider::get) + .map(c -> (Converter)c) .filter(converter -> experimental || !converter.isExperimental()) .toList(); } diff --git a/converter/src/main/java/org/geysermc/pack/converter/converter/model/ModelConverter.java b/converter/src/main/java/org/geysermc/pack/converter/converter/model/ModelConverter.java index b86ebad..b211436 100644 --- a/converter/src/main/java/org/geysermc/pack/converter/converter/model/ModelConverter.java +++ b/converter/src/main/java/org/geysermc/pack/converter/converter/model/ModelConverter.java @@ -42,7 +42,6 @@ import org.geysermc.pack.bedrock.resource.models.entity.modelentity.geometry.bones.cubes.uv.Up; import org.geysermc.pack.bedrock.resource.models.entity.modelentity.geometry.bones.cubes.uv.West; import org.geysermc.pack.converter.PackConversionContext; -import org.geysermc.pack.converter.PackConverter; import org.geysermc.pack.converter.converter.Converter; import org.geysermc.pack.converter.data.ModelConversionData; import org.jetbrains.annotations.NotNull; @@ -54,7 +53,6 @@ import team.unnamed.creative.model.Model; import team.unnamed.creative.texture.TextureUV; -import java.nio.file.Path; import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -184,8 +182,11 @@ public void convert(@NotNull PackConversionContext context) } @Override - public ModelConversionData createConversionData(@NotNull PackConverter converter, @NotNull Path inputDirectory, @NotNull Path outputDirectory) { - return new ModelConversionData(inputDirectory, outputDirectory); + public ModelConversionData createConversionData(@NotNull ConversionDataCreationContext context) { + return new ModelConversionData( + context.inputDirectory(), context.outputDirectory(), + ModelStitcher.vanillaProvider(context.javaResourcePack(), context.logListener()) + ); } private TextureUV multiplyUv(TextureUV textureUV, float mult) { diff --git a/converter/src/main/java/org/geysermc/pack/converter/converter/texture/TextureConverter.java b/converter/src/main/java/org/geysermc/pack/converter/converter/texture/TextureConverter.java index 3fc437b..72a1ba7 100644 --- a/converter/src/main/java/org/geysermc/pack/converter/converter/texture/TextureConverter.java +++ b/converter/src/main/java/org/geysermc/pack/converter/converter/texture/TextureConverter.java @@ -28,7 +28,6 @@ import com.google.auto.service.AutoService; import org.geysermc.pack.converter.PackConversionContext; -import org.geysermc.pack.converter.PackConverter; import org.geysermc.pack.converter.converter.Converter; import org.geysermc.pack.converter.converter.texture.transformer.TextureTransformer; import org.geysermc.pack.converter.converter.texture.transformer.TransformContext; @@ -147,7 +146,7 @@ public void convert(@NotNull PackConversionContext contex } @Override - public TextureConversionData createConversionData(@NotNull PackConverter converter, @NotNull Path inputDirectory, @NotNull Path outputDirectory) { - return new TextureConversionData(inputDirectory, outputDirectory, converter.textureSubdirectory()); + public TextureConversionData createConversionData(@NotNull ConversionDataCreationContext context) { + return new TextureConversionData(context.inputDirectory(), context.outputDirectory(), context.converter().textureSubdirectory()); } } diff --git a/converter/src/main/java/org/geysermc/pack/converter/data/ModelConversionData.java b/converter/src/main/java/org/geysermc/pack/converter/data/ModelConversionData.java index 9d613b0..32e2506 100644 --- a/converter/src/main/java/org/geysermc/pack/converter/data/ModelConversionData.java +++ b/converter/src/main/java/org/geysermc/pack/converter/data/ModelConversionData.java @@ -26,7 +26,9 @@ package org.geysermc.pack.converter.data; +import lombok.Getter; import net.kyori.adventure.key.Key; +import org.geysermc.pack.converter.converter.model.ModelStitcher; import org.jetbrains.annotations.NotNull; import team.unnamed.creative.model.Model; @@ -36,9 +38,12 @@ public class ModelConversionData extends BaseConversionData { private final Map stitchedModels = new HashMap<>(); + @Getter + private final ModelStitcher.Provider modelProvider; - public ModelConversionData(@NotNull Path inputDirectory, @NotNull Path outputDirectory) { + public ModelConversionData(@NotNull Path inputDirectory, @NotNull Path outputDirectory, ModelStitcher.Provider modelProvider) { super(inputDirectory, outputDirectory); + this.modelProvider = modelProvider; } public void addStitchedModel(@NotNull Model model) {