Automatic activation of engines, colls, commands and others
This commit is contained in:
parent
d3fc83386d
commit
fe81648eb7
@ -2,7 +2,7 @@ package com.massivecraft.massivecore;
|
|||||||
|
|
||||||
import com.massivecraft.massivecore.collections.MassiveList;
|
import com.massivecraft.massivecore.collections.MassiveList;
|
||||||
import com.massivecraft.massivecore.command.MassiveCommand;
|
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.Requirement;
|
||||||
import com.massivecraft.massivecore.command.requirement.RequirementAbstract;
|
import com.massivecraft.massivecore.command.requirement.RequirementAbstract;
|
||||||
import com.massivecraft.massivecore.command.requirement.RequirementIsPlayer;
|
import com.massivecraft.massivecore.command.requirement.RequirementIsPlayer;
|
||||||
|
@ -35,7 +35,7 @@ public abstract class Engine implements Active, Listener, Runnable
|
|||||||
if (this.hasPlugin()) return;
|
if (this.hasPlugin()) return;
|
||||||
this.plugin = plugin;
|
this.plugin = plugin;
|
||||||
}
|
}
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// TASK
|
// TASK
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
@ -28,70 +28,18 @@ import com.massivecraft.massivecore.collections.MassiveTreeMap;
|
|||||||
import com.massivecraft.massivecore.collections.MassiveTreeMapDef;
|
import com.massivecraft.massivecore.collections.MassiveTreeMapDef;
|
||||||
import com.massivecraft.massivecore.collections.MassiveTreeSet;
|
import com.massivecraft.massivecore.collections.MassiveTreeSet;
|
||||||
import com.massivecraft.massivecore.collections.MassiveTreeSetDef;
|
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.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.DataBannerPattern;
|
||||||
import com.massivecraft.massivecore.item.WriterItemStack;
|
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.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.Mson;
|
||||||
import com.massivecraft.massivecore.mson.MsonEvent;
|
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.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.PS;
|
||||||
import com.massivecraft.massivecore.ps.PSAdapter;
|
import com.massivecraft.massivecore.ps.PSAdapter;
|
||||||
|
import com.massivecraft.massivecore.store.Coll;
|
||||||
import com.massivecraft.massivecore.store.ModificationPollerLocal;
|
import com.massivecraft.massivecore.store.ModificationPollerLocal;
|
||||||
import com.massivecraft.massivecore.store.ModificationPollerRemote;
|
import com.massivecraft.massivecore.store.ModificationPollerRemote;
|
||||||
import com.massivecraft.massivecore.test.TestTypeEnchantment;
|
|
||||||
import com.massivecraft.massivecore.util.BoardUtil;
|
import com.massivecraft.massivecore.util.BoardUtil;
|
||||||
import com.massivecraft.massivecore.util.ContainerUtil;
|
import com.massivecraft.massivecore.util.ContainerUtil;
|
||||||
import com.massivecraft.massivecore.util.EventUtil;
|
import com.massivecraft.massivecore.util.EventUtil;
|
||||||
@ -123,6 +71,7 @@ import org.bukkit.inventory.PlayerInventory;
|
|||||||
|
|
||||||
import java.lang.reflect.Modifier;
|
import java.lang.reflect.Modifier;
|
||||||
import java.lang.reflect.Type;
|
import java.lang.reflect.Type;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
@ -197,7 +146,7 @@ public class MassiveCore extends MassivePlugin
|
|||||||
ret.registerTypeAdapter(PS.class, PSAdapter.get());
|
ret.registerTypeAdapter(PS.class, PSAdapter.get());
|
||||||
ret.registerTypeAdapter(Sound.class, AdapterSound.get());
|
ret.registerTypeAdapter(Sound.class, AdapterSound.get());
|
||||||
ret.registerTypeAdapter(UUID.class, AdapterUUID.get());
|
ret.registerTypeAdapter(UUID.class, AdapterUUID.get());
|
||||||
|
|
||||||
// Mson
|
// Mson
|
||||||
ret.registerTypeAdapter(Mson.class, AdapterMson.get());
|
ret.registerTypeAdapter(Mson.class, AdapterMson.get());
|
||||||
ret.registerTypeAdapter(MsonEvent.class, AdapterMsonEvent.get());
|
ret.registerTypeAdapter(MsonEvent.class, AdapterMsonEvent.get());
|
||||||
@ -277,87 +226,19 @@ public class MassiveCore extends MassivePlugin
|
|||||||
RegistryType.registerAll();
|
RegistryType.registerAll();
|
||||||
|
|
||||||
// Activate
|
// Activate
|
||||||
|
this.activateAuto();
|
||||||
|
|
||||||
|
// These must be activated after nms
|
||||||
this.activate(
|
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,
|
// Writer,
|
||||||
WriterItemStack.class,
|
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
|
// Util
|
||||||
PlayerUtil.class,
|
PlayerUtil.class,
|
||||||
BoardUtil.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
|
|
||||||
);
|
);
|
||||||
|
|
||||||
// Start the examine threads
|
// Start the examine threads
|
||||||
// Start AFTER initializing the MConf, because they rely on the MConf.
|
// Start AFTER initializing the MConf, because they rely on the MConf.
|
||||||
ModificationPollerLocal.get().start();
|
ModificationPollerLocal.get().start();
|
||||||
@ -367,6 +248,25 @@ public class MassiveCore extends MassivePlugin
|
|||||||
MassiveCoreTaskDeleteFiles.get().run();
|
MassiveCoreTaskDeleteFiles.get().run();
|
||||||
Bukkit.getScheduler().scheduleSyncDelayedTask(this, MassiveCoreTaskDeleteFiles.get());
|
Bukkit.getScheduler().scheduleSyncDelayedTask(this, MassiveCoreTaskDeleteFiles.get());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Class<?>> getClassesActiveColls()
|
||||||
|
{
|
||||||
|
List<Class<?>> ret = this.getClassesActive(null, Coll.class);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Class<?>> getClassesActiveMixins()
|
||||||
|
{
|
||||||
|
List<Class<?>> ret = super.getClassesActiveMixins();
|
||||||
|
|
||||||
|
ret.remove(MixinEvent.class);
|
||||||
|
ret.add(0, MixinEvent.class);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// DISABLE
|
// DISABLE
|
||||||
|
@ -143,6 +143,7 @@ public class MassiveCoreMConf extends Entity<MassiveCoreMConf>
|
|||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
public boolean debugWriters = false;
|
public boolean debugWriters = false;
|
||||||
|
public boolean debugActives = false;
|
||||||
public boolean testsEnabled = false;
|
public boolean testsEnabled = false;
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
@ -25,4 +25,4 @@ public class MassiveCoreTaskDeleteFiles implements Runnable
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,13 @@ package com.massivecraft.massivecore;
|
|||||||
|
|
||||||
import com.massivecraft.massivecore.collections.MassiveList;
|
import com.massivecraft.massivecore.collections.MassiveList;
|
||||||
import com.massivecraft.massivecore.command.MassiveCommand;
|
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.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.ReflectionUtil;
|
||||||
import com.massivecraft.massivecore.util.Txt;
|
import com.massivecraft.massivecore.util.Txt;
|
||||||
import com.massivecraft.massivecore.xlib.gson.Gson;
|
import com.massivecraft.massivecore.xlib.gson.Gson;
|
||||||
@ -14,6 +20,8 @@ import org.bukkit.event.Listener;
|
|||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.lang.reflect.Modifier;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -198,24 +206,59 @@ public abstract class MassivePlugin extends JavaPlugin implements Listener, Name
|
|||||||
this.log(Txt.parse("<b>Now I suicide!"));
|
this.log(Txt.parse("<b>Now I suicide!"));
|
||||||
Bukkit.getPluginManager().disablePlugin(this);
|
Bukkit.getPluginManager().disablePlugin(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void activate(Object... objects)
|
public void activate(Object... objects)
|
||||||
{
|
{
|
||||||
for (Object object : objects)
|
this.activateOne(objects);
|
||||||
{
|
|
||||||
Active active = asActive(object);
|
|
||||||
if (active == null) continue;
|
|
||||||
active.setActive(this);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 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("<h>%s <b>is already active.", active.getClass().getSimpleName()));
|
||||||
|
}
|
||||||
|
|
||||||
|
active.setActive(this);
|
||||||
|
if (debug) log(Txt.parse("<i>Activating <h>%s<i>.", active.getClass().getSimpleName()));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
private static Active asActive(Object object)
|
private static Active asActive(Object object)
|
||||||
{
|
{
|
||||||
|
// Active already
|
||||||
if (object instanceof Active)
|
if (object instanceof Active)
|
||||||
{
|
{
|
||||||
return (Active)object;
|
return (Active) object;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Try string as class name
|
||||||
if (object instanceof String)
|
if (object instanceof String)
|
||||||
{
|
{
|
||||||
String string = (String)object;
|
String string = (String)object;
|
||||||
@ -229,19 +272,21 @@ public abstract class MassivePlugin extends JavaPlugin implements Listener, Name
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Try class
|
||||||
if (object instanceof Class<?>)
|
if (object instanceof Class<?>)
|
||||||
{
|
{
|
||||||
Class<?> clazz = (Class<?>)object;
|
Class<?> clazz = (Class<?>)object;
|
||||||
if ( ! Active.class.isAssignableFrom(clazz)) throw new IllegalArgumentException("Not Active Class: " + (clazz == null ? "NULL" : clazz));
|
if ( ! Active.class.isAssignableFrom(clazz)) throw new IllegalArgumentException("Not Active Class: " + (clazz == null ? "NULL" : clazz));
|
||||||
|
|
||||||
Object instance = ReflectionUtil.getSingletonInstance(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));
|
if ( ! (instance instanceof Active)) throw new IllegalArgumentException("Not Active Instance: " + (instance == null ? "NULL" : instance) + " for object: " + (object == null ? "NULL" : object));
|
||||||
|
|
||||||
Active active = (Active)instance;
|
Active active = (Active)instance;
|
||||||
return active;
|
return active;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// No success
|
||||||
throw new IllegalArgumentException("Neither Active nor Class: " + object);
|
throw new IllegalArgumentException("Neither Active nor Class: " + object);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -266,10 +311,135 @@ public abstract class MassivePlugin extends JavaPlugin implements Listener, Name
|
|||||||
active.setActive(false);
|
active.setActive(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// -------------------------------------------- //
|
||||||
|
// ACTIVATE AUTO
|
||||||
|
// -------------------------------------------- //
|
||||||
|
|
||||||
|
public void activateAuto()
|
||||||
|
{
|
||||||
|
// And activate them
|
||||||
|
this.activate(getClassesActive());
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Class<?>> getClassesActive()
|
||||||
|
{
|
||||||
|
List<Class<?>> 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<Class<?>> getClassesActiveColls()
|
||||||
|
{
|
||||||
|
return getClassesActive("entity", Coll.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Class<?>> getClassesActiveNms()
|
||||||
|
{
|
||||||
|
return getClassesActive("nms", Mixin.class, new Predicate<Class<?>>()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public boolean apply(Class<?> clazz)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
ReflectionUtil.getField(clazz, "d");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Class<?>> getClassesActiveCommands()
|
||||||
|
{
|
||||||
|
return getClassesActive("cmd", MassiveCommand.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Class<?>> getClassesActiveEngines()
|
||||||
|
{
|
||||||
|
return getClassesActive(Engine.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Class<?>> getClassesActiveIntegrations()
|
||||||
|
{
|
||||||
|
return getClassesActive(Integration.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Class<?>> getClassesActiveTasks()
|
||||||
|
{
|
||||||
|
return getClassesActive("task", ModuloRepeatTask.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Class<?>> getClassesActiveMixins()
|
||||||
|
{
|
||||||
|
return getClassesActive(Mixin.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Class<?>> getClassesActiveTests()
|
||||||
|
{
|
||||||
|
return getClassesActive(Test.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Class<?>> getClassesActiveMigrators()
|
||||||
|
{
|
||||||
|
return getClassesActive("entity.migrator", MigratorRoot.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Class<?>> getClassesActive(Class<? extends Active> superClass, Predicate<Class<?>>... predicates)
|
||||||
|
{
|
||||||
|
return getClassesActive(superClass.getSimpleName().toLowerCase(), superClass);
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
public List<Class<?>> getClassesActive(String packageName, final Class<?> superClass, Predicate<Class<?>>... 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<Class<?>> predicateNotAbstract = new Predicate<Class<?>>()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public boolean apply(Class<?> type)
|
||||||
|
{
|
||||||
|
return !Modifier.isAbstract(type.getModifiers());
|
||||||
|
}
|
||||||
|
};
|
||||||
|
Predicate<Class<?>> predicateSubclass = new Predicate<Class<?>>()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public boolean apply(Class<?> type)
|
||||||
|
{
|
||||||
|
return superClass.isAssignableFrom(type);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
Predicate<Class<?>> predicateSingleton = PredicateIsClassSingleton.get();
|
||||||
|
|
||||||
|
return ReflectionUtil.getPackageClasses(packageName, this.getClassLoader(), true, predicateCombined, predicateNotAbstract, predicateSubclass, predicateSingleton);
|
||||||
|
}
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// LOGGING
|
// LOGGING
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
private String logPrefixColored = null;
|
private String logPrefixColored = null;
|
||||||
private String logPrefixPlain = null;
|
private String logPrefixPlain = null;
|
||||||
public void log(Object... msg)
|
public void log(Object... msg)
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package com.massivecraft.massivecore.command.massivecore;
|
package com.massivecraft.massivecore.cmd;
|
||||||
|
|
||||||
import com.massivecraft.massivecore.MassiveCore;
|
import com.massivecraft.massivecore.MassiveCore;
|
||||||
import com.massivecraft.massivecore.MassiveCoreMConf;
|
import com.massivecraft.massivecore.MassiveCoreMConf;
|
@ -1,4 +1,4 @@
|
|||||||
package com.massivecraft.massivecore.command.massivecore;
|
package com.massivecraft.massivecore.cmd;
|
||||||
|
|
||||||
import com.massivecraft.massivecore.MassiveCoreMConf;
|
import com.massivecraft.massivecore.MassiveCoreMConf;
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package com.massivecraft.massivecore.command.massivecore;
|
package com.massivecraft.massivecore.cmd;
|
||||||
|
|
||||||
import com.massivecraft.massivecore.MassiveException;
|
import com.massivecraft.massivecore.MassiveException;
|
||||||
import com.massivecraft.massivecore.command.type.primitive.TypeString;
|
import com.massivecraft.massivecore.command.type.primitive.TypeString;
|
@ -1,4 +1,4 @@
|
|||||||
package com.massivecraft.massivecore.command.massivecore;
|
package com.massivecraft.massivecore.cmd;
|
||||||
|
|
||||||
import com.massivecraft.massivecore.engine.EngineMassiveCoreVariable;
|
import com.massivecraft.massivecore.engine.EngineMassiveCoreVariable;
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package com.massivecraft.massivecore.command.massivecore;
|
package com.massivecraft.massivecore.cmd;
|
||||||
|
|
||||||
import com.massivecraft.massivecore.engine.EngineMassiveCoreVariable;
|
import com.massivecraft.massivecore.engine.EngineMassiveCoreVariable;
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package com.massivecraft.massivecore.command.massivecore;
|
package com.massivecraft.massivecore.cmd;
|
||||||
|
|
||||||
import com.massivecraft.massivecore.MassiveException;
|
import com.massivecraft.massivecore.MassiveException;
|
||||||
import com.massivecraft.massivecore.command.type.primitive.TypeString;
|
import com.massivecraft.massivecore.command.type.primitive.TypeString;
|
@ -1,4 +1,4 @@
|
|||||||
package com.massivecraft.massivecore.command.massivecore;
|
package com.massivecraft.massivecore.cmd;
|
||||||
|
|
||||||
import com.massivecraft.massivecore.MassiveException;
|
import com.massivecraft.massivecore.MassiveException;
|
||||||
import com.massivecraft.massivecore.command.type.primitive.TypeInteger;
|
import com.massivecraft.massivecore.command.type.primitive.TypeInteger;
|
@ -1,4 +1,4 @@
|
|||||||
package com.massivecraft.massivecore.command.massivecore;
|
package com.massivecraft.massivecore.cmd;
|
||||||
|
|
||||||
import com.massivecraft.massivecore.MassiveCoreMConf;
|
import com.massivecraft.massivecore.MassiveCoreMConf;
|
||||||
import com.massivecraft.massivecore.MassiveException;
|
import com.massivecraft.massivecore.MassiveException;
|
@ -1,127 +1,128 @@
|
|||||||
package com.massivecraft.massivecore.command.massivecore;
|
package com.massivecraft.massivecore.cmd;
|
||||||
|
|
||||||
import com.massivecraft.massivecore.MassiveCore;
|
import com.massivecraft.massivecore.MassiveCore;
|
||||||
import com.massivecraft.massivecore.MassiveCoreMConf;
|
import com.massivecraft.massivecore.MassiveCoreMConf;
|
||||||
import com.massivecraft.massivecore.MassiveException;
|
import com.massivecraft.massivecore.MassiveException;
|
||||||
import com.massivecraft.massivecore.command.requirement.RequirementIsPlayer;
|
import com.massivecraft.massivecore.command.requirement.RequirementIsPlayer;
|
||||||
import com.massivecraft.massivecore.command.type.primitive.TypeString;
|
import com.massivecraft.massivecore.command.type.primitive.TypeString;
|
||||||
import com.massivecraft.massivecore.mixin.MixinMessage;
|
import com.massivecraft.massivecore.mixin.MixinMessage;
|
||||||
import com.massivecraft.massivecore.util.WebUtil;
|
import com.massivecraft.massivecore.util.WebUtil;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import java.net.MalformedURLException;
|
import java.net.MalformedURLException;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class CmdMassiveCoreCmdurl extends MassiveCoreCommand
|
public class CmdMassiveCoreCmdurl extends MassiveCoreCommand
|
||||||
{
|
{
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// INSTANCE
|
// INSTANCE
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
private static CmdMassiveCoreCmdurl i = new CmdMassiveCoreCmdurl() { public List<String> getAliases() { return MassiveCoreMConf.get().aliasesCmdurl; } };
|
private static CmdMassiveCoreCmdurl i = new CmdMassiveCoreCmdurl() { public List<String> getAliases() { return MassiveCoreMConf.get().aliasesCmdurl; } };
|
||||||
public static CmdMassiveCoreCmdurl get() { return i; }
|
public static CmdMassiveCoreCmdurl get() { return i; }
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// CONSTRUCT
|
// CONSTRUCT
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
public CmdMassiveCoreCmdurl()
|
public CmdMassiveCoreCmdurl()
|
||||||
{
|
{
|
||||||
// Parameters
|
// Parameters
|
||||||
this.addParameter(TypeString.get(), "url").setDesc("the url to load");
|
this.addParameter(TypeString.get(), "url").setDesc("the url to load");
|
||||||
|
|
||||||
// Requirements
|
// Requirements
|
||||||
this.addRequirements(RequirementIsPlayer.get());
|
this.addRequirements(RequirementIsPlayer.get());
|
||||||
}
|
}
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// OVERRIDE
|
// OVERRIDE
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void perform() throws MassiveException
|
public void perform() throws MassiveException
|
||||||
{
|
{
|
||||||
// Args
|
// Args
|
||||||
String urlString = this.readArg();
|
String urlString = this.readArg();
|
||||||
|
|
||||||
final URL url;
|
final URL url;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
url = new URL(urlString);
|
url = new URL(urlString);
|
||||||
}
|
}
|
||||||
catch (MalformedURLException e)
|
catch (MalformedURLException e)
|
||||||
{
|
{
|
||||||
msg("<b>Malformed URL: %s", e.getMessage());
|
msg("<b>Malformed URL: %s", e.getMessage());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Apply
|
// Apply
|
||||||
final Player commander = me;
|
final Player commander = me;
|
||||||
msg("<i>Loading <aqua>%s <i>...", urlString);
|
msg("<i>Loading <aqua>%s <i>...", urlString);
|
||||||
async(new Runnable()
|
async(new Runnable()
|
||||||
{
|
{
|
||||||
@Override
|
@Override
|
||||||
public void run()
|
public void run()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
final List<String> lines = WebUtil.getLines(url);
|
final List<String> lines = WebUtil.getLines(url);
|
||||||
sync(new Runnable()
|
sync(new Runnable()
|
||||||
{
|
{
|
||||||
@Override
|
@Override
|
||||||
public void run()
|
public void run()
|
||||||
{
|
{
|
||||||
MixinMessage.get().msgOne(commander, "<i>... <h>%d <i>lines loaded. Now executing ...", lines.size());
|
MixinMessage.get().msgOne(commander, "<i>... <h>%d <i>lines loaded. Now executing ...", lines.size());
|
||||||
for (int i = 0; i <= lines.size() - 1; i++)
|
for (int i = 0; i <= lines.size() - 1; i++)
|
||||||
{
|
{
|
||||||
String line = lines.get(i);
|
String line = lines.get(i);
|
||||||
line = line.trim();
|
line = line.trim();
|
||||||
if (line.length() == 0 || line.startsWith("#"))
|
if (line.length() == 0 || line.startsWith("#"))
|
||||||
{
|
{
|
||||||
MixinMessage.get().msgOne(commander, "<b>#%d: <i>%s", i, line);
|
MixinMessage.get().msgOne(commander, "<b>#%d: <i>%s", i, line);
|
||||||
// Ignore the line
|
// Ignore the line
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
MixinMessage.get().msgOne(commander, "<g>#%d: <i>%s", i, line);
|
MixinMessage.get().msgOne(commander, "<g>#%d: <i>%s", i, line);
|
||||||
// Run the line
|
// Run the line
|
||||||
commander.chat(line);
|
commander.chat(line);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
catch (final Exception e)
|
catch (final Exception e)
|
||||||
{
|
{
|
||||||
sync(new Runnable()
|
sync(new Runnable()
|
||||||
{
|
{
|
||||||
@Override
|
@Override
|
||||||
public void run()
|
public void run()
|
||||||
{
|
{
|
||||||
MixinMessage.get().msgOne(commander, "<b>%s: %s", e.getClass().getSimpleName(), e.getMessage());
|
MixinMessage.get().msgOne(commander, "<b>%s: %s", e.getClass().getSimpleName(), e.getMessage());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// ASYNC/SYNC SHORTHANDS
|
// ASYNC/SYNC SHORTHANDS
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
public static void sync(Runnable runnable)
|
public static void sync(Runnable runnable)
|
||||||
{
|
{
|
||||||
Bukkit.getScheduler().runTask(MassiveCore.get(), runnable);
|
Bukkit.getScheduler().runTask(MassiveCore.get(), runnable);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void async(Runnable runnable)
|
public static void async(Runnable runnable)
|
||||||
{
|
{
|
||||||
Bukkit.getScheduler().runTaskAsynchronously(MassiveCore.get(), runnable);
|
Bukkit.getScheduler().runTaskAsynchronously(MassiveCore.get(), runnable);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -1,43 +1,43 @@
|
|||||||
package com.massivecraft.massivecore.command.massivecore;
|
package com.massivecraft.massivecore.cmd;
|
||||||
|
|
||||||
import com.massivecraft.massivecore.MassiveException;
|
import com.massivecraft.massivecore.MassiveException;
|
||||||
import com.massivecraft.massivecore.SoundEffect;
|
import com.massivecraft.massivecore.SoundEffect;
|
||||||
import com.massivecraft.massivecore.command.requirement.RequirementIsPlayer;
|
import com.massivecraft.massivecore.command.requirement.RequirementIsPlayer;
|
||||||
import com.massivecraft.massivecore.command.type.combined.TypeSoundEffect;
|
import com.massivecraft.massivecore.command.type.combined.TypeSoundEffect;
|
||||||
import com.massivecraft.massivecore.command.type.container.TypeList;
|
import com.massivecraft.massivecore.command.type.container.TypeList;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class CmdMassiveCoreHearsound extends MassiveCoreCommand
|
public class CmdMassiveCoreHearsound extends MassiveCoreCommand
|
||||||
{
|
{
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// CONSTRUCT
|
// CONSTRUCT
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
public CmdMassiveCoreHearsound()
|
public CmdMassiveCoreHearsound()
|
||||||
{
|
{
|
||||||
// Aliases
|
// Aliases
|
||||||
this.addAliases("hearsounds");
|
this.addAliases("hearsounds");
|
||||||
|
|
||||||
// Parameters
|
// Parameters
|
||||||
this.addParameter(TypeList.get(TypeSoundEffect.get()), "sound(s)", true).setDesc("the sounds to hear");
|
this.addParameter(TypeList.get(TypeSoundEffect.get()), "sound(s)", true).setDesc("the sounds to hear");
|
||||||
|
|
||||||
// Requirements
|
// Requirements
|
||||||
this.addRequirements(RequirementIsPlayer.get());
|
this.addRequirements(RequirementIsPlayer.get());
|
||||||
}
|
}
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// OVERRIDE
|
// OVERRIDE
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void perform() throws MassiveException
|
public void perform() throws MassiveException
|
||||||
{
|
{
|
||||||
// Args
|
// Args
|
||||||
List<SoundEffect> soundEffects = this.readArg();
|
List<SoundEffect> soundEffects = this.readArg();
|
||||||
|
|
||||||
// Apply
|
// Apply
|
||||||
SoundEffect.runAll(soundEffects, me);
|
SoundEffect.runAll(soundEffects, me);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -1,17 +1,17 @@
|
|||||||
package com.massivecraft.massivecore.command.massivecore;
|
package com.massivecraft.massivecore.cmd;
|
||||||
|
|
||||||
import com.massivecraft.massivecore.ConfServer;
|
import com.massivecraft.massivecore.ConfServer;
|
||||||
|
|
||||||
public class CmdMassiveCoreId extends MassiveCoreCommand
|
public class CmdMassiveCoreId extends MassiveCoreCommand
|
||||||
{
|
{
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// OVERRIDE
|
// OVERRIDE
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void perform()
|
public void perform()
|
||||||
{
|
{
|
||||||
this.msg("<i>The id of this server is \"<h>%s<i>\".", ConfServer.serverid);
|
this.msg("<i>The id of this server is \"<h>%s<i>\".", ConfServer.serverid);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -1,4 +1,4 @@
|
|||||||
package com.massivecraft.massivecore.command.massivecore;
|
package com.massivecraft.massivecore.cmd;
|
||||||
|
|
||||||
import com.massivecraft.massivecore.MassiveCoreMConf;
|
import com.massivecraft.massivecore.MassiveCoreMConf;
|
||||||
import com.massivecraft.massivecore.MassiveCorePerm;
|
import com.massivecraft.massivecore.MassiveCorePerm;
|
@ -1,4 +1,4 @@
|
|||||||
package com.massivecraft.massivecore.command.massivecore;
|
package com.massivecraft.massivecore.cmd;
|
||||||
|
|
||||||
import com.massivecraft.massivecore.MassiveCoreMConf;
|
import com.massivecraft.massivecore.MassiveCoreMConf;
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package com.massivecraft.massivecore.command.massivecore;
|
package com.massivecraft.massivecore.cmd;
|
||||||
|
|
||||||
import com.massivecraft.massivecore.MassiveCore;
|
import com.massivecraft.massivecore.MassiveCore;
|
||||||
import com.massivecraft.massivecore.MassiveException;
|
import com.massivecraft.massivecore.MassiveException;
|
@ -1,4 +1,4 @@
|
|||||||
package com.massivecraft.massivecore.command.massivecore;
|
package com.massivecraft.massivecore.cmd;
|
||||||
|
|
||||||
import com.massivecraft.massivecore.ConfServer;
|
import com.massivecraft.massivecore.ConfServer;
|
||||||
import com.massivecraft.massivecore.MassiveException;
|
import com.massivecraft.massivecore.MassiveException;
|
@ -1,4 +1,4 @@
|
|||||||
package com.massivecraft.massivecore.command.massivecore;
|
package com.massivecraft.massivecore.cmd;
|
||||||
|
|
||||||
import com.massivecraft.massivecore.MassiveException;
|
import com.massivecraft.massivecore.MassiveException;
|
||||||
import com.massivecraft.massivecore.command.type.store.TypeColl;
|
import com.massivecraft.massivecore.command.type.store.TypeColl;
|
@ -1,94 +1,94 @@
|
|||||||
package com.massivecraft.massivecore.command.massivecore;
|
package com.massivecraft.massivecore.cmd;
|
||||||
|
|
||||||
import com.massivecraft.massivecore.MassiveException;
|
import com.massivecraft.massivecore.MassiveException;
|
||||||
import com.massivecraft.massivecore.collections.MassiveList;
|
import com.massivecraft.massivecore.collections.MassiveList;
|
||||||
import com.massivecraft.massivecore.command.Visibility;
|
import com.massivecraft.massivecore.command.Visibility;
|
||||||
import com.massivecraft.massivecore.command.requirement.RequirementIsPlayer;
|
import com.massivecraft.massivecore.command.requirement.RequirementIsPlayer;
|
||||||
import com.massivecraft.massivecore.command.type.TypeItemStack;
|
import com.massivecraft.massivecore.command.type.TypeItemStack;
|
||||||
import com.massivecraft.massivecore.command.type.primitive.TypeBooleanYes;
|
import com.massivecraft.massivecore.command.type.primitive.TypeBooleanYes;
|
||||||
import com.massivecraft.massivecore.mson.Mson;
|
import com.massivecraft.massivecore.mson.Mson;
|
||||||
import com.massivecraft.massivecore.util.InventoryUtil;
|
import com.massivecraft.massivecore.util.InventoryUtil;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class CmdMassiveCoreTest extends MassiveCoreCommand
|
public class CmdMassiveCoreTest extends MassiveCoreCommand
|
||||||
{
|
{
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// CONSTRUCT
|
// CONSTRUCT
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
public CmdMassiveCoreTest()
|
public CmdMassiveCoreTest()
|
||||||
{
|
{
|
||||||
// Parameters
|
// Parameters
|
||||||
this.addParameter(false, TypeBooleanYes.get(), "set", "no");
|
this.addParameter(false, TypeBooleanYes.get(), "set", "no");
|
||||||
|
|
||||||
// Requirements
|
// Requirements
|
||||||
this.addRequirements(RequirementIsPlayer.get());
|
this.addRequirements(RequirementIsPlayer.get());
|
||||||
|
|
||||||
// VisibilityMode
|
// VisibilityMode
|
||||||
this.setVisibility(Visibility.SECRET);
|
this.setVisibility(Visibility.SECRET);
|
||||||
}
|
}
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// OVERRIDE
|
// OVERRIDE
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void perform() throws MassiveException
|
public void perform() throws MassiveException
|
||||||
{
|
{
|
||||||
// Args
|
// Args
|
||||||
boolean set = this.readArg();
|
boolean set = this.readArg();
|
||||||
|
|
||||||
if (set)
|
if (set)
|
||||||
{
|
{
|
||||||
InventoryUtil.setHelmet(me, new ItemStack(Material.DIAMOND_HELMET));
|
InventoryUtil.setHelmet(me, new ItemStack(Material.DIAMOND_HELMET));
|
||||||
InventoryUtil.setChestplate(me, new ItemStack(Material.DIAMOND_CHESTPLATE));
|
InventoryUtil.setChestplate(me, new ItemStack(Material.DIAMOND_CHESTPLATE));
|
||||||
InventoryUtil.setLeggings(me, new ItemStack(Material.DIAMOND_LEGGINGS));
|
InventoryUtil.setLeggings(me, new ItemStack(Material.DIAMOND_LEGGINGS));
|
||||||
InventoryUtil.setBoots(me, new ItemStack(Material.DIAMOND_BOOTS));
|
InventoryUtil.setBoots(me, new ItemStack(Material.DIAMOND_BOOTS));
|
||||||
InventoryUtil.setWeapon(me, new ItemStack(Material.DIAMOND_SWORD));
|
InventoryUtil.setWeapon(me, new ItemStack(Material.DIAMOND_SWORD));
|
||||||
InventoryUtil.setShield(me, new ItemStack(Material.DIRT));
|
InventoryUtil.setShield(me, new ItemStack(Material.DIRT));
|
||||||
}
|
}
|
||||||
|
|
||||||
inform("helmet", InventoryUtil.getHelmet(me));
|
inform("helmet", InventoryUtil.getHelmet(me));
|
||||||
inform("chestplate", InventoryUtil.getChestplate(me));
|
inform("chestplate", InventoryUtil.getChestplate(me));
|
||||||
inform("leggings", InventoryUtil.getLeggings(me));
|
inform("leggings", InventoryUtil.getLeggings(me));
|
||||||
inform("boots", InventoryUtil.getBoots(me));
|
inform("boots", InventoryUtil.getBoots(me));
|
||||||
inform("weapon", InventoryUtil.getWeapon(me));
|
inform("weapon", InventoryUtil.getWeapon(me));
|
||||||
inform("shield", InventoryUtil.getShield(me));
|
inform("shield", InventoryUtil.getShield(me));
|
||||||
|
|
||||||
inform("all", InventoryUtil.getContentsAll(me.getInventory()));
|
inform("all", InventoryUtil.getContentsAll(me.getInventory()));
|
||||||
inform("storage", InventoryUtil.getContentsStorage(me.getInventory()));
|
inform("storage", InventoryUtil.getContentsStorage(me.getInventory()));
|
||||||
inform("armor", InventoryUtil.getContentsArmor(me.getInventory()));
|
inform("armor", InventoryUtil.getContentsArmor(me.getInventory()));
|
||||||
inform("extra", InventoryUtil.getContentsExtra(me.getInventory()));
|
inform("extra", InventoryUtil.getContentsExtra(me.getInventory()));
|
||||||
}
|
}
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// UTIL
|
// UTIL
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
public Mson visualize(ItemStack item)
|
public Mson visualize(ItemStack item)
|
||||||
{
|
{
|
||||||
return TypeItemStack.get().getVisualMson(item, sender);
|
return TypeItemStack.get().getVisualMson(item, sender);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Mson visualize(ItemStack... items)
|
public Mson visualize(ItemStack... items)
|
||||||
{
|
{
|
||||||
List<Mson> msons = new MassiveList<>(Mson.mson(String.valueOf(items.length)).color(ChatColor.AQUA));
|
List<Mson> msons = new MassiveList<>(Mson.mson(String.valueOf(items.length)).color(ChatColor.AQUA));
|
||||||
for (ItemStack item : items)
|
for (ItemStack item : items)
|
||||||
{
|
{
|
||||||
msons.add(visualize(item));
|
msons.add(visualize(item));
|
||||||
}
|
}
|
||||||
return Mson.implode(msons, Mson.SPACE);
|
return Mson.implode(msons, Mson.SPACE);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void inform(String key, ItemStack... items)
|
public void inform(String key, ItemStack... items)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
message(mson(key, ": ", visualize(items)));
|
message(mson(key, ": ", visualize(items)));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -1,4 +1,4 @@
|
|||||||
package com.massivecraft.massivecore.command.massivecore;
|
package com.massivecraft.massivecore.cmd;
|
||||||
|
|
||||||
import com.massivecraft.massivecore.MassiveCoreMConf;
|
import com.massivecraft.massivecore.MassiveCoreMConf;
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package com.massivecraft.massivecore.command.massivecore;
|
package com.massivecraft.massivecore.cmd;
|
||||||
|
|
||||||
public class CmdMassiveCoreUsysAspect extends MassiveCoreCommand
|
public class CmdMassiveCoreUsysAspect extends MassiveCoreCommand
|
||||||
{
|
{
|
@ -1,4 +1,4 @@
|
|||||||
package com.massivecraft.massivecore.command.massivecore;
|
package com.massivecraft.massivecore.cmd;
|
||||||
|
|
||||||
import com.massivecraft.massivecore.Aspect;
|
import com.massivecraft.massivecore.Aspect;
|
||||||
import com.massivecraft.massivecore.AspectColl;
|
import com.massivecraft.massivecore.AspectColl;
|
@ -1,4 +1,4 @@
|
|||||||
package com.massivecraft.massivecore.command.massivecore;
|
package com.massivecraft.massivecore.cmd;
|
||||||
|
|
||||||
import com.massivecraft.massivecore.Aspect;
|
import com.massivecraft.massivecore.Aspect;
|
||||||
import com.massivecraft.massivecore.MassiveException;
|
import com.massivecraft.massivecore.MassiveException;
|
@ -1,4 +1,4 @@
|
|||||||
package com.massivecraft.massivecore.command.massivecore;
|
package com.massivecraft.massivecore.cmd;
|
||||||
|
|
||||||
import com.massivecraft.massivecore.Aspect;
|
import com.massivecraft.massivecore.Aspect;
|
||||||
import com.massivecraft.massivecore.MassiveException;
|
import com.massivecraft.massivecore.MassiveException;
|
@ -1,4 +1,4 @@
|
|||||||
package com.massivecraft.massivecore.command.massivecore;
|
package com.massivecraft.massivecore.cmd;
|
||||||
|
|
||||||
public class CmdMassiveCoreUsysMultiverse extends MassiveCoreCommand
|
public class CmdMassiveCoreUsysMultiverse extends MassiveCoreCommand
|
||||||
{
|
{
|
@ -1,4 +1,4 @@
|
|||||||
package com.massivecraft.massivecore.command.massivecore;
|
package com.massivecraft.massivecore.cmd;
|
||||||
|
|
||||||
import com.massivecraft.massivecore.MassiveCore;
|
import com.massivecraft.massivecore.MassiveCore;
|
||||||
import com.massivecraft.massivecore.MassiveException;
|
import com.massivecraft.massivecore.MassiveException;
|
@ -1,4 +1,4 @@
|
|||||||
package com.massivecraft.massivecore.command.massivecore;
|
package com.massivecraft.massivecore.cmd;
|
||||||
|
|
||||||
import com.massivecraft.massivecore.MassiveException;
|
import com.massivecraft.massivecore.MassiveException;
|
||||||
import com.massivecraft.massivecore.Multiverse;
|
import com.massivecraft.massivecore.Multiverse;
|
@ -1,4 +1,4 @@
|
|||||||
package com.massivecraft.massivecore.command.massivecore;
|
package com.massivecraft.massivecore.cmd;
|
||||||
|
|
||||||
import com.massivecraft.massivecore.MassiveException;
|
import com.massivecraft.massivecore.MassiveException;
|
||||||
import com.massivecraft.massivecore.MultiverseColl;
|
import com.massivecraft.massivecore.MultiverseColl;
|
@ -1,4 +1,4 @@
|
|||||||
package com.massivecraft.massivecore.command.massivecore;
|
package com.massivecraft.massivecore.cmd;
|
||||||
|
|
||||||
import com.massivecraft.massivecore.Aspect;
|
import com.massivecraft.massivecore.Aspect;
|
||||||
import com.massivecraft.massivecore.MassiveCore;
|
import com.massivecraft.massivecore.MassiveCore;
|
@ -1,4 +1,4 @@
|
|||||||
package com.massivecraft.massivecore.command.massivecore;
|
package com.massivecraft.massivecore.cmd;
|
||||||
|
|
||||||
public class CmdMassiveCoreUsysUniverse extends MassiveCoreCommand
|
public class CmdMassiveCoreUsysUniverse extends MassiveCoreCommand
|
||||||
{
|
{
|
@ -1,4 +1,4 @@
|
|||||||
package com.massivecraft.massivecore.command.massivecore;
|
package com.massivecraft.massivecore.cmd;
|
||||||
|
|
||||||
import com.massivecraft.massivecore.MassiveCore;
|
import com.massivecraft.massivecore.MassiveCore;
|
||||||
import com.massivecraft.massivecore.MassiveException;
|
import com.massivecraft.massivecore.MassiveException;
|
@ -1,4 +1,4 @@
|
|||||||
package com.massivecraft.massivecore.command.massivecore;
|
package com.massivecraft.massivecore.cmd;
|
||||||
|
|
||||||
import com.massivecraft.massivecore.MassiveCore;
|
import com.massivecraft.massivecore.MassiveCore;
|
||||||
import com.massivecraft.massivecore.MassiveException;
|
import com.massivecraft.massivecore.MassiveException;
|
@ -1,4 +1,4 @@
|
|||||||
package com.massivecraft.massivecore.command.massivecore;
|
package com.massivecraft.massivecore.cmd;
|
||||||
|
|
||||||
import com.massivecraft.massivecore.MassiveException;
|
import com.massivecraft.massivecore.MassiveException;
|
||||||
import com.massivecraft.massivecore.Multiverse;
|
import com.massivecraft.massivecore.Multiverse;
|
@ -1,4 +1,4 @@
|
|||||||
package com.massivecraft.massivecore.command.massivecore;
|
package com.massivecraft.massivecore.cmd;
|
||||||
|
|
||||||
import com.massivecraft.massivecore.MassiveException;
|
import com.massivecraft.massivecore.MassiveException;
|
||||||
import com.massivecraft.massivecore.Multiverse;
|
import com.massivecraft.massivecore.Multiverse;
|
@ -1,4 +1,4 @@
|
|||||||
package com.massivecraft.massivecore.command.massivecore;
|
package com.massivecraft.massivecore.cmd;
|
||||||
|
|
||||||
import com.massivecraft.massivecore.MassiveCorePerm;
|
import com.massivecraft.massivecore.MassiveCorePerm;
|
||||||
import com.massivecraft.massivecore.command.MassiveCommand;
|
import com.massivecraft.massivecore.command.MassiveCommand;
|
@ -40,6 +40,8 @@ public class CommandEditSingleton<O> extends CommandEditProperties<O, O>
|
|||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
private static <O> Type<O> getType(O object)
|
private static <O> Type<O> getType(O object)
|
||||||
{
|
{
|
||||||
|
if (object == null) throw new NullPointerException("object");
|
||||||
|
|
||||||
// Get the return value
|
// Get the return value
|
||||||
Type<O> ret = TypeSingleton.get(object);
|
Type<O> ret = TypeSingleton.get(object);
|
||||||
|
|
||||||
|
@ -93,7 +93,8 @@ public class Mixin extends Engine
|
|||||||
}
|
}
|
||||||
catch (Throwable t)
|
catch (Throwable t)
|
||||||
{
|
{
|
||||||
throw ReflectionUtil.asRuntimeException(t);
|
t.printStackTrace();
|
||||||
|
//throw ReflectionUtil.asRuntimeException(t);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -0,0 +1,24 @@
|
|||||||
|
package com.massivecraft.massivecore.predicate;
|
||||||
|
|
||||||
|
import com.massivecraft.massivecore.util.ReflectionUtil;
|
||||||
|
|
||||||
|
public class PredicateIsClassSingleton implements Predicate<Class<?>>
|
||||||
|
{
|
||||||
|
// -------------------------------------------- //
|
||||||
|
// 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);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -978,4 +978,3 @@ public final class PS implements Serializable, Comparable<PS>
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -9,6 +9,7 @@ import com.massivecraft.massivecore.util.Txt;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
public abstract class Test extends Engine
|
public abstract class Test extends Engine
|
||||||
{
|
{
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
@ -1,8 +1,14 @@
|
|||||||
package com.massivecraft.massivecore.util;
|
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.Predicate;
|
||||||
|
import com.massivecraft.massivecore.predicate.PredicateAnd;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
import java.lang.annotation.Annotation;
|
import java.lang.annotation.Annotation;
|
||||||
import java.lang.reflect.Constructor;
|
import java.lang.reflect.Constructor;
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
@ -12,6 +18,7 @@ import java.lang.reflect.Modifier;
|
|||||||
import java.lang.reflect.ParameterizedType;
|
import java.lang.reflect.ParameterizedType;
|
||||||
import java.lang.reflect.Type;
|
import java.lang.reflect.Type;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class ReflectionUtil
|
public class ReflectionUtil
|
||||||
@ -243,6 +250,19 @@ public class ReflectionUtil
|
|||||||
}
|
}
|
||||||
return fallback;
|
return fallback;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean isSingleton(Class<?> clazz)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Method get = getMethod(clazz, "get");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// ANNOTATION
|
// ANNOTATION
|
||||||
@ -422,7 +442,61 @@ public class ReflectionUtil
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// -------------------------------------------- //
|
||||||
|
// GET PACKAGE CLASSES
|
||||||
|
// -------------------------------------------- //
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
public static List<Class<?>> getPackageClasses(String packageName, ClassLoader classLoader, boolean recursive, Predicate<Class<?>>... predicates)
|
||||||
|
{
|
||||||
|
// Create ret
|
||||||
|
List<Class<?>> ret = new MassiveList<>();
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// Get info
|
||||||
|
ClassPath classPath = ClassPath.from(classLoader);
|
||||||
|
Predicate<Class<?>> predicateCombined = PredicateAnd.get(predicates);
|
||||||
|
|
||||||
|
Collection<ClassInfo> 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
|
// AS RUNTIME EXCEPTION
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
@ -2,7 +2,7 @@ package com.massivecraft.massivecore.util;
|
|||||||
|
|
||||||
import com.massivecraft.massivecore.collections.MassiveList;
|
import com.massivecraft.massivecore.collections.MassiveList;
|
||||||
import com.massivecraft.massivecore.command.MassiveCommand;
|
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.Mson;
|
||||||
import com.massivecraft.massivecore.mson.MsonEvent;
|
import com.massivecraft.massivecore.mson.MsonEvent;
|
||||||
import com.massivecraft.massivecore.predicate.Predicate;
|
import com.massivecraft.massivecore.predicate.Predicate;
|
||||||
|
Loading…
Reference in New Issue
Block a user