Use org.reflections to get all subclass of MineClassImpl in order to avoid the declaration inside the MineClassFactory
This commit is contained in:
24
build.gradle
24
build.gradle
@@ -1,5 +1,16 @@
|
||||
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'
|
||||
|
||||
group = 'net.babamod'
|
||||
@@ -22,6 +33,7 @@ repositories {
|
||||
|
||||
dependencies {
|
||||
compileOnly 'org.spigotmc:spigot-api:1.16.3-R0.1-SNAPSHOT'
|
||||
compile group: 'org.reflections', name: 'reflections', version: '0.9.10'
|
||||
}
|
||||
|
||||
processResources {
|
||||
@@ -29,3 +41,15 @@ processResources {
|
||||
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
|
||||
@@ -5,13 +5,12 @@ import net.babamod.mineclass.commands.CommandClass;
|
||||
import net.babamod.mineclass.listeners.MineClassListeners;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.PluginCommand;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public final class Mineclass extends JavaPlugin implements Listener {
|
||||
public final class Mineclass extends JavaPlugin {
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
|
||||
@@ -11,6 +11,7 @@ import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public class BeastMasterClass extends MineClassImpl {
|
||||
|
||||
private static final Set<Material> forbiddenItems =
|
||||
|
||||
@@ -10,6 +10,7 @@ import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public class DwarfClass extends MineClassImpl {
|
||||
|
||||
private final Set<Material> forbiddenItems =
|
||||
|
||||
@@ -10,6 +10,7 @@ import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public class ElfClass extends MineClassImpl {
|
||||
|
||||
private static final Set<Material> forbiddenItems =
|
||||
|
||||
@@ -13,6 +13,7 @@ import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public class EnderElfClass extends MineClassImpl {
|
||||
|
||||
private static final Set<Material> forbiddenItems =
|
||||
|
||||
@@ -10,6 +10,7 @@ import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public class FireDwarfClass extends MineClassImpl {
|
||||
|
||||
private static final Set<Material> forbiddenItems =
|
||||
|
||||
@@ -1,11 +1,14 @@
|
||||
package net.babamod.mineclass.classes;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.bukkit.potion.PotionEffect;
|
||||
import org.reflections.Reflections;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.logging.Level;
|
||||
|
||||
public class MineClassFactory {
|
||||
/** Instance unique pré-initialisée */
|
||||
@@ -16,11 +19,15 @@ public class MineClassFactory {
|
||||
/** Constructeur privé */
|
||||
private MineClassFactory() {
|
||||
availableClasses = new HashMap<>();
|
||||
availableClasses.put("dwarf", new DwarfClass());
|
||||
availableClasses.put("elf", new ElfClass());
|
||||
availableClasses.put("fire_dwarf", new FireDwarfClass());
|
||||
availableClasses.put("ender_elf", new EnderElfClass());
|
||||
availableClasses.put("beast_master", new BeastMasterClass());
|
||||
// Reflecting all MineClass classes and instantiates them with there codes
|
||||
for (Class<? extends MineClassImpl> aClass : new Reflections().getSubTypesOf(MineClassImpl.class)) {
|
||||
try {
|
||||
MineClass mineClass = aClass.newInstance();
|
||||
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 */
|
||||
|
||||
Reference in New Issue
Block a user