Use org.reflections to get all subclass of MineClassImpl in order to avoid the declaration inside the MineClassFactory

This commit is contained in:
Barazok
2020-10-26 01:08:08 +01:00
parent fbbd602333
commit 504db76550
8 changed files with 42 additions and 7 deletions

View File

@@ -1,5 +1,16 @@
import org.apache.tools.ant.filters.ReplaceTokens import org.apache.tools.ant.filters.ReplaceTokens
import com.github.jengelman.gradle.plugins.shadow.tasks.ConfigureShadowRelocation
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.github.jengelman.gradle.plugins:shadow:5.1.0'
}
}
apply plugin: 'com.github.johnrengelman.shadow'
apply plugin: 'java' apply plugin: 'java'
group = 'net.babamod' group = 'net.babamod'
@@ -22,6 +33,7 @@ repositories {
dependencies { dependencies {
compileOnly 'org.spigotmc:spigot-api:1.16.3-R0.1-SNAPSHOT' compileOnly 'org.spigotmc:spigot-api:1.16.3-R0.1-SNAPSHOT'
compile group: 'org.reflections', name: 'reflections', version: '0.9.10'
} }
processResources { processResources {
@@ -29,3 +41,15 @@ processResources {
filter ReplaceTokens, tokens: [version: version] filter ReplaceTokens, tokens: [version: version]
} }
} }
shadowJar {
archiveBaseName.set('mineclass')
archiveClassifier.set('')
archiveVersion.set('')
}
task relocateShadowJar(type: ConfigureShadowRelocation) {
target = tasks.shadowJar
}
tasks.shadowJar.dependsOn tasks.relocateShadowJar

View File

@@ -5,13 +5,12 @@ import net.babamod.mineclass.commands.CommandClass;
import net.babamod.mineclass.listeners.MineClassListeners; import net.babamod.mineclass.listeners.MineClassListeners;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.command.PluginCommand; import org.bukkit.command.PluginCommand;
import org.bukkit.event.Listener;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
public final class Mineclass extends JavaPlugin implements Listener { public final class Mineclass extends JavaPlugin {
@Override @Override
public void onEnable() { public void onEnable() {

View File

@@ -11,6 +11,7 @@ import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream; import java.util.stream.Stream;
@SuppressWarnings("unused")
public class BeastMasterClass extends MineClassImpl { public class BeastMasterClass extends MineClassImpl {
private static final Set<Material> forbiddenItems = private static final Set<Material> forbiddenItems =

View File

@@ -10,6 +10,7 @@ import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream; import java.util.stream.Stream;
@SuppressWarnings("unused")
public class DwarfClass extends MineClassImpl { public class DwarfClass extends MineClassImpl {
private final Set<Material> forbiddenItems = private final Set<Material> forbiddenItems =

View File

@@ -10,6 +10,7 @@ import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream; import java.util.stream.Stream;
@SuppressWarnings("unused")
public class ElfClass extends MineClassImpl { public class ElfClass extends MineClassImpl {
private static final Set<Material> forbiddenItems = private static final Set<Material> forbiddenItems =

View File

@@ -13,6 +13,7 @@ import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream; import java.util.stream.Stream;
@SuppressWarnings("unused")
public class EnderElfClass extends MineClassImpl { public class EnderElfClass extends MineClassImpl {
private static final Set<Material> forbiddenItems = private static final Set<Material> forbiddenItems =

View File

@@ -10,6 +10,7 @@ import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream; import java.util.stream.Stream;
@SuppressWarnings("unused")
public class FireDwarfClass extends MineClassImpl { public class FireDwarfClass extends MineClassImpl {
private static final Set<Material> forbiddenItems = private static final Set<Material> forbiddenItems =

View File

@@ -1,11 +1,14 @@
package net.babamod.mineclass.classes; package net.babamod.mineclass.classes;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffect;
import org.reflections.Reflections;
import java.util.*; import java.util.*;
import java.util.logging.Level;
public class MineClassFactory { public class MineClassFactory {
/** Instance unique pré-initialisée */ /** Instance unique pré-initialisée */
@@ -16,11 +19,15 @@ public class MineClassFactory {
/** Constructeur privé */ /** Constructeur privé */
private MineClassFactory() { private MineClassFactory() {
availableClasses = new HashMap<>(); availableClasses = new HashMap<>();
availableClasses.put("dwarf", new DwarfClass()); // Reflecting all MineClass classes and instantiates them with there codes
availableClasses.put("elf", new ElfClass()); for (Class<? extends MineClassImpl> aClass : new Reflections().getSubTypesOf(MineClassImpl.class)) {
availableClasses.put("fire_dwarf", new FireDwarfClass()); try {
availableClasses.put("ender_elf", new EnderElfClass()); MineClass mineClass = aClass.newInstance();
availableClasses.put("beast_master", new BeastMasterClass()); availableClasses.put(mineClass.getCode(), mineClass);
} catch (InstantiationException | IllegalAccessException e) {
Bukkit.getLogger().log(Level.WARNING, e.getMessage());
}
}
} }
/** Point d'accès pour l'instance unique du singleton */ /** Point d'accès pour l'instance unique du singleton */