forked from Upstream/mmocore
Merge branch 'master' of http://Indyuce@dev.lumine.io/bitbucket/scm/mmo/mmocore.git
This commit is contained in:
commit
b74f92296b
BIN
lib/MMOLib.jar
BIN
lib/MMOLib.jar
Binary file not shown.
Binary file not shown.
BIN
lib/spigot.jar
BIN
lib/spigot.jar
Binary file not shown.
273
pom.xml
273
pom.xml
@ -1,97 +1,100 @@
|
|||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
<modelVersion>4.0.0</modelVersion>
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
<groupId>net.Indyuce</groupId>
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
<artifactId>MMOCore</artifactId>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<version>1.3</version>
|
<groupId>net.Indyuce</groupId>
|
||||||
<description>Offer your players a brand new RPG experience.</description>
|
<artifactId>MMOCore</artifactId>
|
||||||
|
<version>1.4.1</version>
|
||||||
|
<name>MMOCore</name>
|
||||||
|
<description>Offer your players a brand new RPG experience.</description>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<build.number>SNAPSHOT</build.number>
|
<build.number>SNAPSHOT</build.number>
|
||||||
<downloadSources>false</downloadSources>
|
<downloadSources>false</downloadSources>
|
||||||
<downloadJavadocs>false</downloadJavadocs>
|
<downloadJavadocs>false</downloadJavadocs>
|
||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<distributionManagement>
|
<distributionManagement>
|
||||||
<repository>
|
<repository>
|
||||||
<id>nexus</id>
|
<id>nexus</id>
|
||||||
<name>Lumine Releases</name>
|
<name>Lumine Releases</name>
|
||||||
<url>http://mvn.lumine.io/repository/maven-releases/</url>
|
<url>http://mvn.lumine.io/repository/maven-releases/</url>
|
||||||
</repository>
|
</repository>
|
||||||
<snapshotRepository>
|
<snapshotRepository>
|
||||||
<id>nexus</id>
|
<id>nexus</id>
|
||||||
<name>Lumine Snapshots</name>
|
<name>Lumine Snapshots</name>
|
||||||
<url>http://mvn.lumine.io/repository/maven-snapshots/</url>
|
<url>http://mvn.lumine.io/repository/maven-snapshots/</url>
|
||||||
</snapshotRepository>
|
</snapshotRepository>
|
||||||
</distributionManagement>
|
</distributionManagement>
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
<finalName>${project.name}-${project.version}</finalName>
|
<finalName>${project.name}-${project.version}</finalName>
|
||||||
<resources>
|
<resources>
|
||||||
<resource>
|
<resource>
|
||||||
<filtering>true</filtering>
|
<filtering>true</filtering>
|
||||||
<directory>${basedir}/src/main/resources/</directory>
|
<directory>${basedir}/src/main/resources/</directory>
|
||||||
</resource>
|
</resource>
|
||||||
</resources>
|
</resources>
|
||||||
<plugins>
|
<plugins>
|
||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
<artifactId>maven-compiler-plugin</artifactId>
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
<configuration>
|
<configuration>
|
||||||
<source>1.8</source>
|
<source>1.8</source>
|
||||||
<target>1.8</target>
|
<target>1.8</target>
|
||||||
<junitArtifactName>junit:junit</junitArtifactName>
|
<junitArtifactName>junit:junit</junitArtifactName>
|
||||||
<encoding>UTF-8</encoding>
|
<encoding>UTF-8</encoding>
|
||||||
<inputEncoding>UTF-8</inputEncoding>
|
<inputEncoding>UTF-8</inputEncoding>
|
||||||
<outputEncoding>UTF-8</outputEncoding>
|
<outputEncoding>UTF-8</outputEncoding>
|
||||||
<argLine>-ea -Dfile.encoding=UTF-8</argLine>
|
<argLine>-ea -Dfile.encoding=UTF-8</argLine>
|
||||||
</configuration>
|
</configuration>
|
||||||
</plugin>
|
</plugin>
|
||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
<repositories>
|
<repositories>
|
||||||
<repository>
|
<repository>
|
||||||
<id>jitpack.io</id>
|
<id>jitpack.io</id>
|
||||||
<url>https://jitpack.io</url>
|
<url>https://jitpack.io</url>
|
||||||
</repository>
|
</repository>
|
||||||
<repository>
|
<repository>
|
||||||
<id>spigot-repo</id>
|
<id>spigot-repo</id>
|
||||||
<url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
|
<url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
|
||||||
</repository>
|
</repository>
|
||||||
<repository>
|
<repository>
|
||||||
<id>sk89q-repo</id>
|
<id>sk89q-repo</id>
|
||||||
<url>https://maven.enginehub.org/repo/</url>
|
<url>https://maven.enginehub.org/repo/</url>
|
||||||
</repository>
|
</repository>
|
||||||
<repository>
|
<repository>
|
||||||
<id>placeholderapi</id>
|
<id>placeholderapi</id>
|
||||||
<url>http://repo.extendedclip.com/content/repositories/placeholderapi/</url>
|
<url>http://repo.extendedclip.com/content/repositories/placeholderapi/</url>
|
||||||
</repository>
|
</repository>
|
||||||
</repositories>
|
</repositories>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>net.Indyuce</groupId>
|
<groupId>net.Indyuce</groupId>
|
||||||
<artifactId>mmoitems</artifactId>
|
<artifactId>mmoitems</artifactId>
|
||||||
<version>5.1.2</version>
|
<version>5.1.2</version>
|
||||||
<scope>system</scope>
|
<scope>system</scope>
|
||||||
<systemPath>${basedir}/lib/MMOItems.jar</systemPath>
|
<systemPath>${basedir}/lib/MMOItems.jar</systemPath>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>net.Indyuce</groupId>
|
<groupId>net.Indyuce</groupId>
|
||||||
<artifactId>MMOLib</artifactId>
|
<artifactId>MMOLib</artifactId>
|
||||||
<version>1.0</version>
|
<version>1.0</version>
|
||||||
<scope>system</scope>
|
<scope>system</scope>
|
||||||
<systemPath>${basedir}/lib/MMOLib.jar</systemPath>
|
<systemPath>${basedir}/lib/MMOLib.jar</systemPath>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.spigotmc</groupId>
|
<groupId>org.spigotmc</groupId>
|
||||||
<artifactId>spigot-api</artifactId>
|
<artifactId>spigot-api</artifactId>
|
||||||
<version>1.14.4</version>
|
<version>1.14.4</version>
|
||||||
<scope>system</scope>
|
<scope>system</scope>
|
||||||
<systemPath>${basedir}/lib/spigot.jar</systemPath>
|
<systemPath>${basedir}/lib/spigot.jar</systemPath>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.bekvon.bukkit</groupId>
|
<groupId>com.bekvon.bukkit</groupId>
|
||||||
<artifactId>Residence</artifactId>
|
<artifactId>Residence</artifactId>
|
||||||
@ -99,63 +102,63 @@
|
|||||||
<scope>system</scope>
|
<scope>system</scope>
|
||||||
<systemPath>${basedir}/lib/Residence.jar</systemPath>
|
<systemPath>${basedir}/lib/Residence.jar</systemPath>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.Zrips</groupId>
|
<groupId>com.Zrips</groupId>
|
||||||
<artifactId>CMI</artifactId>
|
<artifactId>CMI</artifactId>
|
||||||
<version>8.6.5.0</version>
|
<version>8.6.5.0</version>
|
||||||
<scope>system</scope>
|
<scope>system</scope>
|
||||||
<systemPath>${basedir}/lib/CMI.jar</systemPath>
|
<systemPath>${basedir}/lib/CMI.jar</systemPath>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.sainttx.holograms</groupId>
|
<groupId>com.sainttx.holograms</groupId>
|
||||||
<artifactId>holograms</artifactId>
|
<artifactId>holograms</artifactId>
|
||||||
<version>2.9.1</version>
|
<version>2.9.1</version>
|
||||||
<scope>system</scope>
|
<scope>system</scope>
|
||||||
<systemPath>${basedir}/lib/Holograms.jar</systemPath>
|
<systemPath>${basedir}/lib/Holograms.jar</systemPath>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.gmail.filoghost</groupId>
|
<groupId>com.gmail.filoghost</groupId>
|
||||||
<artifactId>HolographicDisplays</artifactId>
|
<artifactId>HolographicDisplays</artifactId>
|
||||||
<version>6.9.1</version>
|
<version>6.9.1</version>
|
||||||
<scope>system</scope>
|
<scope>system</scope>
|
||||||
<systemPath>${basedir}/lib/HolographicDisplays.jar</systemPath>
|
<systemPath>${basedir}/lib/HolographicDisplays.jar</systemPath>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>io.lumine.xikage</groupId>
|
<groupId>io.lumine.xikage</groupId>
|
||||||
<artifactId>MythicMobs</artifactId>
|
<artifactId>MythicMobs</artifactId>
|
||||||
<version>4.8.0</version>
|
<version>4.8.0</version>
|
||||||
<scope>system</scope>
|
<scope>system</scope>
|
||||||
<systemPath>${basedir}/lib/MythicMobs.jar</systemPath>
|
<systemPath>${basedir}/lib/MythicMobs.jar</systemPath>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.github.MilkBowl</groupId>
|
<groupId>com.github.MilkBowl</groupId>
|
||||||
<artifactId>VaultAPI</artifactId>
|
<artifactId>VaultAPI</artifactId>
|
||||||
<version>1.7</version>
|
<version>1.7</version>
|
||||||
<scope>provided</scope>
|
<scope>provided</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.sk89q.worldguard</groupId>
|
<groupId>com.sk89q.worldguard</groupId>
|
||||||
<artifactId>worldguard-bukkit</artifactId>
|
<artifactId>worldguard-bukkit</artifactId>
|
||||||
<version>7.0.1-SNAPSHOT</version>
|
<version>7.0.2-SNAPSHOT</version>
|
||||||
<scope>provided</scope>
|
<scope>provided</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>net.citizensnpcs</groupId>
|
<groupId>net.citizensnpcs</groupId>
|
||||||
<artifactId>citizens</artifactId>
|
<artifactId>citizens</artifactId>
|
||||||
<version>2.0.25-SNAPSHOT</version>
|
<version>2.0.25-SNAPSHOT</version>
|
||||||
<scope>system</scope>
|
<scope>system</scope>
|
||||||
<systemPath>${basedir}/lib/Citizens.jar</systemPath>
|
<systemPath>${basedir}/lib/Citizens.jar</systemPath>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>me.clip</groupId>
|
<groupId>me.clip</groupId>
|
||||||
<artifactId>placeholderapi</artifactId>
|
<artifactId>placeholderapi</artifactId>
|
||||||
<version>2.10.3</version>
|
<version>2.10.3</version>
|
||||||
<scope>provided</scope>
|
<scope>provided</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>mysql</groupId>
|
<groupId>mysql</groupId>
|
||||||
<artifactId>mysql-connector-java</artifactId>
|
<artifactId>mysql-connector-java</artifactId>
|
||||||
<version>5.1.41</version>
|
<version>5.1.41</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</project>
|
</project>
|
@ -151,6 +151,13 @@ public class MMOCore extends JavaPlugin {
|
|||||||
|
|
||||||
if (Bukkit.getPluginManager().getPlugin("MythicMobs") != null)
|
if (Bukkit.getPluginManager().getPlugin("MythicMobs") != null)
|
||||||
loadManager.registerLoader(new MythicMobsMMOLoader());
|
loadManager.registerLoader(new MythicMobsMMOLoader());
|
||||||
|
|
||||||
|
/*
|
||||||
|
* WorldGuard closes the flag registry after 'onLoad()',
|
||||||
|
* so it must be registered here or it will throw an IllegalStateException
|
||||||
|
*/
|
||||||
|
if(Bukkit.getPluginManager().getPlugin("WorldGuard") != null)
|
||||||
|
flagPlugin = new WorldGuardFlags();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
@ -176,7 +183,6 @@ public class MMOCore extends JavaPlugin {
|
|||||||
|
|
||||||
if (Bukkit.getPluginManager().getPlugin("WorldGuard") != null) {
|
if (Bukkit.getPluginManager().getPlugin("WorldGuard") != null) {
|
||||||
regionHandler = new WorldGuardRegionHandler();
|
regionHandler = new WorldGuardRegionHandler();
|
||||||
flagPlugin = new WorldGuardFlags();
|
|
||||||
getLogger().log(Level.INFO, "Hooked onto WorldGuard");
|
getLogger().log(Level.INFO, "Hooked onto WorldGuard");
|
||||||
} else if (Bukkit.getPluginManager().getPlugin("Residence") != null) {
|
} else if (Bukkit.getPluginManager().getPlugin("Residence") != null) {
|
||||||
flagPlugin = new ResidenceFlags();
|
flagPlugin = new ResidenceFlags();
|
||||||
@ -256,8 +262,8 @@ public class MMOCore extends JavaPlugin {
|
|||||||
/*
|
/*
|
||||||
* enable debug mode for extra debug tools.
|
* enable debug mode for extra debug tools.
|
||||||
*/
|
*/
|
||||||
if (getConfig().getBoolean("debug"))
|
if (getConfig().contains("debug"))
|
||||||
new DebugMode();
|
new DebugMode(getConfig().getInt("debug", 0));
|
||||||
|
|
||||||
if (configManager.overrideVanillaExp = getConfig().getBoolean("override-vanilla-exp"))
|
if (configManager.overrideVanillaExp = getConfig().getBoolean("override-vanilla-exp"))
|
||||||
Bukkit.getPluginManager().registerEvents(new VanillaExperienceOverride(), this);
|
Bukkit.getPluginManager().registerEvents(new VanillaExperienceOverride(), this);
|
||||||
@ -295,7 +301,9 @@ public class MMOCore extends JavaPlugin {
|
|||||||
*/
|
*/
|
||||||
dataProvider.getGuildManager().load();
|
dataProvider.getGuildManager().load();
|
||||||
|
|
||||||
// commands
|
/*
|
||||||
|
* commands
|
||||||
|
*/
|
||||||
try {
|
try {
|
||||||
final Field bukkitCommandMap = Bukkit.getServer().getClass().getDeclaredField("commandMap");
|
final Field bukkitCommandMap = Bukkit.getServer().getClass().getDeclaredField("commandMap");
|
||||||
|
|
||||||
@ -386,6 +394,10 @@ public class MMOCore extends JavaPlugin {
|
|||||||
// experience must be loaded before professions and classes
|
// experience must be loaded before professions and classes
|
||||||
experience.reload();
|
experience.reload();
|
||||||
|
|
||||||
|
// drop tables must be loaded before professions
|
||||||
|
dropTableManager.clear();
|
||||||
|
dropTableManager.reload();
|
||||||
|
|
||||||
professionManager.clear();
|
professionManager.clear();
|
||||||
professionManager.reload();
|
professionManager.reload();
|
||||||
|
|
||||||
@ -394,9 +406,6 @@ public class MMOCore extends JavaPlugin {
|
|||||||
|
|
||||||
inventoryManager = new InventoryManager();
|
inventoryManager = new InventoryManager();
|
||||||
|
|
||||||
dropTableManager.clear();
|
|
||||||
dropTableManager.reload();
|
|
||||||
|
|
||||||
questManager.clear();
|
questManager.clear();
|
||||||
questManager.reload();
|
questManager.reload();
|
||||||
|
|
||||||
@ -414,10 +423,19 @@ public class MMOCore extends JavaPlugin {
|
|||||||
log(Level.INFO, message);
|
log(Level.INFO, message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void debug(int value, String message) {
|
||||||
|
debug(value, Level.INFO, message);
|
||||||
|
}
|
||||||
|
|
||||||
public static void log(Level level, String message) {
|
public static void log(Level level, String message) {
|
||||||
plugin.getLogger().log(level, message);
|
plugin.getLogger().log(level, message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void debug(int value, Level level, String message) {
|
||||||
|
if(DebugMode.level > (value - 1))
|
||||||
|
plugin.getLogger().log(level, message);
|
||||||
|
}
|
||||||
|
|
||||||
public File getJarFile() {
|
public File getJarFile() {
|
||||||
return getFile();
|
return getFile();
|
||||||
}
|
}
|
||||||
|
@ -3,11 +3,11 @@ package net.Indyuce.mmocore.api;
|
|||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
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 net.Indyuce.mmocore.MMOCore;
|
import net.Indyuce.mmocore.MMOCore;
|
||||||
|
import net.asangarin.hexcolors.ColorParse;
|
||||||
import net.mmogroup.mmolib.MMOLib;
|
import net.mmogroup.mmolib.MMOLib;
|
||||||
|
|
||||||
public class ConfigMessage {
|
public class ConfigMessage {
|
||||||
@ -31,14 +31,14 @@ public class ConfigMessage {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void send(CommandSender sender) {
|
public void send(CommandSender sender) {
|
||||||
messages.forEach(line -> sender.sendMessage(ChatColor.translateAlternateColorCodes('&', line)));
|
messages.forEach(line -> sender.sendMessage(new ColorParse('&', line).toChatColor()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void send(Collection<? extends Player> players) {
|
public void send(Collection<? extends Player> players) {
|
||||||
players.forEach(player -> messages.forEach(line -> player.sendMessage(ChatColor.translateAlternateColorCodes('&', MMOCore.plugin.placeholderParser.parse(player, line)))));
|
players.forEach(player -> messages.forEach(line -> player.sendMessage(new ColorParse('&', MMOCore.plugin.placeholderParser.parse(player, line)).toChatColor())));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void sendAsJSon(Player player) {
|
public void sendAsJSon(Player player) {
|
||||||
messages.forEach(line -> MMOLib.plugin.getNMS().sendJson(player, ChatColor.translateAlternateColorCodes('&', line)));
|
messages.forEach(line -> MMOLib.plugin.getNMS().sendJson(player, new ColorParse('&', line).toChatColor()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,6 @@ package net.Indyuce.mmocore.api;
|
|||||||
|
|
||||||
import java.text.DecimalFormat;
|
import java.text.DecimalFormat;
|
||||||
|
|
||||||
import org.bukkit.ChatColor;
|
|
||||||
import org.bukkit.attribute.Attribute;
|
import org.bukkit.attribute.Attribute;
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
import org.bukkit.scheduler.BukkitRunnable;
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
@ -10,6 +9,7 @@ import org.bukkit.scheduler.BukkitRunnable;
|
|||||||
import net.Indyuce.mmocore.MMOCore;
|
import net.Indyuce.mmocore.MMOCore;
|
||||||
import net.Indyuce.mmocore.api.player.PlayerData;
|
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||||
import net.Indyuce.mmocore.api.player.stats.StatType;
|
import net.Indyuce.mmocore.api.player.stats.StatType;
|
||||||
|
import net.asangarin.hexcolors.ColorParse;
|
||||||
import net.md_5.bungee.api.ChatMessageType;
|
import net.md_5.bungee.api.ChatMessageType;
|
||||||
import net.md_5.bungee.api.chat.TextComponent;
|
import net.md_5.bungee.api.chat.TextComponent;
|
||||||
|
|
||||||
@ -31,7 +31,7 @@ public class PlayerActionBar extends BukkitRunnable {
|
|||||||
for (PlayerData data : PlayerData.getAll())
|
for (PlayerData data : PlayerData.getAll())
|
||||||
if (data.isOnline() && !data.getPlayer().isDead() && !data.isCasting() && data.canSeeActionBar()) {
|
if (data.isOnline() && !data.getPlayer().isDead() && !data.isCasting() && data.canSeeActionBar()) {
|
||||||
data.getPlayer().spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText(MMOCore.plugin.placeholderParser.parse(data.getPlayer(),
|
data.getPlayer().spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText(MMOCore.plugin.placeholderParser.parse(data.getPlayer(),
|
||||||
ChatColor.translateAlternateColorCodes('&', new String(format)
|
new ColorParse('&', new String(format)
|
||||||
.replace("{health}", digit.format(data.getPlayer().getHealth()))
|
.replace("{health}", digit.format(data.getPlayer().getHealth()))
|
||||||
.replace("{max_health}", "" + StatType.MAX_HEALTH.format(data.getPlayer().getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue()))
|
.replace("{max_health}", "" + StatType.MAX_HEALTH.format(data.getPlayer().getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue()))
|
||||||
.replace("{mana_icon}", data.getProfess().getManaDisplay().getIcon())
|
.replace("{mana_icon}", data.getProfess().getManaDisplay().getIcon())
|
||||||
@ -45,7 +45,7 @@ public class PlayerActionBar extends BukkitRunnable {
|
|||||||
.replace("{xp}", "" + data.getExperience())
|
.replace("{xp}", "" + data.getExperience())
|
||||||
.replace("{armor}", "" + StatType.ARMOR.format(data.getPlayer().getAttribute(Attribute.GENERIC_ARMOR).getValue()))
|
.replace("{armor}", "" + StatType.ARMOR.format(data.getPlayer().getAttribute(Attribute.GENERIC_ARMOR).getValue()))
|
||||||
.replace("{level}", "" + data.getLevel())
|
.replace("{level}", "" + data.getLevel())
|
||||||
.replace("{name}", data.getPlayer().getDisplayName())))));
|
.replace("{name}", data.getPlayer().getDisplayName())).toChatColor())));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,42 @@
|
|||||||
|
package net.Indyuce.mmocore.api.event;
|
||||||
|
|
||||||
|
import org.bukkit.event.Cancellable;
|
||||||
|
import org.bukkit.event.HandlerList;
|
||||||
|
|
||||||
|
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||||
|
|
||||||
|
public class MMOCommandEvent extends PlayerDataEvent implements Cancellable {
|
||||||
|
private static final HandlerList handlers = new HandlerList();
|
||||||
|
private boolean cancelled;
|
||||||
|
|
||||||
|
private final String command;
|
||||||
|
|
||||||
|
public MMOCommandEvent(PlayerData player, String command) {
|
||||||
|
super(player);
|
||||||
|
|
||||||
|
this.command = command;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCommand() {
|
||||||
|
return command;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public HandlerList getHandlers() {
|
||||||
|
return handlers;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static HandlerList getHandlerList() {
|
||||||
|
return handlers;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isCancelled() {
|
||||||
|
return cancelled;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setCancelled(boolean b) {
|
||||||
|
cancelled = b;
|
||||||
|
}
|
||||||
|
}
|
@ -3,6 +3,7 @@ package net.Indyuce.mmocore.api.event;
|
|||||||
import org.bukkit.event.Cancellable;
|
import org.bukkit.event.Cancellable;
|
||||||
import org.bukkit.event.HandlerList;
|
import org.bukkit.event.HandlerList;
|
||||||
|
|
||||||
|
import net.Indyuce.mmocore.api.experience.EXPSource;
|
||||||
import net.Indyuce.mmocore.api.experience.Profession;
|
import net.Indyuce.mmocore.api.experience.Profession;
|
||||||
import net.Indyuce.mmocore.api.player.PlayerData;
|
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||||
|
|
||||||
@ -11,19 +12,21 @@ public class PlayerExperienceGainEvent extends PlayerDataEvent implements Cancel
|
|||||||
|
|
||||||
// if null, this is main experience
|
// if null, this is main experience
|
||||||
private final Profession profession;
|
private final Profession profession;
|
||||||
|
private final EXPSource source;
|
||||||
|
|
||||||
private int experience;
|
private int experience;
|
||||||
private boolean cancelled;
|
private boolean cancelled;
|
||||||
|
|
||||||
public PlayerExperienceGainEvent(PlayerData player, int experience) {
|
public PlayerExperienceGainEvent(PlayerData player, int experience, EXPSource source) {
|
||||||
this(player, null, experience);
|
this(player, null, experience, source);
|
||||||
}
|
}
|
||||||
|
|
||||||
public PlayerExperienceGainEvent(PlayerData player, Profession profession, int experience) {
|
public PlayerExperienceGainEvent(PlayerData player, Profession profession, int experience, EXPSource source) {
|
||||||
super(player);
|
super(player);
|
||||||
|
|
||||||
this.profession = profession;
|
this.profession = profession;
|
||||||
this.experience = experience;
|
this.experience = experience;
|
||||||
|
this.source = source;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getExperience() {
|
public int getExperience() {
|
||||||
@ -52,6 +55,10 @@ public class PlayerExperienceGainEvent extends PlayerDataEvent implements Cancel
|
|||||||
return profession;
|
return profession;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public EXPSource getSource() {
|
||||||
|
return source;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public HandlerList getHandlers() {
|
public HandlerList getHandlers() {
|
||||||
return handlers;
|
return handlers;
|
||||||
|
@ -4,11 +4,15 @@ import java.util.UUID;
|
|||||||
|
|
||||||
public class Booster {
|
public class Booster {
|
||||||
private final UUID uuid = UUID.randomUUID();
|
private final UUID uuid = UUID.randomUUID();
|
||||||
private final long date = System.currentTimeMillis(), length;
|
private final long date = System.currentTimeMillis();
|
||||||
private final Profession profession;
|
private final Profession profession;
|
||||||
private final double extra;
|
private final double extra;
|
||||||
private final String author;
|
private final String author;
|
||||||
|
|
||||||
|
// length not final because boosters can stack, this allows to reduce the
|
||||||
|
// amount of boosters
|
||||||
|
private long length;
|
||||||
|
|
||||||
public Booster(double extra, long length) {
|
public Booster(double extra, long length) {
|
||||||
this(null, null, extra, length);
|
this(null, null, extra, length);
|
||||||
}
|
}
|
||||||
@ -40,6 +44,10 @@ public class Booster {
|
|||||||
return length;
|
return length;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void addLength(long length) {
|
||||||
|
this.length += length;
|
||||||
|
}
|
||||||
|
|
||||||
public boolean hasProfession() {
|
public boolean hasProfession() {
|
||||||
return profession != null;
|
return profession != null;
|
||||||
}
|
}
|
||||||
@ -67,4 +75,8 @@ public class Booster {
|
|||||||
public String getAuthor() {
|
public String getAuthor() {
|
||||||
return author;
|
return author;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean canStackWith(Booster booster) {
|
||||||
|
return extra == booster.extra && (profession != null ? profession.equals(booster.getProfession()) : booster.getProfession() == null);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,10 @@
|
|||||||
|
package net.Indyuce.mmocore.api.experience;
|
||||||
|
|
||||||
|
public enum EXPSource {
|
||||||
|
SOURCE,
|
||||||
|
COMMAND,
|
||||||
|
VANILLA,
|
||||||
|
QUEST,
|
||||||
|
FISHING,
|
||||||
|
OTHER;
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
package net.Indyuce.mmocore.api.player;
|
package net.Indyuce.mmocore.api.experience;
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
import java.io.File;
|
import java.io.File;
|
@ -17,6 +17,7 @@ import com.google.gson.JsonObject;
|
|||||||
|
|
||||||
import net.Indyuce.mmocore.MMOCore;
|
import net.Indyuce.mmocore.MMOCore;
|
||||||
import net.Indyuce.mmocore.api.ConfigMessage;
|
import net.Indyuce.mmocore.api.ConfigMessage;
|
||||||
|
import net.Indyuce.mmocore.api.event.PlayerExperienceGainEvent;
|
||||||
import net.Indyuce.mmocore.api.event.PlayerLevelUpEvent;
|
import net.Indyuce.mmocore.api.event.PlayerLevelUpEvent;
|
||||||
import net.Indyuce.mmocore.api.player.PlayerData;
|
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||||
import net.Indyuce.mmocore.api.util.math.particle.SmallParticleEffect;
|
import net.Indyuce.mmocore.api.util.math.particle.SmallParticleEffect;
|
||||||
@ -102,29 +103,28 @@ public class PlayerProfessions {
|
|||||||
exp.put(profession.getId(), value);
|
exp.put(profession.getId(), value);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void giveLevels(Profession profession, int value) {
|
public void giveLevels(Profession profession, int value, EXPSource source) {
|
||||||
int total = 0, level = getLevel(profession);
|
int total = 0, level = getLevel(profession);
|
||||||
while (value-- > 0)
|
while (value-- > 0)
|
||||||
total += profession.getExpCurve().getExperience(level + value + 1);
|
total += profession.getExpCurve().getExperience(level + value + 1);
|
||||||
giveExperience(profession, total);
|
giveExperience(profession, total, source);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void giveExperience(Profession profession, int value) {
|
public void giveExperience(Profession profession, int value, EXPSource source) {
|
||||||
giveExperience(profession, value, null);
|
giveExperience(profession, value, null, source);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean hasReachedMaxLevel(Profession profession) {
|
public boolean hasReachedMaxLevel(Profession profession) {
|
||||||
return profession.hasMaxLevel() && getLevel(profession) >= profession.getMaxLevel();
|
return profession.hasMaxLevel() && getLevel(profession) >= profession.getMaxLevel();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void giveExperience(Profession profession, int value, Location loc) {
|
public void giveExperience(Profession profession, int value, Location loc, EXPSource source) {
|
||||||
if(hasReachedMaxLevel(profession)) {
|
if(hasReachedMaxLevel(profession)) {
|
||||||
setExperience(profession, 0);
|
setExperience(profession, 0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
value = MMOCore.plugin.boosterManager.calculateExp(profession, value);
|
value = MMOCore.plugin.boosterManager.calculateExp(profession, value);
|
||||||
exp.put(profession.getId(), exp.containsKey(profession.getId()) ? exp.get(profession.getId()) + value : value);
|
|
||||||
|
|
||||||
// display hologram
|
// display hologram
|
||||||
if (MMOCore.plugin.getConfig().getBoolean("display-exp-holograms"))
|
if (MMOCore.plugin.getConfig().getBoolean("display-exp-holograms"))
|
||||||
@ -132,6 +132,12 @@ public class PlayerProfessions {
|
|||||||
MMOCore.plugin.hologramSupport.displayIndicator(loc.add(.5, 1.5, .5),
|
MMOCore.plugin.hologramSupport.displayIndicator(loc.add(.5, 1.5, .5),
|
||||||
MMOCore.plugin.configManager.getSimpleMessage("exp-hologram", "exp", "" + value).message(), playerData.getPlayer());
|
MMOCore.plugin.configManager.getSimpleMessage("exp-hologram", "exp", "" + value).message(), playerData.getPlayer());
|
||||||
|
|
||||||
|
PlayerExperienceGainEvent event = new PlayerExperienceGainEvent(playerData, profession, value, source);
|
||||||
|
Bukkit.getPluginManager().callEvent(event);
|
||||||
|
if (event.isCancelled())
|
||||||
|
return;
|
||||||
|
|
||||||
|
exp.put(profession.getId(), exp.containsKey(profession.getId()) ? exp.get(profession.getId()) + value : value);
|
||||||
int needed, exp, level, oldLevel = getLevel(profession);
|
int needed, exp, level, oldLevel = getLevel(profession);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -155,7 +161,7 @@ public class PlayerProfessions {
|
|||||||
if (check) {
|
if (check) {
|
||||||
Bukkit.getPluginManager().callEvent(new PlayerLevelUpEvent(playerData, profession, oldLevel, level));
|
Bukkit.getPluginManager().callEvent(new PlayerLevelUpEvent(playerData, profession, oldLevel, level));
|
||||||
new SmallParticleEffect(playerData.getPlayer(), Particle.SPELL_INSTANT);
|
new SmallParticleEffect(playerData.getPlayer(), Particle.SPELL_INSTANT);
|
||||||
new ConfigMessage("profession-level-up").addPlaceholders("level", "" + (level), "profession", profession.getName())
|
new ConfigMessage("profession-level-up").addPlaceholders("level", "" + level, "profession", profession.getName())
|
||||||
.send(playerData.getPlayer());
|
.send(playerData.getPlayer());
|
||||||
playerData.getPlayer().playSound(playerData.getPlayer().getLocation(), Sound.ENTITY_PLAYER_LEVELUP, 1, 2);
|
playerData.getPlayer().playSound(playerData.getPlayer().getLocation(), Sound.ENTITY_PLAYER_LEVELUP, 1, 2);
|
||||||
playerData.getStats().updateStats();
|
playerData.getStats().updateStats();
|
||||||
|
@ -11,7 +11,6 @@ import org.bukkit.potion.PotionType;
|
|||||||
|
|
||||||
import net.Indyuce.mmocore.MMOCore;
|
import net.Indyuce.mmocore.MMOCore;
|
||||||
import net.Indyuce.mmocore.api.load.PostLoadObject;
|
import net.Indyuce.mmocore.api.load.PostLoadObject;
|
||||||
import net.Indyuce.mmocore.api.player.ExpCurve;
|
|
||||||
import net.Indyuce.mmocore.api.util.math.formula.LinearValue;
|
import net.Indyuce.mmocore.api.util.math.formula.LinearValue;
|
||||||
import net.mmogroup.mmolib.MMOLib;
|
import net.mmogroup.mmolib.MMOLib;
|
||||||
import net.mmogroup.mmolib.api.MMOLineConfig;
|
import net.mmogroup.mmolib.api.MMOLineConfig;
|
||||||
|
@ -33,7 +33,7 @@ public class SmeltItemExperienceSource extends SpecificExperienceSource<ItemStac
|
|||||||
@EventHandler(priority = EventPriority.HIGH)
|
@EventHandler(priority = EventPriority.HIGH)
|
||||||
public void a(BlockCookEvent event) {
|
public void a(BlockCookEvent event) {
|
||||||
if (!event.isCancelled()) {
|
if (!event.isCancelled()) {
|
||||||
Optional<Player> player = getNearbyPlayer(event.getBlock().getLocation(), 10);
|
Optional<Player> player = getNearestPlayer(event.getBlock().getLocation(), 10);
|
||||||
if (!player.isPresent())
|
if (!player.isPresent())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -50,9 +50,20 @@ public class SmeltItemExperienceSource extends SpecificExperienceSource<ItemStac
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
private Optional<Player> getNearbyPlayer(Location loc, double d) {
|
private Optional<Player> getNearestPlayer(Location loc, double d) {
|
||||||
double d2 = d * d;
|
final double d2 = d * d;
|
||||||
return loc.getWorld().getPlayers().stream().filter(player -> player.getLocation().distanceSquared(loc) < d2).findAny();
|
final Player[] nearby = loc.getWorld().getPlayers().stream()
|
||||||
|
.filter(player -> player.getLocation().distanceSquared(loc) < d2).toArray(Player[]::new);
|
||||||
|
Player selected = null;
|
||||||
|
double lastDist = d2;
|
||||||
|
for(Player p : nearby) {
|
||||||
|
double currDist = p.getLocation().distance(loc);
|
||||||
|
if(currDist < lastDist) {
|
||||||
|
lastDist = currDist;
|
||||||
|
selected = p;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Optional.ofNullable(selected);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -2,6 +2,7 @@ package net.Indyuce.mmocore.api.experience.source.type;
|
|||||||
|
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
|
|
||||||
|
import net.Indyuce.mmocore.api.experience.EXPSource;
|
||||||
import net.Indyuce.mmocore.api.experience.Profession;
|
import net.Indyuce.mmocore.api.experience.Profession;
|
||||||
import net.Indyuce.mmocore.api.player.PlayerData;
|
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||||
import net.Indyuce.mmocore.api.player.profess.PlayerClass;
|
import net.Indyuce.mmocore.api.player.profess.PlayerClass;
|
||||||
@ -46,8 +47,8 @@ public abstract class ExperienceSource<T> {
|
|||||||
|
|
||||||
public void giveExperience(PlayerData player, int amount, Location location) {
|
public void giveExperience(PlayerData player, int amount, Location location) {
|
||||||
if (hasProfession())
|
if (hasProfession())
|
||||||
player.getCollectionSkills().giveExperience(profession, amount, location == null ? player.getPlayer().getLocation() : location);
|
player.getCollectionSkills().giveExperience(profession, amount, location == null ? player.getPlayer().getLocation() : location, EXPSource.SOURCE);
|
||||||
else
|
else
|
||||||
player.giveExperience(amount, location == null ? player.getPlayer().getLocation() : location);
|
player.giveExperience(amount, location == null ? player.getPlayer().getLocation() : location, EXPSource.SOURCE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -29,6 +29,7 @@ import net.Indyuce.mmocore.api.event.PlayerCastSkillEvent;
|
|||||||
import net.Indyuce.mmocore.api.event.PlayerExperienceGainEvent;
|
import net.Indyuce.mmocore.api.event.PlayerExperienceGainEvent;
|
||||||
import net.Indyuce.mmocore.api.event.PlayerLevelUpEvent;
|
import net.Indyuce.mmocore.api.event.PlayerLevelUpEvent;
|
||||||
import net.Indyuce.mmocore.api.event.PlayerRegenResourceEvent;
|
import net.Indyuce.mmocore.api.event.PlayerRegenResourceEvent;
|
||||||
|
import net.Indyuce.mmocore.api.experience.EXPSource;
|
||||||
import net.Indyuce.mmocore.api.experience.PlayerProfessions;
|
import net.Indyuce.mmocore.api.experience.PlayerProfessions;
|
||||||
import net.Indyuce.mmocore.api.player.attribute.PlayerAttribute;
|
import net.Indyuce.mmocore.api.player.attribute.PlayerAttribute;
|
||||||
import net.Indyuce.mmocore.api.player.attribute.PlayerAttributes;
|
import net.Indyuce.mmocore.api.player.attribute.PlayerAttributes;
|
||||||
@ -245,11 +246,11 @@ public class PlayerData extends OfflinePlayerData {
|
|||||||
getStats().updateStats();
|
getStats().updateStats();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void giveLevels(int value) {
|
public void giveLevels(int value, EXPSource source) {
|
||||||
int total = 0;
|
int total = 0;
|
||||||
while (value-- > 0)
|
while (value-- > 0)
|
||||||
total += getProfess().getExpCurve().getExperience(getLevel() + value + 1);
|
total += getProfess().getExpCurve().getExperience(getLevel() + value + 1);
|
||||||
giveExperience(total);
|
giveExperience(total, source);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setExperience(int value) {
|
public void setExperience(int value) {
|
||||||
@ -422,11 +423,11 @@ public class PlayerData extends OfflinePlayerData {
|
|||||||
return getProfess().getMaxLevel() > 0 && getLevel() >= getProfess().getMaxLevel();
|
return getProfess().getMaxLevel() > 0 && getLevel() >= getProfess().getMaxLevel();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void giveExperience(int value) {
|
public void giveExperience(int value, EXPSource source) {
|
||||||
giveExperience(value, null);
|
giveExperience(value, null, source);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void giveExperience(int value, Location loc) {
|
public void giveExperience(int value, Location loc, EXPSource source) {
|
||||||
if (hasReachedMaxLevel()) {
|
if (hasReachedMaxLevel()) {
|
||||||
setExperience(0);
|
setExperience(0);
|
||||||
return;
|
return;
|
||||||
@ -441,7 +442,7 @@ public class PlayerData extends OfflinePlayerData {
|
|||||||
value = MMOCore.plugin.boosterManager.calculateExp(null, value);
|
value = MMOCore.plugin.boosterManager.calculateExp(null, value);
|
||||||
value *= 1 + getStats().getStat(StatType.ADDITIONAL_EXPERIENCE) / 100;
|
value *= 1 + getStats().getStat(StatType.ADDITIONAL_EXPERIENCE) / 100;
|
||||||
|
|
||||||
PlayerExperienceGainEvent event = new PlayerExperienceGainEvent(this, value);
|
PlayerExperienceGainEvent event = new PlayerExperienceGainEvent(this, value, source);
|
||||||
Bukkit.getPluginManager().callEvent(event);
|
Bukkit.getPluginManager().callEvent(event);
|
||||||
if (event.isCancelled())
|
if (event.isCancelled())
|
||||||
return;
|
return;
|
||||||
|
@ -2,15 +2,13 @@ package net.Indyuce.mmocore.api.player.attribute;
|
|||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Map.Entry;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.apache.commons.lang.Validate;
|
import org.apache.commons.lang.Validate;
|
||||||
import org.bukkit.ChatColor;
|
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
|
|
||||||
import net.Indyuce.mmocore.MMOCore;
|
import net.Indyuce.mmocore.MMOCore;
|
||||||
|
import net.asangarin.hexcolors.ColorParse;
|
||||||
import net.mmogroup.mmolib.api.stat.modifier.StatModifier;
|
import net.mmogroup.mmolib.api.stat.modifier.StatModifier;
|
||||||
|
|
||||||
public class PlayerAttribute {
|
public class PlayerAttribute {
|
||||||
@ -18,8 +16,8 @@ public class PlayerAttribute {
|
|||||||
private final int max;
|
private final int max;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* used to store stats using StatType, but attributes also need to access non
|
* used to store stats using StatType, but attributes also need to access
|
||||||
* basic MMOCore stats hence the string maps keys
|
* non basic MMOCore stats hence the string maps keys
|
||||||
*/
|
*/
|
||||||
private final Map<String, StatModifier> buffs = new HashMap<>();
|
private final Map<String, StatModifier> buffs = new HashMap<>();
|
||||||
|
|
||||||
@ -38,8 +36,7 @@ public class PlayerAttribute {
|
|||||||
String stat = key.toUpperCase().replace("-", "_").replace(" ", "_");
|
String stat = key.toUpperCase().replace("-", "_").replace(" ", "_");
|
||||||
buffs.put(stat, new StatModifier(config.getString("buff." + key)));
|
buffs.put(stat, new StatModifier(config.getString("buff." + key)));
|
||||||
} catch (IllegalArgumentException exception) {
|
} catch (IllegalArgumentException exception) {
|
||||||
MMOCore.log(Level.WARNING,
|
MMOCore.log(Level.WARNING, "Could not load buff '" + key + "' from attribute '" + id + "': " + exception.getMessage());
|
||||||
"Could not load buff '" + key + "' from attribute '" + id + "': " + exception.getMessage());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -48,7 +45,7 @@ public class PlayerAttribute {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public String getName() {
|
public String getName() {
|
||||||
return ChatColor.translateAlternateColorCodes('&', name);
|
return new ColorParse('&', name).toChatColor();
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean hasMax() {
|
public boolean hasMax() {
|
||||||
@ -59,7 +56,7 @@ public class PlayerAttribute {
|
|||||||
return max;
|
return max;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Set<Entry<String, StatModifier>> getBuffs() {
|
public Map<String, StatModifier> getBuffs() {
|
||||||
return buffs.entrySet();
|
return buffs;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -193,8 +193,8 @@ public class PlayerAttributes {
|
|||||||
public void update() {
|
public void update() {
|
||||||
PlayerAttribute attribute = MMOCore.plugin.attributeManager.get(id);
|
PlayerAttribute attribute = MMOCore.plugin.attributeManager.get(id);
|
||||||
int total = getTotal();
|
int total = getTotal();
|
||||||
attribute.getBuffs().forEach(buff -> data.getStats().getInstance(buff.getKey()).addModifier("attribute." + attribute.getId(),
|
attribute.getBuffs()
|
||||||
buff.getValue().multiply(total)));
|
.forEach((key, buff) -> data.getStats().getInstance(key).addModifier("attribute." + attribute.getId(), buff.multiply(total)));
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getId() {
|
public String getId() {
|
||||||
|
@ -13,7 +13,6 @@ import java.util.UUID;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.apache.commons.lang.Validate;
|
import org.apache.commons.lang.Validate;
|
||||||
import org.bukkit.ChatColor;
|
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.Particle;
|
import org.bukkit.Particle;
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
@ -25,9 +24,9 @@ import com.mojang.authlib.GameProfile;
|
|||||||
import com.mojang.authlib.properties.Property;
|
import com.mojang.authlib.properties.Property;
|
||||||
|
|
||||||
import net.Indyuce.mmocore.MMOCore;
|
import net.Indyuce.mmocore.MMOCore;
|
||||||
|
import net.Indyuce.mmocore.api.experience.ExpCurve;
|
||||||
import net.Indyuce.mmocore.api.experience.source.type.ExperienceSource;
|
import net.Indyuce.mmocore.api.experience.source.type.ExperienceSource;
|
||||||
import net.Indyuce.mmocore.api.load.PostLoadObject;
|
import net.Indyuce.mmocore.api.load.PostLoadObject;
|
||||||
import net.Indyuce.mmocore.api.player.ExpCurve;
|
|
||||||
import net.Indyuce.mmocore.api.player.profess.event.EventTrigger;
|
import net.Indyuce.mmocore.api.player.profess.event.EventTrigger;
|
||||||
import net.Indyuce.mmocore.api.player.profess.resource.ManaDisplayOptions;
|
import net.Indyuce.mmocore.api.player.profess.resource.ManaDisplayOptions;
|
||||||
import net.Indyuce.mmocore.api.player.profess.resource.PlayerResource;
|
import net.Indyuce.mmocore.api.player.profess.resource.PlayerResource;
|
||||||
@ -38,6 +37,8 @@ import net.Indyuce.mmocore.api.skill.Skill.SkillInfo;
|
|||||||
import net.Indyuce.mmocore.api.util.MMOCoreUtils;
|
import net.Indyuce.mmocore.api.util.MMOCoreUtils;
|
||||||
import net.Indyuce.mmocore.api.util.math.formula.LinearValue;
|
import net.Indyuce.mmocore.api.util.math.formula.LinearValue;
|
||||||
import net.Indyuce.mmocore.api.util.math.particle.CastingParticle;
|
import net.Indyuce.mmocore.api.util.math.particle.CastingParticle;
|
||||||
|
import net.asangarin.hexcolors.ColorParse;
|
||||||
|
import net.md_5.bungee.api.ChatColor;
|
||||||
import net.mmogroup.mmolib.api.MMOLineConfig;
|
import net.mmogroup.mmolib.api.MMOLineConfig;
|
||||||
import net.mmogroup.mmolib.version.VersionMaterial;
|
import net.mmogroup.mmolib.version.VersionMaterial;
|
||||||
|
|
||||||
@ -64,7 +65,7 @@ public class PlayerClass extends PostLoadObject {
|
|||||||
|
|
||||||
this.id = id.toUpperCase().replace("-", "_").replace(" ", "_");
|
this.id = id.toUpperCase().replace("-", "_").replace(" ", "_");
|
||||||
|
|
||||||
name = ChatColor.translateAlternateColorCodes('&', config.getString("display.name"));
|
name = new ColorParse('&', config.getString("display.name")).toChatColor();
|
||||||
icon = MMOCoreUtils.readIcon(config.getString("display.item", "BARRIER"));
|
icon = MMOCoreUtils.readIcon(config.getString("display.item", "BARRIER"));
|
||||||
|
|
||||||
if (config.contains("display.texture") && icon.getType() == VersionMaterial.PLAYER_HEAD.toMaterial())
|
if (config.contains("display.texture") && icon.getType() == VersionMaterial.PLAYER_HEAD.toMaterial())
|
||||||
@ -76,20 +77,23 @@ public class PlayerClass extends PostLoadObject {
|
|||||||
gp.getProperties().put("textures", new Property("textures", config.getString("display.texture")));
|
gp.getProperties().put("textures", new Property("textures", config.getString("display.texture")));
|
||||||
profileField.set(meta, gp);
|
profileField.set(meta, gp);
|
||||||
icon.setItemMeta(meta);
|
icon.setItemMeta(meta);
|
||||||
} catch (IllegalArgumentException | IllegalAccessException | NoSuchFieldException | SecurityException exception) {
|
} catch (IllegalArgumentException | IllegalAccessException | NoSuchFieldException
|
||||||
|
| SecurityException exception) {
|
||||||
throw new IllegalArgumentException("Could not apply playerhead texture: " + exception.getMessage());
|
throw new IllegalArgumentException("Could not apply playerhead texture: " + exception.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
for (String string : config.getStringList("display.lore"))
|
for (String string : config.getStringList("display.lore"))
|
||||||
description.add(ChatColor.GRAY + ChatColor.translateAlternateColorCodes('&', string));
|
description.add(ChatColor.GRAY + new ColorParse('&', string).toChatColor());
|
||||||
for (String string : config.getStringList("display.attribute-lore"))
|
for (String string : config.getStringList("display.attribute-lore"))
|
||||||
attrDescription.add(ChatColor.GRAY + ChatColor.translateAlternateColorCodes('&', string));
|
attrDescription.add(ChatColor.GRAY + new ColorParse('&', string).toChatColor());
|
||||||
manaDisplay = config.contains("mana") ? new ManaDisplayOptions(config.getConfigurationSection("mana")) : ManaDisplayOptions.DEFAULT;
|
manaDisplay = config.contains("mana") ? new ManaDisplayOptions(config.getConfigurationSection("mana"))
|
||||||
|
: ManaDisplayOptions.DEFAULT;
|
||||||
maxLevel = config.getInt("max-level");
|
maxLevel = config.getInt("max-level");
|
||||||
displayOrder = config.getInt("display.order");
|
displayOrder = config.getInt("display.order");
|
||||||
|
|
||||||
expCurve = config.contains("exp-curve")
|
expCurve = config.contains("exp-curve")
|
||||||
? MMOCore.plugin.experience.getOrThrow(config.get("exp-curve").toString().toLowerCase().replace("_", "-").replace(" ", "-"))
|
? MMOCore.plugin.experience.getOrThrow(
|
||||||
|
config.get("exp-curve").toString().toLowerCase().replace("_", "-").replace(" ", "-"))
|
||||||
: ExpCurve.DEFAULT;
|
: ExpCurve.DEFAULT;
|
||||||
|
|
||||||
if (config.contains("attributes"))
|
if (config.contains("attributes"))
|
||||||
@ -98,27 +102,30 @@ public class PlayerClass extends PostLoadObject {
|
|||||||
stats.put(StatType.valueOf(key.toUpperCase().replace("-", "_")),
|
stats.put(StatType.valueOf(key.toUpperCase().replace("-", "_")),
|
||||||
new LinearValue(config.getConfigurationSection("attributes." + key)));
|
new LinearValue(config.getConfigurationSection("attributes." + key)));
|
||||||
} catch (IllegalArgumentException exception) {
|
} catch (IllegalArgumentException exception) {
|
||||||
MMOCore.plugin.getLogger().log(Level.WARNING,
|
MMOCore.plugin.getLogger().log(Level.WARNING, "Could not load stat info '" + key + "' from class '"
|
||||||
"Could not load stat info '" + key + "' from class '" + id + "': " + exception.getMessage());
|
+ id + "': " + exception.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config.contains("skills"))
|
if (config.contains("skills"))
|
||||||
for (String key : config.getConfigurationSection("skills").getKeys(false))
|
for (String key : config.getConfigurationSection("skills").getKeys(false))
|
||||||
try {
|
try {
|
||||||
Validate.isTrue(MMOCore.plugin.skillManager.has(key), "Could not find skill " + key);
|
Validate.isTrue(MMOCore.plugin.skillManager.has(key), "Could not find skill " + key);
|
||||||
skills.put(key.toUpperCase(), MMOCore.plugin.skillManager.get(key).newSkillInfo(config.getConfigurationSection("skills." + key)));
|
skills.put(key.toUpperCase(), MMOCore.plugin.skillManager.get(key)
|
||||||
|
.newSkillInfo(config.getConfigurationSection("skills." + key)));
|
||||||
} catch (IllegalArgumentException exception) {
|
} catch (IllegalArgumentException exception) {
|
||||||
MMOCore.plugin.getLogger().log(Level.WARNING,
|
MMOCore.plugin.getLogger().log(Level.WARNING, "Could not load skill info '" + key + "' from class '"
|
||||||
"Could not load skill info '" + key + "' from class '" + id + "': " + exception.getMessage());
|
+ id + "': " + exception.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
castParticle = config.contains("cast-particle") ? new CastingParticle(config.getConfigurationSection("cast-particle"))
|
castParticle = config.contains("cast-particle")
|
||||||
|
? new CastingParticle(config.getConfigurationSection("cast-particle"))
|
||||||
: new CastingParticle(Particle.SPELL_INSTANT);
|
: new CastingParticle(Particle.SPELL_INSTANT);
|
||||||
|
|
||||||
if (config.contains("options"))
|
if (config.contains("options"))
|
||||||
for (String key : config.getConfigurationSection("options").getKeys(false))
|
for (String key : config.getConfigurationSection("options").getKeys(false))
|
||||||
try {
|
try {
|
||||||
setOption(ClassOption.valueOf(key.toUpperCase().replace("-", "_").replace(" ", "_")), config.getBoolean("options." + key));
|
setOption(ClassOption.valueOf(key.toUpperCase().replace("-", "_").replace(" ", "_")),
|
||||||
|
config.getBoolean("options." + key));
|
||||||
} catch (IllegalArgumentException exception) {
|
} catch (IllegalArgumentException exception) {
|
||||||
MMOCore.plugin.getLogger().log(Level.WARNING,
|
MMOCore.plugin.getLogger().log(Level.WARNING,
|
||||||
"Could not load option '" + key + "' from class '" + key + "': " + exception.getMessage());
|
"Could not load option '" + key + "' from class '" + key + "': " + exception.getMessage());
|
||||||
@ -127,12 +134,13 @@ public class PlayerClass extends PostLoadObject {
|
|||||||
if (config.contains("main-exp-sources"))
|
if (config.contains("main-exp-sources"))
|
||||||
for (String key : config.getStringList("main-exp-sources"))
|
for (String key : config.getStringList("main-exp-sources"))
|
||||||
try {
|
try {
|
||||||
ExperienceSource<?> source = MMOCore.plugin.loadManager.loadExperienceSource(new MMOLineConfig(key), null);
|
ExperienceSource<?> source = MMOCore.plugin.loadManager.loadExperienceSource(new MMOLineConfig(key),
|
||||||
|
null);
|
||||||
source.setClass(this);
|
source.setClass(this);
|
||||||
MMOCore.plugin.professionManager.registerExpSource(source);
|
MMOCore.plugin.professionManager.registerExpSource(source);
|
||||||
} catch (IllegalArgumentException exception) {
|
} catch (IllegalArgumentException exception) {
|
||||||
MMOCore.plugin.getLogger().log(Level.WARNING,
|
MMOCore.plugin.getLogger().log(Level.WARNING, "Could not load exp source '" + key + "' from class '"
|
||||||
"Could not load exp source '" + key + "' from class '" + id + "': " + exception.getMessage());
|
+ id + "': " + exception.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config.contains("triggers"))
|
if (config.contains("triggers"))
|
||||||
@ -146,17 +154,17 @@ public class PlayerClass extends PostLoadObject {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* must make sure all the resourceHandlers are registered when the
|
* must make sure all the resourceHandlers are registered when the placer class
|
||||||
* placer class is initialized.
|
* is initialized.
|
||||||
*/
|
*/
|
||||||
for (PlayerResource resource : PlayerResource.values()) {
|
for (PlayerResource resource : PlayerResource.values()) {
|
||||||
if (config.isConfigurationSection("resource." + resource.name().toLowerCase()))
|
if (config.isConfigurationSection("resource." + resource.name().toLowerCase()))
|
||||||
try {
|
try {
|
||||||
resourceHandlers.put(resource,
|
resourceHandlers.put(resource, new ResourceHandler(resource,
|
||||||
new ResourceHandler(resource, config.getConfigurationSection("resource." + resource.name().toLowerCase())));
|
config.getConfigurationSection("resource." + resource.name().toLowerCase())));
|
||||||
} catch (IllegalArgumentException exception) {
|
} catch (IllegalArgumentException exception) {
|
||||||
MMOCore.log(Level.WARNING, "[PlayerClasses:" + id + "] Could not load special resource regen for " + resource.name() + ": "
|
MMOCore.log(Level.WARNING, "[PlayerClasses:" + id + "] Could not load special resource regen for "
|
||||||
+ exception.getMessage());
|
+ resource.name() + ": " + exception.getMessage());
|
||||||
resourceHandlers.put(resource, new ResourceHandler(resource));
|
resourceHandlers.put(resource, new ResourceHandler(resource));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -191,11 +199,13 @@ public class PlayerClass extends PostLoadObject {
|
|||||||
if (config.contains("subclasses"))
|
if (config.contains("subclasses"))
|
||||||
for (String key : config.getConfigurationSection("subclasses").getKeys(false))
|
for (String key : config.getConfigurationSection("subclasses").getKeys(false))
|
||||||
try {
|
try {
|
||||||
subclasses.add(new Subclass(MMOCore.plugin.classManager.getOrThrow(key.toUpperCase().replace("-", "_").replace(" ", "_")),
|
subclasses.add(new Subclass(
|
||||||
|
MMOCore.plugin.classManager
|
||||||
|
.getOrThrow(key.toUpperCase().replace("-", "_").replace(" ", "_")),
|
||||||
config.getInt("subclasses." + key)));
|
config.getInt("subclasses." + key)));
|
||||||
} catch (IllegalArgumentException exception) {
|
} catch (IllegalArgumentException exception) {
|
||||||
MMOCore.plugin.getLogger().log(Level.WARNING,
|
MMOCore.plugin.getLogger().log(Level.WARNING, "Could not load subclass '" + key + "' from class '"
|
||||||
"Could not load subclass '" + key + "' from class '" + getId() + "': " + exception.getMessage());
|
+ getId() + "': " + exception.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@ package net.Indyuce.mmocore.api.player.profess.event.trigger;
|
|||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
|
|
||||||
|
import net.Indyuce.mmocore.MMOCore;
|
||||||
import net.Indyuce.mmocore.api.event.PlayerLevelUpEvent;
|
import net.Indyuce.mmocore.api.event.PlayerLevelUpEvent;
|
||||||
import net.Indyuce.mmocore.api.player.PlayerData;
|
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||||
import net.Indyuce.mmocore.api.player.profess.PlayerClass;
|
import net.Indyuce.mmocore.api.player.profess.PlayerClass;
|
||||||
@ -22,9 +23,11 @@ public class LevelUpEventTrigger implements EventTriggerHandler {
|
|||||||
|
|
||||||
if(event.hasProfession()) {
|
if(event.hasProfession()) {
|
||||||
String prof = event.getProfession().getId().toLowerCase();
|
String prof = event.getProfession().getId().toLowerCase();
|
||||||
|
MMOCore.debug(2, "[DEBUG] Looking for triggers: level-up-" + prof);
|
||||||
processTrigger(player, profess, "level-up-" + prof);
|
processTrigger(player, profess, "level-up-" + prof);
|
||||||
processTrigger(player, profess, "level-up-" + prof + "-" + event.getNewLevel());
|
processTrigger(player, profess, "level-up-" + prof + "-" + event.getNewLevel());
|
||||||
} else {
|
} else {
|
||||||
|
MMOCore.debug(2, "[DEBUG] Normal level up trigger.");
|
||||||
processTrigger(player, profess, "level-up");
|
processTrigger(player, profess, "level-up");
|
||||||
processTrigger(player, profess, "level-up-" + event.getNewLevel());
|
processTrigger(player, profess, "level-up-" + event.getNewLevel());
|
||||||
if(profess.getMaxLevel() == event.getNewLevel())
|
if(profess.getMaxLevel() == event.getNewLevel())
|
||||||
|
@ -1,9 +1,10 @@
|
|||||||
package net.Indyuce.mmocore.api.player.profess.resource;
|
package net.Indyuce.mmocore.api.player.profess.resource;
|
||||||
|
|
||||||
import org.apache.commons.lang.Validate;
|
import org.apache.commons.lang.Validate;
|
||||||
import org.bukkit.ChatColor;
|
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
|
|
||||||
|
import net.asangarin.hexcolors.ColorParse;
|
||||||
|
import net.md_5.bungee.api.ChatColor;
|
||||||
import net.mmogroup.mmolib.api.util.AltChar;
|
import net.mmogroup.mmolib.api.util.AltChar;
|
||||||
|
|
||||||
public class ManaDisplayOptions {
|
public class ManaDisplayOptions {
|
||||||
@ -21,15 +22,15 @@ public class ManaDisplayOptions {
|
|||||||
Validate.notNull(name, "Could not load mana name");
|
Validate.notNull(name, "Could not load mana name");
|
||||||
|
|
||||||
Validate.notNull(config.getConfigurationSection("color"), "Could not find mana color config");
|
Validate.notNull(config.getConfigurationSection("color"), "Could not find mana color config");
|
||||||
full = ChatColor.valueOf(config.getString("color.full", "NO_INPUT").toUpperCase().replace("-", "_").replace(" ", "_"));
|
full = ColorParse.getColor(config.getString("color.full", "NO_INPUT"));
|
||||||
half = ChatColor.valueOf(config.getString("color.half", "NO_INPUT").toUpperCase().replace("-", "_").replace(" ", "_"));
|
half = ColorParse.getColor(config.getString("color.half", "NO_INPUT"));
|
||||||
empty = ChatColor.valueOf(config.getString("color.empty", "NO_INPUT").toUpperCase().replace("-", "_").replace(" ", "_"));
|
empty = ColorParse.getColor(config.getString("color.empty", "NO_INPUT"));
|
||||||
|
|
||||||
String format = config.getString("char", "");
|
String format = config.getString("char", "");
|
||||||
Validate.notEmpty(format, "Could not load mana bar character");
|
Validate.notEmpty(format, "Could not load mana bar character");
|
||||||
barCharacter = format.charAt(0);
|
barCharacter = format.charAt(0);
|
||||||
|
|
||||||
icon = ChatColor.translateAlternateColorCodes('&', config.getString("icon", ""));
|
icon = new ColorParse('&', config.getString("icon", "")).toChatColor();
|
||||||
Validate.notEmpty(format, "Could not load mana action bar icon");
|
Validate.notEmpty(format, "Could not load mana action bar icon");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -54,6 +54,10 @@ public class Party {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void removeMember(PlayerData data) {
|
public void removeMember(PlayerData data) {
|
||||||
|
removeMember(data, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void removeMember(PlayerData data, boolean notify) {
|
||||||
if (data.isOnline() && data.getPlayer().getOpenInventory() != null
|
if (data.isOnline() && data.getPlayer().getOpenInventory() != null
|
||||||
&& data.getPlayer().getOpenInventory().getTopInventory().getHolder() instanceof PartyViewInventory)
|
&& data.getPlayer().getOpenInventory().getTopInventory().getHolder() instanceof PartyViewInventory)
|
||||||
InventoryManager.PARTY_CREATION.newInventory(data).open();
|
InventoryManager.PARTY_CREATION.newInventory(data).open();
|
||||||
@ -72,7 +76,7 @@ public class Party {
|
|||||||
// transfer ownership
|
// transfer ownership
|
||||||
if (owner.equals(data)) {
|
if (owner.equals(data)) {
|
||||||
owner = members.get(0);
|
owner = members.get(0);
|
||||||
MMOCore.plugin.configManager.getSimpleMessage("transfer-party-ownership").send(owner.getPlayer());
|
if(notify) MMOCore.plugin.configManager.getSimpleMessage("transfer-party-ownership").send(owner.getPlayer());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -52,6 +52,9 @@ public enum StatType {
|
|||||||
WEAPON_DAMAGE,
|
WEAPON_DAMAGE,
|
||||||
SKILL_DAMAGE,
|
SKILL_DAMAGE,
|
||||||
|
|
||||||
|
PVP_DAMAGE,
|
||||||
|
PVE_DAMAGE,
|
||||||
|
|
||||||
DAMAGE_REDUCTION,
|
DAMAGE_REDUCTION,
|
||||||
PHYSICAL_DAMAGE_REDUCTION,
|
PHYSICAL_DAMAGE_REDUCTION,
|
||||||
PROJECTILE_DAMAGE_REDUCTION,
|
PROJECTILE_DAMAGE_REDUCTION,
|
||||||
|
@ -1,9 +1,8 @@
|
|||||||
package net.Indyuce.mmocore.api.quest;
|
package net.Indyuce.mmocore.api.quest;
|
||||||
|
|
||||||
import org.bukkit.ChatColor;
|
|
||||||
|
|
||||||
import net.Indyuce.mmocore.api.player.PlayerData;
|
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||||
import net.Indyuce.mmocore.api.quest.objective.Objective;
|
import net.Indyuce.mmocore.api.quest.objective.Objective;
|
||||||
|
import net.asangarin.hexcolors.ColorParse;
|
||||||
|
|
||||||
public class QuestProgress {
|
public class QuestProgress {
|
||||||
private final Quest quest;
|
private final Quest quest;
|
||||||
@ -65,6 +64,6 @@ public class QuestProgress {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public String getFormattedLore() {
|
public String getFormattedLore() {
|
||||||
return ChatColor.translateAlternateColorCodes('&', objectiveProgress.formatLore(objectiveProgress.getObjective().getDefaultLore()));
|
return new ColorParse('&', objectiveProgress.formatLore(objectiveProgress.getObjective().getDefaultLore())).toChatColor();
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -3,6 +3,7 @@ package net.Indyuce.mmocore.api.quest.trigger;
|
|||||||
import org.apache.commons.lang.Validate;
|
import org.apache.commons.lang.Validate;
|
||||||
|
|
||||||
import net.Indyuce.mmocore.MMOCore;
|
import net.Indyuce.mmocore.MMOCore;
|
||||||
|
import net.Indyuce.mmocore.api.experience.EXPSource;
|
||||||
import net.Indyuce.mmocore.api.experience.ExperienceInfo;
|
import net.Indyuce.mmocore.api.experience.ExperienceInfo;
|
||||||
import net.Indyuce.mmocore.api.experience.Profession;
|
import net.Indyuce.mmocore.api.experience.Profession;
|
||||||
import net.Indyuce.mmocore.api.player.PlayerData;
|
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||||
@ -29,9 +30,9 @@ public class ExperienceTrigger extends Trigger {
|
|||||||
@Override
|
@Override
|
||||||
public void apply(PlayerData player) {
|
public void apply(PlayerData player) {
|
||||||
if (profession == null)
|
if (profession == null)
|
||||||
player.giveExperience(amount.calculateInt());
|
player.giveExperience(amount.calculateInt(), EXPSource.QUEST);
|
||||||
else
|
else
|
||||||
player.getCollectionSkills().giveExperience(profession, amount.calculateInt());
|
player.getCollectionSkills().giveExperience(profession, amount.calculateInt(), EXPSource.QUEST);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -3,8 +3,20 @@ package net.Indyuce.mmocore.api.util.debug;
|
|||||||
import net.Indyuce.mmocore.MMOCore;
|
import net.Indyuce.mmocore.MMOCore;
|
||||||
|
|
||||||
public class DebugMode {
|
public class DebugMode {
|
||||||
public DebugMode() {
|
/*
|
||||||
if (MMOCore.plugin.getConfig().getBoolean("debug-action-bar.enabled"))
|
* Debug Levels:
|
||||||
|
* 1:
|
||||||
|
* - Print WorldGuard Flag Registry
|
||||||
|
* 2:
|
||||||
|
* - Print Profession Trigger Things
|
||||||
|
* 3:
|
||||||
|
* - Debug Action Bar
|
||||||
|
*/
|
||||||
|
public static int level = 0;
|
||||||
|
|
||||||
|
public DebugMode(int i) {
|
||||||
|
level = i;
|
||||||
|
if (level > 2 && MMOCore.plugin.getConfig().getBoolean("debug-action-bar.enabled"))
|
||||||
new ActionBarRunnable().runTaskTimer(MMOCore.plugin, 0, 10);
|
new ActionBarRunnable().runTaskTimer(MMOCore.plugin, 0, 10);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,7 +9,6 @@ import java.util.UUID;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.apache.commons.lang.Validate;
|
import org.apache.commons.lang.Validate;
|
||||||
import org.bukkit.ChatColor;
|
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
import org.bukkit.inventory.ItemFlag;
|
import org.bukkit.inventory.ItemFlag;
|
||||||
@ -20,6 +19,7 @@ import com.mojang.authlib.GameProfile;
|
|||||||
import com.mojang.authlib.properties.Property;
|
import com.mojang.authlib.properties.Property;
|
||||||
|
|
||||||
import net.Indyuce.mmocore.MMOCore;
|
import net.Indyuce.mmocore.MMOCore;
|
||||||
|
import net.asangarin.hexcolors.ColorParse;
|
||||||
import net.mmogroup.mmolib.MMOLib;
|
import net.mmogroup.mmolib.MMOLib;
|
||||||
import net.mmogroup.mmolib.api.item.ItemTag;
|
import net.mmogroup.mmolib.api.item.ItemTag;
|
||||||
import net.mmogroup.mmolib.api.item.NBTItem;
|
import net.mmogroup.mmolib.api.item.NBTItem;
|
||||||
@ -138,6 +138,6 @@ public class ConfigItem {
|
|||||||
for (String placeholder : placeholders.keySet())
|
for (String placeholder : placeholders.keySet())
|
||||||
if (string.contains("{" + placeholder + "}"))
|
if (string.contains("{" + placeholder + "}"))
|
||||||
string = string.replace("{" + placeholder + "}", "" + placeholders.get(placeholder));
|
string = string.replace("{" + placeholder + "}", "" + placeholders.get(placeholder));
|
||||||
return ChatColor.translateAlternateColorCodes('&', string);
|
return new ColorParse('&', string).toChatColor();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,16 +1,17 @@
|
|||||||
package net.Indyuce.mmocore.api.util.item;
|
package net.Indyuce.mmocore.api.util.item;
|
||||||
|
|
||||||
import org.bukkit.ChatColor;
|
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.inventory.meta.ItemMeta;
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
|
|
||||||
|
import net.asangarin.hexcolors.ColorParse;
|
||||||
|
|
||||||
public class NamedItemStack extends ItemStack {
|
public class NamedItemStack extends ItemStack {
|
||||||
public NamedItemStack(Material material, String name) {
|
public NamedItemStack(Material material, String name) {
|
||||||
super(material);
|
super(material);
|
||||||
|
|
||||||
ItemMeta meta = getItemMeta();
|
ItemMeta meta = getItemMeta();
|
||||||
meta.setDisplayName(ChatColor.translateAlternateColorCodes('&', name));
|
meta.setDisplayName(new ColorParse('&', name).toChatColor());
|
||||||
setItemMeta(meta);
|
setItemMeta(meta);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,11 +1,13 @@
|
|||||||
package net.Indyuce.mmocore.command;
|
package net.Indyuce.mmocore.command;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.command.defaults.BukkitCommand;
|
import org.bukkit.command.defaults.BukkitCommand;
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import net.Indyuce.mmocore.api.event.MMOCommandEvent;
|
||||||
import net.Indyuce.mmocore.api.player.PlayerData;
|
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||||
import net.Indyuce.mmocore.manager.InventoryManager;
|
import net.Indyuce.mmocore.manager.InventoryManager;
|
||||||
|
|
||||||
@ -24,7 +26,10 @@ public class AttributesCommand extends BukkitCommand {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
InventoryManager.ATTRIBUTE_VIEW.newInventory(PlayerData.get((Player) sender)).open();
|
PlayerData data = PlayerData.get((Player) sender);
|
||||||
|
MMOCommandEvent event = new MMOCommandEvent(data, "attributes");
|
||||||
|
Bukkit.getServer().getPluginManager().callEvent(event);
|
||||||
|
if(!event.isCancelled()) InventoryManager.ATTRIBUTE_VIEW.newInventory(data).open();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,7 @@ import org.bukkit.command.defaults.BukkitCommand;
|
|||||||
import org.bukkit.configuration.ConfigurationSection;
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import net.Indyuce.mmocore.api.event.MMOCommandEvent;
|
||||||
import net.Indyuce.mmocore.api.player.PlayerData;
|
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||||
import net.Indyuce.mmocore.manager.InventoryManager;
|
import net.Indyuce.mmocore.manager.InventoryManager;
|
||||||
|
|
||||||
@ -30,6 +31,9 @@ public class ClassCommand extends BukkitCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
PlayerData data = PlayerData.get(player);
|
PlayerData data = PlayerData.get(player);
|
||||||
|
MMOCommandEvent event = new MMOCommandEvent(data, "class");
|
||||||
|
Bukkit.getServer().getPluginManager().callEvent(event);
|
||||||
|
if(event.isCancelled()) return true;
|
||||||
if (data.getProfess().getSubclasses().stream().filter(sub -> sub.getLevel() <= data.getLevel()).count() > 0)
|
if (data.getProfess().getSubclasses().stream().filter(sub -> sub.getLevel() <= data.getLevel()).count() > 0)
|
||||||
InventoryManager.SUBCLASS_SELECT.newInventory(data).open();
|
InventoryManager.SUBCLASS_SELECT.newInventory(data).open();
|
||||||
else
|
else
|
||||||
|
@ -2,6 +2,7 @@ package net.Indyuce.mmocore.command;
|
|||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.command.defaults.BukkitCommand;
|
import org.bukkit.command.defaults.BukkitCommand;
|
||||||
@ -9,6 +10,7 @@ import org.bukkit.configuration.ConfigurationSection;
|
|||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import net.Indyuce.mmocore.MMOCore;
|
import net.Indyuce.mmocore.MMOCore;
|
||||||
|
import net.Indyuce.mmocore.api.event.MMOCommandEvent;
|
||||||
import net.Indyuce.mmocore.api.player.OfflinePlayerData;
|
import net.Indyuce.mmocore.api.player.OfflinePlayerData;
|
||||||
import net.Indyuce.mmocore.api.player.PlayerData;
|
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||||
import net.Indyuce.mmocore.api.player.social.FriendRequest;
|
import net.Indyuce.mmocore.api.player.social.FriendRequest;
|
||||||
@ -30,6 +32,11 @@ public class FriendsCommand extends BukkitCommand {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PlayerData data = PlayerData.get((Player) sender);
|
||||||
|
MMOCommandEvent event = new MMOCommandEvent(data, "friends");
|
||||||
|
Bukkit.getServer().getPluginManager().callEvent(event);
|
||||||
|
if(event.isCancelled()) return true;
|
||||||
|
|
||||||
if (args.length > 1) {
|
if (args.length > 1) {
|
||||||
UUID uuid;
|
UUID uuid;
|
||||||
try {
|
try {
|
||||||
@ -59,7 +66,7 @@ public class FriendsCommand extends BukkitCommand {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
InventoryManager.FRIEND_LIST.newInventory(PlayerData.get((Player) sender)).open();
|
InventoryManager.FRIEND_LIST.newInventory(data).open();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@ package net.Indyuce.mmocore.command;
|
|||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.OfflinePlayer;
|
import org.bukkit.OfflinePlayer;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
@ -10,6 +11,7 @@ import org.bukkit.configuration.ConfigurationSection;
|
|||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import net.Indyuce.mmocore.MMOCore;
|
import net.Indyuce.mmocore.MMOCore;
|
||||||
|
import net.Indyuce.mmocore.api.event.MMOCommandEvent;
|
||||||
import net.Indyuce.mmocore.api.player.PlayerData;
|
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||||
import net.Indyuce.mmocore.api.player.social.Request;
|
import net.Indyuce.mmocore.api.player.social.Request;
|
||||||
import net.Indyuce.mmocore.api.player.social.guilds.GuildInvite;
|
import net.Indyuce.mmocore.api.player.social.guilds.GuildInvite;
|
||||||
@ -31,6 +33,11 @@ public class GuildCommand extends BukkitCommand {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PlayerData data = PlayerData.get((OfflinePlayer) sender);
|
||||||
|
MMOCommandEvent event = new MMOCommandEvent(data, "guild");
|
||||||
|
Bukkit.getServer().getPluginManager().callEvent(event);
|
||||||
|
if(event.isCancelled()) return true;
|
||||||
|
|
||||||
if (args.length > 1) {
|
if (args.length > 1) {
|
||||||
UUID uuid;
|
UUID uuid;
|
||||||
try {
|
try {
|
||||||
@ -60,7 +67,6 @@ public class GuildCommand extends BukkitCommand {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
PlayerData data = PlayerData.get((OfflinePlayer) sender);
|
|
||||||
if (data.inGuild())
|
if (data.inGuild())
|
||||||
InventoryManager.GUILD_VIEW.newInventory(data).open();
|
InventoryManager.GUILD_VIEW.newInventory(data).open();
|
||||||
else
|
else
|
||||||
|
@ -54,6 +54,7 @@ public class MMOCoreCommand extends CommandRoot implements CommandExecutor, TabC
|
|||||||
|
|
||||||
CommandParser reader = readCommand(args);
|
CommandParser reader = readCommand(args);
|
||||||
List<String> list = reader.readTabCompletion();
|
List<String> list = reader.readTabCompletion();
|
||||||
return args[args.length - 1].isEmpty() ? list : list.stream().filter(string -> string.toLowerCase().startsWith(args[args.length - 1].toLowerCase())).collect(Collectors.toList());
|
return args[args.length - 1].isEmpty() ? list
|
||||||
|
: list.stream().filter(string -> string.toLowerCase().startsWith(args[args.length - 1].toLowerCase())).collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@ package net.Indyuce.mmocore.command;
|
|||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.OfflinePlayer;
|
import org.bukkit.OfflinePlayer;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
@ -10,6 +11,7 @@ import org.bukkit.configuration.ConfigurationSection;
|
|||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import net.Indyuce.mmocore.MMOCore;
|
import net.Indyuce.mmocore.MMOCore;
|
||||||
|
import net.Indyuce.mmocore.api.event.MMOCommandEvent;
|
||||||
import net.Indyuce.mmocore.api.player.PlayerData;
|
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||||
import net.Indyuce.mmocore.api.player.social.PartyInvite;
|
import net.Indyuce.mmocore.api.player.social.PartyInvite;
|
||||||
import net.Indyuce.mmocore.api.player.social.Request;
|
import net.Indyuce.mmocore.api.player.social.Request;
|
||||||
@ -31,6 +33,11 @@ public class PartyCommand extends BukkitCommand {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PlayerData data = PlayerData.get((OfflinePlayer) sender);
|
||||||
|
MMOCommandEvent event = new MMOCommandEvent(data, "party");
|
||||||
|
Bukkit.getServer().getPluginManager().callEvent(event);
|
||||||
|
if(event.isCancelled()) return true;
|
||||||
|
|
||||||
if (args.length > 1) {
|
if (args.length > 1) {
|
||||||
UUID uuid;
|
UUID uuid;
|
||||||
try {
|
try {
|
||||||
@ -60,7 +67,6 @@ public class PartyCommand extends BukkitCommand {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
PlayerData data = PlayerData.get((OfflinePlayer) sender);
|
|
||||||
if (data.hasParty())
|
if (data.hasParty())
|
||||||
InventoryManager.PARTY_VIEW.newInventory(data).open();
|
InventoryManager.PARTY_VIEW.newInventory(data).open();
|
||||||
else
|
else
|
||||||
|
@ -1,11 +1,13 @@
|
|||||||
package net.Indyuce.mmocore.command;
|
package net.Indyuce.mmocore.command;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.command.defaults.BukkitCommand;
|
import org.bukkit.command.defaults.BukkitCommand;
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import net.Indyuce.mmocore.api.event.MMOCommandEvent;
|
||||||
import net.Indyuce.mmocore.api.player.PlayerData;
|
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||||
import net.Indyuce.mmocore.manager.InventoryManager;
|
import net.Indyuce.mmocore.manager.InventoryManager;
|
||||||
|
|
||||||
@ -24,7 +26,10 @@ public class PlayerStatsCommand extends BukkitCommand {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
InventoryManager.PLAYER_STATS.newInventory(PlayerData.get((Player) sender)).open();
|
PlayerData data = PlayerData.get((Player) sender);
|
||||||
|
MMOCommandEvent event = new MMOCommandEvent(data, "profile");
|
||||||
|
Bukkit.getServer().getPluginManager().callEvent(event);
|
||||||
|
if(!event.isCancelled()) InventoryManager.PLAYER_STATS.newInventory(data).open();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
package net.Indyuce.mmocore.command;
|
package net.Indyuce.mmocore.command;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.command.defaults.BukkitCommand;
|
import org.bukkit.command.defaults.BukkitCommand;
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import net.Indyuce.mmocore.api.event.MMOCommandEvent;
|
||||||
import net.Indyuce.mmocore.api.player.PlayerData;
|
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||||
import net.Indyuce.mmocore.manager.InventoryManager;
|
import net.Indyuce.mmocore.manager.InventoryManager;
|
||||||
|
|
||||||
@ -18,8 +20,12 @@ public class QuestsCommand extends BukkitCommand {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean execute(CommandSender sender, String label, String[] args) {
|
public boolean execute(CommandSender sender, String label, String[] args) {
|
||||||
if (sender instanceof Player)
|
if (sender instanceof Player) {
|
||||||
InventoryManager.QUEST_LIST.newInventory(PlayerData.get((Player) sender)).open();
|
PlayerData data = PlayerData.get((Player) sender);
|
||||||
|
MMOCommandEvent event = new MMOCommandEvent(data, "quests");
|
||||||
|
Bukkit.getServer().getPluginManager().callEvent(event);
|
||||||
|
if(!event.isCancelled()) InventoryManager.QUEST_LIST.newInventory(data).open();
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,11 +1,13 @@
|
|||||||
package net.Indyuce.mmocore.command;
|
package net.Indyuce.mmocore.command;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.command.defaults.BukkitCommand;
|
import org.bukkit.command.defaults.BukkitCommand;
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import net.Indyuce.mmocore.MMOCore;
|
import net.Indyuce.mmocore.MMOCore;
|
||||||
|
import net.Indyuce.mmocore.api.event.MMOCommandEvent;
|
||||||
import net.Indyuce.mmocore.api.player.PlayerData;
|
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||||
import net.Indyuce.mmocore.manager.InventoryManager;
|
import net.Indyuce.mmocore.manager.InventoryManager;
|
||||||
|
|
||||||
@ -21,6 +23,10 @@ public class SkillsCommand extends BukkitCommand {
|
|||||||
public boolean execute(CommandSender sender, String label, String[] args) {
|
public boolean execute(CommandSender sender, String label, String[] args) {
|
||||||
if (sender instanceof Player) {
|
if (sender instanceof Player) {
|
||||||
PlayerData data = PlayerData.get((Player) sender);
|
PlayerData data = PlayerData.get((Player) sender);
|
||||||
|
MMOCommandEvent event = new MMOCommandEvent(data, "skills");
|
||||||
|
Bukkit.getServer().getPluginManager().callEvent(event);
|
||||||
|
if(event.isCancelled()) return true;
|
||||||
|
|
||||||
if (data.getProfess().getSkills().size() < 1) {
|
if (data.getProfess().getSkills().size() < 1) {
|
||||||
MMOCore.plugin.configManager.getSimpleMessage("no-class-skill").send((Player) sender);
|
MMOCore.plugin.configManager.getSimpleMessage("no-class-skill").send((Player) sender);
|
||||||
return true;
|
return true;
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
package net.Indyuce.mmocore.command;
|
package net.Indyuce.mmocore.command;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.command.defaults.BukkitCommand;
|
import org.bukkit.command.defaults.BukkitCommand;
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import net.Indyuce.mmocore.api.event.MMOCommandEvent;
|
||||||
import net.Indyuce.mmocore.api.player.PlayerData;
|
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||||
import net.Indyuce.mmocore.manager.InventoryManager;
|
import net.Indyuce.mmocore.manager.InventoryManager;
|
||||||
|
|
||||||
@ -18,8 +20,12 @@ public class WaypointsCommand extends BukkitCommand {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean execute(CommandSender sender, String label, String[] args) {
|
public boolean execute(CommandSender sender, String label, String[] args) {
|
||||||
if (sender instanceof Player && sender.hasPermission("mmocore.waypoints"))
|
if (sender instanceof Player && sender.hasPermission("mmocore.waypoints")) {
|
||||||
InventoryManager.WAYPOINTS.newInventory(PlayerData.get((Player) sender)).open();
|
PlayerData data = PlayerData.get((Player) sender);
|
||||||
|
MMOCommandEvent event = new MMOCommandEvent(data, "waypoints");
|
||||||
|
Bukkit.getServer().getPluginManager().callEvent(event);
|
||||||
|
if(!event.isCancelled()) InventoryManager.WAYPOINTS.newInventory(data).open();
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,6 +9,7 @@ import org.bukkit.entity.Player;
|
|||||||
|
|
||||||
import net.Indyuce.mmocore.MMOCore;
|
import net.Indyuce.mmocore.MMOCore;
|
||||||
import net.Indyuce.mmocore.api.experience.Profession;
|
import net.Indyuce.mmocore.api.experience.Profession;
|
||||||
|
import net.Indyuce.mmocore.api.experience.EXPSource;
|
||||||
import net.Indyuce.mmocore.api.experience.PlayerProfessions;
|
import net.Indyuce.mmocore.api.experience.PlayerProfessions;
|
||||||
import net.Indyuce.mmocore.api.player.PlayerData;
|
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||||
import net.Indyuce.mmocore.command.api.CommandEnd;
|
import net.Indyuce.mmocore.command.api.CommandEnd;
|
||||||
@ -20,7 +21,7 @@ public class ExperienceCommandMap extends CommandMap {
|
|||||||
super(parent, "exp");
|
super(parent, "exp");
|
||||||
|
|
||||||
addFloor(new ActionCommandMap(this, "set", (data, value) -> data.setExperience(value), (professions, profession, value) -> professions.setExperience(profession, value)));
|
addFloor(new ActionCommandMap(this, "set", (data, value) -> data.setExperience(value), (professions, profession, value) -> professions.setExperience(profession, value)));
|
||||||
addFloor(new ActionCommandMap(this, "give", (data, value) -> data.giveExperience(value, data.getPlayer().getLocation()), (professions, profession, value) -> professions.giveExperience(profession, value, professions.getPlayerData().getPlayer().getLocation())));
|
addFloor(new ActionCommandMap(this, "give", (data, value) -> data.giveExperience(value, data.getPlayer().getLocation(), EXPSource.COMMAND), (professions, profession, value) -> professions.giveExperience(profession, value, professions.getPlayerData().getPlayer().getLocation(), EXPSource.COMMAND)));
|
||||||
}
|
}
|
||||||
|
|
||||||
public class ActionCommandMap extends CommandEnd {
|
public class ActionCommandMap extends CommandEnd {
|
||||||
|
@ -9,6 +9,7 @@ import org.bukkit.entity.Player;
|
|||||||
|
|
||||||
import net.Indyuce.mmocore.MMOCore;
|
import net.Indyuce.mmocore.MMOCore;
|
||||||
import net.Indyuce.mmocore.api.experience.Profession;
|
import net.Indyuce.mmocore.api.experience.Profession;
|
||||||
|
import net.Indyuce.mmocore.api.experience.EXPSource;
|
||||||
import net.Indyuce.mmocore.api.experience.PlayerProfessions;
|
import net.Indyuce.mmocore.api.experience.PlayerProfessions;
|
||||||
import net.Indyuce.mmocore.api.player.PlayerData;
|
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||||
import net.Indyuce.mmocore.command.api.CommandEnd;
|
import net.Indyuce.mmocore.command.api.CommandEnd;
|
||||||
@ -20,7 +21,7 @@ public class LevelCommandMap extends CommandMap {
|
|||||||
super(parent, "level");
|
super(parent, "level");
|
||||||
|
|
||||||
addFloor(new ActionCommandMap(this, "set", (data, value) -> data.setLevel(value), (professions, profession, value) -> professions.setLevel(profession, value)));
|
addFloor(new ActionCommandMap(this, "set", (data, value) -> data.setLevel(value), (professions, profession, value) -> professions.setLevel(profession, value)));
|
||||||
addFloor(new ActionCommandMap(this, "give", (data, value) -> data.giveLevels(value), (professions, profession, value) -> professions.giveLevels(profession, value)));
|
addFloor(new ActionCommandMap(this, "give", (data, value) -> data.giveLevels(value, EXPSource.COMMAND), (professions, profession, value) -> professions.giveLevels(profession, value, EXPSource.COMMAND)));
|
||||||
}
|
}
|
||||||
|
|
||||||
public class ActionCommandMap extends CommandEnd {
|
public class ActionCommandMap extends CommandEnd {
|
||||||
|
@ -44,7 +44,7 @@ public class StatModifiersCommandMap extends CommandEnd {
|
|||||||
StatInstance instance = data.getStats().getInstance(stat);
|
StatInstance instance = data.getStats().getInstance(stat);
|
||||||
sender.sendMessage("Stat Modifiers (" + instance.getKeys().size() + "):");
|
sender.sendMessage("Stat Modifiers (" + instance.getKeys().size() + "):");
|
||||||
for (String key : instance.getKeys()) {
|
for (String key : instance.getKeys()) {
|
||||||
StatModifier mod = instance.getByKey(key);
|
StatModifier mod = instance.getAttribute(key);
|
||||||
sender.sendMessage("- " + key + ": " + mod.getValue() + " " + mod.getType().name());
|
sender.sendMessage("- " + key + ": " + mod.getValue() + " " + mod.getType().name());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@ package net.Indyuce.mmocore.comp.flags;
|
|||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
@ -14,6 +15,8 @@ import com.sk89q.worldguard.protection.ApplicableRegionSet;
|
|||||||
import com.sk89q.worldguard.protection.flags.StateFlag;
|
import com.sk89q.worldguard.protection.flags.StateFlag;
|
||||||
import com.sk89q.worldguard.protection.flags.registry.FlagRegistry;
|
import com.sk89q.worldguard.protection.flags.registry.FlagRegistry;
|
||||||
|
|
||||||
|
import net.Indyuce.mmocore.MMOCore;
|
||||||
|
|
||||||
public class WorldGuardFlags implements FlagPlugin {
|
public class WorldGuardFlags implements FlagPlugin {
|
||||||
private final WorldGuard worldguard;
|
private final WorldGuard worldguard;
|
||||||
private final WorldGuardPlugin worldguardPlugin;
|
private final WorldGuardPlugin worldguardPlugin;
|
||||||
@ -30,7 +33,11 @@ public class WorldGuardFlags implements FlagPlugin {
|
|||||||
try {
|
try {
|
||||||
registry.register(flag);
|
registry.register(flag);
|
||||||
flags.put(customFlag.getPath(), flag);
|
flags.put(customFlag.getPath(), flag);
|
||||||
|
MMOCore.debug(1, "[FLAGDEBUG] Registered WG Flag\n"
|
||||||
|
+ " - Info{name=" + flag.getName() + ",path=" + customFlag.getPath() + "}");
|
||||||
} catch (Exception exception) {
|
} catch (Exception exception) {
|
||||||
|
MMOCore.debug(1, Level.SEVERE, "[FLAGDEBUG] FAILED to register WG Flag\n"
|
||||||
|
+ " - Info{name=" + flag.getName() + ",path=" + customFlag.getPath() + "}");
|
||||||
exception.printStackTrace();
|
exception.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,8 @@ import net.Indyuce.mmocore.api.experience.source.type.ExperienceSource;
|
|||||||
import net.Indyuce.mmocore.api.load.MMOLoader;
|
import net.Indyuce.mmocore.api.load.MMOLoader;
|
||||||
import net.Indyuce.mmocore.api.quest.objective.Objective;
|
import net.Indyuce.mmocore.api.quest.objective.Objective;
|
||||||
import net.Indyuce.mmocore.api.quest.trigger.Trigger;
|
import net.Indyuce.mmocore.api.quest.trigger.Trigger;
|
||||||
|
import net.Indyuce.mmocore.comp.mythicmobs.load.KillMythicFactionExperienceSource;
|
||||||
|
import net.Indyuce.mmocore.comp.mythicmobs.load.KillMythicFactionObjective;
|
||||||
import net.Indyuce.mmocore.comp.mythicmobs.load.KillMythicMobExperienceSource;
|
import net.Indyuce.mmocore.comp.mythicmobs.load.KillMythicMobExperienceSource;
|
||||||
import net.Indyuce.mmocore.comp.mythicmobs.load.KillMythicMobObjective;
|
import net.Indyuce.mmocore.comp.mythicmobs.load.KillMythicMobObjective;
|
||||||
import net.Indyuce.mmocore.comp.mythicmobs.load.MythicMobSkillTrigger;
|
import net.Indyuce.mmocore.comp.mythicmobs.load.MythicMobSkillTrigger;
|
||||||
@ -28,6 +30,8 @@ public class MythicMobsMMOLoader extends MMOLoader {
|
|||||||
|
|
||||||
if (config.getKey().equalsIgnoreCase("killmythicmob"))
|
if (config.getKey().equalsIgnoreCase("killmythicmob"))
|
||||||
return new KillMythicMobObjective(section, config);
|
return new KillMythicMobObjective(section, config);
|
||||||
|
if (config.getKey().equalsIgnoreCase("killmythicfaction"))
|
||||||
|
return new KillMythicFactionObjective(section, config);
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@ -37,6 +41,8 @@ public class MythicMobsMMOLoader extends MMOLoader {
|
|||||||
|
|
||||||
if (config.getKey().equalsIgnoreCase("killmythicmob"))
|
if (config.getKey().equalsIgnoreCase("killmythicmob"))
|
||||||
return new KillMythicMobExperienceSource(profession, config);
|
return new KillMythicMobExperienceSource(profession, config);
|
||||||
|
if (config.getKey().equalsIgnoreCase("killmythicfaction"))
|
||||||
|
return new KillMythicFactionExperienceSource(profession, config);
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,51 @@
|
|||||||
|
package net.Indyuce.mmocore.comp.mythicmobs.load;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
|
||||||
|
import io.lumine.xikage.mythicmobs.api.bukkit.events.MythicMobDeathEvent;
|
||||||
|
import net.Indyuce.mmocore.MMOCore;
|
||||||
|
import net.Indyuce.mmocore.api.experience.Profession;
|
||||||
|
import net.Indyuce.mmocore.api.experience.source.type.SpecificExperienceSource;
|
||||||
|
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||||
|
import net.Indyuce.mmocore.manager.profession.ExperienceManager;
|
||||||
|
import net.mmogroup.mmolib.api.MMOLineConfig;
|
||||||
|
|
||||||
|
public class KillMythicFactionExperienceSource extends SpecificExperienceSource<String> {
|
||||||
|
private final String factionName;
|
||||||
|
|
||||||
|
public KillMythicFactionExperienceSource(Profession profession, MMOLineConfig config) {
|
||||||
|
super(profession, config);
|
||||||
|
|
||||||
|
config.validate("name");
|
||||||
|
factionName = config.getString("name");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ExperienceManager<KillMythicFactionExperienceSource> newManager() {
|
||||||
|
return new ExperienceManager<KillMythicFactionExperienceSource>() {
|
||||||
|
@EventHandler
|
||||||
|
public void a(MythicMobDeathEvent event) {
|
||||||
|
Bukkit.getScheduler().runTaskLater(MMOCore.plugin, new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
if (!event.getEntity().isDead()) return;
|
||||||
|
if (!event.getMob().hasFaction()) return;
|
||||||
|
if (!(event.getKiller() instanceof Player) || event.getKiller().hasMetadata("NPC")) return;
|
||||||
|
|
||||||
|
PlayerData data = PlayerData.get((Player) event.getKiller());
|
||||||
|
for (KillMythicFactionExperienceSource source : getSources())
|
||||||
|
if (source.matches(data, event.getMob().getFaction()))
|
||||||
|
source.giveExperience(data, event.getEntity().getLocation());
|
||||||
|
}
|
||||||
|
}, 2);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean matches(PlayerData player, String name) {
|
||||||
|
return hasRightClass(player) && name.equals(factionName);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,56 @@
|
|||||||
|
package net.Indyuce.mmocore.comp.mythicmobs.load;
|
||||||
|
|
||||||
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
|
||||||
|
import io.lumine.xikage.mythicmobs.api.bukkit.events.MythicMobDeathEvent;
|
||||||
|
import net.Indyuce.mmocore.api.quest.ObjectiveProgress;
|
||||||
|
import net.Indyuce.mmocore.api.quest.QuestProgress;
|
||||||
|
import net.Indyuce.mmocore.api.quest.objective.Objective;
|
||||||
|
import net.mmogroup.mmolib.api.MMOLineConfig;
|
||||||
|
|
||||||
|
public class KillMythicFactionObjective extends Objective {
|
||||||
|
private final String factionName;
|
||||||
|
private final int required;
|
||||||
|
|
||||||
|
public KillMythicFactionObjective(ConfigurationSection section, MMOLineConfig config) {
|
||||||
|
super(section);
|
||||||
|
|
||||||
|
config.validate("amount", "name");
|
||||||
|
|
||||||
|
factionName = config.getString("name");
|
||||||
|
required = config.getInt("amount");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ObjectiveProgress newProgress(QuestProgress questProgress) {
|
||||||
|
return new KillFactionProgress(questProgress, this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public class KillFactionProgress extends ObjectiveProgress implements Listener {
|
||||||
|
private int count;
|
||||||
|
|
||||||
|
public KillFactionProgress(QuestProgress questProgress, Objective objective) {
|
||||||
|
super(questProgress, objective);
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void a(MythicMobDeathEvent event) {
|
||||||
|
if (event.getKiller() instanceof Player
|
||||||
|
&& event.getKiller().equals(getQuestProgress().getPlayer().getPlayer())
|
||||||
|
&& event.getMob().hasFaction() && event.getMob().getFaction().equals(factionName)) {
|
||||||
|
count++;
|
||||||
|
getQuestProgress().getPlayer().getQuestData().updateBossBar();
|
||||||
|
if (count >= required)
|
||||||
|
getQuestProgress().completeObjective();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String formatLore(String lore) {
|
||||||
|
return lore.replace("{left}", "" + (required - count));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,11 +1,12 @@
|
|||||||
package net.Indyuce.mmocore.comp.placeholder;
|
package net.Indyuce.mmocore.comp.placeholder;
|
||||||
|
|
||||||
import org.bukkit.ChatColor;
|
|
||||||
import org.bukkit.OfflinePlayer;
|
import org.bukkit.OfflinePlayer;
|
||||||
|
|
||||||
|
import net.asangarin.hexcolors.ColorParse;
|
||||||
|
|
||||||
public class DefaultParser implements PlaceholderParser {
|
public class DefaultParser implements PlaceholderParser {
|
||||||
@Override
|
@Override
|
||||||
public String parse(OfflinePlayer player, String string) {
|
public String parse(OfflinePlayer player, String string) {
|
||||||
return ChatColor.translateAlternateColorCodes('&', string.replace("%player%", player.getName()));
|
return new ColorParse('&', string.replace("%player%", player.getName())).toChatColor();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package net.Indyuce.mmocore.gui;
|
package net.Indyuce.mmocore.gui;
|
||||||
|
|
||||||
import java.util.Map.Entry;
|
|
||||||
|
|
||||||
import org.bukkit.Sound;
|
import org.bukkit.Sound;
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||||
@ -17,7 +15,6 @@ import net.Indyuce.mmocore.gui.api.item.InventoryItem;
|
|||||||
import net.Indyuce.mmocore.gui.api.item.InventoryPlaceholderItem;
|
import net.Indyuce.mmocore.gui.api.item.InventoryPlaceholderItem;
|
||||||
import net.Indyuce.mmocore.gui.api.item.NoPlaceholderItem;
|
import net.Indyuce.mmocore.gui.api.item.NoPlaceholderItem;
|
||||||
import net.Indyuce.mmocore.gui.api.item.Placeholders;
|
import net.Indyuce.mmocore.gui.api.item.Placeholders;
|
||||||
import net.mmogroup.mmolib.api.stat.modifier.StatModifier;
|
|
||||||
|
|
||||||
public class AttributeView extends EditableInventory {
|
public class AttributeView extends EditableInventory {
|
||||||
public AttributeView() {
|
public AttributeView() {
|
||||||
@ -52,7 +49,8 @@ public class AttributeView extends EditableInventory {
|
|||||||
public AttributeItem(String function, ConfigurationSection config) {
|
public AttributeItem(String function, ConfigurationSection config) {
|
||||||
super(config);
|
super(config);
|
||||||
|
|
||||||
attribute = MMOCore.plugin.attributeManager.get(function.substring("attribute_".length()).toLowerCase().replace(" ", "-").replace("_", "-"));
|
attribute = MMOCore.plugin.attributeManager
|
||||||
|
.get(function.substring("attribute_".length()).toLowerCase().replace(" ", "-").replace("_", "-"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -66,10 +64,10 @@ public class AttributeView extends EditableInventory {
|
|||||||
holders.register("max", attribute.getMax());
|
holders.register("max", attribute.getMax());
|
||||||
holders.register("current", total);
|
holders.register("current", total);
|
||||||
holders.register("attribute_points", inv.getPlayerData().getAttributePoints());
|
holders.register("attribute_points", inv.getPlayerData().getAttributePoints());
|
||||||
for (Entry<String, StatModifier> entry : attribute.getBuffs()) {
|
attribute.getBuffs().forEach((key, buff) -> {
|
||||||
holders.register("buff_" + entry.getKey().toLowerCase(), entry.getValue());
|
holders.register("buff_" + key.toLowerCase(), buff);
|
||||||
holders.register("total_" + entry.getKey().toLowerCase(), entry.getValue().multiply(total));
|
holders.register("total_" + key.toLowerCase(), buff.multiply(total));
|
||||||
}
|
});
|
||||||
return holders;
|
return holders;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,6 @@ import java.util.Comparator;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import org.bukkit.ChatColor;
|
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.Sound;
|
import org.bukkit.Sound;
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
@ -24,6 +23,7 @@ import net.Indyuce.mmocore.gui.api.GeneratedInventory;
|
|||||||
import net.Indyuce.mmocore.gui.api.item.InventoryItem;
|
import net.Indyuce.mmocore.gui.api.item.InventoryItem;
|
||||||
import net.Indyuce.mmocore.gui.api.item.NoPlaceholderItem;
|
import net.Indyuce.mmocore.gui.api.item.NoPlaceholderItem;
|
||||||
import net.Indyuce.mmocore.manager.InventoryManager;
|
import net.Indyuce.mmocore.manager.InventoryManager;
|
||||||
|
import net.asangarin.hexcolors.ColorParse;
|
||||||
import net.mmogroup.mmolib.api.item.ItemTag;
|
import net.mmogroup.mmolib.api.item.ItemTag;
|
||||||
import net.mmogroup.mmolib.api.item.NBTItem;
|
import net.mmogroup.mmolib.api.item.NBTItem;
|
||||||
|
|
||||||
@ -68,7 +68,7 @@ public class ClassSelect extends EditableInventory {
|
|||||||
ItemMeta meta = item.getItemMeta();
|
ItemMeta meta = item.getItemMeta();
|
||||||
if (hideFlags())
|
if (hideFlags())
|
||||||
meta.addItemFlags(ItemFlag.values());
|
meta.addItemFlags(ItemFlag.values());
|
||||||
meta.setDisplayName(ChatColor.translateAlternateColorCodes('&', name).replace("{name}", profess.getName()));
|
meta.setDisplayName(new ColorParse('&', name).toChatColor().replace("{name}", profess.getName()));
|
||||||
List<String> lore = new ArrayList<>(this.lore);
|
List<String> lore = new ArrayList<>(this.lore);
|
||||||
|
|
||||||
int index = lore.indexOf("{lore}");
|
int index = lore.indexOf("{lore}");
|
||||||
|
@ -27,6 +27,7 @@ import net.Indyuce.mmocore.gui.api.item.InventoryItem;
|
|||||||
import net.Indyuce.mmocore.gui.api.item.InventoryPlaceholderItem;
|
import net.Indyuce.mmocore.gui.api.item.InventoryPlaceholderItem;
|
||||||
import net.Indyuce.mmocore.gui.api.item.NoPlaceholderItem;
|
import net.Indyuce.mmocore.gui.api.item.NoPlaceholderItem;
|
||||||
import net.Indyuce.mmocore.gui.api.item.Placeholders;
|
import net.Indyuce.mmocore.gui.api.item.Placeholders;
|
||||||
|
import net.asangarin.hexcolors.ColorParse;
|
||||||
import net.mmogroup.mmolib.api.item.ItemTag;
|
import net.mmogroup.mmolib.api.item.ItemTag;
|
||||||
import net.mmogroup.mmolib.api.item.NBTItem;
|
import net.mmogroup.mmolib.api.item.NBTItem;
|
||||||
|
|
||||||
@ -70,7 +71,7 @@ public class SkillList extends EditableInventory {
|
|||||||
|
|
||||||
if (function.equals("slot"))
|
if (function.equals("slot"))
|
||||||
return new InventoryPlaceholderItem(config) {
|
return new InventoryPlaceholderItem(config) {
|
||||||
private final String none = ChatColor.translateAlternateColorCodes('&', config.getString("no-skill"));
|
private final String none = new ColorParse('&', config.getString("no-skill")).toChatColor();
|
||||||
private final Material emptyMaterial = Material
|
private final Material emptyMaterial = Material
|
||||||
.valueOf(config.getString("empty-item").toUpperCase().replace("-", "_").replace(" ", "_"));
|
.valueOf(config.getString("empty-item").toUpperCase().replace("-", "_").replace(" ", "_"));
|
||||||
|
|
||||||
@ -169,12 +170,12 @@ public class SkillList extends EditableInventory {
|
|||||||
lore.add(index + j, skillLore.get(j));
|
lore.add(index + j, skillLore.get(j));
|
||||||
|
|
||||||
for (int j = 0; j < lore.size(); j++)
|
for (int j = 0; j < lore.size(); j++)
|
||||||
lore.set(j, ChatColor.GRAY + ChatColor.translateAlternateColorCodes('&', lore.get(j)));
|
lore.set(j, ChatColor.GRAY + new ColorParse('&', lore.get(j)).toChatColor());
|
||||||
|
|
||||||
ItemStack item = cloneItem();
|
ItemStack item = cloneItem();
|
||||||
ItemMeta meta = item.getItemMeta();
|
ItemMeta meta = item.getItemMeta();
|
||||||
meta.setDisplayName(ChatColor.translateAlternateColorCodes('&', getName().replace("{skill}", skill.getSkill().getName())
|
meta.setDisplayName(new ColorParse('&', getName().replace("{skill}", skill.getSkill().getName())
|
||||||
.replace("{roman}", MMOCoreUtils.intToRoman(skillLevel)).replace("{level}", "" + skillLevel)));
|
.replace("{roman}", MMOCoreUtils.intToRoman(skillLevel)).replace("{level}", "" + skillLevel)).toChatColor());
|
||||||
meta.addItemFlags(ItemFlag.values());
|
meta.addItemFlags(ItemFlag.values());
|
||||||
meta.setLore(lore);
|
meta.setLore(lore);
|
||||||
item.setItemMeta(meta);
|
item.setItemMeta(meta);
|
||||||
|
@ -4,7 +4,6 @@ import java.util.ArrayList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import org.bukkit.ChatColor;
|
|
||||||
import org.bukkit.Sound;
|
import org.bukkit.Sound;
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||||
@ -21,6 +20,7 @@ import net.Indyuce.mmocore.gui.api.GeneratedInventory;
|
|||||||
import net.Indyuce.mmocore.gui.api.item.InventoryItem;
|
import net.Indyuce.mmocore.gui.api.item.InventoryItem;
|
||||||
import net.Indyuce.mmocore.gui.api.item.NoPlaceholderItem;
|
import net.Indyuce.mmocore.gui.api.item.NoPlaceholderItem;
|
||||||
import net.Indyuce.mmocore.manager.InventoryManager;
|
import net.Indyuce.mmocore.manager.InventoryManager;
|
||||||
|
import net.asangarin.hexcolors.ColorParse;
|
||||||
import net.mmogroup.mmolib.api.item.ItemTag;
|
import net.mmogroup.mmolib.api.item.ItemTag;
|
||||||
import net.mmogroup.mmolib.api.item.NBTItem;
|
import net.mmogroup.mmolib.api.item.NBTItem;
|
||||||
|
|
||||||
@ -65,7 +65,7 @@ public class SubclassSelect extends EditableInventory {
|
|||||||
|
|
||||||
ItemStack item = profess.getIcon();
|
ItemStack item = profess.getIcon();
|
||||||
ItemMeta meta = item.getItemMeta();
|
ItemMeta meta = item.getItemMeta();
|
||||||
meta.setDisplayName(ChatColor.translateAlternateColorCodes('&', name).replace("{name}", profess.getName()));
|
meta.setDisplayName(new ColorParse('&', name).toChatColor().replace("{name}", profess.getName()));
|
||||||
List<String> lore = new ArrayList<>(this.lore);
|
List<String> lore = new ArrayList<>(this.lore);
|
||||||
|
|
||||||
int index = lore.indexOf("{lore}");
|
int index = lore.indexOf("{lore}");
|
||||||
|
@ -4,13 +4,13 @@ import java.util.ArrayList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.ChatColor;
|
|
||||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||||
import org.bukkit.inventory.Inventory;
|
import org.bukkit.inventory.Inventory;
|
||||||
|
|
||||||
import net.Indyuce.mmocore.api.player.PlayerData;
|
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||||
import net.Indyuce.mmocore.gui.api.item.InventoryItem;
|
import net.Indyuce.mmocore.gui.api.item.InventoryItem;
|
||||||
import net.Indyuce.mmocore.gui.api.item.TriggerItem;
|
import net.Indyuce.mmocore.gui.api.item.TriggerItem;
|
||||||
|
import net.asangarin.hexcolors.ColorParse;
|
||||||
|
|
||||||
public abstract class GeneratedInventory extends PluginInventory {
|
public abstract class GeneratedInventory extends PluginInventory {
|
||||||
private final EditableInventory editable;
|
private final EditableInventory editable;
|
||||||
@ -54,7 +54,7 @@ public abstract class GeneratedInventory extends PluginInventory {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Inventory getInventory() {
|
public Inventory getInventory() {
|
||||||
Inventory inv = Bukkit.createInventory(this, editable.getSlots(), ChatColor.translateAlternateColorCodes('&', calculateName()));
|
Inventory inv = Bukkit.createInventory(this, editable.getSlots(), new ColorParse('&', calculateName()).toChatColor());
|
||||||
|
|
||||||
for (InventoryItem item : editable.getItems())
|
for (InventoryItem item : editable.getItems())
|
||||||
if (item.canDisplay(this))
|
if (item.canDisplay(this))
|
||||||
|
@ -65,10 +65,11 @@ public class EditablePartyView extends EditableInventory {
|
|||||||
/*
|
/*
|
||||||
* run async to save performance
|
* run async to save performance
|
||||||
*/
|
*/
|
||||||
if (meta instanceof SkullMeta) {
|
if (meta instanceof SkullMeta)
|
||||||
((SkullMeta) meta).setOwningPlayer(member.getPlayer());
|
Bukkit.getScheduler().runTaskAsynchronously(MMOCore.plugin, () -> {
|
||||||
disp.setItemMeta(meta);
|
((SkullMeta) meta).setOwningPlayer(member.getPlayer());
|
||||||
}
|
disp.setItemMeta(meta);
|
||||||
|
});
|
||||||
|
|
||||||
return NBTItem.get(disp).addTag(new ItemTag("uuid", member.getUniqueId().toString())).toItem();
|
return NBTItem.get(disp).addTag(new ItemTag("uuid", member.getUniqueId().toString())).toItem();
|
||||||
}
|
}
|
||||||
|
@ -70,6 +70,8 @@ public class PlayerListener implements Listener {
|
|||||||
PlayerData playerData = PlayerData.get(event.getPlayer());
|
PlayerData playerData = PlayerData.get(event.getPlayer());
|
||||||
if (playerData.hasParty())
|
if (playerData.hasParty())
|
||||||
playerData.getParty().removeMember(playerData);
|
playerData.getParty().removeMember(playerData);
|
||||||
|
|
||||||
|
MMOCore.plugin.dataProvider.getDataManager().remove(playerData);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -33,6 +33,7 @@ public class WaypointsListener implements Listener {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
player.setSneaking(false);
|
||||||
InventoryManager.WAYPOINTS.newInventory(data, waypoint).open();
|
InventoryManager.WAYPOINTS.newInventory(data, waypoint).open();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,7 @@ import org.bukkit.event.EventHandler;
|
|||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.player.PlayerExpChangeEvent;
|
import org.bukkit.event.player.PlayerExpChangeEvent;
|
||||||
|
|
||||||
|
import net.Indyuce.mmocore.api.experience.EXPSource;
|
||||||
import net.Indyuce.mmocore.api.player.PlayerData;
|
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||||
|
|
||||||
public class RedirectVanillaExp implements Listener {
|
public class RedirectVanillaExp implements Listener {
|
||||||
@ -17,6 +18,6 @@ public class RedirectVanillaExp implements Listener {
|
|||||||
public void a(PlayerExpChangeEvent event) {
|
public void a(PlayerExpChangeEvent event) {
|
||||||
int a = (int) (event.getAmount() * ratio);
|
int a = (int) (event.getAmount() * ratio);
|
||||||
if (a > 0)
|
if (a > 0)
|
||||||
PlayerData.get(event.getPlayer()).giveExperience(a);
|
PlayerData.get(event.getPlayer()).giveExperience(a, EXPSource.VANILLA);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -24,6 +24,7 @@ import org.bukkit.util.Vector;
|
|||||||
import net.Indyuce.mmocore.MMOCore;
|
import net.Indyuce.mmocore.MMOCore;
|
||||||
import net.Indyuce.mmocore.api.droptable.dropitem.fishing.FishingDropItem;
|
import net.Indyuce.mmocore.api.droptable.dropitem.fishing.FishingDropItem;
|
||||||
import net.Indyuce.mmocore.api.event.CustomPlayerFishEvent;
|
import net.Indyuce.mmocore.api.event.CustomPlayerFishEvent;
|
||||||
|
import net.Indyuce.mmocore.api.experience.EXPSource;
|
||||||
import net.Indyuce.mmocore.api.player.PlayerData;
|
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||||
import net.Indyuce.mmocore.api.player.stats.StatType;
|
import net.Indyuce.mmocore.api.player.stats.StatType;
|
||||||
import net.Indyuce.mmocore.manager.profession.FishingManager.FishingDropTable;
|
import net.Indyuce.mmocore.manager.profession.FishingManager.FishingDropTable;
|
||||||
@ -176,7 +177,7 @@ public class FishingListener implements Listener {
|
|||||||
location.getWorld().spawnParticle(Particle.FIREWORKS_SPARK, location, 0, 4 * (random.nextDouble() - .5), 2, 4 * (random.nextDouble() - .5), .05);
|
location.getWorld().spawnParticle(Particle.FIREWORKS_SPARK, location, 0, 4 * (random.nextDouble() - .5), 2, 4 * (random.nextDouble() - .5), .05);
|
||||||
|
|
||||||
if (MMOCore.plugin.professionManager.has("fishing"))
|
if (MMOCore.plugin.professionManager.has("fishing"))
|
||||||
playerData.getCollectionSkills().giveExperience(MMOCore.plugin.professionManager.get("fishing"), exp, location);
|
playerData.getCollectionSkills().giveExperience(MMOCore.plugin.professionManager.get("fishing"), exp, location, EXPSource.FISHING);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -20,6 +20,7 @@ import net.Indyuce.mmocore.api.util.input.AnvilGUI;
|
|||||||
import net.Indyuce.mmocore.api.util.input.ChatInput;
|
import net.Indyuce.mmocore.api.util.input.ChatInput;
|
||||||
import net.Indyuce.mmocore.api.util.input.PlayerInput;
|
import net.Indyuce.mmocore.api.util.input.PlayerInput;
|
||||||
import net.Indyuce.mmocore.api.util.input.PlayerInput.InputType;
|
import net.Indyuce.mmocore.api.util.input.PlayerInput.InputType;
|
||||||
|
import net.asangarin.hexcolors.ColorParse;
|
||||||
|
|
||||||
public class ConfigManager {
|
public class ConfigManager {
|
||||||
|
|
||||||
@ -155,28 +156,32 @@ public class ConfigManager {
|
|||||||
String format = messages.getString(key, "");
|
String format = messages.getString(key, "");
|
||||||
for (int j = 0; j < placeholders.length - 1; j += 2)
|
for (int j = 0; j < placeholders.length - 1; j += 2)
|
||||||
format = format.replace("{" + placeholders[j] + "}", placeholders[j + 1]);
|
format = format.replace("{" + placeholders[j] + "}", placeholders[j + 1]);
|
||||||
return new SimpleMessage(ChatColor.translateAlternateColorCodes('&', format));
|
return new SimpleMessage(new ColorParse('&', format).toChatColor());
|
||||||
}
|
}
|
||||||
|
|
||||||
public class SimpleMessage {
|
public class SimpleMessage {
|
||||||
private final String message;
|
private final String message;
|
||||||
|
private final boolean actionbar;
|
||||||
|
private final boolean hasPlaceholders;
|
||||||
|
|
||||||
public SimpleMessage(String message) {
|
public SimpleMessage(String message) {
|
||||||
this.message = message;
|
this.actionbar = message.startsWith("%");
|
||||||
|
this.message = actionbar ? message.substring(1) : message;
|
||||||
|
this.hasPlaceholders = this.message.contains("%");
|
||||||
}
|
}
|
||||||
|
|
||||||
public String message() {
|
public String message() {
|
||||||
return message.startsWith("%") ? message.substring(1) : message;
|
return message;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean send(Player player) {
|
public boolean send(Player player) {
|
||||||
if (!message.isEmpty()) {
|
String msg = hasPlaceholders ? MMOCore.plugin.placeholderParser.parse(player, message) : message;
|
||||||
if (message.startsWith("%"))
|
|
||||||
PlayerData.get(player.getUniqueId()).displayActionBar(message.substring(1));
|
if (!msg.isEmpty()) {
|
||||||
else
|
if (actionbar) PlayerData.get(player.getUniqueId()).displayActionBar(msg);
|
||||||
player.sendMessage(message);
|
else player.sendMessage(msg);
|
||||||
}
|
}
|
||||||
return !message.isEmpty();
|
return !msg.isEmpty();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,7 +10,7 @@ import java.util.logging.Level;
|
|||||||
import org.apache.commons.lang.Validate;
|
import org.apache.commons.lang.Validate;
|
||||||
|
|
||||||
import net.Indyuce.mmocore.MMOCore;
|
import net.Indyuce.mmocore.MMOCore;
|
||||||
import net.Indyuce.mmocore.api.player.ExpCurve;
|
import net.Indyuce.mmocore.api.experience.ExpCurve;
|
||||||
import net.Indyuce.mmoitems.MMOItems;
|
import net.Indyuce.mmoitems.MMOItems;
|
||||||
|
|
||||||
public class ExperienceManager {
|
public class ExperienceManager {
|
||||||
|
@ -25,6 +25,10 @@ public abstract class PlayerDataManager {
|
|||||||
return map.getOrDefault(uuid, PlayerData.NOT_LOADED);
|
return map.getOrDefault(uuid, PlayerData.NOT_LOADED);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void remove(UUID uuid) {
|
||||||
|
map.remove(uuid);
|
||||||
|
}
|
||||||
|
|
||||||
public abstract OfflinePlayerData getOffline(UUID uuid);
|
public abstract OfflinePlayerData getOffline(UUID uuid);
|
||||||
|
|
||||||
public void setup(Player player) {
|
public void setup(Player player) {
|
||||||
@ -62,4 +66,6 @@ public abstract class PlayerDataManager {
|
|||||||
public abstract void loadData(PlayerData data);
|
public abstract void loadData(PlayerData data);
|
||||||
|
|
||||||
public abstract void saveData(PlayerData data);
|
public abstract void saveData(PlayerData data);
|
||||||
|
|
||||||
|
public abstract void remove(PlayerData data);
|
||||||
}
|
}
|
||||||
|
@ -231,4 +231,10 @@ public class MySQLPlayerDataManager extends PlayerDataManager {
|
|||||||
return lastLogin;
|
return lastLogin;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void remove(PlayerData data) {
|
||||||
|
saveData(data);
|
||||||
|
remove(data.getUniqueId());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -127,4 +127,7 @@ public class YAMLPlayerDataManager extends PlayerDataManager {
|
|||||||
public OfflinePlayerData getOffline(UUID uuid) {
|
public OfflinePlayerData getOffline(UUID uuid) {
|
||||||
return isLoaded(uuid) ? get(uuid) : new YAMLOfflinePlayerData(uuid);
|
return isLoaded(uuid) ? get(uuid) : new YAMLOfflinePlayerData(uuid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void remove(PlayerData data) {}
|
||||||
}
|
}
|
||||||
|
@ -11,7 +11,16 @@ public class BoosterManager {
|
|||||||
private List<Booster> map = new ArrayList<>();
|
private List<Booster> map = new ArrayList<>();
|
||||||
|
|
||||||
public void register(Booster booster) {
|
public void register(Booster booster) {
|
||||||
|
|
||||||
|
// always flush booster list to reduce future calculations
|
||||||
flush();
|
flush();
|
||||||
|
|
||||||
|
for (Booster active : map)
|
||||||
|
if (active.canStackWith(booster)) {
|
||||||
|
active.addLength(booster.getLength());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
map.add(booster);
|
map.add(booster);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -25,14 +34,17 @@ public class BoosterManager {
|
|||||||
|
|
||||||
public int calculateExp(Profession profession, double exp) {
|
public int calculateExp(Profession profession, double exp) {
|
||||||
flush();
|
flush();
|
||||||
|
|
||||||
for (Booster booster : map)
|
for (Booster booster : map)
|
||||||
if (booster.getProfession() == profession)
|
if (booster.getProfession() == profession)
|
||||||
exp = booster.calculateExp(exp);
|
exp = booster.calculateExp(exp);
|
||||||
|
|
||||||
return (int) exp;
|
return (int) exp;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<Booster> getBoosters() {
|
public List<Booster> getBoosters() {
|
||||||
flush();
|
flush();
|
||||||
|
|
||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user