Skip to content

Commit 1491266

Browse files
Start working on actually integrating PackConverter in Rainbow
1 parent b9ea28e commit 1491266

File tree

3 files changed

+53
-75
lines changed

3 files changed

+53
-75
lines changed

src/main/java/org/geysermc/rainbow/Rainbow.java

Lines changed: 0 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -2,39 +2,16 @@
22

33
import com.mojang.logging.LogUtils;
44
import net.fabricmc.api.ClientModInitializer;
5-
import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager;
65
import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback;
76
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
87
import net.fabricmc.fabric.api.command.v2.ArgumentTypeRegistry;
9-
import net.fabricmc.loader.api.FabricLoader;
10-
import net.minecraft.client.Minecraft;
118
import net.minecraft.commands.synchronization.SingletonArgumentInfo;
12-
import net.minecraft.network.chat.Component;
139
import net.minecraft.resources.ResourceLocation;
14-
import org.geysermc.pack.bedrock.resource.BedrockResourcePack;
15-
import org.geysermc.pack.converter.PackConversionContext;
16-
import org.geysermc.pack.converter.PackConverter;
17-
import org.geysermc.pack.converter.converter.ActionListener;
18-
import org.geysermc.pack.converter.converter.Converter;
19-
import org.geysermc.pack.converter.converter.base.PackManifestConverter;
20-
import org.geysermc.pack.converter.converter.lang.LangConverter;
21-
import org.geysermc.pack.converter.converter.misc.SplashTextConverter;
22-
import org.geysermc.pack.converter.converter.model.ModelConverter;
23-
import org.geysermc.pack.converter.data.ConversionData;
24-
import org.geysermc.pack.converter.util.DefaultLogListener;
25-
import org.geysermc.pack.converter.util.LogListener;
2610
import org.geysermc.rainbow.command.CommandSuggestionsArgumentType;
2711
import org.geysermc.rainbow.command.PackGeneratorCommand;
28-
import org.geysermc.rainbow.creative.MinecraftCreativeResourcePack;
2912
import org.geysermc.rainbow.mapper.PackMapper;
3013
import org.slf4j.Logger;
3114

32-
import javax.imageio.ImageIO;
33-
import java.io.IOException;
34-
import java.nio.file.Path;
35-
import java.util.ArrayList;
36-
import java.util.List;
37-
3815
public class Rainbow implements ClientModInitializer {
3916

4017
public static final String MOD_ID = "rainbow";
@@ -52,58 +29,6 @@ public void onInitializeClient() {
5229

5330
ArgumentTypeRegistry.registerArgumentType(getModdedLocation("command_suggestions"),
5431
CommandSuggestionsArgumentType.class, SingletonArgumentInfo.contextFree(CommandSuggestionsArgumentType::new));
55-
56-
ClientCommandRegistrationCallback.EVENT.register((dispatcher, buildContext) -> {
57-
dispatcher.register(ClientCommandManager.literal("debugtest")
58-
.executes(context -> {
59-
60-
PackConverter packConverter = new PackConverter()
61-
.packName("RAINBOW-TEST")
62-
.output(FabricLoader.getInstance().getGameDir().resolve("pack-convert-out"));
63-
Path tmpDir = FabricLoader.getInstance().getGameDir().resolve("pack-convert-temp");
64-
65-
ImageIO.scanForPlugins();
66-
MinecraftCreativeResourcePack resourcePack = new MinecraftCreativeResourcePack(Minecraft.getInstance().getResourceManager());
67-
BedrockResourcePack bedrockResourcePack = new BedrockResourcePack(tmpDir);
68-
69-
LogListener logListener = new DefaultLogListener();
70-
final Converter.ConversionDataCreationContext conversionDataCreationContext = new Converter.ConversionDataCreationContext(
71-
packConverter, logListener, null, tmpDir, resourcePack, resourcePack
72-
);
73-
74-
75-
List<Converter<?>> converters = new ArrayList<>();
76-
converters.add(new PackManifestConverter());
77-
converters.add(new LangConverter());
78-
converters.add(new ModelConverter());
79-
80-
int errors = 0;
81-
for (Converter converter : converters) {
82-
ConversionData data = converter.createConversionData(conversionDataCreationContext);
83-
PackConversionContext<?> conversionContext = new PackConversionContext<>(data, packConverter, resourcePack, bedrockResourcePack, logListener);
84-
85-
List<ActionListener<?>> actionListeners = List.of();
86-
try {
87-
actionListeners.forEach(actionListener -> actionListener.preConvert((PackConversionContext) conversionContext));
88-
converter.convert(conversionContext);
89-
actionListeners.forEach(actionListener -> actionListener.postConvert((PackConversionContext) conversionContext));
90-
} catch (Throwable t) {
91-
logListener.error("Error converting pack!", t);
92-
errors++;
93-
}
94-
}
95-
96-
try {
97-
bedrockResourcePack.export();
98-
} catch (IOException e) {
99-
throw new RuntimeException(e);
100-
}
101-
context.getSource().sendFeedback(Component.literal("exporting, " + errors + " errors"));
102-
103-
return 0;
104-
})
105-
);
106-
});
10732
}
10833

10934
public static ResourceLocation getModdedLocation(String path) {

src/main/java/org/geysermc/rainbow/pack/BedrockPack.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.geysermc.rainbow.mapping.PackContext;
2323
import org.geysermc.rainbow.mapping.geyser.GeyserMappings;
2424
import org.geysermc.rainbow.mixin.SplashRendererAccessor;
25+
import org.geysermc.rainbow.packconverter.PackConverterContext;
2526
import org.jetbrains.annotations.NotNull;
2627

2728
import java.io.FileOutputStream;
@@ -72,6 +73,8 @@ public class BedrockPack {
7273
private final Set<ResourceLocation> modelsMapped = new HashSet<>();
7374
private final IntSet customModelDataMapped = new IntOpenHashSet();
7475

76+
private final PackConverterContext packConverterContext = PackConverterContext.create(this);
77+
7578
private final ProblemReporter.Collector reporter;
7679

7780
public BedrockPack(String name) throws IOException {
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package org.geysermc.rainbow.packconverter;
2+
3+
import net.minecraft.client.Minecraft;
4+
import org.geysermc.pack.converter.pipeline.ConversionContext;
5+
import org.geysermc.pack.converter.util.LogListener;
6+
import org.geysermc.rainbow.Rainbow;
7+
import org.geysermc.rainbow.creative.MinecraftCreativeResourcePack;
8+
import org.geysermc.rainbow.pack.BedrockPack;
9+
import org.jetbrains.annotations.NotNull;
10+
import org.jetbrains.annotations.Nullable;
11+
12+
public record PackConverterContext(String packName, LogListener logListener, MinecraftCreativeResourcePack pack) {
13+
14+
public ConversionContext createConversionContext() {
15+
return new ConversionContext(packName, logListener);
16+
}
17+
18+
public static PackConverterContext create(BedrockPack pack) {
19+
return new PackConverterContext(pack.name(), RainbowLogListener.INSTANCE, new MinecraftCreativeResourcePack(Minecraft.getInstance().getResourceManager()));
20+
}
21+
22+
private static class RainbowLogListener implements LogListener {
23+
private static final LogListener INSTANCE = new RainbowLogListener();
24+
25+
@Override
26+
public void debug(@NotNull String message) {
27+
Rainbow.LOGGER.debug(message);
28+
}
29+
30+
@Override
31+
public void info(@NotNull String message) {
32+
Rainbow.LOGGER.info(message);
33+
}
34+
35+
@Override
36+
public void warn(@NotNull String message) {
37+
Rainbow.LOGGER.warn(message);
38+
}
39+
40+
@Override
41+
public void error(@NotNull String message) {
42+
Rainbow.LOGGER.error(message);
43+
}
44+
45+
@Override
46+
public void error(@NotNull String message, @Nullable Throwable exception) {
47+
Rainbow.LOGGER.error(message, exception);
48+
}
49+
}
50+
}

0 commit comments

Comments
 (0)