This commit is contained in:
ASangarin 2020-07-31 20:57:26 +02:00
commit f172d52cac
10 changed files with 96 additions and 35 deletions

33
.gitlab-ci.yml Normal file
View File

@ -0,0 +1,33 @@
image: maven:3-openjdk-8-slim
variables:
MAVEN_CLI_OPTS: "-s .m2/settings.xml --batch-mode"
MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository"
before_script:
- apt-get update -qq
# Setup SSH deploy keys
- 'which ssh-agent || ( apt-get install -qq openssh-client )'
- eval $(ssh-agent -s)
- ssh-add <(echo "$SSH_PRIVATE_KEY")
- mkdir -p ~/.ssh
- '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
cache:
paths:
- .m2/repository/
- target/
build:
stage: build
script:
- mvn $MAVEN_CLI_OPTS package
deploy:
stage: deploy
script:
- mvn $MAVEN_CLI_OPTS deploy
- ssh lumine@proxy.mythiccraft.io -p 2222 "mkdir -p /tmp/builds/$CI_JOB_ID && exit"
- scp -rp -o StrictHostKeyChecking=no -o Port=2222 ./target/ lumine@proxy.mythiccraft.io:/tmp/builds/$CI_JOB_ID/
only:
- master

9
.m2/settings.xml Normal file
View File

@ -0,0 +1,9 @@
<settings>
<servers>
<server>
<id>nexus</id>
<username>${env.M2_REPO_USER}</username>
<password>${env.M2_REPO_PASS}</password>
</server>
</servers>
</settings>

BIN
lib/PlaceholderAPI.jar Normal file

Binary file not shown.

13
pom.xml
View File

@ -4,7 +4,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>net.Indyuce</groupId> <groupId>net.Indyuce</groupId>
<artifactId>MMOCore</artifactId> <artifactId>MMOCore</artifactId>
<version>1.4.2-SNAPSHOT</version> <version>1.4.3</version>
<name>MMOCore</name> <name>MMOCore</name>
<description>Offer your players a brand new RPG experience.</description> <description>Offer your players a brand new RPG experience.</description>
@ -66,10 +66,6 @@
<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>
<id>placeholderapi</id>
<url>http://repo.extendedclip.com/content/repositories/placeholderapi/</url>
</repository>
</repositories> </repositories>
<dependencies> <dependencies>
@ -160,5 +156,12 @@
<artifactId>mysql-connector-java</artifactId> <artifactId>mysql-connector-java</artifactId>
<version>5.1.41</version> <version>5.1.41</version>
</dependency> </dependency>
<dependency>
<groupId>me.clip</groupId>
<artifactId>placeholderapi</artifactId>
<version>2.10.7</version>
<scope>system</scope>
<systemPath>${basedir}/lib/PlaceholderAPI.jar</systemPath>
</dependency>
</dependencies> </dependencies>
</project> </project>

View File

@ -150,7 +150,7 @@ public class PlayerQuests {
// close current objective progress if quest is active // close current objective progress if quest is active
if (hasCurrent()) if (hasCurrent())
current.closeObjectiveProgress(); current.getProgress().close();
// apply newer quest // apply newer quest
current = quest == null ? null : quest.generateNewProgress(playerData); current = quest == null ? null : quest.generateNewProgress(playerData);

View File

@ -43,16 +43,12 @@ public class QuestProgress {
return quest.getObjectives().get(objective); return quest.getObjectives().get(objective);
} }
public void closeObjectiveProgress() {
objectiveProgress.close();
}
public void completeObjective() { public void completeObjective() {
objective++; objective++;
closeObjectiveProgress(); objectiveProgress.close();
// apply triggers // apply triggers
objectiveProgress.getObjective().getTriggers().forEach(trigger -> trigger.apply(getPlayer())); objectiveProgress.getObjective().getTriggers().forEach(trigger -> trigger.schedule(getPlayer()));
// end quest // end quest
if (objective >= quest.getObjectives().size()) if (objective >= quest.getObjectives().size())

View File

@ -10,7 +10,7 @@ public abstract class Trigger {
private final long delay; private final long delay;
public Trigger(MMOLineConfig config) { public Trigger(MMOLineConfig config) {
delay = config.contains("delay") ? (long) (config.getDouble("delay") * 20) : 0; delay = config.contains("delay") ? (long) (config.getDouble("delay") * 20.) : 0;
} }
public boolean hasDelay() { public boolean hasDelay() {
@ -22,8 +22,16 @@ public abstract class Trigger {
} }
public void schedule(PlayerData player) { public void schedule(PlayerData player) {
Bukkit.getScheduler().scheduleSyncDelayedTask(MMOCore.plugin, () -> apply(player), delay); if (delay <= 0)
apply(player);
else
Bukkit.getScheduler().scheduleSyncDelayedTask(MMOCore.plugin, () -> apply(player), delay);
} }
/*
* this method must not be used directly when executing triggers after quest
* objectives for example, because this method does NOT take into account
* trigger delay
*/
public abstract void apply(PlayerData player); public abstract void apply(PlayerData player);
} }

View File

@ -1,16 +1,19 @@
package net.Indyuce.mmocore.comp.placeholder; package net.Indyuce.mmocore.comp.placeholder;
import net.asangarin.hexcolors.ColorParse;
import org.bukkit.OfflinePlayer; import org.bukkit.OfflinePlayer;
import me.clip.placeholderapi.PlaceholderAPI; import me.clip.placeholderapi.PlaceholderAPI;
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
public class PlaceholderAPIParser implements PlaceholderParser { public class PlaceholderAPIParser implements PlaceholderParser {
public PlaceholderAPIParser() { public PlaceholderAPIParser() {
new RPGPlaceholders().register(); PlaceholderExpansion expansion = new RPGPlaceholders();
expansion.getPlaceholderAPI().getLocalExpansionManager().register(expansion);
} }
@Override @Override
public String parse(OfflinePlayer player, String string) { public String parse(OfflinePlayer player, String string) {
return PlaceholderAPI.setPlaceholders(player, string.replace("%player%", player.getName())); return new ColorParse('&', PlaceholderAPI.setPlaceholders(player, string.replace("%player%", player.getName()))).toChatColor();
} }
} }

View File

@ -1,9 +1,12 @@
package net.Indyuce.mmocore.comp.placeholder; package net.Indyuce.mmocore.comp.placeholder;
import org.apache.commons.lang.Validate;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.OfflinePlayer;
import org.bukkit.attribute.Attribute; import org.bukkit.attribute.Attribute;
import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import me.clip.placeholderapi.expansion.PlaceholderExpansion; import me.clip.placeholderapi.expansion.PlaceholderExpansion;
import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.MMOCore;
@ -14,9 +17,7 @@ import net.Indyuce.mmocore.api.player.stats.StatType;
import net.Indyuce.mmocore.api.quest.PlayerQuests; import net.Indyuce.mmocore.api.quest.PlayerQuests;
import net.mmogroup.mmolib.api.util.AltChar; import net.mmogroup.mmolib.api.util.AltChar;
public class RPGPlaceholders public class RPGPlaceholders extends PlaceholderExpansion {
extends PlaceholderExpansion /** implements Relational */
{
@Override @Override
public String getAuthor() { public String getAuthor() {
@ -34,7 +35,7 @@ public class RPGPlaceholders
} }
@Override @Override
public String onPlaceholderRequest(Player player, String identifier) { public String onRequest(@Nullable OfflinePlayer player, @NotNull String identifier) {
if (identifier.equals("level")) if (identifier.equals("level"))
return "" + PlayerData.get(player).getLevel(); return "" + PlayerData.get(player).getLevel();
@ -48,8 +49,10 @@ public class RPGPlaceholders
else if (identifier.equals("combat")) else if (identifier.equals("combat"))
return String.valueOf(PlayerData.get(player).isInCombat()); return String.valueOf(PlayerData.get(player).isInCombat());
else if (identifier.equals("health")) else if (identifier.equals("health")) {
return StatType.MAX_HEALTH.format(player.getHealth()); Validate.isTrue(player.isOnline(), "Player must be online");
return StatType.MAX_HEALTH.format(player.getPlayer().getHealth());
}
else if (identifier.equals("class")) else if (identifier.equals("class"))
return PlayerData.get(player).getProfess().getName(); return PlayerData.get(player).getProfess().getName();
@ -73,8 +76,10 @@ public class RPGPlaceholders
return "" + PlayerData.get(player).getCollectionSkills() return "" + PlayerData.get(player).getCollectionSkills()
.getLevel(identifier.substring(11).replace(" ", "-").replace("_", "-").toLowerCase()); .getLevel(identifier.substring(11).replace(" ", "-").replace("_", "-").toLowerCase());
else if (identifier.equals("max_health")) else if (identifier.equals("max_health")) {
return StatType.MAX_HEALTH.format(player.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue()); Validate.isTrue(player.isOnline(), "Player must be online");
return StatType.MAX_HEALTH.format(player.getPlayer().getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue());
}
else if (identifier.equals("experience")) else if (identifier.equals("experience"))
return "" + PlayerData.get(player).getExperience(); return "" + PlayerData.get(player).getExperience();
@ -95,15 +100,16 @@ public class RPGPlaceholders
return "" + PlayerData.get(player).getAttributeReallocationPoints(); return "" + PlayerData.get(player).getAttributeReallocationPoints();
else if (identifier.startsWith("attribute_")) else if (identifier.startsWith("attribute_"))
return String.valueOf(PlayerData.get(player).getAttributes() return String.valueOf(PlayerData.get(player).getAttributes().getAttribute(
.getAttribute(MMOCore.plugin.attributeManager.get(identifier.substring(10).toLowerCase().replace("_", "-")))); MMOCore.plugin.attributeManager.get(identifier.substring(10).toLowerCase().replace("_", "-"))));
else if (identifier.equals("mana")) else if (identifier.equals("mana"))
return MMOCore.plugin.configManager.decimal.format(PlayerData.get(player).getMana()); return MMOCore.plugin.configManager.decimal.format(PlayerData.get(player).getMana());
else if (identifier.equals("mana_bar")) { else if (identifier.equals("mana_bar")) {
PlayerData data = PlayerData.get(player); PlayerData data = PlayerData.get(player);
return data.getProfess().getManaDisplay().generateBar(data.getMana(), data.getStats().getStat(StatType.MAX_MANA)); return data.getProfess().getManaDisplay().generateBar(data.getMana(),
data.getStats().getStat(StatType.MAX_MANA));
} }
else if (identifier.equals("stamina")) else if (identifier.equals("stamina"))
@ -115,7 +121,8 @@ public class RPGPlaceholders
double ratio = 20 * data.getStamina() / data.getStats().getStat(StatType.MAX_STAMINA); double ratio = 20 * data.getStamina() / data.getStats().getStat(StatType.MAX_STAMINA);
for (double j = 1; j < 20; j++) for (double j = 1; j < 20; j++)
format += (ratio >= j ? MMOCore.plugin.configManager.staminaFull format += (ratio >= j ? MMOCore.plugin.configManager.staminaFull
: ratio >= j - .5 ? MMOCore.plugin.configManager.staminaHalf : MMOCore.plugin.configManager.staminaEmpty) : ratio >= j - .5 ? MMOCore.plugin.configManager.staminaHalf
: MMOCore.plugin.configManager.staminaEmpty)
+ AltChar.listSquare; + AltChar.listSquare;
return format; return format;
} }
@ -133,7 +140,8 @@ public class RPGPlaceholders
PlayerData data = PlayerData.get(player); PlayerData data = PlayerData.get(player);
double ratio = 20 * data.getStellium() / data.getStats().getStat(StatType.MAX_STELLIUM); double ratio = 20 * data.getStellium() / data.getStats().getStat(StatType.MAX_STELLIUM);
for (double j = 1; j < 20; j++) for (double j = 1; j < 20; j++)
format += (ratio >= j ? ChatColor.BLUE : ratio >= j - .5 ? ChatColor.AQUA : ChatColor.WHITE) + AltChar.listSquare; format += (ratio >= j ? ChatColor.BLUE : ratio >= j - .5 ? ChatColor.AQUA : ChatColor.WHITE)
+ AltChar.listSquare;
return format; return format;
} }
@ -145,8 +153,8 @@ public class RPGPlaceholders
else if (identifier.equals("quest_progress")) { else if (identifier.equals("quest_progress")) {
PlayerQuests data = PlayerData.get(player).getQuestData(); PlayerQuests data = PlayerData.get(player).getQuestData();
return data.hasCurrent() return data.hasCurrent()
? MMOCore.plugin.configManager.decimal ? MMOCore.plugin.configManager.decimal.format((int) (double) data.getCurrent().getObjectiveNumber()
.format((int) (double) data.getCurrent().getObjectiveNumber() / data.getCurrent().getQuest().getObjectives().size() * 100) / data.getCurrent().getQuest().getObjectives().size() * 100)
: "0"; : "0";
} }

View File

@ -41,12 +41,13 @@ public class FishingListener implements Listener {
Player player = event.getPlayer(); Player player = event.getPlayer();
FishHook hook = event.getHook(); FishHook hook = event.getHook();
if (event.getState() == State.BITE && !fishing.contains(player.getUniqueId())) { if (event.getState() == State.BITE && !fishing.contains(player.getUniqueId()) && !player.hasMetadata("NPC")) {
/* /*
* checks for drop tables. if no drop table, just plain vanilla * checks for drop tables. if no drop table, just plain vanilla
* fishing OTHERWISE initialize fishing, register other listener. * fishing OTHERWISE initialize fishing, register other listener.
*/ */
FishingDropTable table = MMOCore.plugin.fishingManager.calculateDropTable(player); FishingDropTable table = MMOCore.plugin.fishingManager.calculateDropTable(player);
if (table == null) if (table == null)
return; return;
@ -118,7 +119,7 @@ public class FishingListener implements Listener {
@EventHandler @EventHandler
public void a(PlayerFishEvent event) { public void a(PlayerFishEvent event) {
if (event.getPlayer().equals(player) && (event.getState() == State.CAUGHT_FISH || event.getState() == State.FAILED_ATTEMPT || (MMOLib.plugin.getVersion().isStrictlyHigher(1, 12) ? event.getState() == State.valueOf("REEL_IN") : false))) { if (event.getPlayer().equals(player) && !player.hasMetadata("NPC") && (event.getState() == State.CAUGHT_FISH || event.getState() == State.FAILED_ATTEMPT || (MMOLib.plugin.getVersion().isStrictlyHigher(1, 12) ? event.getState() == State.valueOf("REEL_IN") : false))) {
/* /*
* lose the catch if the current fish is gone! * lose the catch if the current fish is gone!