Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ plugins {
}

group = 'fr.openmc.riftengine'
version = '0.1-SNAPSHOT'
version = '0.2-SNAPSHOT'

repositories {
mavenCentral()
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# NMS & paper lib
paperWeightUserDevVersion = 2.0.0-beta.22
paperWeightUserDevVersion = 2.0.0-beta.23

# Paper version
minecraftVersion = 26.2
Expand Down
Binary file modified libs/OpenMC.jar
Binary file not shown.
29 changes: 26 additions & 3 deletions src/main/java/fr/openmc/riftengine/core/RiftPlugin.java
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
package fr.openmc.riftengine.core;

import fr.openmc.core.CommandsManager;
import fr.openmc.core.bootstrap.integration.OMCLogger;
import fr.openmc.riftengine.core.commands.GlyphCommand;
import fr.openmc.riftengine.core.converter.ConverterManager;
import fr.openmc.riftengine.core.listeners.LoadAfterItemsAdderListener;
import fr.openmc.riftengine.core.registry.glyphs.GlyphsRegistry;
import lombok.Getter;
import lombok.Setter;
import org.bukkit.event.Listener;
import org.bukkit.plugin.java.JavaPlugin;
import org.geysermc.event.Event;
import org.geysermc.geyser.api.GeyserApi;
Expand All @@ -16,6 +20,8 @@

import java.io.IOException;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;

public class RiftPlugin extends JavaPlugin implements EventRegistrar {
Expand All @@ -28,9 +34,13 @@ public class RiftPlugin extends JavaPlugin implements EventRegistrar {

@Getter
private RiftConfig riftConfig;
public final Path CONFIG_FOLDER = getDataFolder().toPath().resolve("config");

private ConverterManager converterManager;
private final List<Object> commands = new ArrayList<>(List.of(
new GlyphCommand()
));

private ConverterManager converterManager;
public static final int[] RP_VERSION = new int[] {1,0};

@Override
Expand All @@ -51,10 +61,18 @@ public void onEnable() {

// * Listeners
registerEvent(SessionLoadResourcePacksEvent.class, this::onLoadResourcePacks);
registerListener(
new LoadAfterItemsAdderListener()
);

// * Commands
for (Object command : commands) {
CommandsManager.getHandler().register(command);
}

GlyphsRegistry glyphsRegistry = RiftRegistry.GLYPHS;
OMCLogger.info("RiftEngine activé!");
OMCLogger.infoFormatted(glyphsRegistry.size() + "/" + glyphsRegistry.maxSize() + "glyphs enregistré");
OMCLogger.infoFormatted(glyphsRegistry.size() + "/" + glyphsRegistry.maxSize() + " glyphs enregistré");
OMCLogger.infoFormatted("Glyphs : " + glyphsRegistry.values());
}

Expand Down Expand Up @@ -83,7 +101,12 @@ public void onLoadResourcePacks(SessionLoadResourcePacksEvent event) {

event.register(pack, PriorityOption.HIGHEST);

OMCLogger.successFormatted("RiftEngine: pack registered !");
OMCLogger.successFormatted("RiftEngine: pack enregistré !");
}

public void registerListener(Listener... listeners) {
for (Listener listener : listeners)
this.getServer().getPluginManager().registerEvents(listener, this);
}

public <T extends Event> void registerEvent(Class<T> listenerClass, Consumer<T> handler) {
Expand Down
5 changes: 5 additions & 0 deletions src/main/java/fr/openmc/riftengine/core/RiftRegistry.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import fr.openmc.core.bootstrap.registries.RegistryLoadingType;
import fr.openmc.riftengine.core.registry.glyphs.GlyphsRegistry;
import fr.openmc.riftengine.core.registry.mapping.MappingRegistry;
import fr.openmc.riftengine.core.registry.scanner.ScannerRegistry;

import java.util.ArrayList;
import java.util.Arrays;
Expand All @@ -16,6 +17,7 @@ public final class RiftRegistry {
// * Registre globaux
public static MappingRegistry MAPPINGS;
public static GlyphsRegistry GLYPHS;
public static ScannerRegistry SCANNERS;

private static final List<LifecycleRegistry> LOADED = new ArrayList<>();

Expand All @@ -25,6 +27,9 @@ public final class RiftRegistry {
RegistryLoadingType.RUNTIME),
new RegistryContext(
() -> GLYPHS = new GlyphsRegistry(),
RegistryLoadingType.RUNTIME),
new RegistryContext(
() -> SCANNERS = new ScannerRegistry(),
RegistryLoadingType.RUNTIME)
);

Expand Down
24 changes: 24 additions & 0 deletions src/main/java/fr/openmc/riftengine/core/commands/GlyphCommand.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package fr.openmc.riftengine.core.commands;

import fr.openmc.riftengine.core.RiftRegistry;
import fr.openmc.riftengine.core.commands.autocomplete.GlyphAutocomplete;
import fr.openmc.shaded.revxrsal.commands.annotation.Command;
import fr.openmc.shaded.revxrsal.commands.annotation.Subcommand;
import fr.openmc.shaded.revxrsal.commands.annotation.SuggestWith;
import fr.openmc.shaded.revxrsal.commands.bukkit.annotation.CommandPermission;
import org.bukkit.entity.Player;

@Command({"glyph", "remoji"})
@CommandPermission("omc.commands.rift.glyph")
public class GlyphCommand {
@Subcommand("test")
@CommandPermission("omc.commands.rift.glyph.set")
public void set(
Player player,
@SuggestWith(GlyphAutocomplete.class) String namespacedId
) {
if (RiftRegistry.GLYPHS.get(namespacedId).isEmpty()) return;

player.sendMessage("caractere mis : " + RiftRegistry.GLYPHS.get(namespacedId).get().getBedrockChar());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package fr.openmc.riftengine.core.commands.autocomplete;

import fr.openmc.riftengine.core.RiftRegistry;
import fr.openmc.riftengine.core.registry.glyphs.Glyph;
import fr.openmc.shaded.revxrsal.commands.autocomplete.SuggestionProvider;
import fr.openmc.shaded.revxrsal.commands.bukkit.actor.BukkitCommandActor;
import fr.openmc.shaded.revxrsal.commands.node.ExecutionContext;
import org.jetbrains.annotations.NotNull;

import java.util.List;

public class GlyphAutocomplete implements SuggestionProvider<BukkitCommandActor> {

@Override
public @NotNull List<String> getSuggestions(@NotNull ExecutionContext<BukkitCommandActor> context) {
return RiftRegistry.GLYPHS.values()
.stream()
.map(Glyph::getNamespacedId)
.toList();
}
}
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
package fr.openmc.riftengine.core.converter;

import fr.openmc.core.bootstrap.integration.OMCLogger;
import fr.openmc.core.utils.FilesUtils;
import fr.openmc.riftengine.core.RiftConfig;
import fr.openmc.riftengine.core.RiftPlugin;
import fr.openmc.riftengine.core.converter.writers.PackWriter;
import fr.openmc.riftengine.core.converter.writers.font.FontWriter;
import fr.openmc.riftengine.core.converter.writers.glyph.font.FontWriter;
import fr.openmc.riftengine.core.converter.writers.glyph.icons.IconsWriter;
import fr.openmc.riftengine.core.converter.writers.glyph.icons.SymbolWriter;
import fr.openmc.riftengine.core.converter.writers.manifest.IconWriter;
import fr.openmc.riftengine.core.converter.writers.manifest.ManifestWriter;
import fr.openmc.riftengine.core.converter.writers.manifest.PackIdentity;
Expand All @@ -20,6 +23,7 @@
import java.util.ArrayList;
import java.util.List;

// todo: faire un converter manager clean, avec des systemes de step, (surtout du coté logger aussi)
public class ConverterManager {

private final RiftPlugin plugin;
Expand All @@ -30,6 +34,7 @@ public class ConverterManager {
public ConverterManager(RiftPlugin plugin) {
this.plugin = plugin;
RiftConfig config = plugin.getRiftConfig();
Path itemsAdderContents = getItemsAdderContents(plugin);

try {
identity = PackIdentity.loadOrCreate(plugin);
Expand All @@ -38,7 +43,9 @@ public ConverterManager(RiftPlugin plugin) {
new ManifestWriter(identity),
new TranslationInjector(),
new FontWriter(),
new ScoreboardUiWriter(config.isHideScoreboardNumberBedrock())
new ScoreboardUiWriter(config.isHideScoreboardNumberBedrock()),
new IconsWriter(itemsAdderContents),
new SymbolWriter()
));
} catch (Exception e) {
throw new RuntimeException("Erreur lors d'initialisation du ConverterManager", e);
Expand All @@ -52,6 +59,7 @@ public Path generateConvertedPack() throws IOException {
Path javaPackPath = getJavaPackPath(RiftPlugin.getInstance());

Path outputDir = plugin.getDataFolder().toPath().resolve("output");
FilesUtils.deleteDirectory(outputDir.toFile());
Files.createDirectories(outputDir);

Path workDir = outputDir.resolve("internal");
Expand Down Expand Up @@ -81,4 +89,12 @@ public static Path getJavaPackPath(JavaPlugin plugin) {

return generatedDir.toPath();
}

public static Path getItemsAdderContents(JavaPlugin plugin) {
File pluginsDir = plugin.getDataFolder().getParentFile(); // * root/plugins/
File itemsAdderDir = new File(pluginsDir, "ItemsAdder"); // * root/plugins/ItemsAdder
File contentDir = new File(itemsAdderDir, "contents"); // * root/plugins/ItemsAdder/output

return contentDir.toPath();
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package fr.openmc.riftengine.core.converter.writers.font;
package fr.openmc.riftengine.core.converter.writers.glyph.font;

import com.google.gson.JsonArray;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package fr.openmc.riftengine.core.converter.writers.font;
package fr.openmc.riftengine.core.converter.writers.glyph.font;

import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
Expand Down Expand Up @@ -50,15 +50,17 @@ public void write(Path bedrockRootPath, Path javaRootPath) throws IOException {
String file = IdentifierUtils.normalizeId(provider.get("file").getAsString());

fontNamespace = file.split(":")[0];
fontId = file.split(":")[1]
.replace("font/", "")
.replace(".png", "");
fontPng = javaRootPath
.resolve("assets")
.resolve(file.split(":")[0])
.resolve("textures")
.resolve(file.split(":")[1])
.toFile();

if (file.split(":").length == 2) {
fontId = file.split(":")[1]
.replace("font/", "")
.replace(".png", "");
} else {
fontId = file
.replace("font/", "")
.replace(".png", "");
}
fontPng = IdentifierUtils.resolveTextureId(javaRootPath, file).toFile();
fontsChar = provider.getAsJsonArray("chars");
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package fr.openmc.riftengine.core.converter.writers.glyph.icons;

public class IconsRegrouperUtils {

private final static int[] GROUP_SIZE = {8, 16, 20, 24, 32, 48, 64, 96, 128, 192, 256, 512};

/**
* Utilitaire pour choisir la meilleur dimension dans lequel mettre l'emoji/icons
* @param maxDim la dimension maximale que l'on peut mettre
* @return la dimension la plus proche de maxDim
*/
public static int pickBestSize(int maxDim) {
for (int size : GROUP_SIZE) {
if (maxDim <= size) {
return size;
}
}

return GROUP_SIZE[GROUP_SIZE.length - 1];
}
}
Loading
Loading