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 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
|
||||||
@@ -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() {
|
||||||
|
|||||||
@@ -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 =
|
||||||
|
|||||||
@@ -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 =
|
||||||
|
|||||||
@@ -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 =
|
||||||
|
|||||||
@@ -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 =
|
||||||
|
|||||||
@@ -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 =
|
||||||
|
|||||||
@@ -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 */
|
||||||
|
|||||||
Reference in New Issue
Block a user