More abstraction

This commit is contained in:
nossr50
2019-02-12 07:17:27 -08:00
parent 1ab4645223
commit 84353de71d
13 changed files with 120 additions and 55 deletions

View File

@ -1,5 +1,7 @@
package com.gmail.nossr50.core;
public class McmmoCore {
import com.gmail.nossr50.core.mcmmo.plugin.Plugin;
public class McmmoCore {
public static Plugin p;
}

View File

@ -1,8 +1,8 @@
package com.gmail.nossr50.core.api;
import com.gmail.nossr50.core.api.exceptions.*;
import com.gmail.nossr50.core.config.experience.ExperienceConfig;
import com.gmail.nossr50.core.config.Config;
import com.gmail.nossr50.core.config.experience.ExperienceConfig;
import com.gmail.nossr50.core.data.UserManager;
import com.gmail.nossr50.core.datatypes.experience.FormulaType;
import com.gmail.nossr50.core.datatypes.experience.XPGainReason;

View File

@ -1,9 +1,10 @@
package com.gmail.nossr50.core.datatypes.player;
import com.gmail.nossr50.config.experience.ExperienceConfig;
import com.gmail.nossr50.core.McmmoCore;
import com.gmail.nossr50.core.config.AdvancedConfig;
import com.gmail.nossr50.core.config.Config;
import com.gmail.nossr50.core.config.WorldBlacklist;
import com.gmail.nossr50.core.config.experience.ExperienceConfig;
import com.gmail.nossr50.core.data.UserManager;
import com.gmail.nossr50.core.datatypes.chat.ChatMode;
import com.gmail.nossr50.core.datatypes.experience.XPGainReason;
@ -12,52 +13,48 @@ import com.gmail.nossr50.core.datatypes.interactions.NotificationType;
import com.gmail.nossr50.core.datatypes.mods.CustomTool;
import com.gmail.nossr50.core.datatypes.party.Party;
import com.gmail.nossr50.core.datatypes.party.PartyTeleportRecord;
import com.gmail.nossr50.core.locale.LocaleLoader;
import com.gmail.nossr50.core.mcmmo.entity.Player;
import com.gmail.nossr50.core.mcmmo.meta.Metadata;
import com.gmail.nossr50.core.mcmmo.meta.MetadataDefinitions;
import com.gmail.nossr50.core.mcmmo.world.Location;
import com.gmail.nossr50.core.party.PartyManager;
import com.gmail.nossr50.core.party.ShareHandler;
import com.gmail.nossr50.core.runnables.skills.AbilityDisableTask;
import com.gmail.nossr50.core.runnables.skills.BleedTimerTask;
import com.gmail.nossr50.core.runnables.skills.ToolLowerTask;
import com.gmail.nossr50.core.skills.PrimarySkillType;
import com.gmail.nossr50.core.skills.SkillManager;
import com.gmail.nossr50.core.skills.SuperAbilityType;
import com.gmail.nossr50.core.skills.ToolType;
import com.gmail.nossr50.locale.LocaleLoader;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.party.PartyManager;
import com.gmail.nossr50.party.ShareHandler;
import com.gmail.nossr50.runnables.skills.AbilityDisableTask;
import com.gmail.nossr50.runnables.skills.BleedTimerTask;
import com.gmail.nossr50.runnables.skills.ToolLowerTask;
import com.gmail.nossr50.skills.SkillManager;
import com.gmail.nossr50.skills.acrobatics.AcrobaticsManager;
import com.gmail.nossr50.skills.alchemy.AlchemyManager;
import com.gmail.nossr50.skills.archery.ArcheryManager;
import com.gmail.nossr50.skills.axes.AxesManager;
import com.gmail.nossr50.skills.child.FamilyTree;
import com.gmail.nossr50.skills.excavation.ExcavationManager;
import com.gmail.nossr50.skills.fishing.FishingManager;
import com.gmail.nossr50.skills.herbalism.HerbalismManager;
import com.gmail.nossr50.skills.mining.MiningManager;
import com.gmail.nossr50.skills.repair.RepairManager;
import com.gmail.nossr50.skills.salvage.SalvageManager;
import com.gmail.nossr50.skills.smelting.SmeltingManager;
import com.gmail.nossr50.skills.swords.SwordsManager;
import com.gmail.nossr50.skills.taming.TamingManager;
import com.gmail.nossr50.skills.unarmed.UnarmedManager;
import com.gmail.nossr50.skills.woodcutting.WoodcuttingManager;
import com.gmail.nossr50.util.EventUtils;
import com.gmail.nossr50.util.Misc;
import com.gmail.nossr50.util.Permissions;
import com.gmail.nossr50.util.experience.ExperienceBarManager;
import com.gmail.nossr50.util.player.NotificationManager;
import com.gmail.nossr50.util.scoreboards.ScoreboardManager;
import com.gmail.nossr50.util.skills.ParticleEffectUtils;
import com.gmail.nossr50.util.skills.PerksUtils;
import com.gmail.nossr50.util.skills.RankUtils;
import com.gmail.nossr50.util.skills.SkillUtils;
import com.gmail.nossr50.util.sounds.SoundManager;
import com.gmail.nossr50.util.sounds.SoundType;
import org.apache.commons.lang.Validate;
import org.bukkit.GameMode;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.metadata.FixedMetadataValue;
import org.bukkit.plugin.Plugin;
import com.gmail.nossr50.core.skills.child.FamilyTree;
import com.gmail.nossr50.core.skills.child.salvage.SalvageManager;
import com.gmail.nossr50.core.skills.child.smelting.SmeltingManager;
import com.gmail.nossr50.core.skills.primary.acrobatics.AcrobaticsManager;
import com.gmail.nossr50.core.skills.primary.alchemy.AlchemyManager;
import com.gmail.nossr50.core.skills.primary.archery.ArcheryManager;
import com.gmail.nossr50.core.skills.primary.axes.AxesManager;
import com.gmail.nossr50.core.skills.primary.excavation.ExcavationManager;
import com.gmail.nossr50.core.skills.primary.fishing.FishingManager;
import com.gmail.nossr50.core.skills.primary.herbalism.HerbalismManager;
import com.gmail.nossr50.core.skills.primary.mining.MiningManager;
import com.gmail.nossr50.core.skills.primary.repair.RepairManager;
import com.gmail.nossr50.core.skills.primary.swords.SwordsManager;
import com.gmail.nossr50.core.skills.primary.taming.TamingManager;
import com.gmail.nossr50.core.skills.primary.unarmed.UnarmedManager;
import com.gmail.nossr50.core.skills.primary.woodcutting.WoodcuttingManager;
import com.gmail.nossr50.core.util.EventUtils;
import com.gmail.nossr50.core.util.Misc;
import com.gmail.nossr50.core.util.Permissions;
import com.gmail.nossr50.core.util.experience.ExperienceBarManager;
import com.gmail.nossr50.core.util.player.NotificationManager;
import com.gmail.nossr50.core.util.scoreboards.ScoreboardManager;
import com.gmail.nossr50.core.util.skills.ParticleEffectUtils;
import com.gmail.nossr50.core.util.skills.PerksUtils;
import com.gmail.nossr50.core.util.skills.RankUtils;
import com.gmail.nossr50.core.util.skills.SkillUtils;
import com.gmail.nossr50.core.util.sounds.SoundManager;
import com.gmail.nossr50.core.util.sounds.SoundType;
import java.util.HashMap;
import java.util.Map;
@ -69,7 +66,7 @@ public class McMMOPlayer {
private final Map<SuperAbilityType, Boolean> abilityMode = new HashMap<SuperAbilityType, Boolean>();
private final Map<SuperAbilityType, Boolean> abilityInformed = new HashMap<SuperAbilityType, Boolean>();
private final Map<ToolType, Boolean> toolMode = new HashMap<ToolType, Boolean>();
private final FixedMetadataValue playerMetadata;
private final Metadata playerMetadata;
private Player player;
private PlayerProfile profile;
private ExperienceBarManager experienceBarManager;
@ -94,10 +91,10 @@ public class McMMOPlayer {
public McMMOPlayer(Player player, PlayerProfile profile) {
String playerName = player.getName();
UUID uuid = player.getUniqueId();
UUID uuid = player.getUUID();
this.player = player;
playerMetadata = new FixedMetadataValue(mcMMO.p, playerName);
playerMetadata = player.setMetadata(MetadataDefinitions.MCMMO_METADATA_PLAYERDATA_KEY, playerName); //new FixedMetadataValue(mcMMO.p, playerName);
this.profile = profile;
if (profile.getUniqueId() == null) {
@ -115,7 +112,8 @@ public class McMMOPlayer {
}
} catch (Exception e) {
e.printStackTrace();
mcMMO.p.getPluginLoader().disablePlugin(mcMMO.p);
McmmoCore.p.disablePlugin(); //Disable Plugin
//mcMMO.p.getPluginLoader().disablePlugin(mcMMO.p);
}
for (SuperAbilityType superAbilityType : SuperAbilityType.values()) {

View File

@ -1,7 +1,5 @@
package com.gmail.nossr50.core.mcmmo;
import com.gmail.nossr50.core.mcmmo.Named;
public interface Nameable extends Named {
/**
* Change the name for this entity

View File

@ -1,9 +1,9 @@
package com.gmail.nossr50.core.mcmmo.entity;
import com.gmail.nossr50.core.mcmmo.world.Location;
import com.gmail.nossr50.core.mcmmo.Named;
import com.gmail.nossr50.core.mcmmo.Unique;
import com.gmail.nossr50.core.mcmmo.meta.MetadataHolder;
import com.gmail.nossr50.core.mcmmo.world.Location;
/**
* Entities can be a lot of things in MC

View File

@ -0,0 +1,5 @@
package com.gmail.nossr50.core.mcmmo.meta;
public class MetadataDefinitions {
public static final String MCMMO_METADATA_PLAYERDATA_KEY = "mcMMO_PlayerDataKey";
}

View File

@ -15,6 +15,15 @@ public interface MetadataHolder {
/**
* Sets the metadata, will replace metadata with an existing key or add metadata if there was none
* @param metadata metadata to add
* @return a copy of the metadata
*/
void setMetadata(Metadata metadata);
Metadata setMetadata(Metadata metadata);
/**
* Sets the metadata, will replace metadata with a matching key or add metadata if there was none
* @param key metadata key
* @param value metadata value
* @return a copy of the metadata
*/
Metadata setMetadata(String key, Object value);
}

View File

@ -0,0 +1,13 @@
package com.gmail.nossr50.core.mcmmo.plugin;
/**
* Represents mcMMO as it is seen by various APIs
* In Bukkit, its useful to have a Plugin reference to schedule tasks etc, that is why this abstraction exists
* I'm actually not sure I need this though
*/
public interface Plugin {
/**
* In the event of some critical failure in mcMMO shut down the plugin
*/
void disablePlugin();
}

View File

@ -0,0 +1,8 @@
package com.gmail.nossr50.core.mcmmo.tasks;
/**
* An ASync Task
* You have to be careful where you use these, a lot of things are not thread safe
*/
public interface ASyncTask extends PluginTask {
}

View File

@ -0,0 +1,23 @@
package com.gmail.nossr50.core.mcmmo.tasks;
/**
* Represents a schedules task
* Bukkit and Sponge both have systems for this
*/
public interface PluginTask {
/**
* Kills the current task
*/
void killTask();
/**
* Schedule a delayed task in n ticks
* @param ticks ticks until the task should start
*/
void scheduleTask(int ticks);
/**
* Schedule this task (begins ASAP)
*/
void scheduleTask();
}

View File

@ -0,0 +1,9 @@
package com.gmail.nossr50.core.mcmmo.tasks;
/**
* Represents a SyncTask
* SyncTasks run on the main thread
*/
public interface SyncTask extends PluginTask {
}

View File

@ -1,7 +1,6 @@
package com.gmail.nossr50.core.mcmmo.world;
import com.flowpowered.math.vector.Vector3d;
import com.gmail.nossr50.core.mcmmo.world.World;
/**
* This class represents a Location in MC