diff --git a/src/com/massivecraft/massivecore/Button.java b/src/com/massivecraft/massivecore/Button.java index 3298a807..20bdaa29 100644 --- a/src/com/massivecraft/massivecore/Button.java +++ b/src/com/massivecraft/massivecore/Button.java @@ -2,7 +2,7 @@ package com.massivecraft.massivecore; import com.massivecraft.massivecore.collections.MassiveList; import com.massivecraft.massivecore.command.MassiveCommand; -import com.massivecraft.massivecore.command.massivecore.CmdMassiveCore; +import com.massivecraft.massivecore.cmd.CmdMassiveCore; import com.massivecraft.massivecore.command.requirement.Requirement; import com.massivecraft.massivecore.command.requirement.RequirementAbstract; import com.massivecraft.massivecore.command.requirement.RequirementIsPlayer; diff --git a/src/com/massivecraft/massivecore/Engine.java b/src/com/massivecraft/massivecore/Engine.java index 86d3e631..453b8aac 100644 --- a/src/com/massivecraft/massivecore/Engine.java +++ b/src/com/massivecraft/massivecore/Engine.java @@ -35,7 +35,7 @@ public abstract class Engine implements Active, Listener, Runnable if (this.hasPlugin()) return; this.plugin = plugin; } - + // -------------------------------------------- // // TASK // -------------------------------------------- // diff --git a/src/com/massivecraft/massivecore/MassiveCore.java b/src/com/massivecraft/massivecore/MassiveCore.java index 408a63b2..fdff1225 100644 --- a/src/com/massivecraft/massivecore/MassiveCore.java +++ b/src/com/massivecraft/massivecore/MassiveCore.java @@ -28,70 +28,18 @@ import com.massivecraft.massivecore.collections.MassiveTreeMap; import com.massivecraft.massivecore.collections.MassiveTreeMapDef; import com.massivecraft.massivecore.collections.MassiveTreeSet; import com.massivecraft.massivecore.collections.MassiveTreeSetDef; -import com.massivecraft.massivecore.command.massivecore.CmdMassiveCore; -import com.massivecraft.massivecore.command.massivecore.CmdMassiveCoreBuffer; -import com.massivecraft.massivecore.command.massivecore.CmdMassiveCoreClick; -import com.massivecraft.massivecore.command.massivecore.CmdMassiveCoreCmdurl; -import com.massivecraft.massivecore.command.massivecore.CmdMassiveCoreStore; -import com.massivecraft.massivecore.command.massivecore.CmdMassiveCoreUsys; import com.massivecraft.massivecore.command.type.RegistryType; -import com.massivecraft.massivecore.engine.EngineMassiveCoreChestGui; -import com.massivecraft.massivecore.engine.EngineMassiveCoreCollTick; -import com.massivecraft.massivecore.engine.EngineMassiveCoreCommandRegistration; -import com.massivecraft.massivecore.engine.EngineMassiveCoreCommandSet; -import com.massivecraft.massivecore.engine.EngineMassiveCoreDatabase; -import com.massivecraft.massivecore.engine.EngineMassiveCoreDestination; -import com.massivecraft.massivecore.engine.EngineMassiveCoreGank; -import com.massivecraft.massivecore.engine.EngineMassiveCoreLorePriority; -import com.massivecraft.massivecore.engine.EngineMassiveCoreMain; -import com.massivecraft.massivecore.engine.EngineMassiveCorePlayerLeave; -import com.massivecraft.massivecore.engine.EngineMassiveCorePlayerState; -import com.massivecraft.massivecore.engine.EngineMassiveCorePlayerUpdate; -import com.massivecraft.massivecore.engine.EngineMassiveCoreScheduledTeleport; -import com.massivecraft.massivecore.engine.EngineMassiveCoreSponsor; -import com.massivecraft.massivecore.engine.EngineMassiveCoreTeleportMixinCause; -import com.massivecraft.massivecore.engine.EngineMassiveCoreVariable; -import com.massivecraft.massivecore.engine.EngineMassiveCoreWorldNameSet; -import com.massivecraft.massivecore.integration.liability.IntegrationLiabilityAreaEffectCloud; -import com.massivecraft.massivecore.integration.vault.IntegrationVault; import com.massivecraft.massivecore.item.DataBannerPattern; import com.massivecraft.massivecore.item.WriterItemStack; -import com.massivecraft.massivecore.mixin.MixinActionbar; -import com.massivecraft.massivecore.mixin.MixinActual; -import com.massivecraft.massivecore.mixin.MixinCommand; -import com.massivecraft.massivecore.mixin.MixinDisplayName; import com.massivecraft.massivecore.mixin.MixinEvent; -import com.massivecraft.massivecore.mixin.MixinGamemode; -import com.massivecraft.massivecore.mixin.MixinInventory; -import com.massivecraft.massivecore.mixin.MixinKick; -import com.massivecraft.massivecore.mixin.MixinLog; -import com.massivecraft.massivecore.mixin.MixinMassiveCraftPremium; -import com.massivecraft.massivecore.mixin.MixinMessage; -import com.massivecraft.massivecore.mixin.MixinModification; -import com.massivecraft.massivecore.mixin.MixinPlayed; -import com.massivecraft.massivecore.mixin.MixinSenderPs; -import com.massivecraft.massivecore.mixin.MixinTeleport; -import com.massivecraft.massivecore.mixin.MixinTitle; -import com.massivecraft.massivecore.mixin.MixinVisibility; -import com.massivecraft.massivecore.mixin.MixinWorld; import com.massivecraft.massivecore.mson.Mson; import com.massivecraft.massivecore.mson.MsonEvent; -import com.massivecraft.massivecore.nms.NmsBasics; -import com.massivecraft.massivecore.nms.NmsBoard; -import com.massivecraft.massivecore.nms.NmsChat; -import com.massivecraft.massivecore.nms.NmsEntityDamageEvent; -import com.massivecraft.massivecore.nms.NmsEntityGet; -import com.massivecraft.massivecore.nms.NmsItemStackCreate; import com.massivecraft.massivecore.nms.NmsItemStackCreate17R4P; -import com.massivecraft.massivecore.nms.NmsItemStackTooltip; -import com.massivecraft.massivecore.nms.NmsPermissions; -import com.massivecraft.massivecore.nms.NmsPlayerInventoryCreate; -import com.massivecraft.massivecore.nms.NmsSkullMeta; import com.massivecraft.massivecore.ps.PS; import com.massivecraft.massivecore.ps.PSAdapter; +import com.massivecraft.massivecore.store.Coll; import com.massivecraft.massivecore.store.ModificationPollerLocal; import com.massivecraft.massivecore.store.ModificationPollerRemote; -import com.massivecraft.massivecore.test.TestTypeEnchantment; import com.massivecraft.massivecore.util.BoardUtil; import com.massivecraft.massivecore.util.ContainerUtil; import com.massivecraft.massivecore.util.EventUtil; @@ -123,6 +71,7 @@ import org.bukkit.inventory.PlayerInventory; import java.lang.reflect.Modifier; import java.lang.reflect.Type; +import java.util.List; import java.util.Map.Entry; import java.util.Random; import java.util.Set; @@ -197,7 +146,7 @@ public class MassiveCore extends MassivePlugin ret.registerTypeAdapter(PS.class, PSAdapter.get()); ret.registerTypeAdapter(Sound.class, AdapterSound.get()); ret.registerTypeAdapter(UUID.class, AdapterUUID.get()); - + // Mson ret.registerTypeAdapter(Mson.class, AdapterMson.get()); ret.registerTypeAdapter(MsonEvent.class, AdapterMsonEvent.get()); @@ -277,87 +226,19 @@ public class MassiveCore extends MassivePlugin RegistryType.registerAll(); // Activate + this.activateAuto(); + + // These must be activated after nms this.activate( - // Coll - MultiverseColl.class, - AspectColl.class, - MassiveCoreMConfColl.class, - MassiveCoreMSponsorInfoColl.class, - - // Nms - NmsBasics.class, - NmsBoard.class, - NmsChat.class, - NmsEntityDamageEvent.class, - NmsEntityGet.class, - NmsItemStackCreate.class, - NmsItemStackTooltip.class, - NmsPermissions.class, - NmsPlayerInventoryCreate.class, - NmsSkullMeta.class, - + // Writer, WriterItemStack.class, - - // Engine - EngineMassiveCoreChestGui.class, - EngineMassiveCoreCollTick.class, - EngineMassiveCoreCommandRegistration.class, - EngineMassiveCoreCommandSet.class, - EngineMassiveCoreDatabase.class, - EngineMassiveCoreDestination.class, - EngineMassiveCoreGank.class, - EngineMassiveCoreLorePriority.class, - EngineMassiveCoreMain.class, - EngineMassiveCorePlayerLeave.class, - EngineMassiveCorePlayerState.class, - EngineMassiveCorePlayerUpdate.class, - EngineMassiveCoreScheduledTeleport.class, - EngineMassiveCoreTeleportMixinCause.class, - EngineMassiveCoreVariable.class, - EngineMassiveCoreWorldNameSet.class, - EngineMassiveCoreSponsor.class, // Util PlayerUtil.class, - BoardUtil.class, - - // Integration - IntegrationVault.class, - IntegrationLiabilityAreaEffectCloud.class, - - // Command - CmdMassiveCore.class, - CmdMassiveCoreUsys.class, - CmdMassiveCoreStore.class, - CmdMassiveCoreBuffer.class, - CmdMassiveCoreCmdurl.class, - CmdMassiveCoreClick.class, - - // Mixin - MixinEvent.class, // NOTE: Should be first - MixinActionbar.class, - MixinActual.class, - MixinCommand.class, - MixinDisplayName.class, - MixinGamemode.class, - MixinInventory.class, - MixinKick.class, - MixinLog.class, - MixinMassiveCraftPremium.class, - MixinMessage.class, - MixinModification.class, - MixinPlayed.class, - MixinSenderPs.class, - MixinTeleport.class, - MixinTitle.class, - MixinVisibility.class, - MixinWorld.class, - - // Test - TestTypeEnchantment.class + BoardUtil.class ); - + // Start the examine threads // Start AFTER initializing the MConf, because they rely on the MConf. ModificationPollerLocal.get().start(); @@ -367,6 +248,25 @@ public class MassiveCore extends MassivePlugin MassiveCoreTaskDeleteFiles.get().run(); Bukkit.getScheduler().scheduleSyncDelayedTask(this, MassiveCoreTaskDeleteFiles.get()); } + + @Override + public List> getClassesActiveColls() + { + List> ret = this.getClassesActive(null, Coll.class); + + return ret; + } + + @Override + public List> getClassesActiveMixins() + { + List> ret = super.getClassesActiveMixins(); + + ret.remove(MixinEvent.class); + ret.add(0, MixinEvent.class); + + return ret; + } // -------------------------------------------- // // DISABLE diff --git a/src/com/massivecraft/massivecore/MassiveCoreMConf.java b/src/com/massivecraft/massivecore/MassiveCoreMConf.java index c3978aa0..5b86a5d2 100644 --- a/src/com/massivecraft/massivecore/MassiveCoreMConf.java +++ b/src/com/massivecraft/massivecore/MassiveCoreMConf.java @@ -143,6 +143,7 @@ public class MassiveCoreMConf extends Entity // -------------------------------------------- // public boolean debugWriters = false; + public boolean debugActives = false; public boolean testsEnabled = false; // -------------------------------------------- // diff --git a/src/com/massivecraft/massivecore/MassiveCoreTaskDeleteFiles.java b/src/com/massivecraft/massivecore/MassiveCoreTaskDeleteFiles.java index d390e225..c65f969f 100644 --- a/src/com/massivecraft/massivecore/MassiveCoreTaskDeleteFiles.java +++ b/src/com/massivecraft/massivecore/MassiveCoreTaskDeleteFiles.java @@ -25,4 +25,4 @@ public class MassiveCoreTaskDeleteFiles implements Runnable } } -} \ No newline at end of file +} diff --git a/src/com/massivecraft/massivecore/MassivePlugin.java b/src/com/massivecraft/massivecore/MassivePlugin.java index 0ebf2b53..dec62b53 100644 --- a/src/com/massivecraft/massivecore/MassivePlugin.java +++ b/src/com/massivecraft/massivecore/MassivePlugin.java @@ -2,7 +2,13 @@ package com.massivecraft.massivecore; import com.massivecraft.massivecore.collections.MassiveList; import com.massivecraft.massivecore.command.MassiveCommand; +import com.massivecraft.massivecore.mixin.Mixin; +import com.massivecraft.massivecore.predicate.Predicate; +import com.massivecraft.massivecore.predicate.PredicateAnd; +import com.massivecraft.massivecore.predicate.PredicateIsClassSingleton; import com.massivecraft.massivecore.store.Coll; +import com.massivecraft.massivecore.store.migrator.MigratorRoot; +import com.massivecraft.massivecore.test.Test; import com.massivecraft.massivecore.util.ReflectionUtil; import com.massivecraft.massivecore.util.Txt; import com.massivecraft.massivecore.xlib.gson.Gson; @@ -14,6 +20,8 @@ import org.bukkit.event.Listener; import org.bukkit.plugin.java.JavaPlugin; import java.io.IOException; +import java.lang.reflect.Modifier; +import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.List; @@ -198,24 +206,59 @@ public abstract class MassivePlugin extends JavaPlugin implements Listener, Name this.log(Txt.parse("Now I suicide!")); Bukkit.getPluginManager().disablePlugin(this); } - + public void activate(Object... objects) { - for (Object object : objects) - { - Active active = asActive(object); - if (active == null) continue; - active.setActive(this); - } + this.activateOne(objects); } - + + // We must get one active at a time because initialisation of some + // can only happen after others have been initialised. + public void activateOne(Object object) + { + boolean debug = MassiveCoreMConf.get() != null && MassiveCoreMConf.get().debugActives; + + // Try collection + if (object instanceof Iterable) + { + Iterable elements = (Iterable) object; + for (Object element : elements) + { + this.activateOne(element); + } + return; + } + + // Try array + if (object instanceof Object[]) + { + Object[] array = (Object[]) object; + activateOne(Arrays.asList(array)); + return; + } + + Active active = asActive(object); + if (active == null) return; + + if (active.isActive()) + { + if (debug) log(Txt.parse("%s is already active.", active.getClass().getSimpleName())); + } + + active.setActive(this); + if (debug) log(Txt.parse("Activating %s.", active.getClass().getSimpleName())); + + } + private static Active asActive(Object object) { + // Active already if (object instanceof Active) { - return (Active)object; + return (Active) object; } - + + // Try string as class name if (object instanceof String) { String string = (String)object; @@ -229,19 +272,21 @@ public abstract class MassivePlugin extends JavaPlugin implements Listener, Name return null; } } - + + // Try class if (object instanceof Class) { Class clazz = (Class)object; if ( ! Active.class.isAssignableFrom(clazz)) throw new IllegalArgumentException("Not Active Class: " + (clazz == null ? "NULL" : clazz)); - + Object instance = ReflectionUtil.getSingletonInstance(clazz); if ( ! (instance instanceof Active)) throw new IllegalArgumentException("Not Active Instance: " + (instance == null ? "NULL" : instance) + " for object: " + (object == null ? "NULL" : object)); - + Active active = (Active)instance; return active; } - + + // No success throw new IllegalArgumentException("Neither Active nor Class: " + object); } @@ -266,10 +311,135 @@ public abstract class MassivePlugin extends JavaPlugin implements Listener, Name active.setActive(false); } } + + // -------------------------------------------- // + // ACTIVATE AUTO + // -------------------------------------------- // + + public void activateAuto() + { + // And activate them + this.activate(getClassesActive()); + } + + public List> getClassesActive() + { + List> ret = new MassiveList<>(); + + // Fill with all kinds of Actives + ret.addAll(this.getClassesActiveMigrators()); + ret.addAll(this.getClassesActiveColls()); + ret.addAll(this.getClassesActiveNms()); + ret.addAll(this.getClassesActiveCommands()); + ret.addAll(this.getClassesActiveEngines()); + ret.addAll(this.getClassesActiveIntegrations()); + ret.addAll(this.getClassesActiveTasks()); + ret.addAll(this.getClassesActiveMixins()); + ret.addAll(this.getClassesActiveTests()); + + return ret; + } + + public List> getClassesActiveColls() + { + return getClassesActive("entity", Coll.class); + } + + public List> getClassesActiveNms() + { + return getClassesActive("nms", Mixin.class, new Predicate>() + { + @Override + public boolean apply(Class clazz) + { + try + { + ReflectionUtil.getField(clazz, "d"); + return true; + } + catch (Exception ex) + { + return false; + } + } + } + ); + } + + public List> getClassesActiveCommands() + { + return getClassesActive("cmd", MassiveCommand.class); + } + + public List> getClassesActiveEngines() + { + return getClassesActive(Engine.class); + } + + public List> getClassesActiveIntegrations() + { + return getClassesActive(Integration.class); + } + + public List> getClassesActiveTasks() + { + return getClassesActive("task", ModuloRepeatTask.class); + } + + public List> getClassesActiveMixins() + { + return getClassesActive(Mixin.class); + } + + public List> getClassesActiveTests() + { + return getClassesActive(Test.class); + } + + public List> getClassesActiveMigrators() + { + return getClassesActive("entity.migrator", MigratorRoot.class); + } + + public List> getClassesActive(Class superClass, Predicate>... predicates) + { + return getClassesActive(superClass.getSimpleName().toLowerCase(), superClass); + } + + @SuppressWarnings("unchecked") + public List> getClassesActive(String packageName, final Class superClass, Predicate>... predicates) + { + if (!Active.class.isAssignableFrom(superClass)) throw new IllegalArgumentException(superClass.getName() + " is not insatnce of Active."); + + packageName = packageName == null ? "" : "." + packageName; + packageName = this.getClass().getPackage().getName() + packageName; + + Predicate predicateCombined = PredicateAnd.get(predicates); + Predicate> predicateNotAbstract = new Predicate>() + { + @Override + public boolean apply(Class type) + { + return !Modifier.isAbstract(type.getModifiers()); + } + }; + Predicate> predicateSubclass = new Predicate>() + { + @Override + public boolean apply(Class type) + { + return superClass.isAssignableFrom(type); + } + }; + Predicate> predicateSingleton = PredicateIsClassSingleton.get(); + + return ReflectionUtil.getPackageClasses(packageName, this.getClassLoader(), true, predicateCombined, predicateNotAbstract, predicateSubclass, predicateSingleton); + } // -------------------------------------------- // // LOGGING // -------------------------------------------- // + private String logPrefixColored = null; private String logPrefixPlain = null; public void log(Object... msg) diff --git a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCore.java b/src/com/massivecraft/massivecore/cmd/CmdMassiveCore.java old mode 100644 new mode 100755 similarity index 97% rename from src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCore.java rename to src/com/massivecraft/massivecore/cmd/CmdMassiveCore.java index 808d7fb0..062e9337 --- a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCore.java +++ b/src/com/massivecraft/massivecore/cmd/CmdMassiveCore.java @@ -1,4 +1,4 @@ -package com.massivecraft.massivecore.command.massivecore; +package com.massivecraft.massivecore.cmd; import com.massivecraft.massivecore.MassiveCore; import com.massivecraft.massivecore.MassiveCoreMConf; diff --git a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreBuffer.java b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreBuffer.java old mode 100644 new mode 100755 similarity index 94% rename from src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreBuffer.java rename to src/com/massivecraft/massivecore/cmd/CmdMassiveCoreBuffer.java index 14fc5bde..31442690 --- a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreBuffer.java +++ b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreBuffer.java @@ -1,4 +1,4 @@ -package com.massivecraft.massivecore.command.massivecore; +package com.massivecraft.massivecore.cmd; import com.massivecraft.massivecore.MassiveCoreMConf; diff --git a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreBufferAdd.java b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreBufferAdd.java old mode 100644 new mode 100755 similarity index 94% rename from src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreBufferAdd.java rename to src/com/massivecraft/massivecore/cmd/CmdMassiveCoreBufferAdd.java index 9177a88d..ce57bc2b --- a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreBufferAdd.java +++ b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreBufferAdd.java @@ -1,4 +1,4 @@ -package com.massivecraft.massivecore.command.massivecore; +package com.massivecraft.massivecore.cmd; import com.massivecraft.massivecore.MassiveException; import com.massivecraft.massivecore.command.type.primitive.TypeString; diff --git a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreBufferClear.java b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreBufferClear.java old mode 100644 new mode 100755 similarity index 86% rename from src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreBufferClear.java rename to src/com/massivecraft/massivecore/cmd/CmdMassiveCoreBufferClear.java index f512dd8b..4b2ab868 --- a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreBufferClear.java +++ b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreBufferClear.java @@ -1,4 +1,4 @@ -package com.massivecraft.massivecore.command.massivecore; +package com.massivecraft.massivecore.cmd; import com.massivecraft.massivecore.engine.EngineMassiveCoreVariable; diff --git a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreBufferPrint.java b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreBufferPrint.java old mode 100644 new mode 100755 similarity index 90% rename from src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreBufferPrint.java rename to src/com/massivecraft/massivecore/cmd/CmdMassiveCoreBufferPrint.java index 3ff4d734..e83cb05f --- a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreBufferPrint.java +++ b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreBufferPrint.java @@ -1,4 +1,4 @@ -package com.massivecraft.massivecore.command.massivecore; +package com.massivecraft.massivecore.cmd; import com.massivecraft.massivecore.engine.EngineMassiveCoreVariable; diff --git a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreBufferSet.java b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreBufferSet.java old mode 100644 new mode 100755 similarity index 93% rename from src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreBufferSet.java rename to src/com/massivecraft/massivecore/cmd/CmdMassiveCoreBufferSet.java index 916ee7bd..6289d2d0 --- a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreBufferSet.java +++ b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreBufferSet.java @@ -1,4 +1,4 @@ -package com.massivecraft.massivecore.command.massivecore; +package com.massivecraft.massivecore.cmd; import com.massivecraft.massivecore.MassiveException; import com.massivecraft.massivecore.command.type.primitive.TypeString; diff --git a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreBufferWhitespace.java b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreBufferWhitespace.java old mode 100644 new mode 100755 similarity index 94% rename from src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreBufferWhitespace.java rename to src/com/massivecraft/massivecore/cmd/CmdMassiveCoreBufferWhitespace.java index 8cc7ecde..ad0af92d --- a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreBufferWhitespace.java +++ b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreBufferWhitespace.java @@ -1,4 +1,4 @@ -package com.massivecraft.massivecore.command.massivecore; +package com.massivecraft.massivecore.cmd; import com.massivecraft.massivecore.MassiveException; import com.massivecraft.massivecore.command.type.primitive.TypeInteger; diff --git a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreClick.java b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreClick.java old mode 100644 new mode 100755 similarity index 95% rename from src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreClick.java rename to src/com/massivecraft/massivecore/cmd/CmdMassiveCoreClick.java index 816b60c9..a6b5fb0e --- a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreClick.java +++ b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreClick.java @@ -1,4 +1,4 @@ -package com.massivecraft.massivecore.command.massivecore; +package com.massivecraft.massivecore.cmd; import com.massivecraft.massivecore.MassiveCoreMConf; import com.massivecraft.massivecore.MassiveException; diff --git a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreCmdurl.java b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreCmdurl.java old mode 100644 new mode 100755 similarity index 94% rename from src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreCmdurl.java rename to src/com/massivecraft/massivecore/cmd/CmdMassiveCoreCmdurl.java index e7954388..6f44758f --- a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreCmdurl.java +++ b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreCmdurl.java @@ -1,127 +1,128 @@ -package com.massivecraft.massivecore.command.massivecore; - -import com.massivecraft.massivecore.MassiveCore; -import com.massivecraft.massivecore.MassiveCoreMConf; -import com.massivecraft.massivecore.MassiveException; -import com.massivecraft.massivecore.command.requirement.RequirementIsPlayer; -import com.massivecraft.massivecore.command.type.primitive.TypeString; -import com.massivecraft.massivecore.mixin.MixinMessage; -import com.massivecraft.massivecore.util.WebUtil; -import org.bukkit.Bukkit; -import org.bukkit.entity.Player; - -import java.net.MalformedURLException; -import java.net.URL; -import java.util.List; - -public class CmdMassiveCoreCmdurl extends MassiveCoreCommand -{ - // -------------------------------------------- // - // INSTANCE - // -------------------------------------------- // - - private static CmdMassiveCoreCmdurl i = new CmdMassiveCoreCmdurl() { public List getAliases() { return MassiveCoreMConf.get().aliasesCmdurl; } }; - public static CmdMassiveCoreCmdurl get() { return i; } - - // -------------------------------------------- // - // CONSTRUCT - // -------------------------------------------- // - - public CmdMassiveCoreCmdurl() - { - // Parameters - this.addParameter(TypeString.get(), "url").setDesc("the url to load"); - - // Requirements - this.addRequirements(RequirementIsPlayer.get()); - } - - // -------------------------------------------- // - // OVERRIDE - // -------------------------------------------- // - - @Override - public void perform() throws MassiveException - { - // Args - String urlString = this.readArg(); - - final URL url; - try - { - url = new URL(urlString); - } - catch (MalformedURLException e) - { - msg("Malformed URL: %s", e.getMessage()); - return; - } - - // Apply - final Player commander = me; - msg("Loading %s ...", urlString); - async(new Runnable() - { - @Override - public void run() - { - try - { - final List lines = WebUtil.getLines(url); - sync(new Runnable() - { - @Override - public void run() - { - MixinMessage.get().msgOne(commander, "... %d lines loaded. Now executing ...", lines.size()); - for (int i = 0; i <= lines.size() - 1; i++) - { - String line = lines.get(i); - line = line.trim(); - if (line.length() == 0 || line.startsWith("#")) - { - MixinMessage.get().msgOne(commander, "#%d: %s", i, line); - // Ignore the line - } - else - { - MixinMessage.get().msgOne(commander, "#%d: %s", i, line); - // Run the line - commander.chat(line); - } - } - } - }); - return; - } - catch (final Exception e) - { - sync(new Runnable() - { - @Override - public void run() - { - MixinMessage.get().msgOne(commander, "%s: %s", e.getClass().getSimpleName(), e.getMessage()); - } - }); - return; - } - } - }); - } - - // -------------------------------------------- // - // ASYNC/SYNC SHORTHANDS - // -------------------------------------------- // - - public static void sync(Runnable runnable) - { - Bukkit.getScheduler().runTask(MassiveCore.get(), runnable); - } - - public static void async(Runnable runnable) - { - Bukkit.getScheduler().runTaskAsynchronously(MassiveCore.get(), runnable); - } - -} +package com.massivecraft.massivecore.cmd; + +import com.massivecraft.massivecore.MassiveCore; +import com.massivecraft.massivecore.MassiveCoreMConf; +import com.massivecraft.massivecore.MassiveException; +import com.massivecraft.massivecore.command.requirement.RequirementIsPlayer; +import com.massivecraft.massivecore.command.type.primitive.TypeString; +import com.massivecraft.massivecore.mixin.MixinMessage; +import com.massivecraft.massivecore.util.WebUtil; +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; + +import java.net.MalformedURLException; +import java.net.URL; +import java.util.List; + +public class CmdMassiveCoreCmdurl extends MassiveCoreCommand +{ + // -------------------------------------------- // + // INSTANCE + // -------------------------------------------- // + + private static CmdMassiveCoreCmdurl i = new CmdMassiveCoreCmdurl() { public List getAliases() { return MassiveCoreMConf.get().aliasesCmdurl; } }; + public static CmdMassiveCoreCmdurl get() { return i; } + + // -------------------------------------------- // + // CONSTRUCT + // -------------------------------------------- // + + public CmdMassiveCoreCmdurl() + { + // Parameters + this.addParameter(TypeString.get(), "url").setDesc("the url to load"); + + // Requirements + this.addRequirements(RequirementIsPlayer.get()); + } + + // -------------------------------------------- // + // OVERRIDE + // -------------------------------------------- // + + @Override + public void perform() throws MassiveException + { + // Args + String urlString = this.readArg(); + + final URL url; + try + { + url = new URL(urlString); + } + catch (MalformedURLException e) + { + msg("Malformed URL: %s", e.getMessage()); + return; + } + + // Apply + final Player commander = me; + msg("Loading %s ...", urlString); + async(new Runnable() + { + @Override + public void run() + { + try + { + final List lines = WebUtil.getLines(url); + sync(new Runnable() + { + @Override + public void run() + { + MixinMessage.get().msgOne(commander, "... %d lines loaded. Now executing ...", lines.size()); + for (int i = 0; i <= lines.size() - 1; i++) + { + String line = lines.get(i); + line = line.trim(); + if (line.length() == 0 || line.startsWith("#")) + { + MixinMessage.get().msgOne(commander, "#%d: %s", i, line); + // Ignore the line + } + else + { + MixinMessage.get().msgOne(commander, "#%d: %s", i, line); + // Run the line + commander.chat(line); + } + } + } + }); + return; + } + catch (final Exception e) + { + sync(new Runnable() + { + @Override + public void run() + { + MixinMessage.get().msgOne(commander, "%s: %s", e.getClass().getSimpleName(), e.getMessage()); + } + }); + return; + } + } + }); + } + + // -------------------------------------------- // + // ASYNC/SYNC SHORTHANDS + // -------------------------------------------- // + + public static void sync(Runnable runnable) + { + Bukkit.getScheduler().runTask(MassiveCore.get(), runnable); + } + + public static void async(Runnable runnable) + { + Bukkit.getScheduler().runTaskAsynchronously(MassiveCore.get(), runnable); + } + +} + diff --git a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreHearsound.java b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreHearsound.java old mode 100644 new mode 100755 similarity index 91% rename from src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreHearsound.java rename to src/com/massivecraft/massivecore/cmd/CmdMassiveCoreHearsound.java index bdba626c..d105513c --- a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreHearsound.java +++ b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreHearsound.java @@ -1,43 +1,43 @@ -package com.massivecraft.massivecore.command.massivecore; - -import com.massivecraft.massivecore.MassiveException; -import com.massivecraft.massivecore.SoundEffect; -import com.massivecraft.massivecore.command.requirement.RequirementIsPlayer; -import com.massivecraft.massivecore.command.type.combined.TypeSoundEffect; -import com.massivecraft.massivecore.command.type.container.TypeList; - -import java.util.List; - -public class CmdMassiveCoreHearsound extends MassiveCoreCommand -{ - // -------------------------------------------- // - // CONSTRUCT - // -------------------------------------------- // - - public CmdMassiveCoreHearsound() - { - // Aliases - this.addAliases("hearsounds"); - - // Parameters - this.addParameter(TypeList.get(TypeSoundEffect.get()), "sound(s)", true).setDesc("the sounds to hear"); - - // Requirements - this.addRequirements(RequirementIsPlayer.get()); - } - - // -------------------------------------------- // - // OVERRIDE - // -------------------------------------------- // - - @Override - public void perform() throws MassiveException - { - // Args - List soundEffects = this.readArg(); - - // Apply - SoundEffect.runAll(soundEffects, me); - } - -} +package com.massivecraft.massivecore.cmd; + +import com.massivecraft.massivecore.MassiveException; +import com.massivecraft.massivecore.SoundEffect; +import com.massivecraft.massivecore.command.requirement.RequirementIsPlayer; +import com.massivecraft.massivecore.command.type.combined.TypeSoundEffect; +import com.massivecraft.massivecore.command.type.container.TypeList; + +import java.util.List; + +public class CmdMassiveCoreHearsound extends MassiveCoreCommand +{ + // -------------------------------------------- // + // CONSTRUCT + // -------------------------------------------- // + + public CmdMassiveCoreHearsound() + { + // Aliases + this.addAliases("hearsounds"); + + // Parameters + this.addParameter(TypeList.get(TypeSoundEffect.get()), "sound(s)", true).setDesc("the sounds to hear"); + + // Requirements + this.addRequirements(RequirementIsPlayer.get()); + } + + // -------------------------------------------- // + // OVERRIDE + // -------------------------------------------- // + + @Override + public void perform() throws MassiveException + { + // Args + List soundEffects = this.readArg(); + + // Apply + SoundEffect.runAll(soundEffects, me); + } + +} diff --git a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreId.java b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreId.java old mode 100644 new mode 100755 similarity index 82% rename from src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreId.java rename to src/com/massivecraft/massivecore/cmd/CmdMassiveCoreId.java index 16f97166..aa6c8262 --- a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreId.java +++ b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreId.java @@ -1,17 +1,17 @@ -package com.massivecraft.massivecore.command.massivecore; - -import com.massivecraft.massivecore.ConfServer; - -public class CmdMassiveCoreId extends MassiveCoreCommand -{ - // -------------------------------------------- // - // OVERRIDE - // -------------------------------------------- // - - @Override - public void perform() - { - this.msg("The id of this server is \"%s\".", ConfServer.serverid); - } - -} +package com.massivecraft.massivecore.cmd; + +import com.massivecraft.massivecore.ConfServer; + +public class CmdMassiveCoreId extends MassiveCoreCommand +{ + // -------------------------------------------- // + // OVERRIDE + // -------------------------------------------- // + + @Override + public void perform() + { + this.msg("The id of this server is \"%s\".", ConfServer.serverid); + } + +} diff --git a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreSponsor.java b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreSponsor.java old mode 100644 new mode 100755 similarity index 95% rename from src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreSponsor.java rename to src/com/massivecraft/massivecore/cmd/CmdMassiveCoreSponsor.java index 20b9369d..7f5010b0 --- a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreSponsor.java +++ b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreSponsor.java @@ -1,4 +1,4 @@ -package com.massivecraft.massivecore.command.massivecore; +package com.massivecraft.massivecore.cmd; import com.massivecraft.massivecore.MassiveCoreMConf; import com.massivecraft.massivecore.MassiveCorePerm; diff --git a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreStore.java b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreStore.java old mode 100644 new mode 100755 similarity index 93% rename from src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreStore.java rename to src/com/massivecraft/massivecore/cmd/CmdMassiveCoreStore.java index 474c3961..d3276d4e --- a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreStore.java +++ b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreStore.java @@ -1,4 +1,4 @@ -package com.massivecraft.massivecore.command.massivecore; +package com.massivecraft.massivecore.cmd; import com.massivecraft.massivecore.MassiveCoreMConf; diff --git a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreStoreCopydb.java b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreStoreCopydb.java old mode 100644 new mode 100755 similarity index 97% rename from src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreStoreCopydb.java rename to src/com/massivecraft/massivecore/cmd/CmdMassiveCoreStoreCopydb.java index f5f7ed63..448adf25 --- a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreStoreCopydb.java +++ b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreStoreCopydb.java @@ -1,4 +1,4 @@ -package com.massivecraft.massivecore.command.massivecore; +package com.massivecraft.massivecore.cmd; import com.massivecraft.massivecore.MassiveCore; import com.massivecraft.massivecore.MassiveException; diff --git a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreStoreListcolls.java b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreStoreListcolls.java old mode 100644 new mode 100755 similarity index 97% rename from src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreStoreListcolls.java rename to src/com/massivecraft/massivecore/cmd/CmdMassiveCoreStoreListcolls.java index ba97d579..27c981eb --- a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreStoreListcolls.java +++ b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreStoreListcolls.java @@ -1,4 +1,4 @@ -package com.massivecraft.massivecore.command.massivecore; +package com.massivecraft.massivecore.cmd; import com.massivecraft.massivecore.ConfServer; import com.massivecraft.massivecore.MassiveException; diff --git a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreStoreStats.java b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreStoreStats.java old mode 100644 new mode 100755 similarity index 97% rename from src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreStoreStats.java rename to src/com/massivecraft/massivecore/cmd/CmdMassiveCoreStoreStats.java index 53f88309..2783f81b --- a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreStoreStats.java +++ b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreStoreStats.java @@ -1,4 +1,4 @@ -package com.massivecraft.massivecore.command.massivecore; +package com.massivecraft.massivecore.cmd; import com.massivecraft.massivecore.MassiveException; import com.massivecraft.massivecore.command.type.store.TypeColl; diff --git a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreTest.java b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreTest.java old mode 100644 new mode 100755 similarity index 95% rename from src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreTest.java rename to src/com/massivecraft/massivecore/cmd/CmdMassiveCoreTest.java index ce344356..2b8e32d0 --- a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreTest.java +++ b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreTest.java @@ -1,94 +1,94 @@ -package com.massivecraft.massivecore.command.massivecore; - -import com.massivecraft.massivecore.MassiveException; -import com.massivecraft.massivecore.collections.MassiveList; -import com.massivecraft.massivecore.command.Visibility; -import com.massivecraft.massivecore.command.requirement.RequirementIsPlayer; -import com.massivecraft.massivecore.command.type.TypeItemStack; -import com.massivecraft.massivecore.command.type.primitive.TypeBooleanYes; -import com.massivecraft.massivecore.mson.Mson; -import com.massivecraft.massivecore.util.InventoryUtil; -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.inventory.ItemStack; - -import java.util.List; - -public class CmdMassiveCoreTest extends MassiveCoreCommand -{ - // -------------------------------------------- // - // CONSTRUCT - // -------------------------------------------- // - - public CmdMassiveCoreTest() - { - // Parameters - this.addParameter(false, TypeBooleanYes.get(), "set", "no"); - - // Requirements - this.addRequirements(RequirementIsPlayer.get()); - - // VisibilityMode - this.setVisibility(Visibility.SECRET); - } - - // -------------------------------------------- // - // OVERRIDE - // -------------------------------------------- // - - @Override - public void perform() throws MassiveException - { - // Args - boolean set = this.readArg(); - - if (set) - { - InventoryUtil.setHelmet(me, new ItemStack(Material.DIAMOND_HELMET)); - InventoryUtil.setChestplate(me, new ItemStack(Material.DIAMOND_CHESTPLATE)); - InventoryUtil.setLeggings(me, new ItemStack(Material.DIAMOND_LEGGINGS)); - InventoryUtil.setBoots(me, new ItemStack(Material.DIAMOND_BOOTS)); - InventoryUtil.setWeapon(me, new ItemStack(Material.DIAMOND_SWORD)); - InventoryUtil.setShield(me, new ItemStack(Material.DIRT)); - } - - inform("helmet", InventoryUtil.getHelmet(me)); - inform("chestplate", InventoryUtil.getChestplate(me)); - inform("leggings", InventoryUtil.getLeggings(me)); - inform("boots", InventoryUtil.getBoots(me)); - inform("weapon", InventoryUtil.getWeapon(me)); - inform("shield", InventoryUtil.getShield(me)); - - inform("all", InventoryUtil.getContentsAll(me.getInventory())); - inform("storage", InventoryUtil.getContentsStorage(me.getInventory())); - inform("armor", InventoryUtil.getContentsArmor(me.getInventory())); - inform("extra", InventoryUtil.getContentsExtra(me.getInventory())); - } - - // -------------------------------------------- // - // UTIL - // -------------------------------------------- // - - public Mson visualize(ItemStack item) - { - return TypeItemStack.get().getVisualMson(item, sender); - } - - public Mson visualize(ItemStack... items) - { - List msons = new MassiveList<>(Mson.mson(String.valueOf(items.length)).color(ChatColor.AQUA)); - for (ItemStack item : items) - { - msons.add(visualize(item)); - } - return Mson.implode(msons, Mson.SPACE); - } - - public void inform(String key, ItemStack... items) - { - - - message(mson(key, ": ", visualize(items))); - } - -} +package com.massivecraft.massivecore.cmd; + +import com.massivecraft.massivecore.MassiveException; +import com.massivecraft.massivecore.collections.MassiveList; +import com.massivecraft.massivecore.command.Visibility; +import com.massivecraft.massivecore.command.requirement.RequirementIsPlayer; +import com.massivecraft.massivecore.command.type.TypeItemStack; +import com.massivecraft.massivecore.command.type.primitive.TypeBooleanYes; +import com.massivecraft.massivecore.mson.Mson; +import com.massivecraft.massivecore.util.InventoryUtil; +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.inventory.ItemStack; + +import java.util.List; + +public class CmdMassiveCoreTest extends MassiveCoreCommand +{ + // -------------------------------------------- // + // CONSTRUCT + // -------------------------------------------- // + + public CmdMassiveCoreTest() + { + // Parameters + this.addParameter(false, TypeBooleanYes.get(), "set", "no"); + + // Requirements + this.addRequirements(RequirementIsPlayer.get()); + + // VisibilityMode + this.setVisibility(Visibility.SECRET); + } + + // -------------------------------------------- // + // OVERRIDE + // -------------------------------------------- // + + @Override + public void perform() throws MassiveException + { + // Args + boolean set = this.readArg(); + + if (set) + { + InventoryUtil.setHelmet(me, new ItemStack(Material.DIAMOND_HELMET)); + InventoryUtil.setChestplate(me, new ItemStack(Material.DIAMOND_CHESTPLATE)); + InventoryUtil.setLeggings(me, new ItemStack(Material.DIAMOND_LEGGINGS)); + InventoryUtil.setBoots(me, new ItemStack(Material.DIAMOND_BOOTS)); + InventoryUtil.setWeapon(me, new ItemStack(Material.DIAMOND_SWORD)); + InventoryUtil.setShield(me, new ItemStack(Material.DIRT)); + } + + inform("helmet", InventoryUtil.getHelmet(me)); + inform("chestplate", InventoryUtil.getChestplate(me)); + inform("leggings", InventoryUtil.getLeggings(me)); + inform("boots", InventoryUtil.getBoots(me)); + inform("weapon", InventoryUtil.getWeapon(me)); + inform("shield", InventoryUtil.getShield(me)); + + inform("all", InventoryUtil.getContentsAll(me.getInventory())); + inform("storage", InventoryUtil.getContentsStorage(me.getInventory())); + inform("armor", InventoryUtil.getContentsArmor(me.getInventory())); + inform("extra", InventoryUtil.getContentsExtra(me.getInventory())); + } + + // -------------------------------------------- // + // UTIL + // -------------------------------------------- // + + public Mson visualize(ItemStack item) + { + return TypeItemStack.get().getVisualMson(item, sender); + } + + public Mson visualize(ItemStack... items) + { + List msons = new MassiveList<>(Mson.mson(String.valueOf(items.length)).color(ChatColor.AQUA)); + for (ItemStack item : items) + { + msons.add(visualize(item)); + } + return Mson.implode(msons, Mson.SPACE); + } + + public void inform(String key, ItemStack... items) + { + + + message(mson(key, ": ", visualize(items))); + } + +} diff --git a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreUsys.java b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreUsys.java old mode 100644 new mode 100755 similarity index 94% rename from src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreUsys.java rename to src/com/massivecraft/massivecore/cmd/CmdMassiveCoreUsys.java index 4dbc6805..1172c00f --- a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreUsys.java +++ b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreUsys.java @@ -1,4 +1,4 @@ -package com.massivecraft.massivecore.command.massivecore; +package com.massivecraft.massivecore.cmd; import com.massivecraft.massivecore.MassiveCoreMConf; diff --git a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreUsysAspect.java b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreUsysAspect.java old mode 100644 new mode 100755 similarity index 89% rename from src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreUsysAspect.java rename to src/com/massivecraft/massivecore/cmd/CmdMassiveCoreUsysAspect.java index a0886c34..ea4efec8 --- a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreUsysAspect.java +++ b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreUsysAspect.java @@ -1,4 +1,4 @@ -package com.massivecraft.massivecore.command.massivecore; +package com.massivecraft.massivecore.cmd; public class CmdMassiveCoreUsysAspect extends MassiveCoreCommand { diff --git a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreUsysAspectList.java b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreUsysAspectList.java old mode 100644 new mode 100755 similarity index 95% rename from src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreUsysAspectList.java rename to src/com/massivecraft/massivecore/cmd/CmdMassiveCoreUsysAspectList.java index 5de3325c..4f7227eb --- a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreUsysAspectList.java +++ b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreUsysAspectList.java @@ -1,4 +1,4 @@ -package com.massivecraft.massivecore.command.massivecore; +package com.massivecraft.massivecore.cmd; import com.massivecraft.massivecore.Aspect; import com.massivecraft.massivecore.AspectColl; diff --git a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreUsysAspectShow.java b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreUsysAspectShow.java old mode 100644 new mode 100755 similarity index 94% rename from src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreUsysAspectShow.java rename to src/com/massivecraft/massivecore/cmd/CmdMassiveCoreUsysAspectShow.java index f81e4401..231d9ed4 --- a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreUsysAspectShow.java +++ b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreUsysAspectShow.java @@ -1,4 +1,4 @@ -package com.massivecraft.massivecore.command.massivecore; +package com.massivecraft.massivecore.cmd; import com.massivecraft.massivecore.Aspect; import com.massivecraft.massivecore.MassiveException; diff --git a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreUsysAspectUse.java b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreUsysAspectUse.java old mode 100644 new mode 100755 similarity index 95% rename from src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreUsysAspectUse.java rename to src/com/massivecraft/massivecore/cmd/CmdMassiveCoreUsysAspectUse.java index de46938d..b1c58c25 --- a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreUsysAspectUse.java +++ b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreUsysAspectUse.java @@ -1,4 +1,4 @@ -package com.massivecraft.massivecore.command.massivecore; +package com.massivecraft.massivecore.cmd; import com.massivecraft.massivecore.Aspect; import com.massivecraft.massivecore.MassiveException; diff --git a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreUsysMultiverse.java b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreUsysMultiverse.java old mode 100644 new mode 100755 similarity index 91% rename from src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreUsysMultiverse.java rename to src/com/massivecraft/massivecore/cmd/CmdMassiveCoreUsysMultiverse.java index 6a47074a..b4a57660 --- a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreUsysMultiverse.java +++ b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreUsysMultiverse.java @@ -1,4 +1,4 @@ -package com.massivecraft.massivecore.command.massivecore; +package com.massivecraft.massivecore.cmd; public class CmdMassiveCoreUsysMultiverse extends MassiveCoreCommand { diff --git a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreUsysMultiverseDel.java b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreUsysMultiverseDel.java old mode 100644 new mode 100755 similarity index 94% rename from src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreUsysMultiverseDel.java rename to src/com/massivecraft/massivecore/cmd/CmdMassiveCoreUsysMultiverseDel.java index 4adf1658..c43a9e7f --- a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreUsysMultiverseDel.java +++ b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreUsysMultiverseDel.java @@ -1,4 +1,4 @@ -package com.massivecraft.massivecore.command.massivecore; +package com.massivecraft.massivecore.cmd; import com.massivecraft.massivecore.MassiveCore; import com.massivecraft.massivecore.MassiveException; diff --git a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreUsysMultiverseList.java b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreUsysMultiverseList.java old mode 100644 new mode 100755 similarity index 95% rename from src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreUsysMultiverseList.java rename to src/com/massivecraft/massivecore/cmd/CmdMassiveCoreUsysMultiverseList.java index dabe3dc8..64ac1dca --- a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreUsysMultiverseList.java +++ b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreUsysMultiverseList.java @@ -1,4 +1,4 @@ -package com.massivecraft.massivecore.command.massivecore; +package com.massivecraft.massivecore.cmd; import com.massivecraft.massivecore.MassiveException; import com.massivecraft.massivecore.Multiverse; diff --git a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreUsysMultiverseNew.java b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreUsysMultiverseNew.java old mode 100644 new mode 100755 similarity index 94% rename from src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreUsysMultiverseNew.java rename to src/com/massivecraft/massivecore/cmd/CmdMassiveCoreUsysMultiverseNew.java index 46894d25..6d53f24e --- a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreUsysMultiverseNew.java +++ b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreUsysMultiverseNew.java @@ -1,4 +1,4 @@ -package com.massivecraft.massivecore.command.massivecore; +package com.massivecraft.massivecore.cmd; import com.massivecraft.massivecore.MassiveException; import com.massivecraft.massivecore.MultiverseColl; diff --git a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreUsysMultiverseShow.java b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreUsysMultiverseShow.java old mode 100644 new mode 100755 similarity index 96% rename from src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreUsysMultiverseShow.java rename to src/com/massivecraft/massivecore/cmd/CmdMassiveCoreUsysMultiverseShow.java index 5c697a3f..75029906 --- a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreUsysMultiverseShow.java +++ b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreUsysMultiverseShow.java @@ -1,4 +1,4 @@ -package com.massivecraft.massivecore.command.massivecore; +package com.massivecraft.massivecore.cmd; import com.massivecraft.massivecore.Aspect; import com.massivecraft.massivecore.MassiveCore; diff --git a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreUsysUniverse.java b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreUsysUniverse.java old mode 100644 new mode 100755 similarity index 89% rename from src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreUsysUniverse.java rename to src/com/massivecraft/massivecore/cmd/CmdMassiveCoreUsysUniverse.java index b439e4a9..096c9160 --- a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreUsysUniverse.java +++ b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreUsysUniverse.java @@ -1,4 +1,4 @@ -package com.massivecraft.massivecore.command.massivecore; +package com.massivecraft.massivecore.cmd; public class CmdMassiveCoreUsysUniverse extends MassiveCoreCommand { diff --git a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreUsysUniverseClear.java b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreUsysUniverseClear.java old mode 100644 new mode 100755 similarity index 96% rename from src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreUsysUniverseClear.java rename to src/com/massivecraft/massivecore/cmd/CmdMassiveCoreUsysUniverseClear.java index cd1e6a85..34d8f4f0 --- a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreUsysUniverseClear.java +++ b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreUsysUniverseClear.java @@ -1,4 +1,4 @@ -package com.massivecraft.massivecore.command.massivecore; +package com.massivecraft.massivecore.cmd; import com.massivecraft.massivecore.MassiveCore; import com.massivecraft.massivecore.MassiveException; diff --git a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreUsysUniverseDel.java b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreUsysUniverseDel.java old mode 100644 new mode 100755 similarity index 96% rename from src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreUsysUniverseDel.java rename to src/com/massivecraft/massivecore/cmd/CmdMassiveCoreUsysUniverseDel.java index e841eb6c..3839a767 --- a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreUsysUniverseDel.java +++ b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreUsysUniverseDel.java @@ -1,4 +1,4 @@ -package com.massivecraft.massivecore.command.massivecore; +package com.massivecraft.massivecore.cmd; import com.massivecraft.massivecore.MassiveCore; import com.massivecraft.massivecore.MassiveException; diff --git a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreUsysUniverseNew.java b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreUsysUniverseNew.java old mode 100644 new mode 100755 similarity index 95% rename from src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreUsysUniverseNew.java rename to src/com/massivecraft/massivecore/cmd/CmdMassiveCoreUsysUniverseNew.java index 94b27a28..08f2d008 --- a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreUsysUniverseNew.java +++ b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreUsysUniverseNew.java @@ -1,4 +1,4 @@ -package com.massivecraft.massivecore.command.massivecore; +package com.massivecraft.massivecore.cmd; import com.massivecraft.massivecore.MassiveException; import com.massivecraft.massivecore.Multiverse; diff --git a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreUsysWorld.java b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreUsysWorld.java old mode 100644 new mode 100755 similarity index 96% rename from src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreUsysWorld.java rename to src/com/massivecraft/massivecore/cmd/CmdMassiveCoreUsysWorld.java index c644ad6b..2b743592 --- a/src/com/massivecraft/massivecore/command/massivecore/CmdMassiveCoreUsysWorld.java +++ b/src/com/massivecraft/massivecore/cmd/CmdMassiveCoreUsysWorld.java @@ -1,4 +1,4 @@ -package com.massivecraft.massivecore.command.massivecore; +package com.massivecraft.massivecore.cmd; import com.massivecraft.massivecore.MassiveException; import com.massivecraft.massivecore.Multiverse; diff --git a/src/com/massivecraft/massivecore/command/massivecore/MassiveCoreCommand.java b/src/com/massivecraft/massivecore/cmd/MassiveCoreCommand.java similarity index 90% rename from src/com/massivecraft/massivecore/command/massivecore/MassiveCoreCommand.java rename to src/com/massivecraft/massivecore/cmd/MassiveCoreCommand.java index a412c469..722e2c79 100644 --- a/src/com/massivecraft/massivecore/command/massivecore/MassiveCoreCommand.java +++ b/src/com/massivecraft/massivecore/cmd/MassiveCoreCommand.java @@ -1,4 +1,4 @@ -package com.massivecraft.massivecore.command.massivecore; +package com.massivecraft.massivecore.cmd; import com.massivecraft.massivecore.MassiveCorePerm; import com.massivecraft.massivecore.command.MassiveCommand; diff --git a/src/com/massivecraft/massivecore/command/editor/CommandEditSingleton.java b/src/com/massivecraft/massivecore/command/editor/CommandEditSingleton.java index 99736b56..55e06187 100644 --- a/src/com/massivecraft/massivecore/command/editor/CommandEditSingleton.java +++ b/src/com/massivecraft/massivecore/command/editor/CommandEditSingleton.java @@ -40,6 +40,8 @@ public class CommandEditSingleton extends CommandEditProperties @SuppressWarnings("unchecked") private static Type getType(O object) { + if (object == null) throw new NullPointerException("object"); + // Get the return value Type ret = TypeSingleton.get(object); diff --git a/src/com/massivecraft/massivecore/mixin/Mixin.java b/src/com/massivecraft/massivecore/mixin/Mixin.java index 875de948..dbb3e839 100644 --- a/src/com/massivecraft/massivecore/mixin/Mixin.java +++ b/src/com/massivecraft/massivecore/mixin/Mixin.java @@ -93,7 +93,8 @@ public class Mixin extends Engine } catch (Throwable t) { - throw ReflectionUtil.asRuntimeException(t); + t.printStackTrace(); + //throw ReflectionUtil.asRuntimeException(t); } } diff --git a/src/com/massivecraft/massivecore/predicate/PredicateIsClassSingleton.java b/src/com/massivecraft/massivecore/predicate/PredicateIsClassSingleton.java new file mode 100644 index 00000000..88752694 --- /dev/null +++ b/src/com/massivecraft/massivecore/predicate/PredicateIsClassSingleton.java @@ -0,0 +1,24 @@ +package com.massivecraft.massivecore.predicate; + +import com.massivecraft.massivecore.util.ReflectionUtil; + +public class PredicateIsClassSingleton implements Predicate> +{ + // -------------------------------------------- // + // INSTANCE & CONSTRUCT + // -------------------------------------------- // + + private static PredicateIsClassSingleton i = new PredicateIsClassSingleton(); + public static PredicateIsClassSingleton get() { return i; } + + // -------------------------------------------- // + // OVERRIDE + // -------------------------------------------- // + + @Override + public boolean apply(Class clazz) + { + return ReflectionUtil.isSingleton(clazz); + } + +} diff --git a/src/com/massivecraft/massivecore/ps/PS.java b/src/com/massivecraft/massivecore/ps/PS.java index 23558b56..2e85f7a3 100644 --- a/src/com/massivecraft/massivecore/ps/PS.java +++ b/src/com/massivecraft/massivecore/ps/PS.java @@ -978,4 +978,3 @@ public final class PS implements Serializable, Comparable } } - \ No newline at end of file diff --git a/src/com/massivecraft/massivecore/test/Test.java b/src/com/massivecraft/massivecore/test/Test.java index bef19713..d183b5a3 100644 --- a/src/com/massivecraft/massivecore/test/Test.java +++ b/src/com/massivecraft/massivecore/test/Test.java @@ -9,6 +9,7 @@ import com.massivecraft.massivecore.util.Txt; import java.util.List; + public abstract class Test extends Engine { // -------------------------------------------- // diff --git a/src/com/massivecraft/massivecore/util/ReflectionUtil.java b/src/com/massivecraft/massivecore/util/ReflectionUtil.java index a4965849..8f0ebe5d 100644 --- a/src/com/massivecraft/massivecore/util/ReflectionUtil.java +++ b/src/com/massivecraft/massivecore/util/ReflectionUtil.java @@ -1,8 +1,14 @@ package com.massivecraft.massivecore.util; + +import com.google.common.reflect.ClassPath; +import com.google.common.reflect.ClassPath.ClassInfo; +import com.massivecraft.massivecore.collections.MassiveList; import com.massivecraft.massivecore.predicate.Predicate; +import com.massivecraft.massivecore.predicate.PredicateAnd; import org.bukkit.Bukkit; +import java.io.IOException; import java.lang.annotation.Annotation; import java.lang.reflect.Constructor; import java.lang.reflect.Field; @@ -12,6 +18,7 @@ import java.lang.reflect.Modifier; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import java.util.ArrayList; +import java.util.Collection; import java.util.List; public class ReflectionUtil @@ -243,6 +250,19 @@ public class ReflectionUtil } return fallback; } + + public static boolean isSingleton(Class clazz) + { + try + { + Method get = getMethod(clazz, "get"); + return true; + } + catch (Exception ex) + { + return false; + } + } // -------------------------------------------- // // ANNOTATION @@ -422,7 +442,61 @@ public class ReflectionUtil } }); } - + + // -------------------------------------------- // + // GET PACKAGE CLASSES + // -------------------------------------------- // + + @SuppressWarnings("unchecked") + public static List> getPackageClasses(String packageName, ClassLoader classLoader, boolean recursive, Predicate>... predicates) + { + // Create ret + List> ret = new MassiveList<>(); + + try + { + // Get info + ClassPath classPath = ClassPath.from(classLoader); + Predicate> predicateCombined = PredicateAnd.get(predicates); + + Collection classes = recursive ? classPath.getTopLevelClassesRecursive(packageName) : classPath.getTopLevelClasses(packageName); + + for (ClassInfo classInfo : classes) + { + // Get name of class + String className = classInfo.getName(); + + // Avoid versions created at runtime + // Apparently it found a "EngineMassiveCoreCollTick 3" which we don't want + if (className.contains(" ")) continue; + + // Try and load it + Class clazz; + try + { + clazz = classInfo.load(); + } + catch (NoClassDefFoundError ex) + { + // This thing couldn't be loaded. Probably has to do with integrations. + // Just skip it + continue; + } + + // And it must not be ignored + if (!predicateCombined.apply(clazz)) continue; + + ret.add(clazz); + } + } + catch (IOException ex) + { + throw new RuntimeException(ex); + } + + return ret; + } + // -------------------------------------------- // // AS RUNTIME EXCEPTION // -------------------------------------------- // diff --git a/src/com/massivecraft/massivecore/util/Txt.java b/src/com/massivecraft/massivecore/util/Txt.java index 6fc5ea58..6e1ac646 100644 --- a/src/com/massivecraft/massivecore/util/Txt.java +++ b/src/com/massivecraft/massivecore/util/Txt.java @@ -2,7 +2,7 @@ package com.massivecraft.massivecore.util; import com.massivecraft.massivecore.collections.MassiveList; import com.massivecraft.massivecore.command.MassiveCommand; -import com.massivecraft.massivecore.command.massivecore.CmdMassiveCore; +import com.massivecraft.massivecore.cmd.CmdMassiveCore; import com.massivecraft.massivecore.mson.Mson; import com.massivecraft.massivecore.mson.MsonEvent; import com.massivecraft.massivecore.predicate.Predicate;