It compiles

running is a different matter, however...
This commit is contained in:
Shane Freeder 2020-02-29 05:05:49 +00:00
parent a26216b0d0
commit a2c88d657c
No known key found for this signature in database
GPG Key ID: A3F61EA5A085289C
80 changed files with 838 additions and 475 deletions

View File

@ -5,4 +5,5 @@ plugins {
dependencies { dependencies {
api("org.jetbrains:annotations:17.0.0") api("org.jetbrains:annotations:17.0.0")
api("co.aikar:acf-core:0.5.0-SNAPSHOT") //Don't change without updating the artifacts for its dependencies (see the other comments)
} }

View File

@ -1,12 +1,18 @@
package com.gmail.nossr50.mcmmo.api.platform; package com.gmail.nossr50.mcmmo.api.platform;
import com.gmail.nossr50.mcmmo.api.data.MMOEntity;
import com.gmail.nossr50.mcmmo.api.platform.scheduler.PlatformScheduler; import com.gmail.nossr50.mcmmo.api.platform.scheduler.PlatformScheduler;
import com.gmail.nossr50.mcmmo.api.platform.util.MetadataStore; import com.gmail.nossr50.mcmmo.api.platform.util.MetadataStore;
import com.gmail.nossr50.mcmmo.api.platform.util.MobHealthBarManager; import com.gmail.nossr50.mcmmo.api.platform.util.MobHealthBarManager;
import java.io.File; import java.io.File;
import java.util.UUID;
import java.util.logging.Logger; import java.util.logging.Logger;
import co.aikar.commands.CommandIssuer;
import co.aikar.commands.CommandManager;
import co.aikar.commands.CommandOperationContext;
public interface PlatformProvider { public interface PlatformProvider {
Logger getLogger(); Logger getLogger();
@ -38,4 +44,19 @@ public interface PlatformProvider {
void checkMetrics(); void checkMetrics();
MobHealthBarManager getHealthBarManager(); MobHealthBarManager getHealthBarManager();
@Deprecated
void registerCustomRecipes();
CommandManager getCommandManager();
// EVIL - EVILNESS FROM BEYOND THIS POINT - EVIL
// THOU HAST BEEN WARNED
@Deprecated
MMOEntity<?> getEntity(UUID uniqueId);
@Deprecated
Object getChimaeraWing();
} }

View File

@ -9,9 +9,9 @@ public interface PlatformScheduler {
Task scheduleTask(TaskBuilder taskBuilder); Task scheduleTask(TaskBuilder taskBuilder);
class TaskBuilder { abstract class TaskBuilder {
Integer delay; Long delay;
Integer repeatTime; Long repeatTime;
public boolean isAsync() { public boolean isAsync() {
return isAsync; return isAsync;
@ -25,20 +25,20 @@ public interface PlatformScheduler {
boolean isAsync = false; boolean isAsync = false;
Consumer<Task> task; Consumer<Task> task;
public Integer getDelay() { public Long getDelay() {
return delay; return delay;
} }
public TaskBuilder setDelay(Integer delay) { public TaskBuilder setDelay(Long delay) {
this.delay = delay; this.delay = delay;
return this; return this;
} }
public Integer getRepeatTime() { public Long getRepeatTime() {
return repeatTime; return repeatTime;
} }
public TaskBuilder setRepeatTime(Integer repeatTime) { public TaskBuilder setRepeatTime(Long repeatTime) {
this.repeatTime = repeatTime; this.repeatTime = repeatTime;
return this; return this;
} }
@ -51,5 +51,13 @@ public interface PlatformScheduler {
this.task = task; this.task = task;
return this; return this;
} }
@Deprecated
public TaskBuilder setTask(Runnable runnableTask) {
this.setTask(task -> runnableTask.run());
return this;
}
public abstract Task schedule();
} }
} }

View File

@ -12,10 +12,14 @@ tasks {
} }
shadowJar { shadowJar {
/*
dependencies { dependencies {
include(dependency("org.bstats:bstats-bukkit")) include(dependency("org.bstats:bstats-bukkit"))
exclude(dependency("org.spigotmc:spigot")) include(project(":mcmmo-api"))
include(project(":mcmmo-core"))
include(project(":mcmmo-bukkit"))
} }
*/
relocate("org.apache.commons.logging", "com.gmail.nossr50.commons.logging") relocate("org.apache.commons.logging", "com.gmail.nossr50.commons.logging")
relocate("org.apache.juli", "com.gmail.nossr50.database.tomcat.juli") relocate("org.apache.juli", "com.gmail.nossr50.database.tomcat.juli")
relocate("org.apache.tomcat", "com.gmail.nossr50.database.tomcat") relocate("org.apache.tomcat", "com.gmail.nossr50.database.tomcat")
@ -29,14 +33,15 @@ tasks {
dependencies { dependencies {
api(project(":mcmmo-api")) compile(project(":mcmmo-api"))
implementation(project(":mcmmo-core")) compile(project(":mcmmo-core"))
api("org.apache.tomcat:tomcat-jdbc:7.0.52") api("org.apache.tomcat:tomcat-jdbc:7.0.52")
api("net.kyori:event-api:3.0.0") api("net.kyori:event-api:3.0.0")
implementation("org.apache.maven.scm:maven-scm-provider-gitexe:1.8.1") implementation("org.apache.maven.scm:maven-scm-provider-gitexe:1.8.1")
implementation("co.aikar:acf-paper:0.5.0-SNAPSHOT") //Don't change without updating the artifacts for its dependencies (see the other comments)
implementation("org.bstats:bstats-bukkit:1.4") implementation("org.bstats:bstats-bukkit:1.4")
implementation("org.spigotmc:spigot:1.14.4-R0.1-SNAPSHOT") compileOnly("org.spigotmc:spigot:1.14.4-R0.1-SNAPSHOT")
implementation("com.sk89q.worldguard:worldguard-legacy:7.0.0-SNAPSHOT") implementation("com.sk89q.worldguard:worldguard-legacy:7.0.0-SNAPSHOT")
testImplementation("junit:junit:4.10") testImplementation("junit:junit:4.10")
} }

View File

@ -1,29 +1,50 @@
package com.gmail.nossr50.mcmmo.bukkit; package com.gmail.nossr50.mcmmo.bukkit;
import com.gmail.nossr50.datatypes.player.BukkitMMOPlayer;
import com.gmail.nossr50.listeners.*; import com.gmail.nossr50.listeners.*;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.mcmmo.api.data.MMOEntity;
import com.gmail.nossr50.mcmmo.api.platform.PlatformProvider; import com.gmail.nossr50.mcmmo.api.platform.PlatformProvider;
import com.gmail.nossr50.mcmmo.api.platform.ServerSoftwareType; import com.gmail.nossr50.mcmmo.api.platform.ServerSoftwareType;
import com.gmail.nossr50.mcmmo.api.platform.scheduler.PlatformScheduler; import com.gmail.nossr50.mcmmo.api.platform.scheduler.PlatformScheduler;
import com.gmail.nossr50.mcmmo.api.platform.util.MetadataStore; import com.gmail.nossr50.mcmmo.api.platform.util.MetadataStore;
import com.gmail.nossr50.mcmmo.api.platform.util.MobHealthBarManager; import com.gmail.nossr50.mcmmo.api.platform.util.MobHealthBarManager;
import com.gmail.nossr50.mcmmo.bukkit.platform.entity.BukkitMMOEntity;
import com.gmail.nossr50.mcmmo.bukkit.platform.scheduler.BukkitPlatformScheduler; import com.gmail.nossr50.mcmmo.bukkit.platform.scheduler.BukkitPlatformScheduler;
import com.gmail.nossr50.mcmmo.bukkit.platform.util.BukkitMobHealthBarManager; import com.gmail.nossr50.mcmmo.bukkit.platform.util.BukkitMobHealthBarManager;
import org.bstats.bukkit.Metrics; import org.bstats.bukkit.Metrics;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.NamespacedKey;
import org.bukkit.entity.Entity;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.HandlerList; import org.bukkit.event.HandlerList;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.Recipe;
import org.bukkit.inventory.ShapelessRecipe;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.UUID;
import java.util.logging.Logger; import java.util.logging.Logger;
public class BukkitBoostrap extends JavaPlugin implements PlatformProvider { import co.aikar.commands.CommandManager;
import co.aikar.commands.PaperCommandManager;
public class BukkitBootstrap extends JavaPlugin implements PlatformProvider {
private mcMMO core = new mcMMO(this); private mcMMO core = new mcMMO(this);
private final BukkitPlatformScheduler scheduler = new BukkitPlatformScheduler(this); private final BukkitPlatformScheduler scheduler = new BukkitPlatformScheduler(this);
private final MobHealthBarManager healthBarManager = new BukkitMobHealthBarManager(core); private final MobHealthBarManager healthBarManager = new BukkitMobHealthBarManager(this, core);
private PaperCommandManager paperCommandManager;
@Override @Override
public @NotNull Logger getLogger() { public @NotNull Logger getLogger() {
@ -45,7 +66,7 @@ public class BukkitBoostrap extends JavaPlugin implements PlatformProvider {
@Override @Override
public String getVersion() { public String getVersion() {
return this.getVersion(); return getDescription().getVersion();
} }
@Override @Override
@ -57,7 +78,8 @@ public class BukkitBoostrap extends JavaPlugin implements PlatformProvider {
} }
registerEvents(); registerEvents();
paperCommandManager = new PaperCommandManager(this);
paperCommandManager.registerDependency(mcMMO.class, core);
} }
@Override @Override
@ -122,9 +144,77 @@ public class BukkitBoostrap extends JavaPlugin implements PlatformProvider {
@Override @Override
public MobHealthBarManager getHealthBarManager() { public MobHealthBarManager getHealthBarManager() {
return healthBarManager;
}
@Override
public void registerCustomRecipes() {
getServer().getScheduler().scheduleSyncDelayedTask(this, () -> {
if (core.getConfigManager().getConfigItems().isChimaeraWingEnabled()) {
Recipe recipe = getChimaeraWingRecipe();
if(!core.getSkillTools().hasRecipeBeenRegistered(recipe))
getServer().addRecipe(getChimaeraWingRecipe());
}
}, 40);
}
@Override
public CommandManager getCommandManager() {
return paperCommandManager;
}
@Override
@Deprecated // TODO: This needs proper registration...
public MMOEntity<?> getEntity(UUID uniqueId) {
final Entity entity = Bukkit.getEntity(uniqueId);
if (entity instanceof Player) {
core.getUserManager().getPlayer((Player) entity);
} else if (entity instanceof LivingEntity) {
return new BukkitMMOEntity(entity);
} else if (entity != null){
return new BukkitMMOEntity(entity);
}
return null; return null;
} }
//TODO: Add this stuff to DSM, this location is temporary
//TODO: even more temp here....
private ShapelessRecipe getChimaeraWingRecipe() {
Material ingredient = Material.matchMaterial(core.getConfigManager().getConfigItems().getChimaeraWingRecipeMats());
if(ingredient == null)
ingredient = Material.FEATHER;
int amount = core.getConfigManager().getConfigItems().getChimaeraWingUseCost();
ShapelessRecipe chimaeraWing = new ShapelessRecipe(new NamespacedKey(this, "Chimaera"), getChimaeraWing());
chimaeraWing.addIngredient(amount, ingredient);
return chimaeraWing;
}
//TODO: Add this stuff to DSM, this location is temporary
public ItemStack getChimaeraWing() {
Material ingredient = Material.matchMaterial(core.getConfigManager().getConfigItems().getChimaeraWingRecipeMats());
if(ingredient == null)
ingredient = Material.FEATHER;
//TODO: Make it so Chimaera wing amounts made is customizeable
ItemStack itemStack = new ItemStack(ingredient, 1);
ItemMeta itemMeta = itemStack.getItemMeta();
itemMeta.setDisplayName(ChatColor.GOLD + core.getLocaleManager().getString("Item.ChimaeraWing.Name"));
List<String> itemLore = new ArrayList<>();
itemLore.add("mcMMO Item");
itemLore.add(core.getLocaleManager().getString("Item.ChimaeraWing.Lore"));
itemMeta.setLore(itemLore);
itemStack.setItemMeta(itemMeta);
return itemStack;
}
private void registerEvents() { private void registerEvents() {
PluginManager pluginManager = getServer().getPluginManager(); PluginManager pluginManager = getServer().getPluginManager();
@ -137,4 +227,9 @@ public class BukkitBoostrap extends JavaPlugin implements PlatformProvider {
pluginManager.registerEvents(new SelfListener(core), this); pluginManager.registerEvents(new SelfListener(core), this);
pluginManager.registerEvents(new WorldListener(core), this); pluginManager.registerEvents(new WorldListener(core), this);
} }
@Override
public void onEnable() {
core.onEnable();
}
} }

View File

@ -0,0 +1,19 @@
package com.gmail.nossr50.mcmmo.bukkit.platform.entity;
import com.gmail.nossr50.mcmmo.api.data.MMOEntity;
import org.bukkit.entity.Entity;
public class BukkitMMOEntity implements MMOEntity<Entity> {
Entity entity;
public BukkitMMOEntity(Entity entity) {
this.entity = entity;
}
@Override
public Entity getNative() {
return null;
}
}

View File

@ -0,0 +1,19 @@
package com.gmail.nossr50.mcmmo.bukkit.platform.entity.living;
import com.gmail.nossr50.mcmmo.api.data.MMOEntity;
import org.bukkit.entity.LivingEntity;
public class BukkitMMOLivingEntity implements MMOEntity<LivingEntity> {
LivingEntity entity;
public BukkitMMOLivingEntity(LivingEntity entity) {
this.entity = entity;
}
@Override
public LivingEntity getNative() {
return entity;
}
}

View File

@ -2,7 +2,7 @@ package com.gmail.nossr50.mcmmo.bukkit.platform.scheduler;
import com.gmail.nossr50.mcmmo.api.platform.scheduler.PlatformScheduler; import com.gmail.nossr50.mcmmo.api.platform.scheduler.PlatformScheduler;
import com.gmail.nossr50.mcmmo.api.platform.scheduler.Task; import com.gmail.nossr50.mcmmo.api.platform.scheduler.Task;
import com.gmail.nossr50.mcmmo.bukkit.BukkitBoostrap; import com.gmail.nossr50.mcmmo.bukkit.BukkitBootstrap;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.scheduler.BukkitScheduler; import org.bukkit.scheduler.BukkitScheduler;
import org.bukkit.scheduler.BukkitTask; import org.bukkit.scheduler.BukkitTask;
@ -11,21 +11,26 @@ import java.util.function.Consumer;
public class BukkitPlatformScheduler implements PlatformScheduler { public class BukkitPlatformScheduler implements PlatformScheduler {
private final BukkitBoostrap bukkitBoostrap; private final BukkitBootstrap bukkitBootstrap;
public BukkitPlatformScheduler(BukkitBoostrap bukkitBoostrap) { public BukkitPlatformScheduler(BukkitBootstrap bukkitBootstrap) {
this.bukkitBoostrap = bukkitBoostrap; this.bukkitBootstrap = bukkitBootstrap;
} }
@Override @Override
public TaskBuilder getTaskBuilder() { public TaskBuilder getTaskBuilder() {
return new TaskBuilder(); return new TaskBuilder() {
@Override
public Task schedule() {
return BukkitPlatformScheduler.this.scheduleTask(this);
}
};
} }
@Override @Override
public Task scheduleTask(TaskBuilder taskBuilder) { public Task scheduleTask(TaskBuilder taskBuilder) {
final Integer repeatTime = taskBuilder.getRepeatTime(); final Long repeatTime = taskBuilder.getRepeatTime();
final Integer delay = taskBuilder.getDelay(); final Long delay = taskBuilder.getDelay();
final boolean isAsync = taskBuilder.isAsync(); final boolean isAsync = taskBuilder.isAsync();
final Consumer<Task> taskConsumer = taskBuilder.getTask(); final Consumer<Task> taskConsumer = taskBuilder.getTask();
@ -35,19 +40,19 @@ public class BukkitPlatformScheduler implements PlatformScheduler {
final BukkitTask bukkitTask; final BukkitTask bukkitTask;
if (!isAsync) { if (!isAsync) {
if (delay == null && repeatTime == null) { if (delay == null && repeatTime == null) {
bukkitTask = bukkitScheduler.runTask(bukkitBoostrap, task); bukkitTask = bukkitScheduler.runTask(bukkitBootstrap, task);
} else if (delay != null && repeatTime == null) { } else if (delay != null && repeatTime == null) {
bukkitTask = bukkitScheduler.runTaskLater(bukkitBoostrap, task, delay); bukkitTask = bukkitScheduler.runTaskLater(bukkitBootstrap, task, delay);
} else { } else {
bukkitTask = bukkitScheduler.runTaskTimer(bukkitBoostrap, task, delay != null ? delay : 0, repeatTime); bukkitTask = bukkitScheduler.runTaskTimer(bukkitBootstrap, task, delay != null ? delay : 0, repeatTime);
} }
} else { } else {
if (delay == null && repeatTime == null) { if (delay == null && repeatTime == null) {
bukkitTask = bukkitScheduler.runTaskAsynchronously(bukkitBoostrap, task); bukkitTask = bukkitScheduler.runTaskAsynchronously(bukkitBootstrap, task);
} else if (delay != null && repeatTime == null) { } else if (delay != null && repeatTime == null) {
bukkitTask = bukkitScheduler.runTaskLaterAsynchronously(bukkitBoostrap, task, delay); bukkitTask = bukkitScheduler.runTaskLaterAsynchronously(bukkitBootstrap, task, delay);
} else { } else {
bukkitTask = bukkitScheduler.runTaskTimerAsynchronously(bukkitBoostrap, task, delay != null ? delay : 0, repeatTime); bukkitTask = bukkitScheduler.runTaskTimerAsynchronously(bukkitBootstrap, task, delay != null ? delay : 0, repeatTime);
} }
} }

View File

@ -16,13 +16,16 @@ import org.bukkit.entity.Player;
import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.metadata.FixedMetadataValue; import org.bukkit.metadata.FixedMetadataValue;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.PluginManager;
public final class BukkitMobHealthBarManager implements MobHealthBarManager<Player, LivingEntity> { public final class BukkitMobHealthBarManager implements MobHealthBarManager<Player, LivingEntity> {
private final Plugin plugin;
private final mcMMO pluginRef; private final mcMMO pluginRef;
private final boolean healthBarPluginEnabled; private final boolean healthBarPluginEnabled;
public BukkitMobHealthBarManager(mcMMO pluginRef) { public BukkitMobHealthBarManager(Plugin plugin, mcMMO pluginRef) {
this.plugin = plugin;
this.pluginRef = pluginRef; this.pluginRef = pluginRef;
PluginManager pluginManager = Bukkit.getServer().getPluginManager(); PluginManager pluginManager = Bukkit.getServer().getPluginManager();
healthBarPluginEnabled = pluginManager.getPlugin("HealthBar") != null; healthBarPluginEnabled = pluginManager.getPlugin("HealthBar") != null;
@ -51,7 +54,7 @@ public final class BukkitMobHealthBarManager implements MobHealthBarManager<Play
/** /**
* Handle the creation of mob healthbars. * Handle the creation of mob healthbars.
* *
* @param target the targetted entity * @param mmoTarget the targetted entity
* @param damage damage done by the attack triggering this * @param damage damage done by the attack triggering this
*/ */
@Override @Override
@ -96,14 +99,17 @@ public final class BukkitMobHealthBarManager implements MobHealthBarManager<Play
boolean updateName = !ChatColor.stripColor(oldName).equalsIgnoreCase(ChatColor.stripColor(newName)); boolean updateName = !ChatColor.stripColor(oldName).equalsIgnoreCase(ChatColor.stripColor(newName));
if (updateName) { if (updateName) {
target.setMetadata(MetadataConstants.CUSTOM_NAME_METAKEY, new FixedMetadataValue(pluginRef, oldName)); target.setMetadata(MetadataConstants.CUSTOM_NAME_METAKEY.getKey(), new FixedMetadataValue(plugin, oldName));
target.setMetadata(MetadataConstants.NAME_VISIBILITY_METAKEY, new FixedMetadataValue(pluginRef, oldNameVisible)); target.setMetadata(MetadataConstants.NAME_VISIBILITY_METAKEY.getKey(), new FixedMetadataValue(plugin, oldNameVisible));
} else if (!target.hasMetadata(MetadataConstants.CUSTOM_NAME_METAKEY)) { } else if (!target.hasMetadata(MetadataConstants.CUSTOM_NAME_METAKEY.getKey())) {
target.setMetadata(MetadataConstants.CUSTOM_NAME_METAKEY, new FixedMetadataValue(pluginRef, "")); target.setMetadata(MetadataConstants.CUSTOM_NAME_METAKEY.getKey(), new FixedMetadataValue(plugin, ""));
target.setMetadata(MetadataConstants.NAME_VISIBILITY_METAKEY, new FixedMetadataValue(pluginRef, false)); target.setMetadata(MetadataConstants.NAME_VISIBILITY_METAKEY.getKey(), new FixedMetadataValue(plugin, false));
} }
new MobHealthDisplayUpdaterTask(pluginRef, target).runTaskLater(pluginRef, displayTime * pluginRef.getMiscTools().TICK_CONVERSION_FACTOR); // Clear health display after 3 seconds pluginRef.getPlatformProvider().getScheduler().getTaskBuilder()
.setDelay(displayTime * pluginRef.getMiscTools().TICK_CONVERSION_FACTOR) // Clear health display after 3 seconds
.setTask(new MobHealthDisplayUpdaterTask(pluginRef, target))
.schedule();
} }
} }

View File

@ -13,7 +13,7 @@ description: >
author: nossr50 author: nossr50
authors: [GJ, NuclearW, bm01, Glitchfinder, TfT_02, t00thpick1, Riking, electronicboy, kashike] authors: [GJ, NuclearW, bm01, Glitchfinder, TfT_02, t00thpick1, Riking, electronicboy, kashike]
website: https://www.mcmmo.org website: https://www.mcmmo.org
main: com.gmail.nossr50.mcMMO main: com.gmail.nossr50.mcmmo.bukkit.BukkitBootstrap
softdepend: [WorldGuard, WorldEdit, CombatTag, HealthBar] softdepend: [WorldGuard, WorldEdit, CombatTag, HealthBar]
load: POSTWORLD load: POSTWORLD
api-version: 1.13 api-version: 1.13

View File

@ -9,6 +9,7 @@ plugins {
tasks { tasks {
shadowJar { shadowJar {
/*
dependencies { dependencies {
include(dependency("org.spongepowered:configurate-yaml")) include(dependency("org.spongepowered:configurate-yaml"))
include(dependency("org.spongepowered:configurate-hocon")) include(dependency("org.spongepowered:configurate-hocon"))
@ -24,6 +25,7 @@ tasks {
include(dependency("net.kyori:text-serializer-gson")) include(dependency("net.kyori:text-serializer-gson"))
exclude(dependency("org.spigotmc:spigot")) exclude(dependency("org.spigotmc:spigot"))
} }
*/
relocate("org.apache.commons.logging", "com.gmail.nossr50.commons.logging") relocate("org.apache.commons.logging", "com.gmail.nossr50.commons.logging")
relocate("org.apache.juli", "com.gmail.nossr50.database.tomcat.juli") relocate("org.apache.juli", "com.gmail.nossr50.database.tomcat.juli")
relocate("org.apache.tomcat", "com.gmail.nossr50.database.tomcat") relocate("org.apache.tomcat", "com.gmail.nossr50.database.tomcat")
@ -58,21 +60,19 @@ tasks.named<ShadowJar>("shadowJar") {
dependencies { dependencies {
api(project(":mcmmo-api")) api(project(":mcmmo-api"))
api("org.apache.tomcat:tomcat-jdbc:7.0.52") compile("org.apache.tomcat:tomcat-jdbc:7.0.52")
api("com.typesafe:config:1.3.2") compile("com.typesafe:config:1.3.2")
api("org.spongepowered:configurate-core:3.7-SNAPSHOT") compile("org.spongepowered:configurate-core:3.7-SNAPSHOT")
api("org.spongepowered:configurate-yaml:3.7-SNAPSHOT") compile("org.spongepowered:configurate-yaml:3.7-SNAPSHOT")
api("org.spongepowered:configurate-hocon:3.7-SNAPSHOT") compile("org.spongepowered:configurate-hocon:3.7-SNAPSHOT")
api("co.aikar:acf-core:0.5.0-SNAPSHOT") //Don't change without updating the artifacts for its dependencies (see the other comments) compile("net.kyori:text-api:3.0.2")
api("co.aikar:acf-paper:0.5.0-SNAPSHOT") //Don't change without updating the artifacts for its dependencies (see the other comments) compile("net.kyori:text-serializer-gson:3.0.2")
api("net.kyori:text-api:3.0.2") compile("net.kyori:text-adapter-bukkit:3.0.4-SNAPSHOT")
api("net.kyori:text-serializer-gson:3.0.2") compile("org.jetbrains:annotations:17.0.0")
api("net.kyori:text-adapter-bukkit:3.0.4-SNAPSHOT") compile("org.apache.maven.scm:maven-scm-provider-gitexe:1.8.1")
implementation("org.jetbrains:annotations:17.0.0") compile("org.bstats:bstats-bukkit:1.4")
implementation("org.apache.maven.scm:maven-scm-provider-gitexe:1.8.1") compileOnly("org.spigotmc:spigot:1.14.4-R0.1-SNAPSHOT")
implementation("org.bstats:bstats-bukkit:1.4") compileOnly("com.sk89q.worldguard:worldguard-legacy:7.0.0-SNAPSHOT")
implementation("org.spigotmc:spigot:1.14.4-R0.1-SNAPSHOT")
implementation("com.sk89q.worldguard:worldguard-legacy:7.0.0-SNAPSHOT")
testImplementation("junit:junit:4.10") testImplementation("junit:junit:4.10")
} }

View File

@ -5,8 +5,11 @@ import com.gmail.nossr50.datatypes.player.BukkitMMOPlayer;
import com.gmail.nossr50.events.chat.McMMOAdminChatEvent; import com.gmail.nossr50.events.chat.McMMOAdminChatEvent;
import com.gmail.nossr50.events.chat.McMMOPartyChatEvent; import com.gmail.nossr50.events.chat.McMMOPartyChatEvent;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@ -14,29 +17,32 @@ import java.util.regex.Pattern;
public class ChatManager { public class ChatManager {
private final String ADMIN_CHAT_PERMISSION = "mcmmo.chat.adminchat"; private final String ADMIN_CHAT_PERMISSION = "mcmmo.chat.adminchat";
private final mcMMO pluginRef; private final mcMMO pluginRef;
@Deprecated
private final Plugin legacyPlugin;
public ChatManager(mcMMO pluginRef) { public ChatManager(mcMMO pluginRef) {
this.pluginRef = pluginRef; this.pluginRef = pluginRef;
this.legacyPlugin = (Plugin) pluginRef.getPlatformProvider();
} }
public void processAdminChat(Player player, String message) { public void processAdminChat(Player player, String message) {
sendAdminChatMessage(new McMMOAdminChatEvent(pluginRef, player.getName(), player.getDisplayName(), message)); sendAdminChatMessage(new McMMOAdminChatEvent(legacyPlugin, player.getName(), player.getDisplayName(), message));
} }
public void processAdminChat(String senderName, String displayName, String message) { public void processAdminChat(String senderName, String displayName, String message) {
sendAdminChatMessage(new McMMOAdminChatEvent(pluginRef, senderName, displayName, message)); sendAdminChatMessage(new McMMOAdminChatEvent(legacyPlugin, senderName, displayName, message));
} }
public void processPartyChat(Party party, Player sender, String message) { public void processPartyChat(Party party, Player sender, String message) {
sendPartyChatMessage(new McMMOPartyChatEvent(pluginRef, sender.getName(), sender.getDisplayName(), party, message)); sendPartyChatMessage(new McMMOPartyChatEvent(legacyPlugin, sender.getName(), sender.getDisplayName(), party, message));
} }
public void processPartyChat(Party party, String senderName, String message) { public void processPartyChat(Party party, String senderName, String message) {
sendPartyChatMessage(new McMMOPartyChatEvent(pluginRef, senderName, senderName, party, message)); sendPartyChatMessage(new McMMOPartyChatEvent(legacyPlugin, senderName, senderName, party, message));
} }
private void sendAdminChatMessage(McMMOAdminChatEvent event) { private void sendAdminChatMessage(McMMOAdminChatEvent event) {
pluginRef.getServer().getPluginManager().callEvent(event); Bukkit.getServer().getPluginManager().callEvent(event);
if (event.isCancelled()) { if (event.isCancelled()) {
return; return;
@ -47,11 +53,11 @@ public class ChatManager {
String displayName = pluginRef.getConfigManager().getConfigCommands().isUseDisplayNames() ? event.getDisplayName() : senderName; String displayName = pluginRef.getConfigManager().getConfigCommands().isUseDisplayNames() ? event.getDisplayName() : senderName;
String message = pluginRef.getLocaleManager().formatString(chatPrefix, displayName) + " " + event.getMessage(); String message = pluginRef.getLocaleManager().formatString(chatPrefix, displayName) + " " + event.getMessage();
pluginRef.getServer().broadcast(message, ADMIN_CHAT_PERMISSION); Bukkit.getServer().broadcast(message, ADMIN_CHAT_PERMISSION);
} }
private void sendPartyChatMessage(McMMOPartyChatEvent event) { private void sendPartyChatMessage(McMMOPartyChatEvent event) {
pluginRef.getServer().getPluginManager().callEvent(event); Bukkit.getServer().getPluginManager().callEvent(event);
if (event.isCancelled()) { if (event.isCancelled()) {
return; return;
@ -79,7 +85,7 @@ public class ChatManager {
} }
} }
pluginRef.getServer().getConsoleSender().sendMessage(ChatColor.stripColor("[mcMMO] [P]<" + party.getName() + ">" + message)); Bukkit.getServer().getConsoleSender().sendMessage(ChatColor.stripColor("[mcMMO] [P]<" + party.getName() + ">" + message));
/* /*
* Party Chat Spying * Party Chat Spying

View File

@ -4,6 +4,8 @@ import com.gmail.nossr50.datatypes.notifications.SensitiveCommandType;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.util.StringUtils; import com.gmail.nossr50.util.StringUtils;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
@ -37,15 +39,15 @@ public class ExperienceRateCommand implements TabExecutor {
if (pluginRef.isXPEventEnabled()) { if (pluginRef.isXPEventEnabled()) {
if (pluginRef.getConfigManager().getConfigEvent().isSendTitleMessages()) { if (pluginRef.getConfigManager().getConfigEvent().isSendTitleMessages()) {
pluginRef.getNotificationManager().broadcastTitle(pluginRef.getServer(), pluginRef.getNotificationManager().broadcastTitle(Bukkit.getServer(),
pluginRef.getLocaleManager().getString("Commands.Event.Stop"), pluginRef.getLocaleManager().getString("Commands.Event.Stop"),
pluginRef.getLocaleManager().getString("Commands.Event.Stop.Subtitle"), pluginRef.getLocaleManager().getString("Commands.Event.Stop.Subtitle"),
10, 10 * 20, 20); 10, 10 * 20, 20);
} }
if (pluginRef.getConfigManager().getConfigEvent().isBroadcastXPRateEventMessages()) { if (pluginRef.getConfigManager().getConfigEvent().isBroadcastXPRateEventMessages()) {
pluginRef.getServer().broadcastMessage(pluginRef.getLocaleManager().getString("Commands.Event.Stop")); Bukkit.getServer().broadcastMessage(pluginRef.getLocaleManager().getString("Commands.Event.Stop"));
pluginRef.getServer().broadcastMessage(pluginRef.getLocaleManager().getString("Commands.Event.Stop.Subtitle")); Bukkit.getServer().broadcastMessage(pluginRef.getLocaleManager().getString("Commands.Event.Stop.Subtitle"));
} }
//Admin notification //Admin notification
@ -85,15 +87,15 @@ public class ExperienceRateCommand implements TabExecutor {
pluginRef.getDynamicSettingsManager().getExperienceManager().setGlobalXpMult(newXpRate); pluginRef.getDynamicSettingsManager().getExperienceManager().setGlobalXpMult(newXpRate);
if (pluginRef.getConfigManager().getConfigEvent().isSendTitleMessages()) { if (pluginRef.getConfigManager().getConfigEvent().isSendTitleMessages()) {
pluginRef.getNotificationManager().broadcastTitle(pluginRef.getServer(), pluginRef.getNotificationManager().broadcastTitle(Bukkit.getServer(),
pluginRef.getLocaleManager().getString("Commands.Event.Start"), pluginRef.getLocaleManager().getString("Commands.Event.Start"),
pluginRef.getLocaleManager().getString("Commands.Event.XP", newXpRate), pluginRef.getLocaleManager().getString("Commands.Event.XP", newXpRate),
10, 10 * 20, 20); 10, 10 * 20, 20);
} }
if (pluginRef.getConfigManager().getConfigEvent().isBroadcastXPRateEventMessages()) { if (pluginRef.getConfigManager().getConfigEvent().isBroadcastXPRateEventMessages()) {
pluginRef.getServer().broadcastMessage(pluginRef.getLocaleManager().getString("Commands.Event.Start")); Bukkit.getServer().broadcastMessage(pluginRef.getLocaleManager().getString("Commands.Event.Start"));
pluginRef.getServer().broadcastMessage(pluginRef.getLocaleManager().getString("Commands.Event.XP", newXpRate)); Bukkit.getServer().broadcastMessage(pluginRef.getLocaleManager().getString("Commands.Event.XP", newXpRate));
} }
//Admin notification //Admin notification

View File

@ -6,6 +6,7 @@ import org.bukkit.ChatColor;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.plugin.Plugin;
public class McMMOCommand implements CommandExecutor { public class McMMOCommand implements CommandExecutor {
@ -34,7 +35,7 @@ public class McMMOCommand implements CommandExecutor {
sender.sendMessage(ChatColor.GOLD + " - " + ChatColor.GREEN + "nossr50@gmail.com" + ChatColor.GOLD + " Paypal"); sender.sendMessage(ChatColor.GOLD + " - " + ChatColor.GREEN + "nossr50@gmail.com" + ChatColor.GOLD + " Paypal");
} }
sender.sendMessage(pluginRef.getLocaleManager().getString("MOTD.Version", pluginRef.getDescription().getVersion())); sender.sendMessage(pluginRef.getLocaleManager().getString("MOTD.Version", ((Plugin) pluginRef.getPlatformProvider()).getDescription().getVersion()));
// mcMMO.getHolidayManager().anniversaryCheck(sender); // mcMMO.getHolidayManager().anniversaryCheck(sender);
return true; return true;

View File

@ -6,6 +6,8 @@ import com.gmail.nossr50.datatypes.player.PlayerProfile;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.runnables.database.DatabaseConversionTask; import com.gmail.nossr50.runnables.database.DatabaseConversionTask;
import com.gmail.nossr50.runnables.player.PlayerProfileLoadingTask; import com.gmail.nossr50.runnables.player.PlayerProfileLoadingTask;
import org.bukkit.Bukkit;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
@ -57,17 +59,24 @@ public class ConvertDatabaseCommand implements CommandExecutor {
pluginRef.getUserManager().saveAll(); pluginRef.getUserManager().saveAll();
pluginRef.getUserManager().clearAll(); pluginRef.getUserManager().clearAll();
for (Player player : pluginRef.getServer().getOnlinePlayers()) { for (Player player : Bukkit.getServer().getOnlinePlayers()) {
PlayerProfile profile = oldDatabase.loadPlayerProfile(player.getUniqueId()); PlayerProfile profile = oldDatabase.loadPlayerProfile(player.getUniqueId());
if (profile.isLoaded()) { if (profile.isLoaded()) {
pluginRef.getDatabaseManager().saveUser(profile); pluginRef.getDatabaseManager().saveUser(profile);
} }
new PlayerProfileLoadingTask(pluginRef, player).runTaskLaterAsynchronously(pluginRef, 1); // 1 Tick delay to ensure the player is marked as online before we begin loading pluginRef.getPlatformProvider().getScheduler().getTaskBuilder()
.setAsync(true)
.setDelay(1L) // 1 Tick delay to ensure the player is marked as online before we begin loading
.setTask(new PlayerProfileLoadingTask(pluginRef, player))
.schedule();
} }
new DatabaseConversionTask(pluginRef, oldDatabase, sender, previousType.toString(), newType.toString()).runTaskAsynchronously(pluginRef); pluginRef.getPlatformProvider().getScheduler().getTaskBuilder()
.setAsync(true)
.setTask(new DatabaseConversionTask(pluginRef, oldDatabase, sender, previousType.toString(), newType.toString()))
.schedule();
return true; return true;
default: default:

View File

@ -4,6 +4,8 @@ import com.gmail.nossr50.datatypes.experience.FormulaType;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.runnables.database.FormulaConversionTask; import com.gmail.nossr50.runnables.database.FormulaConversionTask;
import com.gmail.nossr50.runnables.player.PlayerProfileLoadingTask; import com.gmail.nossr50.runnables.player.PlayerProfileLoadingTask;
import org.bukkit.Bukkit;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
@ -31,10 +33,17 @@ public class ConvertExperienceCommand implements CommandExecutor {
pluginRef.getUserManager().saveAll(); pluginRef.getUserManager().saveAll();
pluginRef.getUserManager().clearAll(); pluginRef.getUserManager().clearAll();
new FormulaConversionTask(pluginRef, sender, previousType).runTaskLater(pluginRef, 1); pluginRef.getPlatformProvider().getScheduler().getTaskBuilder()
.setDelay(1L)
.setTask(new FormulaConversionTask(pluginRef, sender, previousType))
.schedule();
for (Player player : pluginRef.getServer().getOnlinePlayers()) { for (Player player : Bukkit.getServer().getOnlinePlayers()) {
new PlayerProfileLoadingTask(pluginRef, player).runTaskLaterAsynchronously(pluginRef, 1); // 1 Tick delay to ensure the player is marked as online before we begin loading pluginRef.getPlatformProvider().getScheduler().getTaskBuilder()
.setAsync(true)
.setDelay(1L) // 1 Tick delay to ensure the player is marked as online before we begin loading
.setTask(new PlayerProfileLoadingTask(pluginRef, player))
.schedule();
} }
return true; return true;

View File

@ -5,6 +5,8 @@ import com.gmail.nossr50.datatypes.player.PlayerProfile;
import com.gmail.nossr50.datatypes.skills.PrimarySkillType; import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer; import org.bukkit.OfflinePlayer;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
@ -101,7 +103,7 @@ public abstract class ExperienceCommand implements TabExecutor {
// If the mcMMOPlayer doesn't exist, create a temporary profile and check if it's present in the database. If it's not, abort the process. // If the mcMMOPlayer doesn't exist, create a temporary profile and check if it's present in the database. If it's not, abort the process.
if (mcMMOPlayer == null) { if (mcMMOPlayer == null) {
UUID uuid = null; UUID uuid = null;
OfflinePlayer player = pluginRef.getServer().getOfflinePlayer(playerName); OfflinePlayer player = Bukkit.getServer().getOfflinePlayer(playerName);
if (player != null) { if (player != null) {
uuid = player.getUniqueId(); uuid = player.getUniqueId();
} }

View File

@ -6,6 +6,8 @@ import com.gmail.nossr50.datatypes.player.PlayerProfile;
import com.gmail.nossr50.datatypes.skills.PrimarySkillType; import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer; import org.bukkit.OfflinePlayer;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
@ -86,7 +88,7 @@ public class SkillResetCommand implements TabExecutor {
// If the mcMMOPlayer doesn't exist, create a temporary profile and check if it's present in the database. If it's not, abort the process. // If the mcMMOPlayer doesn't exist, create a temporary profile and check if it's present in the database. If it's not, abort the process.
if (mcMMOPlayer == null) { if (mcMMOPlayer == null) {
UUID uuid = null; UUID uuid = null;
OfflinePlayer player = pluginRef.getServer().getOfflinePlayer(playerName); OfflinePlayer player = Bukkit.getServer().getOfflinePlayer(playerName);
if (player != null) { if (player != null) {
uuid = player.getUniqueId(); uuid = player.getUniqueId();
} }

View File

@ -2,6 +2,8 @@ package com.gmail.nossr50.commands.party;
import com.gmail.nossr50.datatypes.party.Party; import com.gmail.nossr50.datatypes.party.Party;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer; import org.bukkit.OfflinePlayer;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandExecutor;
@ -28,7 +30,7 @@ public class PartyChangeOwnerCommand implements CommandExecutor {
Party playerParty = pluginRef.getUserManager().getPlayer((Player) sender).getParty(); Party playerParty = pluginRef.getUserManager().getPlayer((Player) sender).getParty();
String targetName = pluginRef.getCommandTools().getMatchedPlayerName(args[1]); String targetName = pluginRef.getCommandTools().getMatchedPlayerName(args[1]);
OfflinePlayer target = pluginRef.getServer().getOfflinePlayer(targetName); OfflinePlayer target = Bukkit.getServer().getOfflinePlayer(targetName);
if (!playerParty.hasMember(target.getUniqueId())) { if (!playerParty.hasMember(target.getUniqueId())) {
sender.sendMessage(pluginRef.getLocaleManager().getString("Party.NotInYourParty", targetName)); sender.sendMessage(pluginRef.getLocaleManager().getString("Party.NotInYourParty", targetName));

View File

@ -3,6 +3,8 @@ package com.gmail.nossr50.commands.party;
import com.gmail.nossr50.datatypes.party.Party; import com.gmail.nossr50.datatypes.party.Party;
import com.gmail.nossr50.events.party.McMMOPartyChangeEvent.EventReason; import com.gmail.nossr50.events.party.McMMOPartyChangeEvent.EventReason;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer; import org.bukkit.OfflinePlayer;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandExecutor;
@ -34,7 +36,7 @@ public class PartyKickCommand implements CommandExecutor {
return true; return true;
} }
OfflinePlayer target = pluginRef.getServer().getOfflinePlayer(targetName); OfflinePlayer target = Bukkit.getServer().getOfflinePlayer(targetName);
if (target.isOnline()) { if (target.isOnline()) {
Player onlineTarget = target.getPlayer(); Player onlineTarget = target.getPlayer();

View File

@ -13,6 +13,7 @@ import org.bukkit.command.CommandSender;
import org.bukkit.command.TabExecutor; import org.bukkit.command.TabExecutor;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.metadata.FixedMetadataValue; import org.bukkit.metadata.FixedMetadataValue;
import org.bukkit.plugin.Plugin;
import org.bukkit.util.StringUtil; import org.bukkit.util.StringUtil;
import java.util.ArrayList; import java.util.ArrayList;
@ -103,11 +104,11 @@ public class LeaderboardCommand implements TabExecutor {
return; return;
} }
if (((Player) sender).hasMetadata(MetadataConstants.DATABASE_PROCESSING_COMMAND_METAKEY)) { if (((Player) sender).hasMetadata(MetadataConstants.DATABASE_PROCESSING_COMMAND_METAKEY.getKey())) {
sender.sendMessage(pluginRef.getLocaleManager().getString("Commands.Database.Processing")); sender.sendMessage(pluginRef.getLocaleManager().getString("Commands.Database.Processing"));
return; return;
} else { } else {
((Player) sender).setMetadata(MetadataConstants.DATABASE_PROCESSING_COMMAND_METAKEY, new FixedMetadataValue(pluginRef, null)); ((Player) sender).setMetadata(MetadataConstants.DATABASE_PROCESSING_COMMAND_METAKEY.getKey(), new FixedMetadataValue((Plugin) pluginRef.getPlatformProvider(), null));
} }
mcMMOPlayer.actualizeDatabaseATS(); mcMMOPlayer.actualizeDatabaseATS();
@ -120,7 +121,10 @@ public class LeaderboardCommand implements TabExecutor {
boolean useBoard = (sender instanceof Player) && (pluginRef.getScoreboardSettings().isScoreboardEnabled(SidebarType.TOP_BOARD)); boolean useBoard = (sender instanceof Player) && (pluginRef.getScoreboardSettings().isScoreboardEnabled(SidebarType.TOP_BOARD));
boolean useChat = !useBoard || pluginRef.getScoreboardSettings().isScoreboardPrinting(SidebarType.TOP_BOARD); boolean useChat = !useBoard || pluginRef.getScoreboardSettings().isScoreboardPrinting(SidebarType.TOP_BOARD);
new LeaderboardsCommandAsyncTask(pluginRef, page, skill, sender, useBoard, useChat).runTaskAsynchronously(pluginRef); pluginRef.getPlatformProvider().getScheduler().getTaskBuilder()
.setAsync(true)
.setTask(new LeaderboardsCommandAsyncTask(pluginRef, page, skill, sender, useBoard, useChat))
.schedule();
} }
private PrimarySkillType extractSkill(CommandSender sender, String skillName) { private PrimarySkillType extractSkill(CommandSender sender, String skillName) {

View File

@ -11,6 +11,7 @@ import org.bukkit.command.CommandSender;
import org.bukkit.command.TabExecutor; import org.bukkit.command.TabExecutor;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.metadata.FixedMetadataValue; import org.bukkit.metadata.FixedMetadataValue;
import org.bukkit.plugin.Plugin;
import org.bukkit.util.StringUtil; import org.bukkit.util.StringUtil;
import java.util.ArrayList; import java.util.ArrayList;
@ -103,11 +104,11 @@ public class RankCommand implements TabExecutor {
return; return;
} }
if (((Player) sender).hasMetadata(MetadataConstants.DATABASE_PROCESSING_COMMAND_METAKEY)) { if (((Player) sender).hasMetadata(MetadataConstants.DATABASE_PROCESSING_COMMAND_METAKEY.getKey())) {
sender.sendMessage(pluginRef.getLocaleManager().getString("Commands.Database.Processing")); sender.sendMessage(pluginRef.getLocaleManager().getString("Commands.Database.Processing"));
return; return;
} else { } else {
((Player) sender).setMetadata(MetadataConstants.DATABASE_PROCESSING_COMMAND_METAKEY, new FixedMetadataValue(pluginRef, null)); ((Player) sender).setMetadata(MetadataConstants.DATABASE_PROCESSING_COMMAND_METAKEY.getKey(), new FixedMetadataValue((Plugin) pluginRef.getPlatformProvider(), null));
} }
mcMMOPlayer.actualizeDatabaseATS(); mcMMOPlayer.actualizeDatabaseATS();
@ -117,7 +118,10 @@ public class RankCommand implements TabExecutor {
&& (pluginRef.getScoreboardSettings().isScoreboardEnabled(SidebarType.RANK_BOARD)); && (pluginRef.getScoreboardSettings().isScoreboardEnabled(SidebarType.RANK_BOARD));
boolean useChat = !useBoard || pluginRef.getScoreboardSettings().isScoreboardPrinting(SidebarType.RANK_BOARD); boolean useChat = !useBoard || pluginRef.getScoreboardSettings().isScoreboardPrinting(SidebarType.RANK_BOARD);
new RankCommandAsyncTask(pluginRef, playerName, sender, useBoard, useChat).runTaskAsynchronously(pluginRef); pluginRef.getPlatformProvider().getScheduler().getTaskBuilder()
.setAsync(true)
.setTask(new RankCommandAsyncTask(pluginRef, playerName, sender, useBoard, useChat))
.schedule();
} }
private long getCDSeconds(BukkitMMOPlayer mcMMOPlayer, long cooldownMillis) { private long getCDSeconds(BukkitMMOPlayer mcMMOPlayer, long cooldownMillis) {

View File

@ -1,5 +1,6 @@
package com.gmail.nossr50.core; package com.gmail.nossr50.core;
import com.gmail.nossr50.mcmmo.api.data.MMOPlayer;
import com.gmail.nossr50.mcmmo.api.platform.util.MetadataKey; import com.gmail.nossr50.mcmmo.api.platform.util.MetadataKey;
import org.bukkit.metadata.FixedMetadataValue; import org.bukkit.metadata.FixedMetadataValue;
@ -28,7 +29,7 @@ public class MetadataConstants {
public final static MetadataKey<Boolean> ARROW_TRACKER_METAKEY = new MetadataKey<>("mcMMO: Arrow Tracker"); public final static MetadataKey<Boolean> ARROW_TRACKER_METAKEY = new MetadataKey<>("mcMMO: Arrow Tracker");
public final static MetadataKey<Boolean> BONUS_DROPS_METAKEY = new MetadataKey<>("mcMMO: Bonus Drops"); public final static MetadataKey<Boolean> BONUS_DROPS_METAKEY = new MetadataKey<>("mcMMO: Bonus Drops");
public final static MetadataKey<Boolean> DISARMED_ITEM_METAKEY = new MetadataKey<>("mcMMO: Disarmed Item"); public final static MetadataKey<Boolean> DISARMED_ITEM_METAKEY = new MetadataKey<>("mcMMO: Disarmed Item");
public final static MetadataKey<Boolean> PLAYER_DATA_METAKEY = new MetadataKey<>("mcMMO: Player Data"); public final static MetadataKey<MMOPlayer> PLAYER_DATA_METAKEY = new MetadataKey<>("mcMMO: Player Data");
public final static MetadataKey<Boolean> GREEN_THUMB_METAKEY = new MetadataKey<>("mcMMO: Green Thumb"); public final static MetadataKey<Boolean> GREEN_THUMB_METAKEY = new MetadataKey<>("mcMMO: Green Thumb");
public final static MetadataKey<Boolean> DATABASE_PROCESSING_COMMAND_METAKEY = new MetadataKey<>("mcMMO: Processing Database Command"); public final static MetadataKey<Boolean> DATABASE_PROCESSING_COMMAND_METAKEY = new MetadataKey<>("mcMMO: Processing Database Command");
public final static MetadataKey<Boolean> PETS_ANIMAL_TRACKING_METAKEY = new MetadataKey<>("mcMMO: Pet Animal"); public final static MetadataKey<Boolean> PETS_ANIMAL_TRACKING_METAKEY = new MetadataKey<>("mcMMO: Pet Animal");

View File

@ -9,6 +9,8 @@ import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
import com.gmail.nossr50.datatypes.skills.SuperAbilityType; import com.gmail.nossr50.datatypes.skills.SuperAbilityType;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.util.StringUtils; import com.gmail.nossr50.util.StringUtils;
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer; import org.bukkit.OfflinePlayer;
import java.io.*; import java.io.*;
@ -179,7 +181,7 @@ public final class FlatFileDatabaseManager implements DatabaseManager {
e.printStackTrace(); e.printStackTrace();
} }
if (lastPlayed == 0) { if (lastPlayed == 0) {
OfflinePlayer player = pluginRef.getServer().getOfflinePlayer(name); OfflinePlayer player = Bukkit.getServer().getOfflinePlayer(name);
lastPlayed = player.getLastPlayed(); lastPlayed = player.getLastPlayed();
rewrite = true; rewrite = true;
} }

View File

@ -2,6 +2,7 @@ package com.gmail.nossr50.datatypes.meta;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import org.bukkit.metadata.FixedMetadataValue; import org.bukkit.metadata.FixedMetadataValue;
import org.bukkit.plugin.Plugin;
/** /**
* Stores how many bonus drops a block should give * Stores how many bonus drops a block should give
@ -9,6 +10,6 @@ import org.bukkit.metadata.FixedMetadataValue;
public class BonusDropMeta extends FixedMetadataValue { public class BonusDropMeta extends FixedMetadataValue {
public BonusDropMeta(int value, mcMMO plugin) { public BonusDropMeta(int value, mcMMO plugin) {
super(plugin, value); super((Plugin) plugin.getPlatformProvider(), value);
} }
} }

View File

@ -2,6 +2,7 @@ package com.gmail.nossr50.datatypes.meta;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import org.bukkit.metadata.FixedMetadataValue; import org.bukkit.metadata.FixedMetadataValue;
import org.bukkit.plugin.Plugin;
/** /**
* This class is for storing mob names since we switch them to heart values * This class is for storing mob names since we switch them to heart values
@ -9,7 +10,7 @@ import org.bukkit.metadata.FixedMetadataValue;
public class OldName extends FixedMetadataValue { public class OldName extends FixedMetadataValue {
public OldName(String oldName, mcMMO plugin) { public OldName(String oldName, mcMMO plugin) {
super(plugin, oldName); super((Plugin) plugin.getPlatformProvider(), oldName);
} }
} }

View File

@ -250,7 +250,7 @@ public class Party {
} }
if (!pluginRef.getConfigManager().getConfigParty().getPartyXP().getPartyLevel().isInformPartyMembersOnLevelup()) { if (!pluginRef.getConfigManager().getConfigParty().getPartyXP().getPartyLevel().isInformPartyMembersOnLevelup()) {
Player leader = pluginRef.getServer().getPlayer(this.leader.getUniqueId()); Player leader = Bukkit.getServer().getPlayer(this.leader.getUniqueId());
if (leader != null) { if (leader != null) {
leader.sendMessage(pluginRef.getLocaleManager().getString("Party.LevelUp", levelsGained, getLevel())); leader.sendMessage(pluginRef.getLocaleManager().getString("Party.LevelUp", levelsGained, getLevel()));

View File

@ -85,7 +85,7 @@ public class BukkitMMOPlayer implements MMOPlayer<Player> {
UUID uuid = player.getUniqueId(); UUID uuid = player.getUniqueId();
this.player = player; this.player = player;
playerMetadata = new FixedMetadataValue(pluginRef, playerName); playerMetadata = new FixedMetadataValue((Plugin) pluginRef.getPlatformProvider(), playerName);
this.profile = profile; this.profile = profile;
if (profile.getUniqueId() == null) { if (profile.getUniqueId() == null) {
@ -656,7 +656,7 @@ public class BukkitMMOPlayer implements MMOPlayer<Player> {
return; return;
if (getSkillXpLevelRaw(primarySkillType) < getXpToLevel(primarySkillType)) { if (getSkillXpLevelRaw(primarySkillType) < getXpToLevel(primarySkillType)) {
processPostXpEvent(primarySkillType, pluginRef, xpGainSource); processPostXpEvent(primarySkillType, (Plugin) pluginRef.getPlatformProvider(), xpGainSource);
return; return;
} }
@ -687,7 +687,7 @@ public class BukkitMMOPlayer implements MMOPlayer<Player> {
pluginRef.getNotificationManager().sendPlayerLevelUpNotification(this, primarySkillType, levelsGained, profile.getSkillLevel(primarySkillType)); pluginRef.getNotificationManager().sendPlayerLevelUpNotification(this, primarySkillType, levelsGained, profile.getSkillLevel(primarySkillType));
//UPDATE XP BARS //UPDATE XP BARS
processPostXpEvent(primarySkillType, pluginRef, xpGainSource); processPostXpEvent(primarySkillType, (Plugin) pluginRef.getPlatformProvider(), xpGainSource);
} }
/* /*
@ -951,7 +951,10 @@ public class BukkitMMOPlayer implements MMOPlayer<Player> {
} }
setToolPreparationMode(tool, false); setToolPreparationMode(tool, false);
new AbilityDisableTask(pluginRef, this, superAbility).runTaskLater(pluginRef, abilityLength * pluginRef.getMiscTools().TICK_CONVERSION_FACTOR); pluginRef.getPlatformProvider().getScheduler().getTaskBuilder()
.setDelay(abilityLength * pluginRef.getMiscTools().TICK_CONVERSION_FACTOR)
.setTask(new AbilityDisableTask(pluginRef, this, superAbility))
.schedule();
} }
public void processAbilityActivation(PrimarySkillType primarySkillType) { public void processAbilityActivation(PrimarySkillType primarySkillType) {
@ -998,7 +1001,10 @@ public class BukkitMMOPlayer implements MMOPlayer<Player> {
} }
setToolPreparationMode(tool, true); setToolPreparationMode(tool, true);
new ToolLowerTask(pluginRef,this, tool).runTaskLater(pluginRef, 4 * pluginRef.getMiscTools().TICK_CONVERSION_FACTOR); pluginRef.getPlatformProvider().getScheduler().getTaskBuilder()
.setDelay(4 * pluginRef.getMiscTools().TICK_CONVERSION_FACTOR)
.setTask(new ToolLowerTask(pluginRef,this, tool))
.schedule();
} }
} }

View File

@ -76,20 +76,32 @@ public class PlayerProfile {
} }
public void scheduleAsyncSave() { public void scheduleAsyncSave() {
new PlayerProfileSaveTask(this, false).runTaskAsynchronously(pluginRef); pluginRef.getPlatformProvider().getScheduler().getTaskBuilder()
.setAsync(true)
.setTask(new PlayerProfileSaveTask(this, false))
.schedule();
} }
public void scheduleSyncSave() { public void scheduleSyncSave() {
new PlayerProfileSaveTask(this, true).runTask(pluginRef); pluginRef.getPlatformProvider().getScheduler().getTaskBuilder()
.setTask(new PlayerProfileSaveTask(this, true))
.schedule();
} }
public void scheduleAsyncSaveDelay() { public void scheduleAsyncSaveDelay() {
new PlayerProfileSaveTask(this, false).runTaskLaterAsynchronously(pluginRef, 20); pluginRef.getPlatformProvider().getScheduler().getTaskBuilder()
.setAsync(true)
.setDelay(20L)
.setTask(new PlayerProfileSaveTask(this, false))
.schedule();
} }
@Deprecated @Deprecated
public void scheduleSyncSaveDelay() { public void scheduleSyncSaveDelay() {
new PlayerProfileSaveTask(this, true).runTaskLater(pluginRef, 20); pluginRef.getPlatformProvider().getScheduler().getTaskBuilder()
.setDelay(20L)
.setTask(new PlayerProfileSaveTask(this, true))
.schedule();
} }
public void save(boolean useSync) { public void save(boolean useSync) {

View File

@ -9,6 +9,7 @@ import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.metadata.FixedMetadataValue; import org.bukkit.metadata.FixedMetadataValue;
import org.bukkit.plugin.Plugin;
/** /**
* These behaviour classes are a band-aid fix for a larger problem * These behaviour classes are a band-aid fix for a larger problem
@ -31,17 +32,17 @@ public class ArcheryBehaviour {
* @param livingEntity The entity hit by the arrows * @param livingEntity The entity hit by the arrows
*/ */
public void arrowRetrievalCheck(LivingEntity livingEntity) { public void arrowRetrievalCheck(LivingEntity livingEntity) {
if(livingEntity.hasMetadata(MetadataConstants.ARROW_TRACKER_METAKEY)) { if(livingEntity.hasMetadata(MetadataConstants.ARROW_TRACKER_METAKEY.getKey())) {
pluginRef.getMiscTools().dropItems(livingEntity.getLocation(), new ItemStack(Material.ARROW), livingEntity.getMetadata(MetadataConstants.ARROW_TRACKER_METAKEY).get(0).asInt()); pluginRef.getMiscTools().dropItems(livingEntity.getLocation(), new ItemStack(Material.ARROW), livingEntity.getMetadata(MetadataConstants.ARROW_TRACKER_METAKEY.getKey()).get(0).asInt());
} }
} }
public void incrementArrowCount(LivingEntity livingEntity) { public void incrementArrowCount(LivingEntity livingEntity) {
if(livingEntity.hasMetadata(MetadataConstants.ARROW_TRACKER_METAKEY)) { if(livingEntity.hasMetadata(MetadataConstants.ARROW_TRACKER_METAKEY.getKey())) {
int arrowCount = livingEntity.getMetadata(MetadataConstants.ARROW_TRACKER_METAKEY).get(0).asInt(); int arrowCount = livingEntity.getMetadata(MetadataConstants.ARROW_TRACKER_METAKEY.getKey()).get(0).asInt();
livingEntity.getMetadata(MetadataConstants.ARROW_TRACKER_METAKEY).set(0, new FixedMetadataValue(pluginRef, arrowCount + 1)); livingEntity.getMetadata(MetadataConstants.ARROW_TRACKER_METAKEY.getKey()).set(0, new FixedMetadataValue((Plugin) pluginRef.getPlatformProvider(), arrowCount + 1));
} else { } else {
livingEntity.setMetadata(MetadataConstants.ARROW_TRACKER_METAKEY, new TrackedArrowMeta(pluginRef, 1)); livingEntity.setMetadata(MetadataConstants.ARROW_TRACKER_METAKEY.getKey(), new TrackedArrowMeta((Plugin) pluginRef.getPlatformProvider(), 1));
} }
} }

View File

@ -4,6 +4,8 @@ import com.gmail.nossr50.core.MetadataConstants;
import com.gmail.nossr50.datatypes.skills.SubSkillType; import com.gmail.nossr50.datatypes.skills.SubSkillType;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.skills.mining.MiningManager; import com.gmail.nossr50.skills.mining.MiningManager;
import org.bukkit.Bukkit;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.block.BlockState; import org.bukkit.block.BlockState;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -63,12 +65,12 @@ public class MiningBehaviour {
} }
public boolean processBlastMiningExplosion(EntityDamageByEntityEvent event, TNTPrimed tnt, Player defender) { public boolean processBlastMiningExplosion(EntityDamageByEntityEvent event, TNTPrimed tnt, Player defender) {
if (!tnt.hasMetadata(MetadataConstants.TNT_TRACKING_METAKEY) || !pluginRef.getUserManager().hasPlayerDataKey(defender)) { if (!tnt.hasMetadata(MetadataConstants.TNT_TRACKING_METAKEY.getKey()) || !pluginRef.getUserManager().hasPlayerDataKey(defender)) {
return false; return false;
} }
// We can make this assumption because we (should) be the only ones using this exact metadata // We can make this assumption because we (should) be the only ones using this exact metadata
Player player = pluginRef.getServer().getPlayerExact(tnt.getMetadata(MetadataConstants.TNT_TRACKING_METAKEY).get(0).asString()); Player player = Bukkit.getServer().getPlayerExact(tnt.getMetadata(MetadataConstants.TNT_TRACKING_METAKEY.getKey()).get(0).asString());
if (!player.equals(defender)) { if (!player.equals(defender)) {
return false; return false;

View File

@ -14,6 +14,8 @@ import com.gmail.nossr50.skills.herbalism.HerbalismManager;
import com.gmail.nossr50.skills.mining.MiningManager; import com.gmail.nossr50.skills.mining.MiningManager;
import com.gmail.nossr50.skills.woodcutting.WoodcuttingManager; import com.gmail.nossr50.skills.woodcutting.WoodcuttingManager;
import com.gmail.nossr50.util.sounds.SoundType; import com.gmail.nossr50.util.sounds.SoundType;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.GameMode; import org.bukkit.GameMode;
import org.bukkit.Material; import org.bukkit.Material;
@ -30,6 +32,7 @@ import org.bukkit.event.Listener;
import org.bukkit.event.block.*; import org.bukkit.event.block.*;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.metadata.MetadataValue; import org.bukkit.metadata.MetadataValue;
import org.bukkit.plugin.Plugin;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
@ -81,8 +84,8 @@ public class BlockListener implements Listener {
} }
} }
if (event.getBlock().getMetadata(MetadataConstants.BONUS_DROPS_METAKEY).size() > 0) { if (event.getBlock().getMetadata(MetadataConstants.BONUS_DROPS_METAKEY.getKey()).size() > 0) {
BonusDropMeta bonusDropMeta = (BonusDropMeta) event.getBlock().getMetadata(MetadataConstants.BONUS_DROPS_METAKEY).get(0); BonusDropMeta bonusDropMeta = (BonusDropMeta) event.getBlock().getMetadata(MetadataConstants.BONUS_DROPS_METAKEY.getKey()).get(0);
int bonusCount = bonusDropMeta.asInt(); int bonusCount = bonusDropMeta.asInt();
for (int i = 0; i < bonusCount; i++) { for (int i = 0; i < bonusCount; i++) {
@ -92,8 +95,8 @@ public class BlockListener implements Listener {
} }
} }
if(event.getBlock().hasMetadata(MetadataConstants.BONUS_DROPS_METAKEY)) if(event.getBlock().hasMetadata(MetadataConstants.BONUS_DROPS_METAKEY.getKey()))
event.getBlock().removeMetadata(MetadataConstants.BONUS_DROPS_METAKEY, pluginRef); event.getBlock().removeMetadata(MetadataConstants.BONUS_DROPS_METAKEY.getKey(), (Plugin) pluginRef.getPlatformProvider());
} }
/** /**
@ -397,7 +400,7 @@ public class BlockListener implements Listener {
return; return;
} }
McMMOPlayer mcMMOPlayer = pluginRef.getUserManager().getPlayer(player); BukkitMMOPlayer mcMMOPlayer = pluginRef.getUserManager().getPlayer(player);
BlockState blockState = event.getBlock().getState(); BlockState blockState = event.getBlock().getState();
ItemStack heldItem = player.getInventory().getItemInMainHand(); ItemStack heldItem = player.getInventory().getItemInMainHand();
@ -511,13 +514,13 @@ public class BlockListener implements Listener {
} }
private Player getPlayerFromFurnace(Block furnaceBlock) { private Player getPlayerFromFurnace(Block furnaceBlock) {
List<MetadataValue> metadata = furnaceBlock.getMetadata(MetadataConstants.FURNACE_TRACKING_METAKEY); List<MetadataValue> metadata = furnaceBlock.getMetadata(MetadataConstants.FURNACE_TRACKING_METAKEY.getKey());
if (metadata.isEmpty()) { if (metadata.isEmpty()) {
return null; return null;
} }
return pluginRef.getServer().getPlayerExact(metadata.get(0).asString()); return Bukkit.getServer().getPlayerExact(metadata.get(0).asString());
} }
/** /**
@ -639,7 +642,7 @@ public class BlockListener implements Listener {
if (blockState instanceof Furnace) { if (blockState instanceof Furnace) {
Furnace furnace = (Furnace) blockState; Furnace furnace = (Furnace) blockState;
if (furnace.hasMetadata(MetadataConstants.FURNACE_TRACKING_METAKEY)) { if (furnace.hasMetadata(MetadataConstants.FURNACE_TRACKING_METAKEY.getKey())) {
player.sendMessage("[mcMMO DEBUG] This furnace has a registered owner"); player.sendMessage("[mcMMO DEBUG] This furnace has a registered owner");
Player furnacePlayer = getPlayerFromFurnace(furnace.getBlock()); Player furnacePlayer = getPlayerFromFurnace(furnace.getBlock());
if (furnacePlayer != null) { if (furnacePlayer != null) {

View File

@ -8,10 +8,13 @@ import com.gmail.nossr50.events.fake.FakeEntityDamageByEntityEvent;
import com.gmail.nossr50.events.fake.FakeEntityDamageEvent; import com.gmail.nossr50.events.fake.FakeEntityDamageEvent;
import com.gmail.nossr50.events.fake.FakeEntityTameEvent; import com.gmail.nossr50.events.fake.FakeEntityTameEvent;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.mcmmo.api.data.MMOPlayer;
import com.gmail.nossr50.skills.mining.MiningManager; import com.gmail.nossr50.skills.mining.MiningManager;
import com.gmail.nossr50.skills.taming.TamingManager; import com.gmail.nossr50.skills.taming.TamingManager;
import com.gmail.nossr50.skills.unarmed.UnarmedManager; import com.gmail.nossr50.skills.unarmed.UnarmedManager;
import com.gmail.nossr50.util.skills.SkillActivationType; import com.gmail.nossr50.util.skills.SkillActivationType;
import org.bukkit.Bukkit;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.OfflinePlayer; import org.bukkit.OfflinePlayer;
import org.bukkit.block.Block; import org.bukkit.block.Block;
@ -26,6 +29,7 @@ import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.PotionMeta; import org.bukkit.inventory.meta.PotionMeta;
import org.bukkit.metadata.FixedMetadataValue; import org.bukkit.metadata.FixedMetadataValue;
import org.bukkit.plugin.Plugin;
import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType; import org.bukkit.potion.PotionEffectType;
import org.bukkit.projectiles.ProjectileSource; import org.bukkit.projectiles.ProjectileSource;
@ -40,10 +44,10 @@ public class EntityListener implements Listener {
@EventHandler(priority = EventPriority.MONITOR) @EventHandler(priority = EventPriority.MONITOR)
public void onEntityTransform(EntityTransformEvent event) { public void onEntityTransform(EntityTransformEvent event) {
//Transfer metadata keys from mob-spawned mobs to new mobs //Transfer metadata keys from mob-spawned mobs to new mobs
if (event.getEntity().hasMetadata(MetadataConstants.UNNATURAL_MOB_METAKEY) if (event.getEntity().hasMetadata(MetadataConstants.UNNATURAL_MOB_METAKEY.getKey())
|| event.getEntity().getMetadata(MetadataConstants.UNNATURAL_MOB_METAKEY).size() >= 1) { || event.getEntity().getMetadata(MetadataConstants.UNNATURAL_MOB_METAKEY.getKey()).size() >= 1) {
for (Entity entity : event.getTransformedEntities()) { for (Entity entity : event.getTransformedEntities()) {
entity.setMetadata(MetadataConstants.UNNATURAL_MOB_METAKEY, MetadataConstants.metadataValue); entity.setMetadata(MetadataConstants.UNNATURAL_MOB_METAKEY.getKey(), MetadataConstants.metadataValue);
} }
} }
} }
@ -60,8 +64,8 @@ public class EntityListener implements Listener {
//Prevent entities from giving XP if they target endermite //Prevent entities from giving XP if they target endermite
if (event.getTarget() instanceof Endermite) { if (event.getTarget() instanceof Endermite) {
if (!event.getEntity().hasMetadata(MetadataConstants.UNNATURAL_MOB_METAKEY)) if (!event.getEntity().hasMetadata(MetadataConstants.UNNATURAL_MOB_METAKEY.getKey()))
event.getEntity().setMetadata(MetadataConstants.UNNATURAL_MOB_METAKEY, MetadataConstants.metadataValue); event.getEntity().setMetadata(MetadataConstants.UNNATURAL_MOB_METAKEY.getKey(), MetadataConstants.metadataValue);
} }
} }
@ -91,14 +95,14 @@ public class EntityListener implements Listener {
if (bow != null if (bow != null
&& bow.containsEnchantment(Enchantment.ARROW_INFINITE)) { && bow.containsEnchantment(Enchantment.ARROW_INFINITE)) {
projectile.setMetadata(MetadataConstants.ARROW_TRACKER_METAKEY, MetadataConstants.metadataValue); projectile.setMetadata(MetadataConstants.ARROW_TRACKER_METAKEY.getKey(), MetadataConstants.metadataValue);
} }
projectile.setMetadata(MetadataConstants.BOW_FORCE_METAKEY, projectile.setMetadata(MetadataConstants.BOW_FORCE_METAKEY.getKey(),
new FixedMetadataValue(pluginRef, new FixedMetadataValue((Plugin) pluginRef.getPlatformProvider(),
Math.min(event.getForce() Math.min(event.getForce()
* pluginRef.getConfigManager().getConfigExperience().getExperienceArchery().getForceMultiplier(), 1.0))); * pluginRef.getConfigManager().getConfigExperience().getExperienceArchery().getForceMultiplier(), 1.0)));
projectile.setMetadata(MetadataConstants.ARROW_DISTANCE_METAKEY, new FixedMetadataValue(pluginRef, projectile.getLocation())); projectile.setMetadata(MetadataConstants.ARROW_DISTANCE_METAKEY.getKey(), new FixedMetadataValue((Plugin) pluginRef.getPlatformProvider(), projectile.getLocation()));
} }
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
@ -122,8 +126,8 @@ public class EntityListener implements Listener {
if(!(projectile instanceof Arrow)) if(!(projectile instanceof Arrow))
return; return;
projectile.setMetadata(MetadataConstants.BOW_FORCE_METAKEY, new FixedMetadataValue(pluginRef, 1.0)); projectile.setMetadata(MetadataConstants.BOW_FORCE_METAKEY.getKey(), new FixedMetadataValue((Plugin) pluginRef.getPlatformProvider(), 1.0));
projectile.setMetadata(MetadataConstants.ARROW_DISTANCE_METAKEY, new FixedMetadataValue(pluginRef, projectile.getLocation())); projectile.setMetadata(MetadataConstants.ARROW_DISTANCE_METAKEY.getKey(), new FixedMetadataValue((Plugin) pluginRef.getPlatformProvider(), projectile.getLocation()));
for(Enchantment enchantment : player.getInventory().getItemInMainHand().getEnchantments().keySet()) { for(Enchantment enchantment : player.getInventory().getItemInMainHand().getEnchantments().keySet()) {
if(enchantment.getName().equalsIgnoreCase("piercing")) if(enchantment.getName().equalsIgnoreCase("piercing"))
@ -131,7 +135,7 @@ public class EntityListener implements Listener {
} }
if (pluginRef.getRandomChanceTools().isActivationSuccessful(SkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, SubSkillType.ARCHERY_ARROW_RETRIEVAL, player)) { if (pluginRef.getRandomChanceTools().isActivationSuccessful(SkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, SubSkillType.ARCHERY_ARROW_RETRIEVAL, player)) {
projectile.setMetadata(MetadataConstants.ARROW_TRACKER_METAKEY, MetadataConstants.metadataValue); projectile.setMetadata(MetadataConstants.ARROW_TRACKER_METAKEY.getKey(), MetadataConstants.metadataValue);
} }
} }
} }
@ -161,11 +165,11 @@ public class EntityListener implements Listener {
Entity entity = event.getEntity(); Entity entity = event.getEntity();
if (entity instanceof FallingBlock || entity instanceof Enderman) { if (entity instanceof FallingBlock || entity instanceof Enderman) {
boolean isTracked = entity.hasMetadata(MetadataConstants.UNNATURAL_MOB_METAKEY); boolean isTracked = entity.hasMetadata(MetadataConstants.UNNATURAL_MOB_METAKEY.getKey());
if (pluginRef.getPlaceStore().isTrue(block) && !isTracked) { if (pluginRef.getPlaceStore().isTrue(block) && !isTracked) {
pluginRef.getPlaceStore().setFalse(block); pluginRef.getPlaceStore().setFalse(block);
entity.setMetadata(MetadataConstants.UNNATURAL_MOB_METAKEY, MetadataConstants.metadataValue); entity.setMetadata(MetadataConstants.UNNATURAL_MOB_METAKEY.getKey(), MetadataConstants.metadataValue);
} else if (isTracked) { } else if (isTracked) {
pluginRef.getPlaceStore().setTrue(block); pluginRef.getPlaceStore().setTrue(block);
} }
@ -287,7 +291,7 @@ public class EntityListener implements Listener {
// Don't process this event for marked entities, for players this is handled above, // Don't process this event for marked entities, for players this is handled above,
// However, for entities, we do not wanna cancel this event to allow plugins to observe changes // However, for entities, we do not wanna cancel this event to allow plugins to observe changes
// properly // properly
if (defender.getMetadata(MetadataConstants.CUSTOM_DAMAGE_METAKEY).size() > 0) { if (defender.getMetadata(MetadataConstants.CUSTOM_DAMAGE_METAKEY.getKey()).size() > 0) {
return; return;
} }
@ -299,7 +303,7 @@ public class EntityListener implements Listener {
return; return;
} }
if (event.getDamager().hasMetadata(MetadataConstants.SPAWNED_FIREWORKS_METAKEY)) { if (event.getDamager().hasMetadata(MetadataConstants.SPAWNED_FIREWORKS_METAKEY.getKey())) {
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
@ -352,7 +356,7 @@ public class EntityListener implements Listener {
} }
//Deflect checks //Deflect checks
final McMMOPlayer mcMMOPlayer = pluginRef.getUserManager().getPlayer(defendingPlayer); final BukkitMMOPlayer mcMMOPlayer = pluginRef.getUserManager().getPlayer(defendingPlayer);
if (mcMMOPlayer != null) { if (mcMMOPlayer != null) {
UnarmedManager unarmedManager = mcMMOPlayer.getUnarmedManager(); UnarmedManager unarmedManager = mcMMOPlayer.getUnarmedManager();
@ -615,18 +619,18 @@ public class EntityListener implements Listener {
return; return;
} }
if (entity.hasMetadata(MetadataConstants.CUSTOM_NAME_METAKEY)) { if (entity.hasMetadata(MetadataConstants.CUSTOM_NAME_METAKEY.getKey())) {
entity.setCustomName(entity.getMetadata(MetadataConstants.CUSTOM_NAME_METAKEY).get(0).asString()); entity.setCustomName(entity.getMetadata(MetadataConstants.CUSTOM_NAME_METAKEY.getKey()).get(0).asString());
entity.removeMetadata(MetadataConstants.CUSTOM_NAME_METAKEY, pluginRef); entity.removeMetadata(MetadataConstants.CUSTOM_NAME_METAKEY.getKey(), (Plugin) pluginRef.getPlatformProvider());
} }
if (entity.hasMetadata(MetadataConstants.NAME_VISIBILITY_METAKEY)) { if (entity.hasMetadata(MetadataConstants.NAME_VISIBILITY_METAKEY.getKey())) {
entity.setCustomNameVisible(entity.getMetadata(MetadataConstants.NAME_VISIBILITY_METAKEY).get(0).asBoolean()); entity.setCustomNameVisible(entity.getMetadata(MetadataConstants.NAME_VISIBILITY_METAKEY.getKey()).get(0).asBoolean());
entity.removeMetadata(MetadataConstants.NAME_VISIBILITY_METAKEY, pluginRef); entity.removeMetadata(MetadataConstants.NAME_VISIBILITY_METAKEY.getKey(), (Plugin) pluginRef.getPlatformProvider());
} }
if (entity.hasMetadata(MetadataConstants.UNNATURAL_MOB_METAKEY)) { if (entity.hasMetadata(MetadataConstants.UNNATURAL_MOB_METAKEY.getKey())) {
entity.removeMetadata(MetadataConstants.UNNATURAL_MOB_METAKEY, pluginRef); entity.removeMetadata(MetadataConstants.UNNATURAL_MOB_METAKEY.getKey(), (Plugin) pluginRef.getPlatformProvider());
} }
} }
@ -668,18 +672,18 @@ public class EntityListener implements Listener {
case SPAWNER: case SPAWNER:
case SPAWNER_EGG: case SPAWNER_EGG:
if (pluginRef.getConfigManager().getConfigExploitPrevention().doSpawnedEntitiesGiveModifiedXP()) { if (pluginRef.getConfigManager().getConfigExploitPrevention().doSpawnedEntitiesGiveModifiedXP()) {
entity.setMetadata(MetadataConstants.UNNATURAL_MOB_METAKEY, MetadataConstants.metadataValue); entity.setMetadata(MetadataConstants.UNNATURAL_MOB_METAKEY.getKey(), MetadataConstants.metadataValue);
Entity passenger = entity.getPassenger(); Entity passenger = entity.getPassenger();
if (passenger != null) { if (passenger != null) {
passenger.setMetadata(MetadataConstants.UNNATURAL_MOB_METAKEY, MetadataConstants.metadataValue); passenger.setMetadata(MetadataConstants.UNNATURAL_MOB_METAKEY.getKey(), MetadataConstants.metadataValue);
} }
} }
return; return;
case BREEDING: case BREEDING:
entity.setMetadata(MetadataConstants.PETS_ANIMAL_TRACKING_METAKEY, MetadataConstants.metadataValue); entity.setMetadata(MetadataConstants.PETS_ANIMAL_TRACKING_METAKEY.getKey(), MetadataConstants.metadataValue);
return; return;
default: default:
@ -690,7 +694,7 @@ public class EntityListener implements Listener {
public void onEntityBreed(EntityBreedEvent event) { public void onEntityBreed(EntityBreedEvent event) {
if(pluginRef.getConfigManager().getConfigExploitPrevention().areSummonsBreedable()) { if(pluginRef.getConfigManager().getConfigExploitPrevention().areSummonsBreedable()) {
//TODO: Change to NBT //TODO: Change to NBT
if(event.getFather().hasMetadata(MetadataConstants.COTW_TEMPORARY_SUMMON) || event.getMother().hasMetadata(MetadataConstants.COTW_TEMPORARY_SUMMON)) { if(event.getFather().hasMetadata(MetadataConstants.COTW_TEMPORARY_SUMMON.getKey()) || event.getMother().hasMetadata(MetadataConstants.COTW_TEMPORARY_SUMMON.getKey())) {
event.setCancelled(true); event.setCancelled(true);
Animals mom = (Animals) event.getMother(); Animals mom = (Animals) event.getMother();
Animals father = (Animals) event.getFather(); Animals father = (Animals) event.getFather();
@ -722,13 +726,13 @@ public class EntityListener implements Listener {
Entity entity = event.getEntity(); Entity entity = event.getEntity();
if (!(entity instanceof TNTPrimed) || !entity.hasMetadata(MetadataConstants.TNT_TRACKING_METAKEY)) { if (!(entity instanceof TNTPrimed) || !entity.hasMetadata(MetadataConstants.TNT_TRACKING_METAKEY.getKey())) {
return; return;
} }
// We can make this assumption because we (should) be the only ones // We can make this assumption because we (should) be the only ones
// using this exact metadata // using this exact metadata
Player player = pluginRef.getServer().getPlayerExact(entity.getMetadata(MetadataConstants.TNT_TRACKING_METAKEY).get(0).asString()); Player player = Bukkit.getServer().getPlayerExact(entity.getMetadata(MetadataConstants.TNT_TRACKING_METAKEY.getKey()).get(0).asString());
if (!pluginRef.getUserManager().hasPlayerDataKey(player)) { if (!pluginRef.getUserManager().hasPlayerDataKey(player)) {
return; return;
@ -765,13 +769,13 @@ public class EntityListener implements Listener {
Entity entity = event.getEntity(); Entity entity = event.getEntity();
if (!(entity instanceof TNTPrimed) || !entity.hasMetadata(MetadataConstants.TNT_TRACKING_METAKEY)) { if (!(entity instanceof TNTPrimed) || !entity.hasMetadata(MetadataConstants.TNT_TRACKING_METAKEY.getKey())) {
return; return;
} }
// We can make this assumption because we (should) be the only ones // We can make this assumption because we (should) be the only ones
// using this exact metadata // using this exact metadata
Player player = pluginRef.getServer().getPlayerExact(entity.getMetadata(MetadataConstants.TNT_TRACKING_METAKEY).get(0).asString()); Player player = Bukkit.getServer().getPlayerExact(entity.getMetadata(MetadataConstants.TNT_TRACKING_METAKEY.getKey()).get(0).asString());
if (!pluginRef.getUserManager().hasPlayerDataKey(player)) { if (!pluginRef.getUserManager().hasPlayerDataKey(player)) {
return; return;
@ -929,12 +933,12 @@ public class EntityListener implements Listener {
LivingEntity entity = event.getEntity(); LivingEntity entity = event.getEntity();
if (!pluginRef.getUserManager().hasPlayerDataKey(player) || pluginRef.getMiscTools().isNPCEntityExcludingVillagers(entity) || entity.hasMetadata(MetadataConstants.UNNATURAL_MOB_METAKEY)) { if (!pluginRef.getUserManager().hasPlayerDataKey(player) || pluginRef.getMiscTools().isNPCEntityExcludingVillagers(entity) || entity.hasMetadata(MetadataConstants.UNNATURAL_MOB_METAKEY.getKey())) {
return; return;
} }
if (pluginRef.getConfigManager().getConfigExploitPrevention().doTamedEntitiesGiveXP()) if (pluginRef.getConfigManager().getConfigExploitPrevention().doTamedEntitiesGiveXP())
entity.setMetadata(MetadataConstants.UNNATURAL_MOB_METAKEY, MetadataConstants.metadataValue); entity.setMetadata(MetadataConstants.UNNATURAL_MOB_METAKEY.getKey(), MetadataConstants.metadataValue);
//Profile not loaded //Profile not loaded
//TODO: Redundant //TODO: Redundant
@ -1017,8 +1021,8 @@ public class EntityListener implements Listener {
if (pluginRef.getDynamicSettingsManager().isWorldBlacklisted(event.getEntity().getWorld().getName())) if (pluginRef.getDynamicSettingsManager().isWorldBlacklisted(event.getEntity().getWorld().getName()))
return; return;
if (event.getEntity().hasMetadata(MetadataConstants.UNNATURAL_MOB_METAKEY)) { if (event.getEntity().hasMetadata(MetadataConstants.UNNATURAL_MOB_METAKEY.getKey())) {
event.getPigZombie().setMetadata(MetadataConstants.UNNATURAL_MOB_METAKEY, MetadataConstants.metadataValue); event.getPigZombie().setMetadata(MetadataConstants.UNNATURAL_MOB_METAKEY.getKey(), MetadataConstants.metadataValue);
} }
} }
} }

View File

@ -5,6 +5,8 @@ import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
import com.gmail.nossr50.datatypes.skills.SubSkillType; import com.gmail.nossr50.datatypes.skills.SubSkillType;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.runnables.player.PlayerUpdateInventoryTask; import com.gmail.nossr50.runnables.player.PlayerUpdateInventoryTask;
import org.bukkit.Bukkit;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.block.BlockState; import org.bukkit.block.BlockState;
import org.bukkit.block.BrewingStand; import org.bukkit.block.BrewingStand;
@ -17,6 +19,7 @@ import org.bukkit.event.Listener;
import org.bukkit.event.inventory.*; import org.bukkit.event.inventory.*;
import org.bukkit.inventory.*; import org.bukkit.inventory.*;
import org.bukkit.metadata.MetadataValue; import org.bukkit.metadata.MetadataValue;
import org.bukkit.plugin.Plugin;
import java.util.List; import java.util.List;
@ -50,8 +53,8 @@ public class InventoryListener implements Listener {
return; return;
} }
if (!furnaceBlock.hasMetadata(MetadataConstants.FURNACE_TRACKING_METAKEY) && furnaceBlock.getMetadata(MetadataConstants.FURNACE_TRACKING_METAKEY).size() == 0) if (!furnaceBlock.hasMetadata(MetadataConstants.FURNACE_TRACKING_METAKEY.getKey()) && furnaceBlock.getMetadata(MetadataConstants.FURNACE_TRACKING_METAKEY.getKey()).size() == 0)
furnaceBlock.setMetadata(MetadataConstants.FURNACE_TRACKING_METAKEY, pluginRef.getUserManager().getPlayer((Player) player).getPlayerMetadata()); furnaceBlock.setMetadata(MetadataConstants.FURNACE_TRACKING_METAKEY.getKey(), pluginRef.getUserManager().getPlayer((Player) player).getPlayerMetadata());
} }
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
@ -62,7 +65,7 @@ public class InventoryListener implements Listener {
Block furnaceBlock = processInventoryOpenOrCloseEvent(event.getInventory()); Block furnaceBlock = processInventoryOpenOrCloseEvent(event.getInventory());
if (furnaceBlock == null || furnaceBlock.hasMetadata(MetadataConstants.FURNACE_TRACKING_METAKEY)) { if (furnaceBlock == null || furnaceBlock.hasMetadata(MetadataConstants.FURNACE_TRACKING_METAKEY.getKey())) {
return; return;
} }
@ -72,7 +75,7 @@ public class InventoryListener implements Listener {
return; return;
} }
furnaceBlock.removeMetadata(MetadataConstants.FURNACE_TRACKING_METAKEY, pluginRef); furnaceBlock.removeMetadata(MetadataConstants.FURNACE_TRACKING_METAKEY.getKey(), (Plugin) pluginRef.getPlatformProvider());
} }
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
@ -189,15 +192,15 @@ public class InventoryListener implements Listener {
Block furnaceBlock = processInventoryOpenOrCloseEvent(event.getInventory()); Block furnaceBlock = processInventoryOpenOrCloseEvent(event.getInventory());
if (furnaceBlock != null) { if (furnaceBlock != null) {
if (furnaceBlock.getMetadata(MetadataConstants.FURNACE_TRACKING_METAKEY).size() > 0) if (furnaceBlock.getMetadata(MetadataConstants.FURNACE_TRACKING_METAKEY.getKey()).size() > 0)
furnaceBlock.removeMetadata(MetadataConstants.FURNACE_TRACKING_METAKEY, pluginRef); furnaceBlock.removeMetadata(MetadataConstants.FURNACE_TRACKING_METAKEY.getKey(), (Plugin) pluginRef.getPlatformProvider());
//Profile not loaded //Profile not loaded
if (pluginRef.getUserManager().getPlayer(player) == null) { if (pluginRef.getUserManager().getPlayer(player) == null) {
return; return;
} }
furnaceBlock.setMetadata(MetadataConstants.FURNACE_TRACKING_METAKEY, pluginRef.getUserManager().getPlayer(player).getPlayerMetadata()); furnaceBlock.setMetadata(MetadataConstants.FURNACE_TRACKING_METAKEY.getKey(), pluginRef.getUserManager().getPlayer(player).getPlayerMetadata());
} }
} }
@ -452,7 +455,7 @@ public class InventoryListener implements Listener {
final HumanEntity whoClicked = event.getWhoClicked(); final HumanEntity whoClicked = event.getWhoClicked();
if (!whoClicked.hasMetadata(MetadataConstants.PLAYER_DATA_METAKEY)) { if (!whoClicked.hasMetadata(MetadataConstants.PLAYER_DATA_METAKEY.getKey())) {
return; return;
} }
@ -470,7 +473,9 @@ public class InventoryListener implements Listener {
return; return;
} }
new PlayerUpdateInventoryTask((Player) whoClicked).runTaskLater(pluginRef, 0); pluginRef.getPlatformProvider().getScheduler().getTaskBuilder()
.setTask(new PlayerUpdateInventoryTask((Player) whoClicked))
.schedule();
} }
private Block processInventoryOpenOrCloseEvent(Inventory inventory) { private Block processInventoryOpenOrCloseEvent(Inventory inventory) {
@ -488,12 +493,12 @@ public class InventoryListener implements Listener {
} }
private Player getPlayerFromFurnace(Block furnaceBlock) { private Player getPlayerFromFurnace(Block furnaceBlock) {
List<MetadataValue> metadata = furnaceBlock.getMetadata(MetadataConstants.FURNACE_TRACKING_METAKEY); List<MetadataValue> metadata = furnaceBlock.getMetadata(MetadataConstants.FURNACE_TRACKING_METAKEY.getKey());
if (metadata.isEmpty()) { if (metadata.isEmpty()) {
return null; return null;
} }
return pluginRef.getServer().getPlayerExact(metadata.get(0).asString()); return Bukkit.getServer().getPlayerExact(metadata.get(0).asString());
} }
} }

View File

@ -33,6 +33,7 @@ import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.event.player.*; import org.bukkit.event.player.*;
import org.bukkit.inventory.EquipmentSlot; import org.bukkit.inventory.EquipmentSlot;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.Plugin;
import java.util.Locale; import java.util.Locale;
@ -117,7 +118,7 @@ public class PlayerListener implements Listener {
} }
Player player = event.getEntity(); Player player = event.getEntity();
event.setDeathMessage(pluginRef.getMobHealthBarManager().fixDeathMessage(deathMessage, player)); event.setDeathMessage(pluginRef.getPlatformProvider().getHealthBarManager().fixDeathMessage(deathMessage, pluginRef.getUserManager().getPlayer(player)));
} }
/** /**
@ -145,7 +146,7 @@ public class PlayerListener implements Listener {
Player killedPlayer = event.getEntity(); Player killedPlayer = event.getEntity();
if (!killedPlayer.hasMetadata(MetadataConstants.PLAYER_DATA_METAKEY) || pluginRef.getPermissionTools().hardcoreBypass(killedPlayer)) { if (!killedPlayer.hasMetadata(MetadataConstants.PLAYER_DATA_METAKEY.getKey()) || pluginRef.getPermissionTools().hardcoreBypass(killedPlayer)) {
return; return;
} }
@ -225,7 +226,7 @@ public class PlayerListener implements Listener {
ItemStack dropStack = drop.getItemStack(); ItemStack dropStack = drop.getItemStack();
if (pluginRef.getItemTools().isSharable(dropStack)) { if (pluginRef.getItemTools().isSharable(dropStack)) {
drop.setMetadata(MetadataConstants.DROPPED_ITEM_TRACKING_METAKEY, MetadataConstants.metadataValue); drop.setMetadata(MetadataConstants.DROPPED_ITEM_TRACKING_METAKEY.getKey(), MetadataConstants.metadataValue);
} }
pluginRef.getSkillTools().removeAbilityBuff(dropStack); pluginRef.getSkillTools().removeAbilityBuff(dropStack);
@ -342,7 +343,7 @@ public class PlayerListener implements Listener {
//Track the hook //Track the hook
if (pluginRef.getConfigManager().getConfigExploitPrevention().getConfigSectionExploitFishing().isPreventFishingExploits()) { if (pluginRef.getConfigManager().getConfigExploitPrevention().getConfigSectionExploitFishing().isPreventFishingExploits()) {
if (event.getHook().getMetadata(MetadataConstants.FISH_HOOK_REF_METAKEY).size() == 0) { if (event.getHook().getMetadata(MetadataConstants.FISH_HOOK_REF_METAKEY.getKey()).size() == 0) {
fishingManager.setFishHookReference(event.getHook()); fishingManager.setFishHookReference(event.getHook());
} }
@ -443,12 +444,12 @@ public class PlayerListener implements Listener {
Item drop = event.getItem(); Item drop = event.getItem();
//Remove tracking //Remove tracking
ItemStack dropStack = drop.getItemStack(); ItemStack dropStack = drop.getItemStack();
if(drop.hasMetadata(MetadataConstants.ARROW_TRACKER_METAKEY)) { if(drop.hasMetadata(MetadataConstants.ARROW_TRACKER_METAKEY.getKey())) {
drop.removeMetadata(MetadataConstants.ARROW_TRACKER_METAKEY, pluginRef); drop.removeMetadata(MetadataConstants.ARROW_TRACKER_METAKEY.getKey(), (Plugin) pluginRef.getPlatformProvider());
} }
if (drop.hasMetadata(MetadataConstants.DISARMED_ITEM_METAKEY)) { if (drop.hasMetadata(MetadataConstants.DISARMED_ITEM_METAKEY.getKey())) {
if (!player.getName().equals(drop.getMetadata(MetadataConstants.DISARMED_ITEM_METAKEY).get(0).asString())) { if (!player.getName().equals(drop.getMetadata(MetadataConstants.DISARMED_ITEM_METAKEY.getKey()).get(0).asString())) {
event.setCancelled(true); event.setCancelled(true);
} }
@ -456,7 +457,7 @@ public class PlayerListener implements Listener {
} }
if (!drop.hasMetadata(MetadataConstants.DROPPED_ITEM_TRACKING_METAKEY) && mcMMOPlayer.inParty() && pluginRef.getItemTools().isSharable(dropStack)) { if (!drop.hasMetadata(MetadataConstants.DROPPED_ITEM_TRACKING_METAKEY.getKey()) && mcMMOPlayer.inParty() && pluginRef.getItemTools().isSharable(dropStack)) {
event.setCancelled(mcMMOPlayer.getParty().getShareHandler().handleItemShare(drop, mcMMOPlayer)); event.setCancelled(mcMMOPlayer.getParty().getShareHandler().handleItemShare(drop, mcMMOPlayer));
pluginRef.getSoundManager().sendSound(player, player.getLocation(), SoundType.POP); pluginRef.getSoundManager().sendSound(player, player.getLocation(), SoundType.POP);
@ -517,7 +518,11 @@ public class PlayerListener implements Listener {
Player player = event.getPlayer(); Player player = event.getPlayer();
//Delay loading for 3 seconds in case the player has a save task running, its hacky but it should do the trick //Delay loading for 3 seconds in case the player has a save task running, its hacky but it should do the trick
new PlayerProfileLoadingTask(pluginRef, player).runTaskLaterAsynchronously(pluginRef, 60); pluginRef.getPlatformProvider().getScheduler().getTaskBuilder()
.setAsync(true)
.setDelay(60L)
.setTask(new PlayerProfileLoadingTask(pluginRef, player))
.schedule();
if (pluginRef.getConfigManager().getConfigMOTD().isEnableMOTD()) { if (pluginRef.getConfigManager().getConfigMOTD().isEnableMOTD()) {
pluginRef.getMessageOfTheDayUtils().displayAll(player); pluginRef.getMessageOfTheDayUtils().displayAll(player);
@ -528,7 +533,7 @@ public class PlayerListener implements Listener {
} }
//TODO: Remove this warning after 2.2 is done //TODO: Remove this warning after 2.2 is done
if (pluginRef.getDescription().getVersion().contains("SNAPSHOT")) { if (pluginRef.getPlatformProvider().getVersion().contains("SNAPSHOT")) {
event.getPlayer().sendMessage(ChatColor.RED + "WARNING: " + ChatColor.WHITE + "This dev build version of mcMMO is in the MIDDLE of completely rewriting the configs, there may be game breaking bugs. It is not recommended to play on this version of mcMMO, please grab the latest stable release from https://www.mcmmo.org and use that instead!"); event.getPlayer().sendMessage(ChatColor.RED + "WARNING: " + ChatColor.WHITE + "This dev build version of mcMMO is in the MIDDLE of completely rewriting the configs, there may be game breaking bugs. It is not recommended to play on this version of mcMMO, please grab the latest stable release from https://www.mcmmo.org and use that instead!");
} }

View File

@ -129,7 +129,7 @@ public class mcMMO implements McMMOApi {
*/ */
public void onEnable() { public void onEnable() {
try { try {
platformProvider.getLogger().setFilter(new LogFilter(this)); //platformProvider.getLogger().setFilter(new LogFilter(this));
//Init Permission Tools //Init Permission Tools
permissionTools = new PermissionTools(this); permissionTools = new PermissionTools(this);
@ -168,6 +168,7 @@ public class mcMMO implements McMMOApi {
CompatibilityCheck.checkForOutdatedAPI(this, serverAPIOutdated, platformProvider.getServerType().getFriendlyName()); CompatibilityCheck.checkForOutdatedAPI(this, serverAPIOutdated, platformProvider.getServerType().getFriendlyName());
if (!platformProvider.isSupported(true)) { if (!platformProvider.isSupported(true)) {
org.bukkit.Bukkit.getLogger().info("WE DEAD");
return; return;
} else { } else {
platformProvider.earlyInit(); platformProvider.earlyInit();
@ -177,9 +178,10 @@ public class mcMMO implements McMMOApi {
formulaManager = new FormulaManager(this); formulaManager = new FormulaManager(this);
for (Player player : getServer().getOnlinePlayers()) { // Don't do this for now
new PlayerProfileLoadingTask(this, player).runTaskLaterAsynchronously(this, 1); // 1 Tick delay to ensure the player is marked as online before we begin loading //for (Player player : getServer().getOnlinePlayers()) {
} // new PlayerProfileLoadingTask(this, player).runTaskLaterAsynchronously(this, 1); // 1 Tick delay to ensure the player is marked as online before we begin loading
//}
debug("Version " + getVersion() + " is enabled!"); debug("Version " + getVersion() + " is enabled!");
@ -227,9 +229,6 @@ public class mcMMO implements McMMOApi {
//Init Chat Manager //Init Chat Manager
chatManager = new ChatManager(this); chatManager = new ChatManager(this);
//Init Mob Health Bar Manager
bukkitMobHealthBarManager = new BukkitMobHealthBarManager(this);
//Init Event Manager //Init Event Manager
eventManager = new EventManager(this); eventManager = new EventManager(this);
@ -277,6 +276,8 @@ public class mcMMO implements McMMOApi {
platformProvider.onLoad(); platformProvider.onLoad();
worldGuardUtils = new WorldGuardUtils(this); //Init WGU worldGuardUtils = new WorldGuardUtils(this); //Init WGU
// TODO: 2.2 - MIGRATE
/*
if(getServer().getPluginManager().getPlugin("WorldGuard") != null) { if(getServer().getPluginManager().getPlugin("WorldGuard") != null) {
if(worldGuardUtils.isWorldGuardLoaded()) { if(worldGuardUtils.isWorldGuardLoaded()) {
@ -286,6 +287,7 @@ public class mcMMO implements McMMOApi {
worldGuardManager.registerFlags(); worldGuardManager.registerFlags();
} }
} }
*/
} }
/** /**
@ -450,6 +452,10 @@ public class mcMMO implements McMMOApi {
return configManager; return configManager;
} }
public PlatformProvider getPlatformProvider() {
return platformProvider;
}
/** /**
* The directory in which override locales are kept * The directory in which override locales are kept
* *
@ -566,35 +572,49 @@ public class mcMMO implements McMMOApi {
} }
private void registerCustomRecipes() { private void registerCustomRecipes() {
getServer().getScheduler().scheduleSyncDelayedTask(this, () -> { getPlatformProvider().registerCustomRecipes();
if (configManager.getConfigItems().isChimaeraWingEnabled()) {
Recipe recipe = getChimaeraWingRecipe();
if(!getSkillTools().hasRecipeBeenRegistered(recipe))
getServer().addRecipe(getChimaeraWingRecipe());
}
}, 40);
} }
private void scheduleTasks() { private void scheduleTasks() {
// Periodic save timer (Saves every 10 minutes by default) // Periodic save timer (Saves every 10 minutes by default)
long saveIntervalTicks = Math.max(1200, (getConfigManager().getConfigDatabase().getConfigSectionDatabaseGeneral().getSaveIntervalMinutes() * (20 * 60))); long saveIntervalTicks = Math.max(1200, (getConfigManager().getConfigDatabase().getConfigSectionDatabaseGeneral().getSaveIntervalMinutes() * (20 * 60)));
new SaveTimerTask(this).runTaskTimer(this, saveIntervalTicks, saveIntervalTicks); platformProvider.getScheduler().getTaskBuilder()
.setDelay(saveIntervalTicks)
.setRepeatTime(saveIntervalTicks)
.setTask(new SaveTimerTask(this))
.schedule();
// Cleanup the backups folder // Cleanup the backups folder
new CleanBackupFilesTask(this).runTaskAsynchronously(this); platformProvider.getScheduler().getTaskBuilder()
.setAsync(true)
.setTask(new CleanBackupFilesTask(this))
.schedule();
// Bleed timer (Runs every 0.5 seconds) // Bleed timer (Runs every 0.5 seconds)
bleedTimerTask = new BleedTimerTask(this); bleedTimerTask = new BleedTimerTask(this);
bleedTimerTask.runTaskTimer(this, miscTools.TICK_CONVERSION_FACTOR, (miscTools.TICK_CONVERSION_FACTOR / 2)); platformProvider.getScheduler().getTaskBuilder()
.setDelay(miscTools.TICK_CONVERSION_FACTOR)
.setRepeatTime((miscTools.TICK_CONVERSION_FACTOR /2))
.setTask(bleedTimerTask)
.schedule();
// Old & Powerless User remover // Old & Powerless User remover
long purgeIntervalTicks = getConfigManager().getConfigDatabase().getConfigSectionCleaning().getPurgeInterval() * 60L * 60L * miscTools.TICK_CONVERSION_FACTOR; long purgeIntervalTicks = getConfigManager().getConfigDatabase().getConfigSectionCleaning().getPurgeInterval() * 60L * 60L * miscTools.TICK_CONVERSION_FACTOR;
if (getDatabaseCleaningSettings().isOnlyPurgeAtStartup()) { if (getDatabaseCleaningSettings().isOnlyPurgeAtStartup()) {
new UserPurgeTask(this).runTaskLaterAsynchronously(this, 2 * miscTools.TICK_CONVERSION_FACTOR); // Start 2 seconds after startup. platformProvider.getScheduler().getTaskBuilder()
.setAsync(true)
.setDelay(2 * miscTools.TICK_CONVERSION_FACTOR)
.setTask(new UserPurgeTask(this))
.schedule();
} else if (purgeIntervalTicks > 0) { } else if (purgeIntervalTicks > 0) {
new UserPurgeTask(this).runTaskTimerAsynchronously(this, purgeIntervalTicks, purgeIntervalTicks); platformProvider.getScheduler().getTaskBuilder()
.setAsync(true)
.setDelay(purgeIntervalTicks)
.setRepeatTime(purgeIntervalTicks)
.setTask(new UserPurgeTask(this))
.schedule();
} }
//Party System Stuff //Party System Stuff
@ -603,61 +623,44 @@ public class mcMMO implements McMMOApi {
long kickIntervalTicks = getConfigManager().getConfigParty().getPartyCleanup().getPartyAutoKickHoursInterval() * 60L * 60L * miscTools.TICK_CONVERSION_FACTOR; long kickIntervalTicks = getConfigManager().getConfigParty().getPartyCleanup().getPartyAutoKickHoursInterval() * 60L * 60L * miscTools.TICK_CONVERSION_FACTOR;
if (kickIntervalTicks == 0) { if (kickIntervalTicks == 0) {
new PartyAutoKickTask(this).runTaskLater(this, 2 * miscTools.TICK_CONVERSION_FACTOR); // Start 2 seconds after startup. platformProvider.getScheduler().getTaskBuilder()
.setDelay(2 * miscTools.TICK_CONVERSION_FACTOR)
.setTask(new PartyAutoKickTask(this))
.schedule();
} else if (kickIntervalTicks > 0) { } else if (kickIntervalTicks > 0) {
new PartyAutoKickTask(this).runTaskTimer(this, kickIntervalTicks, kickIntervalTicks); platformProvider.getScheduler().getTaskBuilder()
.setDelay(kickIntervalTicks)
.setRepeatTime(kickIntervalTicks)
.setTask(new PartyAutoKickTask(this))
.schedule();
} }
} }
// Update power level tag scoreboards // Update power level tag scoreboards
new PowerLevelUpdatingTask(this).runTaskTimer(this, 2 * miscTools.TICK_CONVERSION_FACTOR, 2 * miscTools.TICK_CONVERSION_FACTOR); platformProvider.getScheduler().getTaskBuilder()
.setDelay(2 * miscTools.TICK_CONVERSION_FACTOR)
.setRepeatTime(2 * miscTools.TICK_CONVERSION_FACTOR)
.setTask(new PowerLevelUpdatingTask(this))
.schedule();
// Clear the registered XP data so players can earn XP again // Clear the registered XP data so players can earn XP again
if (getConfigManager().getConfigLeveling().getConfigLevelingDiminishedReturns().isDiminishedReturnsEnabled()) { if (getConfigManager().getConfigLeveling().getConfigLevelingDiminishedReturns().isDiminishedReturnsEnabled()) {
new ClearRegisteredXPGainTask(this).runTaskTimer(this, 60, 60); platformProvider.getScheduler().getTaskBuilder()
.setDelay(60L)
.setRepeatTime(60L)
.setTask(new ClearRegisteredXPGainTask(this))
.schedule();
} }
if (configManager.getConfigNotifications().getConfigNotificationGeneral().isPlayerTips()) { if (configManager.getConfigNotifications().getConfigNotificationGeneral().isPlayerTips()) {
new NotifySquelchReminderTask(this).runTaskTimer(this, 60, ((20 * 60) * 60)); platformProvider.getScheduler().getTaskBuilder()
.setDelay(60L)
.setRepeatTime((20 * 60) * 60L)
.setTask(new NotifySquelchReminderTask(this))
.schedule();
} }
} }
//TODO: Add this stuff to DSM, this location is temporary
private ShapelessRecipe getChimaeraWingRecipe() {
Material ingredient = Material.matchMaterial(configManager.getConfigItems().getChimaeraWingRecipeMats());
if(ingredient == null)
ingredient = Material.FEATHER;
int amount = configManager.getConfigItems().getChimaeraWingUseCost();
ShapelessRecipe chimaeraWing = new ShapelessRecipe(new NamespacedKey(this, "Chimaera"), getChimaeraWing());
chimaeraWing.addIngredient(amount, ingredient);
return chimaeraWing;
}
//TODO: Add this stuff to DSM, this location is temporary
public ItemStack getChimaeraWing() {
Material ingredient = Material.matchMaterial(configManager.getConfigItems().getChimaeraWingRecipeMats());
if(ingredient == null)
ingredient = Material.FEATHER;
//TODO: Make it so Chimaera wing amounts made is customizeable
ItemStack itemStack = new ItemStack(ingredient, 1);
ItemMeta itemMeta = itemStack.getItemMeta();
itemMeta.setDisplayName(ChatColor.GOLD + localeManager.getString("Item.ChimaeraWing.Name"));
List<String> itemLore = new ArrayList<>();
itemLore.add("mcMMO Item");
itemLore.add(localeManager.getString("Item.ChimaeraWing.Lore"));
itemMeta.setLore(itemLore);
itemStack.setItemMeta(itemMeta);
return itemStack;
}
public DynamicSettingsManager getDynamicSettingsManager() { public DynamicSettingsManager getDynamicSettingsManager() {
return dynamicSettingsManager; return dynamicSettingsManager;
} }
@ -778,4 +781,13 @@ public class mcMMO implements McMMOApi {
public ParticleEffectUtils getParticleEffectUtils() { public ParticleEffectUtils getParticleEffectUtils() {
return particleEffectUtils; return particleEffectUtils;
} }
public File getDataFolder() {
return platformProvider.getDataFolder();
}
@Deprecated
public Object getChimaeraWing() {
return platformProvider.getChimaeraWing();
}
} }

View File

@ -10,6 +10,8 @@ import com.gmail.nossr50.events.party.McMMOPartyChangeEvent.EventReason;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.runnables.items.TeleportationWarmup; import com.gmail.nossr50.runnables.items.TeleportationWarmup;
import com.gmail.nossr50.util.sounds.SoundType; import com.gmail.nossr50.util.sounds.SoundType;
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer; import org.bukkit.OfflinePlayer;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.configuration.file.YamlConfiguration;
@ -85,7 +87,10 @@ public final class PartyManager {
if (warmup > 0) { if (warmup > 0) {
teleportingPlayer.sendMessage(pluginRef.getLocaleManager().getString("Teleport.Commencing", warmup)); teleportingPlayer.sendMessage(pluginRef.getLocaleManager().getString("Teleport.Commencing", warmup));
new TeleportationWarmup(pluginRef, mcMMOPlayer, mcMMOTarget).runTaskLater(pluginRef, 20 * warmup); pluginRef.getPlatformProvider().getScheduler().getTaskBuilder()
.setDelay(20 * warmup)
.setTask(new TeleportationWarmup(pluginRef, mcMMOPlayer, mcMMOTarget))
.schedule();
} else { } else {
pluginRef.getEventManager().handlePartyTeleportEvent(teleportingPlayer, targetPlayer); pluginRef.getEventManager().handlePartyTeleportEvent(teleportingPlayer, targetPlayer);
} }
@ -621,7 +626,7 @@ public final class PartyManager {
* @param party The party * @param party The party
*/ */
public void setPartyLeader(UUID uuid, Party party) { public void setPartyLeader(UUID uuid, Party party) {
OfflinePlayer player = pluginRef.getServer().getOfflinePlayer(uuid); OfflinePlayer player = Bukkit.getServer().getOfflinePlayer(uuid);
UUID leaderUniqueId = party.getLeader().getUniqueId(); UUID leaderUniqueId = party.getLeader().getUniqueId();
for (Player member : party.getOnlineMembers()) { for (Player member : party.getOnlineMembers()) {
@ -842,7 +847,7 @@ public final class PartyManager {
*/ */
public boolean handlePartyChangeEvent(Player player, String oldPartyName, String newPartyName, EventReason reason) { public boolean handlePartyChangeEvent(Player player, String oldPartyName, String newPartyName, EventReason reason) {
McMMOPartyChangeEvent event = new McMMOPartyChangeEvent(player, oldPartyName, newPartyName, reason); McMMOPartyChangeEvent event = new McMMOPartyChangeEvent(player, oldPartyName, newPartyName, reason);
pluginRef.getServer().getPluginManager().callEvent(event); Bukkit.getServer().getPluginManager().callEvent(event);
return !event.isCancelled(); return !event.isCancelled();
} }
@ -858,7 +863,7 @@ public final class PartyManager {
*/ */
public boolean handlePartyChangeAllianceEvent(Player player, String oldAllyName, String newAllyName, McMMOPartyAllianceChangeEvent.EventReason reason) { public boolean handlePartyChangeAllianceEvent(Player player, String oldAllyName, String newAllyName, McMMOPartyAllianceChangeEvent.EventReason reason) {
McMMOPartyAllianceChangeEvent event = new McMMOPartyAllianceChangeEvent(player, oldAllyName, newAllyName, reason); McMMOPartyAllianceChangeEvent event = new McMMOPartyAllianceChangeEvent(player, oldAllyName, newAllyName, reason);
pluginRef.getServer().getPluginManager().callEvent(event); Bukkit.getServer().getPluginManager().callEvent(event);
return !event.isCancelled(); return !event.isCancelled();
} }

View File

@ -3,6 +3,7 @@ package com.gmail.nossr50.runnables;
import com.gmail.nossr50.core.MetadataConstants; import com.gmail.nossr50.core.MetadataConstants;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import org.bukkit.entity.LivingEntity; import org.bukkit.entity.LivingEntity;
import org.bukkit.plugin.Plugin;
import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.scheduler.BukkitRunnable;
public class MobHealthDisplayUpdaterTask extends BukkitRunnable { public class MobHealthDisplayUpdaterTask extends BukkitRunnable {
@ -16,14 +17,14 @@ public class MobHealthDisplayUpdaterTask extends BukkitRunnable {
@Override @Override
public void run() { public void run() {
if (target.hasMetadata(MetadataConstants.CUSTOM_NAME_METAKEY)) { if (target.hasMetadata(MetadataConstants.CUSTOM_NAME_METAKEY.getKey())) {
target.setCustomName(target.getMetadata(MetadataConstants.CUSTOM_NAME_METAKEY).get(0).asString()); target.setCustomName(target.getMetadata(MetadataConstants.CUSTOM_NAME_METAKEY.getKey()).get(0).asString());
target.removeMetadata(MetadataConstants.CUSTOM_NAME_METAKEY, pluginRef); target.removeMetadata(MetadataConstants.CUSTOM_NAME_METAKEY.getKey(), (Plugin) pluginRef.getPlatformProvider());
} }
if (target.hasMetadata(MetadataConstants.NAME_VISIBILITY_METAKEY)) { if (target.hasMetadata(MetadataConstants.NAME_VISIBILITY_METAKEY.getKey())) {
target.setCustomNameVisible(target.getMetadata(MetadataConstants.NAME_VISIBILITY_METAKEY).get(0).asBoolean()); target.setCustomNameVisible(target.getMetadata(MetadataConstants.NAME_VISIBILITY_METAKEY.getKey()).get(0).asBoolean());
target.removeMetadata(MetadataConstants.NAME_VISIBILITY_METAKEY, pluginRef); target.removeMetadata(MetadataConstants.NAME_VISIBILITY_METAKEY.getKey(), (Plugin) pluginRef.getPlatformProvider());
} }
} }
} }

View File

@ -4,6 +4,7 @@ import com.gmail.nossr50.core.MetadataConstants;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.block.BlockFace; import org.bukkit.block.BlockFace;
import org.bukkit.plugin.Plugin;
import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.scheduler.BukkitRunnable;
import java.util.List; import java.util.List;
@ -35,9 +36,9 @@ public class PistonTrackerTask extends BukkitRunnable {
for (Block b : blocks) { for (Block b : blocks) {
Block nextBlock = b.getRelative(direction); Block nextBlock = b.getRelative(direction);
if (nextBlock.hasMetadata(MetadataConstants.PISTON_TRACKING_METAKEY)) { if (nextBlock.hasMetadata(MetadataConstants.PISTON_TRACKING_METAKEY.getKey())) {
pluginRef.getPlaceStore().setTrue(nextBlock); pluginRef.getPlaceStore().setTrue(nextBlock);
nextBlock.removeMetadata(MetadataConstants.PISTON_TRACKING_METAKEY, pluginRef); nextBlock.removeMetadata(MetadataConstants.PISTON_TRACKING_METAKEY.getKey(), (Plugin) pluginRef.getPlatformProvider());
} else if (pluginRef.getPlaceStore().isTrue(nextBlock)) { } else if (pluginRef.getPlaceStore().isTrue(nextBlock)) {
// Block doesn't have metadatakey but isTrue - set it to false // Block doesn't have metadatakey but isTrue - set it to false
pluginRef.getPlaceStore().setFalse(nextBlock); pluginRef.getPlaceStore().setFalse(nextBlock);

View File

@ -5,7 +5,7 @@ import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.runnables.player.PlayerProfileSaveTask; import com.gmail.nossr50.runnables.player.PlayerProfileSaveTask;
import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.scheduler.BukkitRunnable;
public class SaveTimerTask extends BukkitRunnable { public class SaveTimerTask implements Runnable {
private final mcMMO pluginRef; private final mcMMO pluginRef;
@ -19,7 +19,7 @@ public class SaveTimerTask extends BukkitRunnable {
int count = 1; int count = 1;
for (BukkitMMOPlayer mcMMOPlayer : pluginRef.getUserManager().getPlayers()) { for (BukkitMMOPlayer mcMMOPlayer : pluginRef.getUserManager().getPlayers()) {
new PlayerProfileSaveTask(mcMMOPlayer.getProfile(), false).runTaskLaterAsynchronously(pluginRef, count); pluginRef.getPlatformProvider().getScheduler().getTaskBuilder().setAsync(true).setDelay((long) count).setTask(new PlayerProfileSaveTask(mcMMOPlayer.getProfile(), false)).schedule();
count++; count++;
} }

View File

@ -38,6 +38,9 @@ public class LeaderboardsCommandAsyncTask extends BukkitRunnable {
public void run() { public void run() {
final List<PlayerStat> userStats = pluginRef.getDatabaseManager().readLeaderboard(skill, page, 10); final List<PlayerStat> userStats = pluginRef.getDatabaseManager().readLeaderboard(skill, page, 10);
new LeaderboardsCommandDisplayTask(pluginRef, userStats, page, skill, sender, useBoard, useChat).runTaskLater(pluginRef, 1); pluginRef.getPlatformProvider().getScheduler().getTaskBuilder()
.setDelay(1L)
.setTask(new LeaderboardsCommandDisplayTask(pluginRef, userStats, page, skill, sender, useBoard, useChat))
.schedule();
} }
} }

View File

@ -7,6 +7,7 @@ import com.gmail.nossr50.mcMMO;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.scheduler.BukkitRunnable;
import java.util.List; import java.util.List;
@ -43,7 +44,7 @@ public class LeaderboardsCommandDisplayTask extends BukkitRunnable {
} }
if (sender instanceof Player) { if (sender instanceof Player) {
((Player) sender).removeMetadata(MetadataConstants.DATABASE_PROCESSING_COMMAND_METAKEY, pluginRef); ((Player) sender).removeMetadata(MetadataConstants.DATABASE_PROCESSING_COMMAND_METAKEY.getKey(), (Plugin) pluginRef.getPlatformProvider());
} }
if (sender instanceof Player) if (sender instanceof Player)
sender.sendMessage(pluginRef.getLocaleManager().getString("Commands.mctop.Tip")); sender.sendMessage(pluginRef.getLocaleManager().getString("Commands.mctop.Tip"));

View File

@ -34,7 +34,10 @@ public class RankCommandAsyncTask extends BukkitRunnable {
public void run() { public void run() {
Map<PrimarySkillType, Integer> skills = pluginRef.getDatabaseManager().readRank(playerName); Map<PrimarySkillType, Integer> skills = pluginRef.getDatabaseManager().readRank(playerName);
new RankCommandDisplayTask(pluginRef, skills, sender, playerName, useBoard, useChat).runTaskLater(pluginRef, 1); pluginRef.getPlatformProvider().getScheduler().getTaskBuilder()
.setDelay(1L)
.setTask(new RankCommandDisplayTask(pluginRef, skills, sender, playerName, useBoard, useChat))
.schedule();
} }
} }

View File

@ -5,6 +5,7 @@ import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.scheduler.BukkitRunnable;
import java.util.Map; import java.util.Map;
@ -37,7 +38,7 @@ public class RankCommandDisplayTask extends BukkitRunnable {
if (useChat) { if (useChat) {
displayChat(); displayChat();
} }
((Player) sender).removeMetadata(MetadataConstants.DATABASE_PROCESSING_COMMAND_METAKEY, pluginRef); ((Player) sender).removeMetadata(MetadataConstants.DATABASE_PROCESSING_COMMAND_METAKEY.getKey(), (Plugin) pluginRef.getPlatformProvider());
} }
private void displayChat() { private void displayChat() {

View File

@ -2,10 +2,14 @@ package com.gmail.nossr50.runnables.database;
import com.gmail.nossr50.database.DatabaseManager; import com.gmail.nossr50.database.DatabaseManager;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.mcmmo.api.platform.scheduler.Task;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.scheduler.BukkitRunnable;
public class DatabaseConversionTask extends BukkitRunnable { import java.util.function.Consumer;
public class DatabaseConversionTask implements Consumer<Task> {
private final mcMMO pluginRef; private final mcMMO pluginRef;
private final DatabaseManager sourceDatabase; private final DatabaseManager sourceDatabase;
private final CommandSender sender; private final CommandSender sender;
@ -19,9 +23,8 @@ public class DatabaseConversionTask extends BukkitRunnable {
} }
@Override @Override
public void run() { public void accept(Task task) {
sourceDatabase.convertUsers(pluginRef.getDatabaseManager()); sourceDatabase.convertUsers(pluginRef.getDatabaseManager());
sender.sendMessage(message);
pluginRef.getServer().getScheduler().runTask(pluginRef, () -> sender.sendMessage(message));
} }
} }

View File

@ -27,7 +27,7 @@ public class ChimaeraWingWarmup extends BukkitRunnable {
Location previousLocation = mcMMOPlayer.getTeleportCommenceLocation(); Location previousLocation = mcMMOPlayer.getTeleportCommenceLocation();
ChimaeraWing chimaeraWing = new ChimaeraWing(pluginRef, mcMMOPlayer); ChimaeraWing chimaeraWing = new ChimaeraWing(pluginRef, mcMMOPlayer);
if (player.getLocation().distanceSquared(previousLocation) > 1.0 || !player.getInventory().containsAtLeast(pluginRef.getChimaeraWing(), 1)) { if (player.getLocation().distanceSquared(previousLocation) > 1.0 || !player.getInventory().containsAtLeast((ItemStack) pluginRef.getChimaeraWing(), 1)) {
player.sendMessage(pluginRef.getLocaleManager().getString("Teleport.Cancelled")); player.sendMessage(pluginRef.getLocaleManager().getString("Teleport.Cancelled"));
mcMMOPlayer.setTeleportCommenceLocation(null); mcMMOPlayer.setTeleportCommenceLocation(null);
return; return;

View File

@ -2,6 +2,9 @@ package com.gmail.nossr50.runnables.party;
import com.gmail.nossr50.datatypes.party.Party; import com.gmail.nossr50.datatypes.party.Party;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.mcmmo.api.platform.scheduler.Task;
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer; import org.bukkit.OfflinePlayer;
import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.scheduler.BukkitRunnable;
@ -10,8 +13,9 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map.Entry; import java.util.Map.Entry;
import java.util.UUID; import java.util.UUID;
import java.util.function.Consumer;
public class PartyAutoKickTask extends BukkitRunnable { public class PartyAutoKickTask implements Consumer<Task> {
private final mcMMO pluginRef; private final mcMMO pluginRef;
private final long KICK_TIME; private final long KICK_TIME;
@ -21,7 +25,7 @@ public class PartyAutoKickTask extends BukkitRunnable {
} }
@Override @Override
public void run() { public void accept(Task task) {
HashMap<OfflinePlayer, Party> toRemove = new HashMap<>(); HashMap<OfflinePlayer, Party> toRemove = new HashMap<>();
List<UUID> processedPlayers = new ArrayList<>(); List<UUID> processedPlayers = new ArrayList<>();
@ -29,7 +33,7 @@ public class PartyAutoKickTask extends BukkitRunnable {
for (Party party : pluginRef.getPartyManager().getParties()) { for (Party party : pluginRef.getPartyManager().getParties()) {
for (UUID memberUniqueId : party.getMembers().keySet()) { for (UUID memberUniqueId : party.getMembers().keySet()) {
OfflinePlayer member = pluginRef.getServer().getOfflinePlayer(memberUniqueId); OfflinePlayer member = Bukkit.getServer().getOfflinePlayer(memberUniqueId);
boolean isProcessed = processedPlayers.contains(memberUniqueId); boolean isProcessed = processedPlayers.contains(memberUniqueId);
if ((!member.isOnline() && (currentTime - member.getLastPlayed() > KICK_TIME)) || isProcessed) { if ((!member.isOnline() && (currentTime - member.getLastPlayed() > KICK_TIME)) || isProcessed) {

View File

@ -4,6 +4,8 @@ import com.gmail.nossr50.datatypes.player.BukkitMMOPlayer;
import com.gmail.nossr50.datatypes.player.PlayerProfile; import com.gmail.nossr50.datatypes.player.PlayerProfile;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.runnables.commands.ScoreboardKeepTask; import com.gmail.nossr50.runnables.commands.ScoreboardKeepTask;
import org.bukkit.Bukkit;
import org.bukkit.Server; import org.bukkit.Server;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.scheduler.BukkitRunnable;
@ -42,7 +44,9 @@ public class PlayerProfileLoadingTask extends BukkitRunnable {
PlayerProfile profile = pluginRef.getDatabaseManager().loadPlayerProfile(player.getName(), player.getUniqueId(), true); PlayerProfile profile = pluginRef.getDatabaseManager().loadPlayerProfile(player.getName(), player.getUniqueId(), true);
// If successful, schedule the apply // If successful, schedule the apply
if (profile.isLoaded()) { if (profile.isLoaded()) {
new ApplySuccessfulProfile(new BukkitMMOPlayer(player, profile, pluginRef)).runTask(pluginRef); pluginRef.getPlatformProvider().getScheduler().getTaskBuilder()
.setTask(new ApplySuccessfulProfile(new BukkitMMOPlayer(player, profile, pluginRef)))
.schedule();
pluginRef.getEventManager().callPlayerProfileLoadEvent(player, profile); pluginRef.getEventManager().callPlayerProfileLoadEvent(player, profile);
return; return;
} }
@ -54,7 +58,7 @@ public class PlayerProfileLoadingTask extends BukkitRunnable {
player.getName(), String.valueOf(attempt))); player.getName(), String.valueOf(attempt)));
//Notify the admins //Notify the admins
pluginRef.getServer().broadcast(pluginRef.getLocaleManager().getString("Profile.Loading.FailureNotice", player.getName()), Server.BROADCAST_CHANNEL_ADMINISTRATIVE); Bukkit.getServer().broadcast(pluginRef.getLocaleManager().getString("Profile.Loading.FailureNotice", player.getName()), Server.BROADCAST_CHANNEL_ADMINISTRATIVE);
//Notify the player //Notify the player
player.sendMessage(pluginRef.getLocaleManager().getString("Profile.Loading.FailurePlayer", String.valueOf(attempt)).split("\n")); player.sendMessage(pluginRef.getLocaleManager().getString("Profile.Loading.FailurePlayer", String.valueOf(attempt)).split("\n"));
@ -62,8 +66,11 @@ public class PlayerProfileLoadingTask extends BukkitRunnable {
// Increment attempt counter and try // Increment attempt counter and try
attempt++; attempt++;
pluginRef.getPlatformProvider().getScheduler().getTaskBuilder()
new PlayerProfileLoadingTask(pluginRef, player, attempt).runTaskLaterAsynchronously(pluginRef, (100 + (attempt * 100))); .setAsync(true)
.setDelay((long) (100 + (attempt * 100)))
.setTask(new PlayerProfileLoadingTask(pluginRef, player, attempt))
.schedule();
} }
private class ApplySuccessfulProfile extends BukkitRunnable { private class ApplySuccessfulProfile extends BukkitRunnable {
@ -91,7 +98,10 @@ public class PlayerProfileLoadingTask extends BukkitRunnable {
if (pluginRef.getScoreboardSettings().getShowStatsAfterLogin()) { if (pluginRef.getScoreboardSettings().getShowStatsAfterLogin()) {
pluginRef.getScoreboardManager().enablePlayerStatsScoreboard(player); pluginRef.getScoreboardManager().enablePlayerStatsScoreboard(player);
new ScoreboardKeepTask(pluginRef, player).runTaskLater(pluginRef, pluginRef.getMiscTools().TICK_CONVERSION_FACTOR); pluginRef.getPlatformProvider().getScheduler().getTaskBuilder()
.setDelay(pluginRef.getMiscTools().TICK_CONVERSION_FACTOR)
.setTask(new ScoreboardKeepTask(pluginRef, player))
.schedule();
} }
} }

View File

@ -56,9 +56,11 @@ public class AbilityDisableTask extends BukkitRunnable {
pluginRef.getSkillTools().sendSkillMessage(player, NotificationType.SUPER_ABILITY_ALERT_OTHERS, pluginRef.getSkillTools().sendSkillMessage(player, NotificationType.SUPER_ABILITY_ALERT_OTHERS,
pluginRef.getSkillTools().getSuperAbilityOtherPlayerDeactivationLocaleKey(superAbilityType)); pluginRef.getSkillTools().getSuperAbilityOtherPlayerDeactivationLocaleKey(superAbilityType));
new AbilityCooldownTask(pluginRef, mcMMOPlayer, superAbilityType).runTaskLater(pluginRef, pluginRef.getPlatformProvider().getScheduler().getTaskBuilder()
pluginRef.getPerkUtils().handleCooldownPerks(player, .setDelay(pluginRef.getPerkUtils().handleCooldownPerks(player, (pluginRef.getSkillTools().getSuperAbilityCooldown(superAbilityType) * pluginRef.getMiscTools().TICK_CONVERSION_FACTOR)))
pluginRef.getSkillTools().getSuperAbilityCooldown(superAbilityType) * pluginRef.getMiscTools().TICK_CONVERSION_FACTOR)); .setTask(new AbilityCooldownTask(pluginRef, mcMMOPlayer, superAbilityType))
.schedule();
} }
private void resendChunkRadiusAt(Player player) { private void resendChunkRadiusAt(Player player) {

View File

@ -136,7 +136,7 @@ public class BleedTimerTask extends BukkitRunnable {
// debugMessage+="Rank4Bonus=["+String.valueOf(containerEntry.getValue().bleedRank >= 3)+"], "; // debugMessage+="Rank4Bonus=["+String.valueOf(containerEntry.getValue().bleedRank >= 3)+"], ";
pluginRef.getMobHealthBarManager().handleMobHealthbars(target, damage, pluginRef); //Update health bars pluginRef.getPlatformProvider().getHealthBarManager().handleMobHealthbars(pluginRef.getPlatformProvider().getEntity(target.getUniqueId()), damage); //Update health bars
} }
// debugMessage+="FullArmor=["+String.valueOf(armorCount > 3)+"], "; // debugMessage+="FullArmor=["+String.valueOf(armorCount > 3)+"], ";

View File

@ -12,6 +12,7 @@ import org.bukkit.block.data.Ageable;
import org.bukkit.block.data.BlockData; import org.bukkit.block.data.BlockData;
import org.bukkit.block.data.Directional; import org.bukkit.block.data.Directional;
import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.plugin.Plugin;
import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.scheduler.BukkitRunnable;
public class DelayedCropReplant extends BukkitRunnable { public class DelayedCropReplant extends BukkitRunnable {
@ -52,7 +53,10 @@ public class DelayedCropReplant extends BukkitRunnable {
BlockState currentState = cropBlock.getState(); BlockState currentState = cropBlock.getState();
//Remove the metadata marking the block as recently replanted //Remove the metadata marking the block as recently replanted
new markPlantAsOld(blockBreakEvent.getBlock().getLocation()).runTaskLater(pluginRef, 10); pluginRef.getPlatformProvider().getScheduler().getTaskBuilder()
.setDelay(10L)
.setTask(new markPlantAsOld(blockBreakEvent.getBlock().getLocation()))
.schedule();
if(blockBreakEvent.isCancelled()) { if(blockBreakEvent.isCancelled()) {
wasImmaturePlant = true; wasImmaturePlant = true;
@ -112,8 +116,8 @@ public class DelayedCropReplant extends BukkitRunnable {
public void run() { public void run() {
Block cropBlock = cropLoc.getBlock(); Block cropBlock = cropLoc.getBlock();
if(cropBlock.getMetadata(MetadataConstants.REPLANT_META_KEY).size() > 0) { if(cropBlock.getMetadata(MetadataConstants.REPLANT_META_KEY.getKey()).size() > 0) {
cropBlock.setMetadata(MetadataConstants.REPLANT_META_KEY, new RecentlyReplantedCropMeta(pluginRef, false)); cropBlock.setMetadata(MetadataConstants.REPLANT_META_KEY.getKey(), new RecentlyReplantedCropMeta((Plugin) pluginRef.getPlatformProvider(), false));
pluginRef.getParticleEffectUtils().playFluxEffect(cropLocation); pluginRef.getParticleEffectUtils().playFluxEffect(cropLocation);
} }
} }

View File

@ -16,6 +16,7 @@ import org.bukkit.entity.Entity;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.metadata.FixedMetadataValue; import org.bukkit.metadata.FixedMetadataValue;
import org.bukkit.metadata.MetadataValue; import org.bukkit.metadata.MetadataValue;
import org.bukkit.plugin.Plugin;
public class AcrobaticsManager extends SkillManager { public class AcrobaticsManager extends SkillManager {
@ -95,18 +96,18 @@ public class AcrobaticsManager extends SkillManager {
if (pluginRef.getSkillTools().cooldownExpired(mcMMOPlayer.getRespawnATS(), pluginRef.getMiscTools().PLAYER_RESPAWN_COOLDOWN_SECONDS)) { if (pluginRef.getSkillTools().cooldownExpired(mcMMOPlayer.getRespawnATS(), pluginRef.getMiscTools().PLAYER_RESPAWN_COOLDOWN_SECONDS)) {
if(!(attacker instanceof Player)) { if(!(attacker instanceof Player)) {
//Check to see how many dodge XP rewards this mob has handed out //Check to see how many dodge XP rewards this mob has handed out
if(attacker.hasMetadata(MetadataConstants.DODGE_TRACKER) && pluginRef.getConfigManager().getConfigExploitPrevention().isPreventAcrobaticsAbuse()) { if(attacker.hasMetadata(MetadataConstants.DODGE_TRACKER.getKey()) && pluginRef.getConfigManager().getConfigExploitPrevention().isPreventAcrobaticsAbuse()) {
//If Dodge XP has been handed out 5 times then consider it being exploited //If Dodge XP has been handed out 5 times then consider it being exploited
MetadataValue metadataValue = attacker.getMetadata(MetadataConstants.DODGE_TRACKER).get(0); MetadataValue metadataValue = attacker.getMetadata(MetadataConstants.DODGE_TRACKER.getKey()).get(0);
int count = attacker.getMetadata(MetadataConstants.DODGE_TRACKER).get(0).asInt(); int count = attacker.getMetadata(MetadataConstants.DODGE_TRACKER.getKey()).get(0).asInt();
if(count <= 5) { if(count <= 5) {
applyXpGain((float) (damage * acrobaticsBehaviour.getDodgeXpModifier()), XPGainReason.PVE); applyXpGain((float) (damage * acrobaticsBehaviour.getDodgeXpModifier()), XPGainReason.PVE);
attacker.setMetadata(MetadataConstants.DODGE_TRACKER, new FixedMetadataValue(pluginRef, count + 1)); attacker.setMetadata(MetadataConstants.DODGE_TRACKER.getKey(), new FixedMetadataValue((Plugin) pluginRef.getPlatformProvider(), count + 1));
} }
} else { } else {
applyXpGain((float) (damage * acrobaticsBehaviour.getDodgeXpModifier()), XPGainReason.PVE); applyXpGain((float) (damage * acrobaticsBehaviour.getDodgeXpModifier()), XPGainReason.PVE);
attacker.setMetadata(MetadataConstants.DODGE_TRACKER, new FixedMetadataValue(pluginRef, 1)); attacker.setMetadata(MetadataConstants.DODGE_TRACKER.getKey(), new FixedMetadataValue((Plugin) pluginRef.getPlatformProvider(), 1));
} }
} }
} }

View File

@ -14,6 +14,7 @@ import org.bukkit.entity.Entity;
import org.bukkit.entity.LivingEntity; import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.entity.Projectile; import org.bukkit.entity.Projectile;
import org.bukkit.plugin.Plugin;
import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType; import org.bukkit.potion.PotionEffectType;
@ -57,10 +58,10 @@ public class ArcheryManager extends SkillManager {
*/ */
public double distanceXpBonusMultiplier(LivingEntity target, Entity damager) { public double distanceXpBonusMultiplier(LivingEntity target, Entity damager) {
//Hacky Fix - some plugins spawn arrows and assign them to players after the ProjectileLaunchEvent fires //Hacky Fix - some plugins spawn arrows and assign them to players after the ProjectileLaunchEvent fires
if(!damager.hasMetadata(MetadataConstants.ARROW_DISTANCE_METAKEY)) if(!damager.hasMetadata(MetadataConstants.ARROW_DISTANCE_METAKEY.getKey()))
return damager.getLocation().distance(target.getLocation()); return damager.getLocation().distance(target.getLocation());
Location firedLocation = (Location) damager.getMetadata(MetadataConstants.ARROW_DISTANCE_METAKEY).get(0).value(); Location firedLocation = (Location) damager.getMetadata(MetadataConstants.ARROW_DISTANCE_METAKEY.getKey()).get(0).value();
Location targetLocation = target.getLocation(); Location targetLocation = target.getLocation();
if (firedLocation.getWorld() != targetLocation.getWorld()) { if (firedLocation.getWorld() != targetLocation.getWorld()) {
@ -76,9 +77,9 @@ public class ArcheryManager extends SkillManager {
* @param target The {@link LivingEntity} damaged by the arrow * @param target The {@link LivingEntity} damaged by the arrow
*/ */
public void processArrowRetrievalActivation(LivingEntity target, Projectile projectile) { public void processArrowRetrievalActivation(LivingEntity target, Projectile projectile) {
if(projectile.hasMetadata(MetadataConstants.ARROW_TRACKER_METAKEY)) { if(projectile.hasMetadata(MetadataConstants.ARROW_TRACKER_METAKEY.getKey())) {
archeryBehaviour.incrementArrowCount(target); archeryBehaviour.incrementArrowCount(target);
projectile.removeMetadata(MetadataConstants.ARROW_TRACKER_METAKEY, pluginRef); //Only 1 entity per projectile projectile.removeMetadata(MetadataConstants.ARROW_TRACKER_METAKEY.getKey(), (Plugin) pluginRef.getPlatformProvider()); //Only 1 entity per projectile
} }
} }

View File

@ -76,10 +76,10 @@ public class FishingManager extends SkillManager {
} }
public void setFishHookReference(FishHook fishHook) { public void setFishHookReference(FishHook fishHook) {
if (fishHook.getMetadata(MetadataConstants.FISH_HOOK_REF_METAKEY).size() > 0) if (fishHook.getMetadata(MetadataConstants.FISH_HOOK_REF_METAKEY.getKey()).size() > 0)
return; return;
fishHook.setMetadata(MetadataConstants.FISH_HOOK_REF_METAKEY, MetadataConstants.metadataValue); fishHook.setMetadata(MetadataConstants.FISH_HOOK_REF_METAKEY.getKey(), MetadataConstants.metadataValue);
fishHookSpawnTimestamp = System.currentTimeMillis(); fishHookSpawnTimestamp = System.currentTimeMillis();
fishingRodCastTimestamp = System.currentTimeMillis(); fishingRodCastTimestamp = System.currentTimeMillis();
} }

View File

@ -29,6 +29,7 @@ import org.bukkit.entity.Player;
import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.PlayerInventory; import org.bukkit.inventory.PlayerInventory;
import org.bukkit.plugin.Plugin;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
@ -139,10 +140,10 @@ public class HerbalismManager extends SkillManager {
if(blockBreakEvent.getBlock().getBlockData() instanceof Ageable) { if(blockBreakEvent.getBlock().getBlockData() instanceof Ageable) {
Ageable ageableCrop = (Ageable) blockBreakEvent.getBlock().getBlockData(); Ageable ageableCrop = (Ageable) blockBreakEvent.getBlock().getBlockData();
if(blockBreakEvent.getBlock().getMetadata(MetadataConstants.REPLANT_META_KEY).size() >= 1) { if(blockBreakEvent.getBlock().getMetadata(MetadataConstants.REPLANT_META_KEY.getKey()).size() >= 1) {
if(blockBreakEvent.getBlock().getMetadata(MetadataConstants.REPLANT_META_KEY).get(0).asBoolean()) { if(blockBreakEvent.getBlock().getMetadata(MetadataConstants.REPLANT_META_KEY.getKey()).get(0).asBoolean()) {
if(isAgeableMature(ageableCrop)) { if(isAgeableMature(ageableCrop)) {
blockBreakEvent.getBlock().removeMetadata(MetadataConstants.REPLANT_META_KEY, pluginRef); blockBreakEvent.getBlock().removeMetadata(MetadataConstants.REPLANT_META_KEY.getKey(), (Plugin) pluginRef.getPlatformProvider());
} else { } else {
//Crop is recently replanted to back out of destroying it //Crop is recently replanted to back out of destroying it
blockBreakEvent.setCancelled(true); blockBreakEvent.setCancelled(true);
@ -239,10 +240,10 @@ public class HerbalismManager extends SkillManager {
if(delayedChorusBlocks.size() > 0) { if(delayedChorusBlocks.size() > 0) {
//Check XP for chorus blocks //Check XP for chorus blocks
DelayedHerbalismXPCheckTask delayedHerbalismXPCheckTask = new DelayedHerbalismXPCheckTask(mcMMOPlayer, delayedChorusBlocks); pluginRef.getPlatformProvider().getScheduler().getTaskBuilder()
.setDelay(20L) //Large delay because the tree takes a while to break
//Large delay because the tree takes a while to break .setTask(new DelayedHerbalismXPCheckTask(mcMMOPlayer, delayedChorusBlocks))
delayedHerbalismXPCheckTask.runTaskLater(pluginRef, 20); //Calculate Chorus XP + Bonus Drops 1 tick later .schedule();
} }
} }
@ -416,8 +417,8 @@ public class HerbalismManager extends SkillManager {
BlockState brokenBlockNewState = blockSnapshot.getBlockRef().getState(); BlockState brokenBlockNewState = blockSnapshot.getBlockRef().getState();
//Remove metadata from the snapshot of blocks //Remove metadata from the snapshot of blocks
if(brokenBlockNewState.hasMetadata(MetadataConstants.BONUS_DROPS_METAKEY)) { if(brokenBlockNewState.hasMetadata(MetadataConstants.BONUS_DROPS_METAKEY.getKey())) {
brokenBlockNewState.removeMetadata(MetadataConstants.BONUS_DROPS_METAKEY, pluginRef); brokenBlockNewState.removeMetadata(MetadataConstants.BONUS_DROPS_METAKEY.getKey(), (Plugin) pluginRef.getPlatformProvider());
} }
//If the block is not AIR that means it wasn't broken //If the block is not AIR that means it wasn't broken
@ -676,8 +677,11 @@ public class HerbalismManager extends SkillManager {
*/ */
private void startReplantTask(int desiredCropAge, BlockBreakEvent blockBreakEvent, BlockState cropState, boolean isImmature) { private void startReplantTask(int desiredCropAge, BlockBreakEvent blockBreakEvent, BlockState cropState, boolean isImmature) {
//Mark the plant as recently replanted to avoid accidental breakage //Mark the plant as recently replanted to avoid accidental breakage
new DelayedCropReplant(pluginRef, blockBreakEvent, cropState, desiredCropAge, isImmature).runTaskLater(pluginRef, 20 * 2); pluginRef.getPlatformProvider().getScheduler().getTaskBuilder()
blockBreakEvent.getBlock().setMetadata(MetadataConstants.REPLANT_META_KEY, new RecentlyReplantedCropMeta(pluginRef, true)); .setDelay(20 * 2L)
.setTask(new DelayedCropReplant(pluginRef, blockBreakEvent, cropState, desiredCropAge, isImmature))
.schedule();
blockBreakEvent.getBlock().setMetadata(MetadataConstants.REPLANT_META_KEY.getKey(), new RecentlyReplantedCropMeta((Plugin) pluginRef.getPlatformProvider(), true));
} }
/** /**

View File

@ -124,15 +124,16 @@ public class MiningManager extends SkillManager {
pluginRef.getNotificationManager().sendPlayerInformation(player, NotificationType.SUPER_ABILITY, "miningBehaviour.Blast.Boom"); pluginRef.getNotificationManager().sendPlayerInformation(player, NotificationType.SUPER_ABILITY, "miningBehaviour.Blast.Boom");
//player.sendMessage(pluginRef.getLocaleManager().getString("miningBehaviour.Blast.Boom")); //player.sendMessage(pluginRef.getLocaleManager().getString("miningBehaviour.Blast.Boom"));
tnt.setMetadata(MetadataConstants.TNT_TRACKING_METAKEY, mcMMOPlayer.getPlayerMetadata()); tnt.setMetadata(MetadataConstants.TNT_TRACKING_METAKEY.getKey(), mcMMOPlayer.getPlayerMetadata());
tnt.setFuseTicks(0); tnt.setFuseTicks(0);
targetBlock.setType(Material.AIR); targetBlock.setType(Material.AIR);
mcMMOPlayer.setAbilityDATS(SuperAbilityType.BLAST_MINING, System.currentTimeMillis()); mcMMOPlayer.setAbilityDATS(SuperAbilityType.BLAST_MINING, System.currentTimeMillis());
mcMMOPlayer.setAbilityInformed(SuperAbilityType.BLAST_MINING, false); mcMMOPlayer.setAbilityInformed(SuperAbilityType.BLAST_MINING, false);
new AbilityCooldownTask(pluginRef, mcMMOPlayer, SuperAbilityType.BLAST_MINING) pluginRef.getPlatformProvider().getScheduler().getTaskBuilder()
.runTaskLater(pluginRef, pluginRef.getSkillTools().getSuperAbilityCooldown(SuperAbilityType.BLAST_MINING) .setDelay( pluginRef.getSkillTools().getSuperAbilityCooldown(SuperAbilityType.BLAST_MINING) * pluginRef.getMiscTools().TICK_CONVERSION_FACTOR)
* pluginRef.getMiscTools().TICK_CONVERSION_FACTOR); .setTask(new AbilityCooldownTask(pluginRef, mcMMOPlayer, SuperAbilityType.BLAST_MINING))
.schedule();
} }
/** /**

View File

@ -417,10 +417,10 @@ public class TamingManager extends SkillManager {
private void applyMetaDataToCOTWEntity(LivingEntity callOfWildEntity) { private void applyMetaDataToCOTWEntity(LivingEntity callOfWildEntity) {
//This is used to prevent XP gains for damaging this entity //This is used to prevent XP gains for damaging this entity
callOfWildEntity.setMetadata(MetadataConstants.UNNATURAL_MOB_METAKEY, MetadataConstants.metadataValue); callOfWildEntity.setMetadata(MetadataConstants.UNNATURAL_MOB_METAKEY.getKey(), MetadataConstants.metadataValue);
//This helps identify the entity as being summoned by COTW //This helps identify the entity as being summoned by COTW
callOfWildEntity.setMetadata(MetadataConstants.COTW_TEMPORARY_SUMMON, MetadataConstants.metadataValue); callOfWildEntity.setMetadata(MetadataConstants.COTW_TEMPORARY_SUMMON.getKey(), MetadataConstants.metadataValue);
} }
/** /**

View File

@ -2,6 +2,8 @@ package com.gmail.nossr50.skills.taming;
import com.gmail.nossr50.datatypes.skills.subskills.taming.CallOfTheWildType; import com.gmail.nossr50.datatypes.skills.subskills.taming.CallOfTheWildType;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.mcmmo.api.platform.scheduler.Task;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.Sound; import org.bukkit.Sound;
import org.bukkit.entity.LivingEntity; import org.bukkit.entity.LivingEntity;
@ -9,12 +11,12 @@ import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.scheduler.BukkitRunnable;
import java.util.UUID; import java.util.UUID;
import java.util.function.Consumer;
public class TrackedTamingEntity extends BukkitRunnable { public class TrackedTamingEntity implements Consumer<Task> {
private LivingEntity livingEntity; private LivingEntity livingEntity;
private final CallOfTheWildType callOfTheWildType; private final CallOfTheWildType callOfTheWildType;
private UUID id; private UUID id;
private int length;
private final TamingManager tamingManagerRef; private final TamingManager tamingManagerRef;
private final mcMMO pluginRef; private final mcMMO pluginRef;
@ -28,13 +30,15 @@ public class TrackedTamingEntity extends BukkitRunnable {
int tamingCOTWLength = pluginRef.getConfigManager().getConfigTaming().getSubSkills().getCallOfTheWild().getCOTWSummon(callOfTheWildType).getSummonLifespan(); int tamingCOTWLength = pluginRef.getConfigManager().getConfigTaming().getSubSkills().getCallOfTheWild().getCOTWSummon(callOfTheWildType).getSummonLifespan();
if (tamingCOTWLength > 0) { if (tamingCOTWLength > 0) {
this.length = tamingCOTWLength * pluginRef.getMiscTools().TICK_CONVERSION_FACTOR; pluginRef.getPlatformProvider().getScheduler().getTaskBuilder()
this.runTaskLater(pluginRef, length); .setDelay(tamingCOTWLength * pluginRef.getMiscTools().TICK_CONVERSION_FACTOR)
.setTask(this)
.schedule();
} }
} }
@Override @Override
public void run() { public void accept(Task task) {
if (livingEntity.isValid()) { if (livingEntity.isValid()) {
Location location = livingEntity.getLocation(); Location location = livingEntity.getLocation();
location.getWorld().playSound(location, Sound.BLOCK_FIRE_EXTINGUISH, 0.8F, 0.8F); location.getWorld().playSound(location, Sound.BLOCK_FIRE_EXTINGUISH, 0.8F, 0.8F);
@ -48,7 +52,7 @@ public class TrackedTamingEntity extends BukkitRunnable {
livingEntity.remove(); livingEntity.remove();
} }
this.cancel(); task.cancel();
} }
public CallOfTheWildType getCallOfTheWildType() { public CallOfTheWildType getCallOfTheWildType() {

View File

@ -110,7 +110,7 @@ public class UnarmedManager extends SkillManager {
Item item = pluginRef.getMiscTools().dropItem(defender.getLocation(), defender.getInventory().getItemInMainHand()); Item item = pluginRef.getMiscTools().dropItem(defender.getLocation(), defender.getInventory().getItemInMainHand());
if (item != null && pluginRef.getConfigManager().getConfigUnarmed().doesDisarmPreventTheft()) { if (item != null && pluginRef.getConfigManager().getConfigUnarmed().doesDisarmPreventTheft()) {
item.setMetadata(MetadataConstants.DISARMED_ITEM_METAKEY, pluginRef.getUserManager().getPlayer(defender).getPlayerMetadata()); item.setMetadata(MetadataConstants.DISARMED_ITEM_METAKEY.getKey(), pluginRef.getUserManager().getPlayer(defender).getPlayerMetadata());
} }
defender.getInventory().setItemInMainHand(new ItemStack(Material.AIR)); defender.getInventory().setItemInMainHand(new ItemStack(Material.AIR));

View File

@ -30,9 +30,9 @@ public final class BlockTools {
*/ */
public void markDropsAsBonus(BlockState blockState, boolean triple) { public void markDropsAsBonus(BlockState blockState, boolean triple) {
if (triple) if (triple)
blockState.setMetadata(MetadataConstants.BONUS_DROPS_METAKEY, new BonusDropMeta(2, pluginRef)); blockState.setMetadata(MetadataConstants.BONUS_DROPS_METAKEY.getKey(), new BonusDropMeta(2, pluginRef));
else else
blockState.setMetadata(MetadataConstants.BONUS_DROPS_METAKEY, new BonusDropMeta(1, pluginRef)); blockState.setMetadata(MetadataConstants.BONUS_DROPS_METAKEY.getKey(), new BonusDropMeta(1, pluginRef));
} }
/** /**
@ -42,7 +42,7 @@ public final class BlockTools {
* @param amount amount of extra items to drop * @param amount amount of extra items to drop
*/ */
public void markDropsAsBonus(BlockState blockState, int amount) { public void markDropsAsBonus(BlockState blockState, int amount) {
blockState.setMetadata(MetadataConstants.BONUS_DROPS_METAKEY, new BonusDropMeta(amount, pluginRef)); blockState.setMetadata(MetadataConstants.BONUS_DROPS_METAKEY.getKey(), new BonusDropMeta(amount, pluginRef));
} }
/** /**

View File

@ -94,7 +94,10 @@ public final class ChimaeraWing {
if (warmup > 0) { if (warmup > 0) {
pluginRef.getNotificationManager().sendPlayerInformation(player, NotificationType.ITEM_MESSAGE, "Teleport.Commencing", String.valueOf(warmup)); pluginRef.getNotificationManager().sendPlayerInformation(player, NotificationType.ITEM_MESSAGE, "Teleport.Commencing", String.valueOf(warmup));
new ChimaeraWingWarmup(pluginRef, mcMMOPlayer).runTaskLater(pluginRef, 20 * warmup); pluginRef.getPlatformProvider().getScheduler().getTaskBuilder()
.setDelay(20 * warmup)
.setTask(new ChimaeraWingWarmup(pluginRef, mcMMOPlayer))
.schedule();
} else { } else {
chimaeraExecuteTeleport(); chimaeraExecuteTeleport();
} }

View File

@ -165,14 +165,14 @@ public class EventManager {
public McMMOPlayerAbilityActivateEvent callPlayerAbilityActivateEvent(Player player, PrimarySkillType primarySkillType, SuperAbilityType superAbilityType) { public McMMOPlayerAbilityActivateEvent callPlayerAbilityActivateEvent(Player player, PrimarySkillType primarySkillType, SuperAbilityType superAbilityType) {
McMMOPlayerAbilityActivateEvent event = new McMMOPlayerAbilityActivateEvent(player, primarySkillType, superAbilityType); McMMOPlayerAbilityActivateEvent event = new McMMOPlayerAbilityActivateEvent(player, primarySkillType, superAbilityType);
pluginRef.getServer().getPluginManager().callEvent(event); Bukkit.getServer().getPluginManager().callEvent(event);
return event; return event;
} }
public McMMOPlayerProfileLoadEvent callPlayerProfileLoadEvent(Player player, PlayerProfile profile){ public McMMOPlayerProfileLoadEvent callPlayerProfileLoadEvent(Player player, PlayerProfile profile){
McMMOPlayerProfileLoadEvent event = new McMMOPlayerProfileLoadEvent(player, profile); McMMOPlayerProfileLoadEvent event = new McMMOPlayerProfileLoadEvent(player, profile);
pluginRef.getServer().getPluginManager().callEvent(event); Bukkit.getServer().getPluginManager().callEvent(event);
return event; return event;
} }
@ -187,7 +187,7 @@ public class EventManager {
@Deprecated @Deprecated
public SubSkillEvent callSubSkillEvent(Player player, SubSkillType subSkillType, PrimarySkillType primarySkillType) { public SubSkillEvent callSubSkillEvent(Player player, SubSkillType subSkillType, PrimarySkillType primarySkillType) {
SubSkillEvent event = new SubSkillEvent(player, subSkillType, primarySkillType); SubSkillEvent event = new SubSkillEvent(player, subSkillType, primarySkillType);
pluginRef.getServer().getPluginManager().callEvent(event); Bukkit.getServer().getPluginManager().callEvent(event);
return event; return event;
} }
@ -201,20 +201,20 @@ public class EventManager {
*/ */
public SubSkillEvent callSubSkillEvent(Player player, AbstractSubSkill abstractSubSkill) { public SubSkillEvent callSubSkillEvent(Player player, AbstractSubSkill abstractSubSkill) {
SubSkillEvent event = new SubSkillEvent(player, abstractSubSkill); SubSkillEvent event = new SubSkillEvent(player, abstractSubSkill);
pluginRef.getServer().getPluginManager().callEvent(event); Bukkit.getServer().getPluginManager().callEvent(event);
return event; return event;
} }
public void callFakeArmSwingEvent(Player player) { public void callFakeArmSwingEvent(Player player) {
FakePlayerAnimationEvent event = new FakePlayerAnimationEvent(player); FakePlayerAnimationEvent event = new FakePlayerAnimationEvent(player);
pluginRef.getServer().getPluginManager().callEvent(event); Bukkit.getServer().getPluginManager().callEvent(event);
} }
public boolean tryLevelChangeEvent(Player player, PrimarySkillType skill, int levelsChanged, double xpRemoved, boolean isLevelUp, XPGainReason xpGainReason) { public boolean tryLevelChangeEvent(Player player, PrimarySkillType skill, int levelsChanged, double xpRemoved, boolean isLevelUp, XPGainReason xpGainReason) {
McMMOPlayerLevelChangeEvent event = isLevelUp ? new McMMOPlayerLevelUpEvent(player, skill, levelsChanged, xpGainReason) : new McMMOPlayerLevelDownEvent(player, skill, levelsChanged, xpGainReason); McMMOPlayerLevelChangeEvent event = isLevelUp ? new McMMOPlayerLevelUpEvent(player, skill, levelsChanged, xpGainReason) : new McMMOPlayerLevelDownEvent(player, skill, levelsChanged, xpGainReason);
pluginRef.getServer().getPluginManager().callEvent(event); Bukkit.getServer().getPluginManager().callEvent(event);
boolean isCancelled = event.isCancelled(); boolean isCancelled = event.isCancelled();
@ -230,7 +230,7 @@ public class EventManager {
public boolean tryLevelEditEvent(Player player, PrimarySkillType skill, int levelsChanged, double xpRemoved, boolean isLevelUp, XPGainReason xpGainReason, int oldLevel) { public boolean tryLevelEditEvent(Player player, PrimarySkillType skill, int levelsChanged, double xpRemoved, boolean isLevelUp, XPGainReason xpGainReason, int oldLevel) {
McMMOPlayerLevelChangeEvent event = isLevelUp ? new McMMOPlayerLevelUpEvent(player, skill, levelsChanged - oldLevel, xpGainReason) : new McMMOPlayerLevelDownEvent(player, skill, levelsChanged, xpGainReason); McMMOPlayerLevelChangeEvent event = isLevelUp ? new McMMOPlayerLevelUpEvent(player, skill, levelsChanged - oldLevel, xpGainReason) : new McMMOPlayerLevelDownEvent(player, skill, levelsChanged, xpGainReason);
pluginRef.getServer().getPluginManager().callEvent(event); Bukkit.getServer().getPluginManager().callEvent(event);
boolean isCancelled = event.isCancelled(); boolean isCancelled = event.isCancelled();
@ -253,7 +253,7 @@ public class EventManager {
* @return true if the event wasn't cancelled, false otherwise * @return true if the event wasn't cancelled, false otherwise
*/ */
public boolean simulateBlockBreak(Block block, Player player, boolean shouldArmSwing) { public boolean simulateBlockBreak(Block block, Player player, boolean shouldArmSwing) {
PluginManager pluginManager = pluginRef.getServer().getPluginManager(); PluginManager pluginManager = Bukkit.getServer().getPluginManager();
// Support for NoCheat // Support for NoCheat
if (shouldArmSwing) { if (shouldArmSwing) {
@ -276,7 +276,7 @@ public class EventManager {
return; return;
McMMOPartyTeleportEvent event = new McMMOPartyTeleportEvent(teleportingPlayer, targetPlayer, mcMMOPlayer.getParty().getName()); McMMOPartyTeleportEvent event = new McMMOPartyTeleportEvent(teleportingPlayer, targetPlayer, mcMMOPlayer.getParty().getName());
pluginRef.getServer().getPluginManager().callEvent(event); Bukkit.getServer().getPluginManager().callEvent(event);
if (event.isCancelled()) { if (event.isCancelled()) {
return; return;
@ -292,7 +292,7 @@ public class EventManager {
public boolean handlePartyXpGainEvent(Party party, double xpGained) { public boolean handlePartyXpGainEvent(Party party, double xpGained) {
McMMOPartyXpGainEvent event = new McMMOPartyXpGainEvent(party, xpGained); McMMOPartyXpGainEvent event = new McMMOPartyXpGainEvent(party, xpGained);
pluginRef.getServer().getPluginManager().callEvent(event); Bukkit.getServer().getPluginManager().callEvent(event);
boolean isCancelled = event.isCancelled(); boolean isCancelled = event.isCancelled();
@ -305,7 +305,7 @@ public class EventManager {
public boolean handlePartyLevelChangeEvent(Party party, int levelsChanged, double xpRemoved) { public boolean handlePartyLevelChangeEvent(Party party, int levelsChanged, double xpRemoved) {
McMMOPartyLevelUpEvent event = new McMMOPartyLevelUpEvent(party, levelsChanged); McMMOPartyLevelUpEvent event = new McMMOPartyLevelUpEvent(party, levelsChanged);
pluginRef.getServer().getPluginManager().callEvent(event); Bukkit.getServer().getPluginManager().callEvent(event);
boolean isCancelled = event.isCancelled(); boolean isCancelled = event.isCancelled();
@ -320,7 +320,7 @@ public class EventManager {
public boolean handleXpGainEvent(Player player, PrimarySkillType skill, double xpGained, XPGainReason xpGainReason) { public boolean handleXpGainEvent(Player player, PrimarySkillType skill, double xpGained, XPGainReason xpGainReason) {
McMMOPlayerXpGainEvent event = new McMMOPlayerXpGainEvent(player, skill, getSkillLevel(player, skill), xpGained, xpGainReason); McMMOPlayerXpGainEvent event = new McMMOPlayerXpGainEvent(player, skill, getSkillLevel(player, skill), xpGained, xpGainReason);
pluginRef.getServer().getPluginManager().callEvent(event); Bukkit.getServer().getPluginManager().callEvent(event);
boolean isCancelled = event.isCancelled(); boolean isCancelled = event.isCancelled();
@ -337,7 +337,7 @@ public class EventManager {
return true; return true;
McMMOPlayerStatLossEvent event = new McMMOPlayerStatLossEvent(player, levelChanged, experienceChanged); McMMOPlayerStatLossEvent event = new McMMOPlayerStatLossEvent(player, levelChanged, experienceChanged);
pluginRef.getServer().getPluginManager().callEvent(event); Bukkit.getServer().getPluginManager().callEvent(event);
boolean isCancelled = event.isCancelled(); boolean isCancelled = event.isCancelled();
@ -369,8 +369,8 @@ public class EventManager {
public boolean handleVampirismEvent(Player killer, Player victim, HashMap<String, Integer> levelChanged, HashMap<String, Double> experienceChanged) { public boolean handleVampirismEvent(Player killer, Player victim, HashMap<String, Integer> levelChanged, HashMap<String, Double> experienceChanged) {
McMMOPlayerVampirismEvent eventKiller = new McMMOPlayerVampirismEvent(killer, false, levelChanged, experienceChanged); McMMOPlayerVampirismEvent eventKiller = new McMMOPlayerVampirismEvent(killer, false, levelChanged, experienceChanged);
McMMOPlayerVampirismEvent eventVictim = new McMMOPlayerVampirismEvent(victim, true, levelChanged, experienceChanged); McMMOPlayerVampirismEvent eventVictim = new McMMOPlayerVampirismEvent(victim, true, levelChanged, experienceChanged);
pluginRef.getServer().getPluginManager().callEvent(eventKiller); Bukkit.getServer().getPluginManager().callEvent(eventKiller);
pluginRef.getServer().getPluginManager().callEvent(eventVictim); Bukkit.getServer().getPluginManager().callEvent(eventVictim);
boolean isCancelled = eventKiller.isCancelled() || eventVictim.isCancelled(); boolean isCancelled = eventKiller.isCancelled() || eventVictim.isCancelled();
@ -418,47 +418,47 @@ public class EventManager {
public void callAbilityDeactivateEvent(Player player, SuperAbilityType superAbilityType) { public void callAbilityDeactivateEvent(Player player, SuperAbilityType superAbilityType) {
McMMOPlayerAbilityDeactivateEvent event = new McMMOPlayerAbilityDeactivateEvent(player, pluginRef.getSkillTools().getPrimarySkillBySuperAbility(superAbilityType), superAbilityType); McMMOPlayerAbilityDeactivateEvent event = new McMMOPlayerAbilityDeactivateEvent(player, pluginRef.getSkillTools().getPrimarySkillBySuperAbility(superAbilityType), superAbilityType);
pluginRef.getServer().getPluginManager().callEvent(event); Bukkit.getServer().getPluginManager().callEvent(event);
} }
public McMMOPlayerFishingTreasureEvent callFishingTreasureEvent(Player player, ItemStack treasureDrop, int treasureXp, Map<Enchantment, Integer> enchants) { public McMMOPlayerFishingTreasureEvent callFishingTreasureEvent(Player player, ItemStack treasureDrop, int treasureXp, Map<Enchantment, Integer> enchants) {
McMMOPlayerFishingTreasureEvent event = enchants.isEmpty() ? new McMMOPlayerFishingTreasureEvent(player, treasureDrop, treasureXp) : new McMMOPlayerMagicHunterEvent(player, treasureDrop, treasureXp, enchants); McMMOPlayerFishingTreasureEvent event = enchants.isEmpty() ? new McMMOPlayerFishingTreasureEvent(player, treasureDrop, treasureXp) : new McMMOPlayerMagicHunterEvent(player, treasureDrop, treasureXp, enchants);
pluginRef.getServer().getPluginManager().callEvent(event); Bukkit.getServer().getPluginManager().callEvent(event);
return event; return event;
} }
public void callFakeFishEvent(Player player, FishHook hook) { public void callFakeFishEvent(Player player, FishHook hook) {
FakePlayerFishEvent event = new FakePlayerFishEvent(player, null, hook, PlayerFishEvent.State.FISHING); FakePlayerFishEvent event = new FakePlayerFishEvent(player, null, hook, PlayerFishEvent.State.FISHING);
pluginRef.getServer().getPluginManager().callEvent(event); Bukkit.getServer().getPluginManager().callEvent(event);
} }
public McMMOPlayerRepairCheckEvent callRepairCheckEvent(Player player, short durability, ItemStack repairMaterial, ItemStack repairedObject) { public McMMOPlayerRepairCheckEvent callRepairCheckEvent(Player player, short durability, ItemStack repairMaterial, ItemStack repairedObject) {
McMMOPlayerRepairCheckEvent event = new McMMOPlayerRepairCheckEvent(player, durability, repairMaterial, repairedObject); McMMOPlayerRepairCheckEvent event = new McMMOPlayerRepairCheckEvent(player, durability, repairMaterial, repairedObject);
pluginRef.getServer().getPluginManager().callEvent(event); Bukkit.getServer().getPluginManager().callEvent(event);
return event; return event;
} }
public McMMOPlayerPreDeathPenaltyEvent callPreDeathPenaltyEvent(Player player) { public McMMOPlayerPreDeathPenaltyEvent callPreDeathPenaltyEvent(Player player) {
McMMOPlayerPreDeathPenaltyEvent event = new McMMOPlayerPreDeathPenaltyEvent(player); McMMOPlayerPreDeathPenaltyEvent event = new McMMOPlayerPreDeathPenaltyEvent(player);
pluginRef.getServer().getPluginManager().callEvent(event); Bukkit.getServer().getPluginManager().callEvent(event);
return event; return event;
} }
public McMMOPlayerDisarmEvent callDisarmEvent(Player defender) { public McMMOPlayerDisarmEvent callDisarmEvent(Player defender) {
McMMOPlayerDisarmEvent event = new McMMOPlayerDisarmEvent(defender); McMMOPlayerDisarmEvent event = new McMMOPlayerDisarmEvent(defender);
pluginRef.getServer().getPluginManager().callEvent(event); Bukkit.getServer().getPluginManager().callEvent(event);
return event; return event;
} }
public McMMOPlayerSalvageCheckEvent callSalvageCheckEvent(Player player, ItemStack salvageMaterial, ItemStack salvageResults, ItemStack enchantedBook) { public McMMOPlayerSalvageCheckEvent callSalvageCheckEvent(Player player, ItemStack salvageMaterial, ItemStack salvageResults, ItemStack enchantedBook) {
McMMOPlayerSalvageCheckEvent event = new McMMOPlayerSalvageCheckEvent(player, salvageMaterial, salvageResults, enchantedBook); McMMOPlayerSalvageCheckEvent event = new McMMOPlayerSalvageCheckEvent(player, salvageMaterial, salvageResults, enchantedBook);
pluginRef.getServer().getPluginManager().callEvent(event); Bukkit.getServer().getPluginManager().callEvent(event);
return event; return event;
} }

View File

@ -3,6 +3,8 @@ package com.gmail.nossr50.util;
import com.gmail.nossr50.datatypes.skills.ItemMaterialCategory; import com.gmail.nossr50.datatypes.skills.ItemMaterialCategory;
import com.gmail.nossr50.datatypes.skills.ItemType; import com.gmail.nossr50.datatypes.skills.ItemType;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -636,7 +638,7 @@ public final class ItemTools {
return false; return false;
} }
for (Recipe recipe : pluginRef.getServer().getRecipesFor(item)) { for (Recipe recipe : Bukkit.getServer().getRecipesFor(item)) {
if (recipe instanceof FurnaceRecipe if (recipe instanceof FurnaceRecipe
&& ((FurnaceRecipe) recipe).getInput().getType().isBlock() && ((FurnaceRecipe) recipe).getInput().getType().isBlock()
&& MaterialUtils.isOre(((FurnaceRecipe) recipe).getInput().getType())) { && MaterialUtils.isOre(((FurnaceRecipe) recipe).getInput().getType())) {

View File

@ -1,20 +0,0 @@
package com.gmail.nossr50.util;
import com.gmail.nossr50.mcMMO;
import java.util.logging.Filter;
import java.util.logging.LogRecord;
public class LogFilter implements Filter {
private boolean debug;
public LogFilter(mcMMO plugin) {
// Doing a config loading lite here, because we can't depend on the config loader to have loaded before any debug messages are sent
debug = plugin.getConfig().getBoolean("General.Verbose_Logging");
}
@Override
public boolean isLoggable(LogRecord record) {
return !(record.getMessage().contains("[Debug]") && !debug);
}
}

View File

@ -3,6 +3,7 @@ package com.gmail.nossr50.util;
import com.gmail.nossr50.datatypes.skills.PrimarySkillType; import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.PluginDescriptionFile; import org.bukkit.plugin.PluginDescriptionFile;
import java.text.DecimalFormat; import java.text.DecimalFormat;
@ -15,7 +16,7 @@ public final class MessageOfTheDayUtils {
public MessageOfTheDayUtils(mcMMO pluginRef) { public MessageOfTheDayUtils(mcMMO pluginRef) {
this.pluginRef = pluginRef; this.pluginRef = pluginRef;
PERK_PREFIX = pluginRef.getLocaleManager().getString("MOTD.PerksPrefix") + " "; PERK_PREFIX = pluginRef.getLocaleManager().getString("MOTD.PerksPrefix") + " ";
pluginDescription = pluginRef.getDescription(); pluginDescription = ((Plugin) pluginRef.getPlatformProvider()).getDescription();
} }
public void displayAll(Player player) { public void displayAll(Player player) {

View File

@ -4,6 +4,8 @@ import com.gmail.nossr50.events.items.McMMOItemSpawnEvent;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.runnables.player.PlayerProfileLoadingTask; import com.gmail.nossr50.runnables.player.PlayerProfileLoadingTask;
import com.google.common.collect.ImmutableSet; import com.google.common.collect.ImmutableSet;
import org.bukkit.Bukkit;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.block.BlockState; import org.bukkit.block.BlockState;
@ -18,7 +20,7 @@ import java.util.Set;
public final class MiscTools { public final class MiscTools {
public final int TIME_CONVERSION_FACTOR = 1000; public final int TIME_CONVERSION_FACTOR = 1000;
public final int TICK_CONVERSION_FACTOR = 20; public final long TICK_CONVERSION_FACTOR = 20;
public final int PLAYER_RESPAWN_COOLDOWN_SECONDS = 5; public final int PLAYER_RESPAWN_COOLDOWN_SECONDS = 5;
public final double SKILL_MESSAGE_MAX_SENDING_DISTANCE = 10.0; public final double SKILL_MESSAGE_MAX_SENDING_DISTANCE = 10.0;
public final Set<String> modNames = ImmutableSet.of("LOTR", "BUILDCRAFT", "ENDERIO", "ENHANCEDBIOMES", "IC2", "METALLURGY", "FORESTRY", "GALACTICRAFT", "RAILCRAFT", "TWILIGHTFOREST", "THAUMCRAFT", "GRAVESTONEMOD", "GROWTHCRAFT", "ARCTICMOBS", "DEMONMOBS", "INFERNOMOBS", "SWAMPMOBS", "MARICULTURE", "MINESTRAPPOLATION"); public final Set<String> modNames = ImmutableSet.of("LOTR", "BUILDCRAFT", "ENDERIO", "ENHANCEDBIOMES", "IC2", "METALLURGY", "FORESTRY", "GALACTICRAFT", "RAILCRAFT", "TWILIGHTFOREST", "THAUMCRAFT", "GRAVESTONEMOD", "GROWTHCRAFT", "ARCTICMOBS", "DEMONMOBS", "INFERNOMOBS", "SWAMPMOBS", "MARICULTURE", "MINESTRAPPOLATION");
@ -124,7 +126,7 @@ public final class MiscTools {
// We can't get the item until we spawn it and we want to make it cancellable, so we have a custom event. // We can't get the item until we spawn it and we want to make it cancellable, so we have a custom event.
McMMOItemSpawnEvent event = new McMMOItemSpawnEvent(location, itemStack); McMMOItemSpawnEvent event = new McMMOItemSpawnEvent(location, itemStack);
pluginRef.getServer().getPluginManager().callEvent(event); Bukkit.getServer().getPluginManager().callEvent(event);
if (event.isCancelled()) { if (event.isCancelled()) {
return null; return null;
@ -169,7 +171,7 @@ public final class MiscTools {
// We can't get the item until we spawn it and we want to make it cancellable, so we have a custom event. // We can't get the item until we spawn it and we want to make it cancellable, so we have a custom event.
McMMOItemSpawnEvent event = new McMMOItemSpawnEvent(spawnLocation, clonedItem); McMMOItemSpawnEvent event = new McMMOItemSpawnEvent(spawnLocation, clonedItem);
pluginRef.getServer().getPluginManager().callEvent(event); Bukkit.getServer().getPluginManager().callEvent(event);
//Something cancelled the event so back out //Something cancelled the event so back out
if (event.isCancelled() || event.getItemStack() == null) { if (event.isCancelled() || event.getItemStack() == null) {
@ -191,11 +193,14 @@ public final class MiscTools {
} }
public void profileCleanup(String playerName) { public void profileCleanup(String playerName) {
Player player = pluginRef.getServer().getPlayerExact(playerName); Player player = Bukkit.getServer().getPlayerExact(playerName);
if (player != null) { if (player != null) {
pluginRef.getUserManager().remove(player); pluginRef.getUserManager().remove(player);
new PlayerProfileLoadingTask(pluginRef, player).runTaskLaterAsynchronously(pluginRef, 1); // 1 Tick delay to ensure the player is marked as online before we begin loading pluginRef.getPlatformProvider().getScheduler().getTaskBuilder()
.setDelay(1L) // 1 Tick delay to ensure the player is marked as online before we begin loading
.setTask(new PlayerProfileLoadingTask(pluginRef, player))
.schedule();
} }
} }

View File

@ -8,6 +8,8 @@ import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
import com.gmail.nossr50.datatypes.skills.SubSkillType; import com.gmail.nossr50.datatypes.skills.SubSkillType;
import com.gmail.nossr50.datatypes.skills.subskills.AbstractSubSkill; import com.gmail.nossr50.datatypes.skills.subskills.AbstractSubSkill;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import org.bukkit.Bukkit;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.Server; import org.bukkit.Server;
import org.bukkit.World; import org.bukkit.World;
@ -512,7 +514,7 @@ public final class PermissionTools {
} }
public void generateWorldTeleportPermissions() { public void generateWorldTeleportPermissions() {
Server server = pluginRef.getServer(); Server server = Bukkit.getServer();
PluginManager pluginManager = server.getPluginManager(); PluginManager pluginManager = server.getPluginManager();
for (World world : server.getWorlds()) { for (World world : server.getWorlds()) {
@ -526,7 +528,7 @@ public final class PermissionTools {
*/ */
public void addCustomXPPerks() { public void addCustomXPPerks() {
pluginRef.getLogger().info("Registering custom XP perks with server software..."); pluginRef.getLogger().info("Registering custom XP perks with server software...");
PluginManager pluginManager = pluginRef.getServer().getPluginManager(); PluginManager pluginManager = Bukkit.getServer().getPluginManager();
for (CustomXPPerk customXPPerk : pluginRef.getConfigManager().getConfigExperience().getCustomXPBoosts()) { for (CustomXPPerk customXPPerk : pluginRef.getConfigManager().getConfigExperience().getCustomXPBoosts()) {
Permission permission = new Permission(customXPPerk.getPerkPermissionAddress()); Permission permission = new Permission(customXPPerk.getPerkPermissionAddress());

View File

@ -1,6 +1,8 @@
package com.gmail.nossr50.util.blockmeta; package com.gmail.nossr50.util.blockmeta;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import org.bukkit.Bukkit;
import org.bukkit.World; import org.bukkit.World;
import org.bukkit.block.Block; import org.bukkit.block.Block;
@ -165,7 +167,7 @@ public class HashChunkletManager implements ChunkletManager {
@Override @Override
public void saveAll() { public void saveAll() {
for (World world : pluginRef.getServer().getWorlds()) { for (World world : Bukkit.getServer().getWorlds()) {
saveWorld(world); saveWorld(world);
} }
} }
@ -173,7 +175,7 @@ public class HashChunkletManager implements ChunkletManager {
@Override @Override
public void unloadAll() { public void unloadAll() {
saveAll(); saveAll();
for (World world : pluginRef.getServer().getWorlds()) { for (World world : Bukkit.getServer().getWorlds()) {
unloadWorld(world); unloadWorld(world);
} }
} }
@ -274,7 +276,7 @@ public class HashChunkletManager implements ChunkletManager {
for (String key : store.keySet()) { for (String key : store.keySet()) {
if (store.get(key).isEmpty()) { if (store.get(key).isEmpty()) {
String[] info = key.split(","); String[] info = key.split(",");
File dataDir = new File(pluginRef.getServer().getWorld(info[0]).getWorldFolder(), "mcmmo_data"); File dataDir = new File(Bukkit.getServer().getWorld(info[0]).getWorldFolder(), "mcmmo_data");
File cxDir = new File(dataDir, "" + info[1]); File cxDir = new File(dataDir, "" + info[1]);
if (!cxDir.exists()) { if (!cxDir.exists()) {

View File

@ -2,6 +2,8 @@ package com.gmail.nossr50.util.blockmeta.chunkmeta;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.util.blockmeta.conversion.BlockStoreConversionZDirectory; import com.gmail.nossr50.util.blockmeta.conversion.BlockStoreConversionZDirectory;
import org.bukkit.Bukkit;
import org.bukkit.World; import org.bukkit.World;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.block.BlockState; import org.bukkit.block.BlockState;
@ -255,7 +257,7 @@ public class HashChunkManager implements ChunkManager {
public synchronized void saveAll() { public synchronized void saveAll() {
closeAll(); closeAll();
for (World world : pluginRef.getServer().getWorlds()) { for (World world : Bukkit.getServer().getWorlds()) {
saveWorld(world); saveWorld(world);
} }
} }
@ -264,7 +266,7 @@ public class HashChunkManager implements ChunkManager {
public synchronized void unloadAll() { public synchronized void unloadAll() {
closeAll(); closeAll();
for (World world : pluginRef.getServer().getWorlds()) { for (World world : Bukkit.getServer().getWorlds()) {
unloadWorld(world); unloadWorld(world);
} }
} }
@ -434,7 +436,7 @@ public class HashChunkManager implements ChunkManager {
continue; continue;
} }
if (converter.taskID >= 0) { if (converter.task != null) {
continue; continue;
} }

View File

@ -2,24 +2,25 @@ package com.gmail.nossr50.util.blockmeta.conversion;
import com.gmail.nossr50.core.ChunkConversionOptions; import com.gmail.nossr50.core.ChunkConversionOptions;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.mcmmo.api.platform.scheduler.Task;
import org.bukkit.scheduler.BukkitScheduler; import org.bukkit.scheduler.BukkitScheduler;
import java.io.File; import java.io.File;
public class BlockStoreConversionMain implements Runnable { public class BlockStoreConversionMain implements Runnable {
BukkitScheduler scheduler;
File dataDir; File dataDir;
File[] xDirs; File[] xDirs;
BlockStoreConversionXDirectory[] converters; BlockStoreConversionXDirectory[] converters;
private int taskID; private int taskID;
private org.bukkit.World world; private org.bukkit.World world;
private final mcMMO pluginRef; private final mcMMO pluginRef;
private Task task;
public BlockStoreConversionMain(mcMMO pluginRef, org.bukkit.World world) { public BlockStoreConversionMain(mcMMO pluginRef, org.bukkit.World world) {
this.pluginRef = pluginRef; this.pluginRef = pluginRef;
this.taskID = -1; this.taskID = -1;
this.world = world; this.world = world;
this.scheduler = pluginRef.getServer().getScheduler();
this.dataDir = new File(this.world.getWorldFolder(), "mcmmo_data"); this.dataDir = new File(this.world.getWorldFolder(), "mcmmo_data");
this.converters = new BlockStoreConversionXDirectory[ChunkConversionOptions.getConversionRate()]; this.converters = new BlockStoreConversionXDirectory[ChunkConversionOptions.getConversionRate()];
} }
@ -29,7 +30,10 @@ public class BlockStoreConversionMain implements Runnable {
return; return;
} }
this.taskID = this.scheduler.runTaskLater(pluginRef, this, 1).getTaskId(); this.task = pluginRef.getPlatformProvider().getScheduler().getTaskBuilder()
.setDelay(1L)
.setTask(this)
.schedule();
} }
@Override @Override
@ -69,7 +73,7 @@ public class BlockStoreConversionMain implements Runnable {
return; return;
} }
this.scheduler.cancelTask(this.taskID); this.task.cancel();
this.taskID = -1; this.taskID = -1;
} }
@ -86,7 +90,7 @@ public class BlockStoreConversionMain implements Runnable {
this.dataDir = null; this.dataDir = null;
this.xDirs = null; this.xDirs = null;
this.world = null; this.world = null;
this.scheduler = null; this.task = null;
this.converters = null; this.converters = null;
} }
} }

View File

@ -2,6 +2,8 @@ package com.gmail.nossr50.util.blockmeta.conversion;
import com.gmail.nossr50.core.ChunkConversionOptions; import com.gmail.nossr50.core.ChunkConversionOptions;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.mcmmo.api.platform.scheduler.Task;
import org.bukkit.scheduler.BukkitScheduler; import org.bukkit.scheduler.BukkitScheduler;
import java.io.File; import java.io.File;
@ -11,26 +13,27 @@ public class BlockStoreConversionXDirectory implements Runnable {
File dataDir; File dataDir;
File[] zDirs; File[] zDirs;
BlockStoreConversionZDirectory[] converters; BlockStoreConversionZDirectory[] converters;
private int taskID; private Task task;
private org.bukkit.World world; private org.bukkit.World world;
private final mcMMO pluginRef; private final mcMMO pluginRef;
public BlockStoreConversionXDirectory(mcMMO pluginRef) { public BlockStoreConversionXDirectory(mcMMO pluginRef) {
this.pluginRef = pluginRef; this.pluginRef = pluginRef;
this.taskID = -1;
} }
public void start(org.bukkit.World world, File dataDir) { public void start(org.bukkit.World world, File dataDir) {
this.world = world; this.world = world;
this.scheduler = pluginRef.getServer().getScheduler();
this.converters = new BlockStoreConversionZDirectory[ChunkConversionOptions.getConversionRate()]; this.converters = new BlockStoreConversionZDirectory[ChunkConversionOptions.getConversionRate()];
this.dataDir = dataDir; this.dataDir = dataDir;
if (this.taskID >= 0) { if (this.task != null) {
return; return;
} }
this.taskID = this.scheduler.runTaskLater(pluginRef, this, 1).getTaskId(); this.task = pluginRef.getPlatformProvider().getScheduler().getTaskBuilder()
.setDelay(1L)
.setTask(this)
.schedule();
} }
@Override @Override
@ -66,12 +69,12 @@ public class BlockStoreConversionXDirectory implements Runnable {
} }
public void stop() { public void stop() {
if (this.taskID < 0) { if (this.task == null) {
return; return;
} }
this.scheduler.cancelTask(this.taskID); this.task.cancel();
this.taskID = -1; this.task = null;
this.dataDir = null; this.dataDir = null;
this.zDirs = null; this.zDirs = null;

View File

@ -1,18 +1,23 @@
package com.gmail.nossr50.util.blockmeta.conversion; package com.gmail.nossr50.util.blockmeta.conversion;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.mcmmo.api.platform.scheduler.Task;
import com.gmail.nossr50.util.blockmeta.ChunkletStore; import com.gmail.nossr50.util.blockmeta.ChunkletStore;
import com.gmail.nossr50.util.blockmeta.HashChunkletManager; import com.gmail.nossr50.util.blockmeta.HashChunkletManager;
import com.gmail.nossr50.util.blockmeta.PrimitiveChunkletStore; import com.gmail.nossr50.util.blockmeta.PrimitiveChunkletStore;
import com.gmail.nossr50.util.blockmeta.PrimitiveExChunkletStore; import com.gmail.nossr50.util.blockmeta.PrimitiveExChunkletStore;
import com.gmail.nossr50.util.blockmeta.chunkmeta.HashChunkManager; import com.gmail.nossr50.util.blockmeta.chunkmeta.HashChunkManager;
import com.gmail.nossr50.util.blockmeta.chunkmeta.PrimitiveChunkStore; import com.gmail.nossr50.util.blockmeta.chunkmeta.PrimitiveChunkStore;
import org.bukkit.Bukkit;
import org.bukkit.scheduler.BukkitScheduler; import org.bukkit.scheduler.BukkitScheduler;
import java.io.File; import java.io.File;
import java.util.function.Consumer;
public class BlockStoreConversionZDirectory implements Runnable { public class BlockStoreConversionZDirectory implements Consumer<Task> {
public int taskID, cx, cz, x, y, z, y2, xPos, zPos, cxPos, czPos; public int cx, cz, x, y, z, y2, xPos, zPos, cxPos, czPos;
public Task task;
private String cxs, czs, chunkletName, chunkName; private String cxs, czs, chunkletName, chunkName;
private org.bukkit.World world; private org.bukkit.World world;
private BukkitScheduler scheduler; private BukkitScheduler scheduler;
@ -27,26 +32,28 @@ public class BlockStoreConversionZDirectory implements Runnable {
public BlockStoreConversionZDirectory(mcMMO pluginRef) { public BlockStoreConversionZDirectory(mcMMO pluginRef) {
this.pluginRef = pluginRef; this.pluginRef = pluginRef;
this.taskID = -1;
} }
public void start(org.bukkit.World world, File xDir, File dataDir) { public void start(org.bukkit.World world, File xDir, File dataDir) {
this.world = world; this.world = world;
this.scheduler = pluginRef.getServer().getScheduler(); this.scheduler = Bukkit.getServer().getScheduler();
this.manager = new HashChunkletManager(pluginRef); this.manager = new HashChunkletManager(pluginRef);
this.newManager = (HashChunkManager) pluginRef.getPlaceStore(); this.newManager = (HashChunkManager) pluginRef.getPlaceStore();
this.dataDir = dataDir; this.dataDir = dataDir;
this.xDir = xDir; this.xDir = xDir;
if (this.taskID >= 0) { if (this.task != null) {
return; return;
} }
this.taskID = this.scheduler.runTaskLater(pluginRef, this, 1).getTaskId(); this.task = pluginRef.getPlatformProvider().getScheduler().getTaskBuilder()
.setDelay(1L)
.setTask(this)
.schedule();
} }
@Override @Override
public void run() { public void accept(Task task) {
if (!this.dataDir.exists()) { if (!this.dataDir.exists()) {
stop(); stop();
return; return;
@ -165,12 +172,12 @@ public class BlockStoreConversionZDirectory implements Runnable {
} }
public void stop() { public void stop() {
if (this.taskID < 0) { if (this.task == null) {
return; return;
} }
this.scheduler.cancelTask(taskID); this.task.cancel();
this.taskID = -1; this.task = null;
this.cxs = null; this.cxs = null;
this.czs = null; this.czs = null;

View File

@ -1,6 +1,6 @@
package com.gmail.nossr50.util.commands; package com.gmail.nossr50.util.commands;
import co.aikar.commands.PaperCommandManager; import co.aikar.commands.CommandManager;
import com.gmail.nossr50.commands.*; import com.gmail.nossr50.commands.*;
import com.gmail.nossr50.commands.admin.NBTToolsCommand; import com.gmail.nossr50.commands.admin.NBTToolsCommand;
import com.gmail.nossr50.commands.admin.PlayerDebugCommand; import com.gmail.nossr50.commands.admin.PlayerDebugCommand;
@ -24,6 +24,7 @@ import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.util.StringUtils; import com.gmail.nossr50.util.StringUtils;
import org.bukkit.command.PluginCommand; import org.bukkit.command.PluginCommand;
import org.bukkit.plugin.java.JavaPlugin;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -34,12 +35,12 @@ public final class CommandRegistrationManager {
private final mcMMO pluginRef; private final mcMMO pluginRef;
private String permissionsMessage; private String permissionsMessage;
//NOTE: Does not actually require paper, will work for bukkit //NOTE: Does not actually require paper, will work for bukkit
private PaperCommandManager commandManager; private CommandManager commandManager;
public CommandRegistrationManager(mcMMO pluginRef) { public CommandRegistrationManager(mcMMO pluginRef) {
this.pluginRef = pluginRef; this.pluginRef = pluginRef;
permissionsMessage = pluginRef.getLocaleManager().getString("mcMMO.NoPermission"); permissionsMessage = pluginRef.getLocaleManager().getString("mcMMO.NoPermission");
commandManager = new PaperCommandManager(pluginRef); commandManager = pluginRef.getPlatformProvider().getCommandManager();
} }
/** /**
@ -102,7 +103,7 @@ public final class CommandRegistrationManager {
PluginCommand command; PluginCommand command;
command = pluginRef.getCommand(commandName); command = ((JavaPlugin) pluginRef.getPlatformProvider()).getCommand(commandName);
command.setDescription(pluginRef.getLocaleManager().getString("Commands.Description.Skill", StringUtils.getCapitalized(localizedName))); command.setDescription(pluginRef.getLocaleManager().getString("Commands.Description.Skill", StringUtils.getCapitalized(localizedName)));
command.setPermission("mcmmo.commands." + commandName); command.setPermission("mcmmo.commands." + commandName);
command.setPermissionMessage(permissionsMessage); command.setPermissionMessage(permissionsMessage);
@ -177,7 +178,7 @@ public final class CommandRegistrationManager {
} }
private void registerAddlevelsCommand() { private void registerAddlevelsCommand() {
PluginCommand command = pluginRef.getCommand("addlevels"); PluginCommand command = ((JavaPlugin) pluginRef.getPlatformProvider()).getCommand("addlevels");
command.setDescription(pluginRef.getLocaleManager().getString("Commands.Description.addlevels")); command.setDescription(pluginRef.getLocaleManager().getString("Commands.Description.addlevels"));
command.setPermission("mcmmo.commands.addlevels;mcmmo.commands.addlevels.others"); command.setPermission("mcmmo.commands.addlevels;mcmmo.commands.addlevels.others");
command.setPermissionMessage(permissionsMessage); command.setPermissionMessage(permissionsMessage);
@ -186,7 +187,7 @@ public final class CommandRegistrationManager {
} }
private void registerAddxpCommand() { private void registerAddxpCommand() {
PluginCommand command = pluginRef.getCommand("addxp"); PluginCommand command = ((JavaPlugin) pluginRef.getPlatformProvider()).getCommand("addxp");
command.setDescription(pluginRef.getLocaleManager().getString("Commands.Description.addxp")); command.setDescription(pluginRef.getLocaleManager().getString("Commands.Description.addxp"));
command.setPermission("mcmmo.commands.addxp;mcmmo.commands.addxp.others"); command.setPermission("mcmmo.commands.addxp;mcmmo.commands.addxp.others");
command.setPermissionMessage(permissionsMessage); command.setPermissionMessage(permissionsMessage);
@ -195,7 +196,7 @@ public final class CommandRegistrationManager {
} }
private void registerMcgodCommand() { private void registerMcgodCommand() {
PluginCommand command = pluginRef.getCommand("mcgod"); PluginCommand command = ((JavaPlugin) pluginRef.getPlatformProvider()).getCommand("mcgod");
command.setDescription(pluginRef.getLocaleManager().getString("Commands.Description.mcgod")); command.setDescription(pluginRef.getLocaleManager().getString("Commands.Description.mcgod"));
command.setPermission("mcmmo.commands.mcgod;mcmmo.commands.mcgod.others"); command.setPermission("mcmmo.commands.mcgod;mcmmo.commands.mcgod.others");
command.setPermissionMessage(permissionsMessage); command.setPermissionMessage(permissionsMessage);
@ -204,7 +205,7 @@ public final class CommandRegistrationManager {
} }
private void registerMmoInfoCommand() { private void registerMmoInfoCommand() {
PluginCommand command = pluginRef.getCommand("mmoinfo"); PluginCommand command = ((JavaPlugin) pluginRef.getPlatformProvider()).getCommand("mmoinfo");
command.setDescription(pluginRef.getLocaleManager().getString("Commands.Description.mmoinfo")); command.setDescription(pluginRef.getLocaleManager().getString("Commands.Description.mmoinfo"));
command.setPermission("mcmmo.commands.mmoinfo"); command.setPermission("mcmmo.commands.mmoinfo");
command.setPermissionMessage(permissionsMessage); command.setPermissionMessage(permissionsMessage);
@ -213,7 +214,7 @@ public final class CommandRegistrationManager {
} }
private void registerMcChatSpyCommand() { private void registerMcChatSpyCommand() {
PluginCommand command = pluginRef.getCommand("mcchatspy"); PluginCommand command = ((JavaPlugin) pluginRef.getPlatformProvider()).getCommand("mcchatspy");
command.setDescription(pluginRef.getLocaleManager().getString("Commands.Description.mcchatspy")); command.setDescription(pluginRef.getLocaleManager().getString("Commands.Description.mcchatspy"));
command.setPermission("mcmmo.commands.mcchatspy;mcmmo.commands.mcchatspy.others"); command.setPermission("mcmmo.commands.mcchatspy;mcmmo.commands.mcchatspy.others");
command.setPermissionMessage(permissionsMessage); command.setPermissionMessage(permissionsMessage);
@ -222,7 +223,7 @@ public final class CommandRegistrationManager {
} }
private void registerMcrefreshCommand() { private void registerMcrefreshCommand() {
PluginCommand command = pluginRef.getCommand("mcrefresh"); PluginCommand command = ((JavaPlugin) pluginRef.getPlatformProvider()).getCommand("mcrefresh");
command.setDescription(pluginRef.getLocaleManager().getString("Commands.Description.mcrefresh")); command.setDescription(pluginRef.getLocaleManager().getString("Commands.Description.mcrefresh"));
command.setPermission("mcmmo.commands.mcrefresh;mcmmo.commands.mcrefresh.others"); command.setPermission("mcmmo.commands.mcrefresh;mcmmo.commands.mcrefresh.others");
command.setPermissionMessage(permissionsMessage); command.setPermissionMessage(permissionsMessage);
@ -231,7 +232,7 @@ public final class CommandRegistrationManager {
} }
private void registerMmoeditCommand() { private void registerMmoeditCommand() {
PluginCommand command = pluginRef.getCommand("mmoedit"); PluginCommand command = ((JavaPlugin) pluginRef.getPlatformProvider()).getCommand("mmoedit");
command.setDescription(pluginRef.getLocaleManager().getString("Commands.Description.mmoedit")); command.setDescription(pluginRef.getLocaleManager().getString("Commands.Description.mmoedit"));
command.setPermission("mcmmo.commands.mmoedit;mcmmo.commands.mmoedit.others"); command.setPermission("mcmmo.commands.mmoedit;mcmmo.commands.mmoedit.others");
command.setPermissionMessage(permissionsMessage); command.setPermissionMessage(permissionsMessage);
@ -240,7 +241,7 @@ public final class CommandRegistrationManager {
} }
private void registerMcmmoReloadCommand() { private void registerMcmmoReloadCommand() {
PluginCommand command = pluginRef.getCommand("mcmmoreload"); PluginCommand command = ((JavaPlugin) pluginRef.getPlatformProvider()).getCommand("mcmmoreload");
command.setDescription(pluginRef.getLocaleManager().getString("Commands.Description.mcmmoreload")); command.setDescription(pluginRef.getLocaleManager().getString("Commands.Description.mcmmoreload"));
command.setPermission("mcmmo.commands.reload"); command.setPermission("mcmmo.commands.reload");
command.setPermissionMessage(permissionsMessage); command.setPermissionMessage(permissionsMessage);
@ -249,7 +250,7 @@ public final class CommandRegistrationManager {
} }
private void registerSkillresetCommand() { private void registerSkillresetCommand() {
PluginCommand command = pluginRef.getCommand("skillreset"); PluginCommand command = ((JavaPlugin) pluginRef.getPlatformProvider()).getCommand("skillreset");
command.setDescription(pluginRef.getLocaleManager().getString("Commands.Description.skillreset")); command.setDescription(pluginRef.getLocaleManager().getString("Commands.Description.skillreset"));
command.setPermission("mcmmo.commands.skillreset;mcmmo.commands.skillreset.others"); // Only need the main ones, not the individual skill ones command.setPermission("mcmmo.commands.skillreset;mcmmo.commands.skillreset.others"); // Only need the main ones, not the individual skill ones
command.setPermissionMessage(permissionsMessage); command.setPermissionMessage(permissionsMessage);
@ -261,7 +262,7 @@ public final class CommandRegistrationManager {
List<String> aliasList = new ArrayList<>(); List<String> aliasList = new ArrayList<>();
aliasList.add("mcxprate"); aliasList.add("mcxprate");
PluginCommand command = pluginRef.getCommand("xprate"); PluginCommand command = ((JavaPlugin) pluginRef.getPlatformProvider()).getCommand("xprate");
command.setDescription(pluginRef.getLocaleManager().getString("Commands.Description.xprate")); command.setDescription(pluginRef.getLocaleManager().getString("Commands.Description.xprate"));
command.setPermission("mcmmo.commands.xprate;mcmmo.commands.xprate.reset;mcmmo.commands.xprate.set"); command.setPermission("mcmmo.commands.xprate;mcmmo.commands.xprate.reset;mcmmo.commands.xprate.set");
command.setPermissionMessage(permissionsMessage); command.setPermissionMessage(permissionsMessage);
@ -272,7 +273,7 @@ public final class CommandRegistrationManager {
} }
private void registerInspectCommand() { private void registerInspectCommand() {
PluginCommand command = pluginRef.getCommand("inspect"); PluginCommand command = ((JavaPlugin) pluginRef.getPlatformProvider()).getCommand("inspect");
command.setDescription(pluginRef.getLocaleManager().getString("Commands.Description.inspect")); command.setDescription(pluginRef.getLocaleManager().getString("Commands.Description.inspect"));
command.setPermission("mcmmo.commands.inspect;mcmmo.commands.inspect.far;mcmmo.commands.inspect.offline"); command.setPermission("mcmmo.commands.inspect;mcmmo.commands.inspect.far;mcmmo.commands.inspect.offline");
command.setPermissionMessage(permissionsMessage); command.setPermissionMessage(permissionsMessage);
@ -281,7 +282,7 @@ public final class CommandRegistrationManager {
} }
private void registerMccooldownCommand() { private void registerMccooldownCommand() {
PluginCommand command = pluginRef.getCommand("mccooldown"); PluginCommand command = ((JavaPlugin) pluginRef.getPlatformProvider()).getCommand("mccooldown");
command.setDescription(pluginRef.getLocaleManager().getString("Commands.Description.mccooldown")); command.setDescription(pluginRef.getLocaleManager().getString("Commands.Description.mccooldown"));
command.setPermission("mcmmo.commands.mccooldown"); command.setPermission("mcmmo.commands.mccooldown");
command.setPermissionMessage(permissionsMessage); command.setPermissionMessage(permissionsMessage);
@ -290,7 +291,7 @@ public final class CommandRegistrationManager {
} }
private void registerMcabilityCommand() { private void registerMcabilityCommand() {
PluginCommand command = pluginRef.getCommand("mcability"); PluginCommand command = ((JavaPlugin) pluginRef.getPlatformProvider()).getCommand("mcability");
command.setDescription(pluginRef.getLocaleManager().getString("Commands.Description.mcability")); command.setDescription(pluginRef.getLocaleManager().getString("Commands.Description.mcability"));
command.setPermission("mcmmo.commands.mcability;mcmmo.commands.mcability.others"); command.setPermission("mcmmo.commands.mcability;mcmmo.commands.mcability.others");
command.setPermissionMessage(permissionsMessage); command.setPermissionMessage(permissionsMessage);
@ -299,7 +300,7 @@ public final class CommandRegistrationManager {
} }
private void registerMcmmoCommand() { private void registerMcmmoCommand() {
PluginCommand command = pluginRef.getCommand("mcmmo"); PluginCommand command = ((JavaPlugin) pluginRef.getPlatformProvider()).getCommand("mcmmo");
command.setDescription(pluginRef.getLocaleManager().getString("Commands.Description.mcmmo")); command.setDescription(pluginRef.getLocaleManager().getString("Commands.Description.mcmmo"));
command.setPermission("mcmmo.commands.mcmmo.description;mcmmo.commands.mcmmo.help"); command.setPermission("mcmmo.commands.mcmmo.description;mcmmo.commands.mcmmo.help");
command.setPermissionMessage(permissionsMessage); command.setPermissionMessage(permissionsMessage);
@ -309,7 +310,7 @@ public final class CommandRegistrationManager {
} }
private void registerMcrankCommand() { private void registerMcrankCommand() {
PluginCommand command = pluginRef.getCommand("mcrank"); PluginCommand command = ((JavaPlugin) pluginRef.getPlatformProvider()).getCommand("mcrank");
command.setDescription(pluginRef.getLocaleManager().getString("Commands.Description.mcrank")); command.setDescription(pluginRef.getLocaleManager().getString("Commands.Description.mcrank"));
command.setPermission("mcmmo.commands.mcrank;mcmmo.commands.mcrank.others;mcmmo.commands.mcrank.others.far;mcmmo.commands.mcrank.others.offline"); command.setPermission("mcmmo.commands.mcrank;mcmmo.commands.mcrank.others;mcmmo.commands.mcrank.others.far;mcmmo.commands.mcrank.others.offline");
command.setPermissionMessage(permissionsMessage); command.setPermissionMessage(permissionsMessage);
@ -318,7 +319,7 @@ public final class CommandRegistrationManager {
} }
private void registerMcstatsCommand() { private void registerMcstatsCommand() {
PluginCommand command = pluginRef.getCommand("mcstats"); PluginCommand command = ((JavaPlugin) pluginRef.getPlatformProvider()).getCommand("mcstats");
command.setDescription(pluginRef.getLocaleManager().getString("Commands.Description.mcstats")); command.setDescription(pluginRef.getLocaleManager().getString("Commands.Description.mcstats"));
command.setPermission("mcmmo.commands.mcstats"); command.setPermission("mcmmo.commands.mcstats");
command.setPermissionMessage(permissionsMessage); command.setPermissionMessage(permissionsMessage);
@ -327,7 +328,7 @@ public final class CommandRegistrationManager {
} }
private void registerMctopCommand() { private void registerMctopCommand() {
PluginCommand command = pluginRef.getCommand("mctop"); PluginCommand command = ((JavaPlugin) pluginRef.getPlatformProvider()).getCommand("mctop");
command.setDescription(pluginRef.getLocaleManager().getString("Commands.Description.mctop")); command.setDescription(pluginRef.getLocaleManager().getString("Commands.Description.mctop"));
command.setPermission("mcmmo.commands.mctop"); // Only need the main one, not the individual skill ones command.setPermission("mcmmo.commands.mctop"); // Only need the main one, not the individual skill ones
command.setPermissionMessage(permissionsMessage); command.setPermissionMessage(permissionsMessage);
@ -336,7 +337,7 @@ public final class CommandRegistrationManager {
} }
private void registerMcpurgeCommand() { private void registerMcpurgeCommand() {
PluginCommand command = pluginRef.getCommand("mcpurge"); PluginCommand command = ((JavaPlugin) pluginRef.getPlatformProvider()).getCommand("mcpurge");
command.setDescription(pluginRef.getLocaleManager().getString("Commands.Description.mcpurge", pluginRef.getDatabaseCleaningSettings().getOldUserCutoffMonths())); command.setDescription(pluginRef.getLocaleManager().getString("Commands.Description.mcpurge", pluginRef.getDatabaseCleaningSettings().getOldUserCutoffMonths()));
command.setPermission("mcmmo.commands.mcpurge"); command.setPermission("mcmmo.commands.mcpurge");
command.setPermissionMessage(permissionsMessage); command.setPermissionMessage(permissionsMessage);
@ -345,7 +346,7 @@ public final class CommandRegistrationManager {
} }
private void registerMcremoveCommand() { private void registerMcremoveCommand() {
PluginCommand command = pluginRef.getCommand("mcremove"); PluginCommand command = ((JavaPlugin) pluginRef.getPlatformProvider()).getCommand("mcremove");
command.setDescription(pluginRef.getLocaleManager().getString("Commands.Description.mcremove")); command.setDescription(pluginRef.getLocaleManager().getString("Commands.Description.mcremove"));
command.setPermission("mcmmo.commands.mcremove"); command.setPermission("mcmmo.commands.mcremove");
command.setPermissionMessage(permissionsMessage); command.setPermissionMessage(permissionsMessage);
@ -354,7 +355,7 @@ public final class CommandRegistrationManager {
} }
private void registerMmoshowdbCommand() { private void registerMmoshowdbCommand() {
PluginCommand command = pluginRef.getCommand("mmoshowdb"); PluginCommand command = ((JavaPlugin) pluginRef.getPlatformProvider()).getCommand("mmoshowdb");
command.setDescription(pluginRef.getLocaleManager().getString("Commands.Description.mmoshowdb")); command.setDescription(pluginRef.getLocaleManager().getString("Commands.Description.mmoshowdb"));
command.setPermission("mcmmo.commands.mmoshowdb"); command.setPermission("mcmmo.commands.mmoshowdb");
command.setPermissionMessage(permissionsMessage); command.setPermissionMessage(permissionsMessage);
@ -363,7 +364,7 @@ public final class CommandRegistrationManager {
} }
private void registerMcconvertCommand() { private void registerMcconvertCommand() {
PluginCommand command = pluginRef.getCommand("mcconvert"); PluginCommand command = ((JavaPlugin) pluginRef.getPlatformProvider()).getCommand("mcconvert");
command.setDescription(pluginRef.getLocaleManager().getString("Commands.Description.mcconvert")); command.setDescription(pluginRef.getLocaleManager().getString("Commands.Description.mcconvert"));
command.setPermission("mcmmo.commands.mcconvert;mcmmo.commands.mcconvert.experience;mcmmo.commands.mcconvert.database"); command.setPermission("mcmmo.commands.mcconvert;mcmmo.commands.mcconvert.experience;mcmmo.commands.mcconvert.database");
command.setPermissionMessage(permissionsMessage); command.setPermissionMessage(permissionsMessage);
@ -373,7 +374,7 @@ public final class CommandRegistrationManager {
} }
private void registerAdminChatCommand() { private void registerAdminChatCommand() {
PluginCommand command = pluginRef.getCommand("adminchat"); PluginCommand command = ((JavaPlugin) pluginRef.getPlatformProvider()).getCommand("adminchat");
command.setDescription(pluginRef.getLocaleManager().getString("Commands.Description.adminchat")); command.setDescription(pluginRef.getLocaleManager().getString("Commands.Description.adminchat"));
command.setPermission("mcmmo.chat.adminchat"); command.setPermission("mcmmo.chat.adminchat");
command.setPermissionMessage(permissionsMessage); command.setPermissionMessage(permissionsMessage);
@ -384,7 +385,7 @@ public final class CommandRegistrationManager {
} }
private void registerPartyChatCommand() { private void registerPartyChatCommand() {
PluginCommand command = pluginRef.getCommand("partychat"); PluginCommand command = ((JavaPlugin) pluginRef.getPlatformProvider()).getCommand("partychat");
command.setDescription(pluginRef.getLocaleManager().getString("Commands.Description.partychat")); command.setDescription(pluginRef.getLocaleManager().getString("Commands.Description.partychat"));
command.setPermission("mcmmo.chat.partychat;mcmmo.commands.party"); command.setPermission("mcmmo.chat.partychat;mcmmo.commands.party");
command.setPermissionMessage(permissionsMessage); command.setPermissionMessage(permissionsMessage);
@ -395,7 +396,7 @@ public final class CommandRegistrationManager {
} }
private void registerPartyCommand() { private void registerPartyCommand() {
PluginCommand command = pluginRef.getCommand("party"); PluginCommand command = ((JavaPlugin) pluginRef.getPlatformProvider()).getCommand("party");
command.setDescription(pluginRef.getLocaleManager().getString("Commands.Description.party")); command.setDescription(pluginRef.getLocaleManager().getString("Commands.Description.party"));
command.setPermission("mcmmo.commands.party;mcmmo.commands.party.accept;mcmmo.commands.party.create;mcmmo.commands.party.disband;" + command.setPermission("mcmmo.commands.party;mcmmo.commands.party.accept;mcmmo.commands.party.create;mcmmo.commands.party.disband;" +
"mcmmo.commands.party.xpshare;mcmmo.commands.party.invite;mcmmo.commands.party.itemshare;mcmmo.commands.party.join;" + "mcmmo.commands.party.xpshare;mcmmo.commands.party.invite;mcmmo.commands.party.itemshare;mcmmo.commands.party.join;" +
@ -406,7 +407,7 @@ public final class CommandRegistrationManager {
} }
private void registerPtpCommand() { private void registerPtpCommand() {
PluginCommand command = pluginRef.getCommand("ptp"); PluginCommand command = ((JavaPlugin) pluginRef.getPlatformProvider()).getCommand("ptp");
command.setDescription(pluginRef.getLocaleManager().getString("Commands.Description.ptp")); command.setDescription(pluginRef.getLocaleManager().getString("Commands.Description.ptp"));
command.setPermission("mcmmo.commands.ptp"); // Only need the main one, not the individual ones for toggle/accept/acceptall command.setPermission("mcmmo.commands.ptp"); // Only need the main one, not the individual ones for toggle/accept/acceptall
command.setPermissionMessage(permissionsMessage); command.setPermissionMessage(permissionsMessage);
@ -436,7 +437,7 @@ public final class CommandRegistrationManager {
}*/ }*/
private void registerMcnotifyCommand() { private void registerMcnotifyCommand() {
PluginCommand command = pluginRef.getCommand("mcnotify"); PluginCommand command = ((JavaPlugin) pluginRef.getPlatformProvider()).getCommand("mcnotify");
command.setDescription(pluginRef.getLocaleManager().getString("Commands.Description.mcnotify")); command.setDescription(pluginRef.getLocaleManager().getString("Commands.Description.mcnotify"));
command.setPermission("mcmmo.commands.mcnotify"); command.setPermission("mcmmo.commands.mcnotify");
command.setPermissionMessage(permissionsMessage); command.setPermissionMessage(permissionsMessage);
@ -445,7 +446,7 @@ public final class CommandRegistrationManager {
} }
private void registerMHDCommand() { private void registerMHDCommand() {
PluginCommand command = pluginRef.getCommand("mhd"); PluginCommand command = ((JavaPlugin) pluginRef.getPlatformProvider()).getCommand("mhd");
command.setDescription("Resets all mob health bar settings for all players to the default"); //TODO: Localize command.setDescription("Resets all mob health bar settings for all players to the default"); //TODO: Localize
command.setPermission("mcmmo.commands.mhd"); command.setPermission("mcmmo.commands.mhd");
command.setPermissionMessage(permissionsMessage); command.setPermissionMessage(permissionsMessage);
@ -454,7 +455,7 @@ public final class CommandRegistrationManager {
} }
private void registerMcscoreboardCommand() { private void registerMcscoreboardCommand() {
PluginCommand command = pluginRef.getCommand("mcscoreboard"); PluginCommand command = ((JavaPlugin) pluginRef.getPlatformProvider()).getCommand("mcscoreboard");
command.setDescription("Change the current mcMMO scoreboard being displayed"); //TODO: Localize command.setDescription("Change the current mcMMO scoreboard being displayed"); //TODO: Localize
command.setPermission("mcmmo.commands.mcscoreboard"); command.setPermission("mcmmo.commands.mcscoreboard");
command.setPermissionMessage(permissionsMessage); command.setPermissionMessage(permissionsMessage);
@ -465,7 +466,7 @@ public final class CommandRegistrationManager {
private void registerReloadLocaleCommand() { private void registerReloadLocaleCommand() {
PluginCommand command = pluginRef.getCommand("mcmmoreloadlocale"); PluginCommand command = ((JavaPlugin) pluginRef.getPlatformProvider()).getCommand("mcmmoreloadlocale");
command.setDescription("Reloads locale"); // TODO: Localize command.setDescription("Reloads locale"); // TODO: Localize
command.setPermission("mcmmo.commands.reloadlocale"); command.setPermission("mcmmo.commands.reloadlocale");
command.setPermissionMessage(permissionsMessage); command.setPermissionMessage(permissionsMessage);

View File

@ -6,6 +6,8 @@ import com.gmail.nossr50.datatypes.player.PlayerProfile;
import com.gmail.nossr50.datatypes.skills.PrimarySkillType; import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.util.StringUtils; import com.gmail.nossr50.util.StringUtils;
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer; import org.bukkit.OfflinePlayer;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -100,7 +102,7 @@ public final class CommandTools {
return false; return false;
} }
boolean hasPlayerDataKey = ((Player) sender).hasMetadata(MetadataConstants.PLAYER_DATA_METAKEY); boolean hasPlayerDataKey = ((Player) sender).hasMetadata(MetadataConstants.PLAYER_DATA_METAKEY.getKey());
if (!hasPlayerDataKey) { if (!hasPlayerDataKey) {
sender.sendMessage(pluginRef.getLocaleManager().getString("Commands.NotLoaded")); sender.sendMessage(pluginRef.getLocaleManager().getString("Commands.NotLoaded"));
@ -229,7 +231,7 @@ public final class CommandTools {
Player player = sender instanceof Player ? (Player) sender : null; Player player = sender instanceof Player ? (Player) sender : null;
List<String> onlinePlayerNames = new ArrayList<>(); List<String> onlinePlayerNames = new ArrayList<>();
for (Player onlinePlayer : pluginRef.getServer().getOnlinePlayers()) { for (Player onlinePlayer : Bukkit.getServer().getOnlinePlayers()) {
if (player != null && player.canSee(onlinePlayer)) { if (player != null && player.canSee(onlinePlayer)) {
onlinePlayerNames.add(onlinePlayer.getName()); onlinePlayerNames.add(onlinePlayer.getName());
} }
@ -252,7 +254,7 @@ public final class CommandTools {
partialName = matches.get(0); partialName = matches.get(0);
} }
} else { } else {
Player player = pluginRef.getServer().getPlayer(partialName); Player player = Bukkit.getServer().getPlayer(partialName);
if (player != null) { if (player != null) {
partialName = player.getName(); partialName = player.getName();
@ -274,7 +276,7 @@ public final class CommandTools {
private List<String> matchPlayer(String partialName) { private List<String> matchPlayer(String partialName) {
List<String> matchedPlayers = new ArrayList<>(); List<String> matchedPlayers = new ArrayList<>();
for (OfflinePlayer offlinePlayer : pluginRef.getServer().getOfflinePlayers()) { for (OfflinePlayer offlinePlayer : Bukkit.getServer().getOfflinePlayers()) {
String playerName = offlinePlayer.getName(); String playerName = offlinePlayer.getName();
if (playerName == null) { //Do null checking here to detect corrupted data before sending it throuogh .equals if (playerName == null) { //Do null checking here to detect corrupted data before sending it throuogh .equals

View File

@ -3,7 +3,10 @@ package com.gmail.nossr50.util.player;
import com.gmail.nossr50.core.MetadataConstants; import com.gmail.nossr50.core.MetadataConstants;
import com.gmail.nossr50.datatypes.player.BukkitMMOPlayer; import com.gmail.nossr50.datatypes.player.BukkitMMOPlayer;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.mcmmo.api.platform.util.MetadataKey;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer; import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Entity; import org.bukkit.entity.Entity;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -31,7 +34,7 @@ public final class UserManager {
* @param mcMMOPlayer the player profile to start tracking * @param mcMMOPlayer the player profile to start tracking
*/ */
public void track(BukkitMMOPlayer mcMMOPlayer) { public void track(BukkitMMOPlayer mcMMOPlayer) {
mcMMOPlayer.getNative().setMetadata(MetadataConstants.PLAYER_DATA_METAKEY, new FixedMetadataValue(pluginRef, mcMMOPlayer)); pluginRef.getPlatformProvider().getMetadataStore().setMetadata(mcMMOPlayer, MetadataConstants.PLAYER_DATA_METAKEY, mcMMOPlayer);
if(playerDataSet == null) if(playerDataSet == null)
playerDataSet = new HashSet<>(); playerDataSet = new HashSet<>();
@ -51,7 +54,7 @@ public final class UserManager {
*/ */
public void remove(Player player) { public void remove(Player player) {
BukkitMMOPlayer mcMMOPlayer = getPlayer(player); BukkitMMOPlayer mcMMOPlayer = getPlayer(player);
player.removeMetadata(MetadataConstants.PLAYER_DATA_METAKEY, pluginRef); pluginRef.getPlatformProvider().getMetadataStore().removeMetadata(mcMMOPlayer, MetadataConstants.PLAYER_DATA_METAKEY);
if(mcMMOPlayer != null) if(mcMMOPlayer != null)
mcMMOPlayer.cleanup(); mcMMOPlayer.cleanup();
@ -65,7 +68,7 @@ public final class UserManager {
* Clear all users. * Clear all users.
*/ */
public void clearAll() { public void clearAll() {
for (Player player : pluginRef.getServer().getOnlinePlayers()) { for (Player player : Bukkit.getServer().getOnlinePlayers()) {
remove(player); remove(player);
} }
@ -102,7 +105,7 @@ public final class UserManager {
public Collection<BukkitMMOPlayer> getPlayers() { public Collection<BukkitMMOPlayer> getPlayers() {
Collection<BukkitMMOPlayer> playerCollection = new ArrayList<>(); Collection<BukkitMMOPlayer> playerCollection = new ArrayList<>();
for (Player player : pluginRef.getServer().getOnlinePlayers()) { for (Player player : Bukkit.getServer().getOnlinePlayers()) {
if (hasPlayerDataKey(player)) { if (hasPlayerDataKey(player)) {
playerCollection.add(getPlayer(player)); playerCollection.add(getPlayer(player));
} }
@ -144,15 +147,15 @@ public final class UserManager {
@Nullable @Nullable
public BukkitMMOPlayer getPlayer(Player player) { public BukkitMMOPlayer getPlayer(Player player) {
//Avoid Array Index out of bounds //Avoid Array Index out of bounds
if (player != null && player.hasMetadata(MetadataConstants.PLAYER_DATA_METAKEY)) if (player != null && player.hasMetadata(MetadataConstants.PLAYER_DATA_METAKEY.getKey()))
return (BukkitMMOPlayer) player.getMetadata(MetadataConstants.PLAYER_DATA_METAKEY).get(0).value(); return (BukkitMMOPlayer) player.getMetadata(MetadataConstants.PLAYER_DATA_METAKEY.getKey()).get(0).value();
else else
return null; return null;
} }
@Nullable @Nullable
private BukkitMMOPlayer retrieveMcMMOPlayer(String playerName, boolean offlineValid) { private BukkitMMOPlayer retrieveMcMMOPlayer(String playerName, boolean offlineValid) {
Player player = pluginRef.getServer().getPlayerExact(playerName); Player player = Bukkit.getServer().getPlayerExact(playerName);
if (player == null) { if (player == null) {
if (!offlineValid) { if (!offlineValid) {
@ -166,6 +169,6 @@ public final class UserManager {
} }
public boolean hasPlayerDataKey(Entity entity) { public boolean hasPlayerDataKey(Entity entity) {
return entity != null && entity.hasMetadata(MetadataConstants.PLAYER_DATA_METAKEY); return entity != null && entity.hasMetadata(MetadataConstants.PLAYER_DATA_METAKEY.getKey());
} }
} }

View File

@ -44,8 +44,8 @@ public class ScoreboardManager {
//TODO: Christ... //TODO: Christ...
//Call our custom event //Call our custom event
if(pluginRef.getServer().getScoreboardManager() != null) { if(Bukkit.getServer().getScoreboardManager() != null) {
McMMOScoreboardMakeboardEvent event = new McMMOScoreboardMakeboardEvent(pluginRef.getServer().getScoreboardManager().getNewScoreboard(), player.getScoreboard(), player, ScoreboardEventReason.CREATING_NEW_SCOREBOARD); McMMOScoreboardMakeboardEvent event = new McMMOScoreboardMakeboardEvent(Bukkit.getServer().getScoreboardManager().getNewScoreboard(), player.getScoreboard(), player, ScoreboardEventReason.CREATING_NEW_SCOREBOARD);
player.getServer().getPluginManager().callEvent(event); player.getServer().getPluginManager().callEvent(event);
return new ScoreboardWrapper(event.getTargetPlayer(), event.getTargetBoard(), scoreboardStrings, pluginRef); return new ScoreboardWrapper(event.getTargetPlayer(), event.getTargetBoard(), scoreboardStrings, pluginRef);
@ -73,7 +73,7 @@ public class ScoreboardManager {
// Called in onDisable() // Called in onDisable()
public void teardownAll() { public void teardownAll() {
ImmutableList<Player> onlinePlayers = ImmutableList.copyOf(pluginRef.getServer().getOnlinePlayers()); ImmutableList<Player> onlinePlayers = ImmutableList.copyOf(Bukkit.getServer().getOnlinePlayers());
pluginRef.debug("Tearing down scoreboards... (" + onlinePlayers.size() + ")"); pluginRef.debug("Tearing down scoreboards... (" + onlinePlayers.size() + ")");
for (Player player : onlinePlayers) { for (Player player : onlinePlayers) {
teardownPlayer(player); teardownPlayer(player);
@ -271,7 +271,7 @@ public class ScoreboardManager {
*/ */
public Objective getPowerLevelObjective() { public Objective getPowerLevelObjective() {
if (!pluginRef.getScoreboardSettings().getPowerLevelTagsEnabled()) { if (!pluginRef.getScoreboardSettings().getPowerLevelTagsEnabled()) {
Objective objective = pluginRef.getServer().getScoreboardManager().getMainScoreboard().getObjective(scoreboardStrings.POWER_OBJECTIVE); Objective objective = Bukkit.getServer().getScoreboardManager().getMainScoreboard().getObjective(scoreboardStrings.POWER_OBJECTIVE);
if (objective != null) { if (objective != null) {
objective.unregister(); objective.unregister();
@ -281,10 +281,10 @@ public class ScoreboardManager {
return null; return null;
} }
Objective powerObjective = pluginRef.getServer().getScoreboardManager().getMainScoreboard().getObjective(scoreboardStrings.POWER_OBJECTIVE); Objective powerObjective = Bukkit.getServer().getScoreboardManager().getMainScoreboard().getObjective(scoreboardStrings.POWER_OBJECTIVE);
if (powerObjective == null) { if (powerObjective == null) {
powerObjective = pluginRef.getServer().getScoreboardManager().getMainScoreboard().registerNewObjective(scoreboardStrings.POWER_OBJECTIVE, "dummy"); powerObjective = Bukkit.getServer().getScoreboardManager().getMainScoreboard().registerNewObjective(scoreboardStrings.POWER_OBJECTIVE, "dummy");
powerObjective.setDisplayName(scoreboardStrings.TAG_POWER_LEVEL); powerObjective.setDisplayName(scoreboardStrings.TAG_POWER_LEVEL);
powerObjective.setDisplaySlot(DisplaySlot.BELOW_NAME); powerObjective.setDisplaySlot(DisplaySlot.BELOW_NAME);
} }
@ -296,7 +296,7 @@ public class ScoreboardManager {
if (displayTime == -1) { if (displayTime == -1) {
wrapper.showBoardWithNoRevert(); wrapper.showBoardWithNoRevert();
} else { } else {
wrapper.showBoardAndScheduleRevert(displayTime * pluginRef.getMiscTools().TICK_CONVERSION_FACTOR); wrapper.showBoardAndScheduleRevert((int) (displayTime * pluginRef.getMiscTools().TICK_CONVERSION_FACTOR));
} }
} }
@ -313,7 +313,7 @@ public class ScoreboardManager {
} }
public void setRevertTimer(String playerName, int seconds) { public void setRevertTimer(String playerName, int seconds) {
PLAYER_SCOREBOARDS.get(playerName).showBoardAndScheduleRevert(seconds * pluginRef.getMiscTools().TICK_CONVERSION_FACTOR); PLAYER_SCOREBOARDS.get(playerName).showBoardAndScheduleRevert((int) (seconds * pluginRef.getMiscTools().TICK_CONVERSION_FACTOR));
} }
public List<String> getDirtyPowerLevels() { public List<String> getDirtyPowerLevels() {

View File

@ -10,8 +10,10 @@ import com.gmail.nossr50.events.scoreboard.McMMOScoreboardRevertEvent;
import com.gmail.nossr50.events.scoreboard.ScoreboardEventReason; import com.gmail.nossr50.events.scoreboard.ScoreboardEventReason;
import com.gmail.nossr50.events.scoreboard.ScoreboardObjectiveEventReason; import com.gmail.nossr50.events.scoreboard.ScoreboardObjectiveEventReason;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.mcmmo.api.platform.scheduler.Task;
import com.gmail.nossr50.skills.child.FamilyTree; import com.gmail.nossr50.skills.child.FamilyTree;
import org.apache.commons.lang.Validate; import org.apache.commons.lang.Validate;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.scheduler.BukkitRunnable;
@ -35,9 +37,9 @@ public class ScoreboardWrapper {
public String targetPlayer = null; public String targetPlayer = null;
public PrimarySkillType targetSkill = null; public PrimarySkillType targetSkill = null;
public int leaderboardPage = -1; public int leaderboardPage = -1;
public BukkitTask updateTask = null; public Task updateTask = null;
public BukkitTask revertTask = null; public Task revertTask = null;
public BukkitTask cooldownTask = null; public Task cooldownTask = null;
private boolean tippedKeep = false; private boolean tippedKeep = false;
private boolean tippedClear = false; private boolean tippedClear = false;
// Internal usage variables (should exist) // Internal usage variables (should exist)
@ -73,7 +75,10 @@ public class ScoreboardWrapper {
public void doSidebarUpdateSoon() { public void doSidebarUpdateSoon() {
if (updateTask == null) { if (updateTask == null) {
// To avoid spamming the scheduler, store the instance and run 2 ticks later // To avoid spamming the scheduler, store the instance and run 2 ticks later
updateTask = new ScoreboardQuickUpdate().runTaskLater(pluginRef, 2L); updateTask = pluginRef.getPlatformProvider().getScheduler().getTaskBuilder()
.setDelay(2L)
.setTask(new ScoreboardQuickUpdate())
.schedule();
} }
} }
@ -81,7 +86,12 @@ public class ScoreboardWrapper {
if (cooldownTask == null) { if (cooldownTask == null) {
// Repeat every 5 seconds. // Repeat every 5 seconds.
// Cancels once all cooldowns are done, using stopCooldownUpdating(). // Cancels once all cooldowns are done, using stopCooldownUpdating().
cooldownTask = new ScoreboardCooldownTask().runTaskTimer(pluginRef, 5 * pluginRef.getMiscTools().TICK_CONVERSION_FACTOR, 5 * pluginRef.getMiscTools().TICK_CONVERSION_FACTOR);
cooldownTask = pluginRef.getPlatformProvider().getScheduler().getTaskBuilder()
.setDelay(5 * pluginRef.getMiscTools().TICK_CONVERSION_FACTOR)
.setRepeatTime(5 * pluginRef.getMiscTools().TICK_CONVERSION_FACTOR)
.setTask(new ScoreboardCooldownTask())
.schedule();
} }
} }
@ -112,7 +122,7 @@ public class ScoreboardWrapper {
* Set the old targetBoard, for use in reverting. * Set the old targetBoard, for use in reverting.
*/ */
public void setOldScoreboard() { public void setOldScoreboard() {
Player player = pluginRef.getServer().getPlayerExact(playerName); Player player = Bukkit.getServer().getPlayerExact(playerName);
if (player == null) { if (player == null) {
pluginRef.getScoreboardManager().cleanup(this); pluginRef.getScoreboardManager().cleanup(this);
@ -124,7 +134,7 @@ public class ScoreboardWrapper {
if (oldBoard == scoreboard) { // Already displaying it if (oldBoard == scoreboard) { // Already displaying it
if (this.oldBoard == null) { if (this.oldBoard == null) {
// (Shouldn't happen) Use failsafe value - we're already displaying our board, but we don't have the one we should revert to // (Shouldn't happen) Use failsafe value - we're already displaying our board, but we don't have the one we should revert to
this.oldBoard = pluginRef.getServer().getScoreboardManager().getMainScoreboard(); this.oldBoard = Bukkit.getServer().getScoreboardManager().getMainScoreboard();
} }
} else { } else {
this.oldBoard = oldBoard; this.oldBoard = oldBoard;
@ -132,7 +142,7 @@ public class ScoreboardWrapper {
} }
public void showBoardWithNoRevert() { public void showBoardWithNoRevert() {
Player player = pluginRef.getServer().getPlayerExact(playerName); Player player = Bukkit.getServer().getPlayerExact(playerName);
if (player == null) { if (player == null) {
pluginRef.getScoreboardManager().cleanup(this); pluginRef.getScoreboardManager().cleanup(this);
@ -148,7 +158,7 @@ public class ScoreboardWrapper {
} }
public void showBoardAndScheduleRevert(int ticks) { public void showBoardAndScheduleRevert(int ticks) {
Player player = pluginRef.getServer().getPlayerExact(playerName); Player player = Bukkit.getServer().getPlayerExact(playerName);
if (player == null) { if (player == null) {
pluginRef.getScoreboardManager().cleanup(this); pluginRef.getScoreboardManager().cleanup(this);
@ -160,7 +170,10 @@ public class ScoreboardWrapper {
} }
player.setScoreboard(scoreboard); player.setScoreboard(scoreboard);
revertTask = new ScoreboardChangeTask().runTaskLater(pluginRef, ticks); revertTask = pluginRef.getPlatformProvider().getScheduler().getTaskBuilder()
.setDelay((long) ticks)
.setTask(new ScoreboardChangeTask())
.schedule();
// TODO is there any way to do the time that looks acceptable? // TODO is there any way to do the time that looks acceptable?
// player.sendMessage(LocaleLoader.getString("Commands.Scoreboard.Timer", StringUtils.capitalize(sidebarType.toString().toLowerCase(Locale.ENGLISH)), ticks / 20F)); // player.sendMessage(LocaleLoader.getString("Commands.Scoreboard.Timer", StringUtils.capitalize(sidebarType.toString().toLowerCase(Locale.ENGLISH)), ticks / 20F));
@ -185,7 +198,7 @@ public class ScoreboardWrapper {
} }
public void tryRevertBoard() { public void tryRevertBoard() {
Player player = pluginRef.getServer().getPlayerExact(playerName); Player player = Bukkit.getServer().getPlayerExact(playerName);
if (player == null) { if (player == null) {
pluginRef.getScoreboardManager().cleanup(this); pluginRef.getScoreboardManager().cleanup(this);
@ -217,7 +230,7 @@ public class ScoreboardWrapper {
} }
public boolean isBoardShown() { public boolean isBoardShown() {
Player player = pluginRef.getServer().getPlayerExact(playerName); Player player = Bukkit.getServer().getPlayerExact(playerName);
if (player == null) { if (player == null) {
pluginRef.getScoreboardManager().cleanup(this); pluginRef.getScoreboardManager().cleanup(this);
@ -386,7 +399,7 @@ public class ScoreboardWrapper {
return; return;
} }
Player player = pluginRef.getServer().getPlayerExact(playerName); Player player = Bukkit.getServer().getPlayerExact(playerName);
if (player == null) { if (player == null) {
pluginRef.getScoreboardManager().cleanup(this); pluginRef.getScoreboardManager().cleanup(this);
@ -513,7 +526,7 @@ public class ScoreboardWrapper {
public void acceptRankData(Map<PrimarySkillType, Integer> rankData) { public void acceptRankData(Map<PrimarySkillType, Integer> rankData) {
Integer rank; Integer rank;
Player player = pluginRef.getServer().getPlayerExact(playerName); Player player = Bukkit.getServer().getPlayerExact(playerName);
for (PrimarySkillType primarySkillType : pluginRef.getSkillTools().NON_CHILD_SKILLS) { for (PrimarySkillType primarySkillType : pluginRef.getSkillTools().NON_CHILD_SKILLS) {
if (!pluginRef.getPermissionTools().skillEnabled(player, primarySkillType)) { if (!pluginRef.getPermissionTools().skillEnabled(player, primarySkillType)) {

View File

@ -19,6 +19,8 @@ import com.gmail.nossr50.skills.swords.SwordsManager;
import com.gmail.nossr50.skills.taming.TamingManager; import com.gmail.nossr50.skills.taming.TamingManager;
import com.gmail.nossr50.skills.unarmed.UnarmedManager; import com.gmail.nossr50.skills.unarmed.UnarmedManager;
import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap;
import org.bukkit.Bukkit;
import org.bukkit.GameMode; import org.bukkit.GameMode;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.entity.*; import org.bukkit.entity.*;
@ -28,6 +30,7 @@ import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
import org.bukkit.event.entity.EntityDamageEvent.DamageModifier; import org.bukkit.event.entity.EntityDamageEvent.DamageModifier;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.metadata.MetadataValue; import org.bukkit.metadata.MetadataValue;
import org.bukkit.plugin.Plugin;
import org.bukkit.projectiles.ProjectileSource; import org.bukkit.projectiles.ProjectileSource;
import java.util.EnumMap; import java.util.EnumMap;
@ -258,7 +261,7 @@ public final class CombatTools {
finalDamage += archeryManager.daze((Player) target); finalDamage += archeryManager.daze((Player) target);
} }
if (!arrow.hasMetadata(MetadataConstants.INFINITE_ARROW_METAKEY) && archeryManager.canRetrieveArrows()) { if (!arrow.hasMetadata(MetadataConstants.INFINITE_ARROW_METAKEY.getKey()) && archeryManager.canRetrieveArrows()) {
archeryManager.processArrowRetrievalActivation(target, arrow); archeryManager.processArrowRetrievalActivation(target, arrow);
} }
@ -270,8 +273,8 @@ public final class CombatTools {
double distanceMultiplier = archeryManager.distanceXpBonusMultiplier(target, arrow); double distanceMultiplier = archeryManager.distanceXpBonusMultiplier(target, arrow);
double forceMultiplier = 1.0; //Hacky Fix - some plugins spawn arrows and assign them to players after the ProjectileLaunchEvent fires double forceMultiplier = 1.0; //Hacky Fix - some plugins spawn arrows and assign them to players after the ProjectileLaunchEvent fires
if(arrow.hasMetadata(MetadataConstants.BOW_FORCE_METAKEY)) if(arrow.hasMetadata(MetadataConstants.BOW_FORCE_METAKEY.getKey()))
forceMultiplier = arrow.getMetadata(MetadataConstants.BOW_FORCE_METAKEY).get(0).asDouble(); forceMultiplier = arrow.getMetadata(MetadataConstants.BOW_FORCE_METAKEY.getKey()).get(0).asDouble();
applyScaledModifiers(initialDamage, finalDamage, event); applyScaledModifiers(initialDamage, finalDamage, event);
startGainXp(mcMMOPlayer, target, PrimarySkillType.ARCHERY, forceMultiplier * distanceMultiplier); startGainXp(mcMMOPlayer, target, PrimarySkillType.ARCHERY, forceMultiplier * distanceMultiplier);
@ -619,18 +622,18 @@ public final class CombatTools {
// cause do have issues around plugin observability. This is not a perfect solution, but it appears to be the best one here // cause do have issues around plugin observability. This is not a perfect solution, but it appears to be the best one here
// We also set no damage ticks to 0, to ensure that damage is applied for this case, and reset it back to the original value // We also set no damage ticks to 0, to ensure that damage is applied for this case, and reset it back to the original value
// Snapshot current state so we can pop up properly // Snapshot current state so we can pop up properly
boolean wasMetaSet = target.getMetadata(MetadataConstants.CUSTOM_DAMAGE_METAKEY).size() != 0; boolean wasMetaSet = target.getMetadata(MetadataConstants.CUSTOM_DAMAGE_METAKEY.getKey()).size() != 0;
target.setMetadata(MetadataConstants.CUSTOM_DAMAGE_METAKEY, MetadataConstants.metadataValue); target.setMetadata(MetadataConstants.CUSTOM_DAMAGE_METAKEY.getKey(), MetadataConstants.metadataValue);
boolean wasProcessing = processingNoInvulnDamage; boolean wasProcessing = processingNoInvulnDamage;
// set markers // set markers
processingNoInvulnDamage = true; processingNoInvulnDamage = true;
target.setMetadata(MetadataConstants.CUSTOM_DAMAGE_METAKEY, MetadataConstants.metadataValue); target.setMetadata(MetadataConstants.CUSTOM_DAMAGE_METAKEY.getKey(), MetadataConstants.metadataValue);
int noDamageTicks = target.getNoDamageTicks(); int noDamageTicks = target.getNoDamageTicks();
target.setNoDamageTicks(0); target.setNoDamageTicks(0);
target.damage(damage, attacker); target.damage(damage, attacker);
target.setNoDamageTicks(noDamageTicks); target.setNoDamageTicks(noDamageTicks);
if (!wasMetaSet) if (!wasMetaSet)
target.removeMetadata(MetadataConstants.CUSTOM_DAMAGE_METAKEY, pluginRef); target.removeMetadata(MetadataConstants.CUSTOM_DAMAGE_METAKEY.getKey(), (Plugin) pluginRef.getPlatformProvider());
if (!wasProcessing) if (!wasProcessing)
processingNoInvulnDamage = false; processingNoInvulnDamage = false;
} }
@ -774,11 +777,11 @@ public final class CombatTools {
} }
} }
if (target.hasMetadata(MetadataConstants.UNNATURAL_MOB_METAKEY) || target.hasMetadata("ES")) { if (target.hasMetadata(MetadataConstants.UNNATURAL_MOB_METAKEY.getKey()) || target.hasMetadata("ES")) {
baseXPMultiplier *= pluginRef.getDynamicSettingsManager().getExperienceManager().getSpecialCombatXP(SpecialXPKey.SPAWNED); baseXPMultiplier *= pluginRef.getDynamicSettingsManager().getExperienceManager().getSpecialCombatXP(SpecialXPKey.SPAWNED);
} }
if (target.hasMetadata(MetadataConstants.PETS_ANIMAL_TRACKING_METAKEY)) { if (target.hasMetadata(MetadataConstants.PETS_ANIMAL_TRACKING_METAKEY.getKey())) {
baseXPMultiplier *= pluginRef.getDynamicSettingsManager().getExperienceManager().getSpecialCombatXP(SpecialXPKey.PETS); baseXPMultiplier *= pluginRef.getDynamicSettingsManager().getExperienceManager().getSpecialCombatXP(SpecialXPKey.PETS);
} }
@ -790,7 +793,9 @@ public final class CombatTools {
baseXPMultiplier *= multiplier; baseXPMultiplier *= multiplier;
if (baseXPMultiplier != 0) { if (baseXPMultiplier != 0) {
new AwardCombatXpTask(mcMMOPlayer, primarySkillType, baseXPMultiplier, target, xpGainReason).runTaskLater(pluginRef, 0); pluginRef.getPlatformProvider().getScheduler().getTaskBuilder()
.setTask(new AwardCombatXpTask(mcMMOPlayer, primarySkillType, baseXPMultiplier, target, xpGainReason))
.schedule();
} }
} }
@ -900,7 +905,7 @@ public final class CombatTools {
public EntityDamageEvent sendEntityDamageEvent(Entity attacker, Entity target, DamageCause damageCause, double damage) { public EntityDamageEvent sendEntityDamageEvent(Entity attacker, Entity target, DamageCause damageCause, double damage) {
EntityDamageEvent damageEvent = attacker == null ? new FakeEntityDamageEvent(target, damageCause, damage) : new FakeEntityDamageByEntityEvent(attacker, target, damageCause, damage); EntityDamageEvent damageEvent = attacker == null ? new FakeEntityDamageEvent(target, damageCause, damage) : new FakeEntityDamageByEntityEvent(attacker, target, damageCause, damage);
pluginRef.getServer().getPluginManager().callEvent(damageEvent); Bukkit.getServer().getPluginManager().callEvent(damageEvent);
return damageEvent; return damageEvent;
} }
@ -914,7 +919,7 @@ public final class CombatTools {
public double getFakeDamageFinalResult(Entity attacker, Entity target, DamageCause cause, Map<DamageModifier, Double> modifiers) { public double getFakeDamageFinalResult(Entity attacker, Entity target, DamageCause cause, Map<DamageModifier, Double> modifiers) {
EntityDamageEvent damageEvent = attacker == null ? new FakeEntityDamageEvent(target, cause, modifiers) : new FakeEntityDamageByEntityEvent(attacker, target, cause, modifiers); EntityDamageEvent damageEvent = attacker == null ? new FakeEntityDamageEvent(target, cause, modifiers) : new FakeEntityDamageByEntityEvent(attacker, target, cause, modifiers);
pluginRef.getServer().getPluginManager().callEvent(damageEvent); Bukkit.getServer().getPluginManager().callEvent(damageEvent);
if (damageEvent.isCancelled()) { if (damageEvent.isCancelled()) {
return 0; return 0;
@ -1006,10 +1011,11 @@ public final class CombatTools {
return; return;
} }
if (!player.hasMetadata(MetadataConstants.PLAYER_DATA_METAKEY)) { if (!player.hasMetadata(MetadataConstants.PLAYER_DATA_METAKEY.getKey())) {
return; return;
} }
pluginRef.getMobHealthBarManager().handleMobHealthbars(target, damage, plugin);
pluginRef.getPlatformProvider().getHealthBarManager().handleMobHealthbars(plugin.getPlatformProvider().getEntity(target.getUniqueId()), damage);
} }
} }

View File

@ -13,7 +13,7 @@ public final class PerkUtils {
this.pluginRef = pluginRef; this.pluginRef = pluginRef;
} }
public int handleCooldownPerks(Player player, int cooldown) { public long handleCooldownPerks(Player player, long cooldown) {
if (pluginRef.getPermissionTools().halvedCooldowns(player)) { if (pluginRef.getPermissionTools().halvedCooldowns(player)) {
cooldown *= 0.5; cooldown *= 0.5;
} else if (pluginRef.getPermissionTools().thirdedCooldowns(player)) { } else if (pluginRef.getPermissionTools().thirdedCooldowns(player)) {

View File

@ -49,9 +49,10 @@ public class RankTools {
//The players level is the exact level requirement for this skill //The players level is the exact level requirement for this skill
if (newLevel == innerMap.get(playerRankInSkill)) { if (newLevel == innerMap.get(playerRankInSkill)) {
SkillUnlockNotificationTask skillUnlockNotificationTask = new SkillUnlockNotificationTask(pluginRef, mcMMOPlayer, subSkillType); pluginRef.getPlatformProvider().getScheduler().getTaskBuilder()
.setDelay(count * 100L)
skillUnlockNotificationTask.runTaskLater(pluginRef, (count * 100)); .setTask(new SkillUnlockNotificationTask(pluginRef, mcMMOPlayer, subSkillType))
.schedule();
count++; count++;
} }