Skip to content

Commit

Permalink
Allow ModelStitcher.Provider to be specified in `ModelConversionDat…
Browse files Browse the repository at this point in the history
…a` (#20)

* Allow ModelStitcher.Provider to be specified in ModelConversionData

* Fix generics in Converters

* Use a context object for conversion data creation to minimize future BCs

* Don't fold AWT imports into star imports
  • Loading branch information
Gaming32 authored Mar 21, 2024
1 parent e35066b commit 7d417f7
Show file tree
Hide file tree
Showing 7 changed files with 37 additions and 21 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -152,7 +151,7 @@ public PackConverter converter(@NotNull Converter<?> converter) {
* @param converters the converters to add
* @return this instance
*/
public PackConverter converters(@NotNull List<Converter<?>> converters) {
public PackConverter converters(@NotNull List<? extends Converter<?>> converters) {
this.converters.addAll(converters);
return this;
}
Expand Down Expand Up @@ -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<ActionListener<?>> actionListeners = this.actionListeners.getOrDefault(data.getClass(), List.of());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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<BaseConversionData> {

@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());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,17 +29,28 @@
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;

public interface Converter<T extends ConversionData> {

void convert(@NotNull PackConversionContext<T> 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
) {
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,14 +31,14 @@

public class Converters {

public static List<Converter<?>> defaultConverters() {
public static List<? extends Converter<?>> defaultConverters() {
return defaultConverters(false);
}

@SuppressWarnings({ "rawtypes", "unchecked" })
public static List<Converter<?>> defaultConverters(boolean experimental) {
return (List) ServiceLoader.load(Converter.class).stream()
public static List<? extends Converter<?>> defaultConverters(boolean experimental) {
return ServiceLoader.load(Converter.class).stream()
.map(ServiceLoader.Provider::get)
.map(c -> (Converter<?>)c)
.filter(converter -> experimental || !converter.isExperimental())
.toList();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand Down Expand Up @@ -184,8 +182,11 @@ public void convert(@NotNull PackConversionContext<ModelConversionData> 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) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -147,7 +146,7 @@ public void convert(@NotNull PackConversionContext<TextureConversionData> 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());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -36,9 +38,12 @@

public class ModelConversionData extends BaseConversionData {
private final Map<Key, Model> 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) {
Expand Down

0 comments on commit 7d417f7

Please sign in to comment.