implement TerraPlugin#getMods

This commit is contained in:
dfsek
2021-05-22 23:09:30 -07:00
parent fa164e5281
commit 34947c2168
8 changed files with 122 additions and 0 deletions

View File

@@ -4,6 +4,7 @@ import com.dfsek.terra.api.addons.TerraAddon;
import com.dfsek.terra.api.event.EventManager;
import com.dfsek.terra.api.platform.handle.ItemHandle;
import com.dfsek.terra.api.platform.handle.WorldHandle;
import com.dfsek.terra.api.platform.modloader.Mod;
import com.dfsek.terra.api.platform.world.World;
import com.dfsek.terra.api.registry.CheckedRegistry;
import com.dfsek.terra.api.registry.LockedRegistry;
@@ -19,6 +20,8 @@ import com.dfsek.terra.world.TerraWorld;
import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;
import java.util.Collections;
import java.util.Set;
import java.util.jar.JarFile;
/**
@@ -75,4 +78,8 @@ public interface TerraPlugin extends LoaderRegistrar {
default JarFile getModJar() throws URISyntaxException, IOException {
return JarUtil.getJarFile();
}
default Set<Mod> getMods() {
return Collections.emptySet();
}
}

View File

@@ -0,0 +1,9 @@
package com.dfsek.terra.api.platform.modloader;
public interface Mod {
String getID();
String getVersion();
String getName();
}

View File

@@ -0,0 +1,27 @@
package com.dfsek.terra.bukkit;
import com.dfsek.terra.api.platform.modloader.Mod;
import org.bukkit.plugin.Plugin;
public class BukkitPlugin implements Mod {
private final Plugin plugin;
public BukkitPlugin(Plugin plugin) {
this.plugin = plugin;
}
@Override
public String getID() {
return plugin.getName();
}
@Override
public String getVersion() {
return plugin.getDescription().getVersion();
}
@Override
public String getName() {
return plugin.getName();
}
}

View File

@@ -14,6 +14,7 @@ import com.dfsek.terra.api.event.TerraEventManager;
import com.dfsek.terra.api.platform.block.BlockData;
import com.dfsek.terra.api.platform.handle.ItemHandle;
import com.dfsek.terra.api.platform.handle.WorldHandle;
import com.dfsek.terra.api.platform.modloader.Mod;
import com.dfsek.terra.api.platform.world.Biome;
import com.dfsek.terra.api.platform.world.World;
import com.dfsek.terra.api.registry.CheckedRegistry;
@@ -57,9 +58,12 @@ import org.bukkit.plugin.java.JavaPlugin;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors;
public class TerraBukkitPlugin extends JavaPlugin implements TerraPlugin {
@@ -306,6 +310,11 @@ public class TerraBukkitPlugin extends JavaPlugin implements TerraPlugin {
genericLoaders.register(registry);
}
@Override
public Set<Mod> getMods() {
return Arrays.stream(Bukkit.getPluginManager().getPlugins()).map(BukkitPlugin::new).collect(Collectors.toSet());
}
@Override
public LockedRegistry<TerraAddon> getAddons() {
return addonLockedRegistry;

View File

@@ -0,0 +1,28 @@
package com.dfsek.terra.fabric;
import com.dfsek.terra.api.platform.modloader.Mod;
import net.fabricmc.loader.api.ModContainer;
public class FabricMod implements Mod {
private final ModContainer mod;
public FabricMod(ModContainer mod) {
this.mod = mod;
}
@Override
public String getID() {
return mod.getMetadata().getId();
}
@Override
public String getVersion() {
return mod.getMetadata().getVersion().getFriendlyString();
}
@Override
public String getName() {
return mod.getMetadata().getName();
}
}

View File

@@ -21,6 +21,7 @@ import com.dfsek.terra.api.event.events.config.ConfigPackPreLoadEvent;
import com.dfsek.terra.api.platform.block.BlockData;
import com.dfsek.terra.api.platform.handle.ItemHandle;
import com.dfsek.terra.api.platform.handle.WorldHandle;
import com.dfsek.terra.api.platform.modloader.Mod;
import com.dfsek.terra.api.platform.world.Tree;
import com.dfsek.terra.api.platform.world.World;
import com.dfsek.terra.api.registry.CheckedRegistry;
@@ -74,6 +75,8 @@ import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
public class TerraFabricPlugin implements TerraPlugin, ModInitializer {
@@ -285,6 +288,11 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer {
return eventManager;
}
@Override
public Set<Mod> getMods() {
return FabricLoader.getInstance().getAllMods().stream().map(FabricMod::new).collect(Collectors.toSet());
}
@Override
public Profiler getProfiler() {
return profiler;

View File

@@ -0,0 +1,27 @@
package com.dfsek.terra.forge;
import com.dfsek.terra.api.platform.modloader.Mod;
import net.minecraftforge.fml.loading.moddiscovery.ModInfo;
public class ForgeMod implements Mod {
private final ModInfo mod;
public ForgeMod(ModInfo mod) {
this.mod = mod;
}
@Override
public String getID() {
return mod.getModId();
}
@Override
public String getVersion() {
return mod.getVersion().getQualifier();
}
@Override
public String getName() {
return mod.getDisplayName();
}
}

View File

@@ -79,7 +79,9 @@ import java.nio.file.Paths;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.jar.JarFile;
import java.util.stream.Collectors;
import java.util.zip.ZipFile;
@Mod("terra")
@@ -304,6 +306,11 @@ public class TerraForgePlugin implements TerraPlugin {
return eventManager;
}
@Override
public Set<com.dfsek.terra.api.platform.modloader.Mod> getMods() {
return net.minecraftforge.fml.ModList.get().getMods().stream().map(ForgeMod::new).collect(Collectors.toSet());
}
@Override
public Profiler getProfiler() {
return profiler;