mirror of
https://github.com/Xiao-MoMi/Custom-Fishing.git
synced 2025-12-28 19:39:06 +00:00
1.3.0.4
This commit is contained in:
@@ -4,7 +4,7 @@ plugins {
|
||||
}
|
||||
|
||||
group = 'net.momirealms'
|
||||
version = '1.3.0.3-hotfix'
|
||||
version = '1.3.0.4'
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
|
||||
@@ -29,15 +29,9 @@ import java.util.List;
|
||||
|
||||
public class JobsRebornImpl implements JobInterface {
|
||||
|
||||
private final PlayerManager playerManager;
|
||||
|
||||
public JobsRebornImpl() {
|
||||
this.playerManager = Jobs.getPlayerManager();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addXp(Player player, double amount) {
|
||||
JobsPlayer jobsPlayer = playerManager.getJobsPlayer(player);
|
||||
JobsPlayer jobsPlayer = Jobs.getPlayerManager().getJobsPlayer(player);
|
||||
if (jobsPlayer != null) {
|
||||
List<JobProgression> jobs = jobsPlayer.getJobProgression();
|
||||
Job job = Jobs.getJob("Fisherman");
|
||||
|
||||
@@ -18,13 +18,15 @@
|
||||
package net.momirealms.customfishing.integration.papi;
|
||||
|
||||
import net.momirealms.customfishing.CustomFishing;
|
||||
import net.momirealms.customfishing.fishing.competition.Competition;
|
||||
import net.momirealms.customfishing.manager.MessageManager;
|
||||
import net.momirealms.customfishing.object.Function;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
@@ -33,6 +35,7 @@ public class PlaceholderManager extends Function {
|
||||
private CustomFishing plugin;
|
||||
private final Pattern basicPattern = Pattern.compile("%([^%]*)%");
|
||||
private final Pattern betterPattern = Pattern.compile("\\{(.+?)\\}");
|
||||
private final Pattern allPattern = Pattern.compile("%([^%]*)%|\\{(.+?)\\}");
|
||||
private CompetitionPapi competitionPapi;
|
||||
private StatisticsPapi statisticsPapi;
|
||||
private boolean hasPlaceholderAPI = false;
|
||||
@@ -46,13 +49,6 @@ public class PlaceholderManager extends Function {
|
||||
}
|
||||
}
|
||||
|
||||
public String parse(Player player, String text) {
|
||||
if (hasPlaceholderAPI) {
|
||||
return ParseUtil.setPlaceholders(player, text);
|
||||
}
|
||||
return text;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void load() {
|
||||
if (competitionPapi != null) competitionPapi.register();
|
||||
@@ -65,19 +61,99 @@ public class PlaceholderManager extends Function {
|
||||
if (this.statisticsPapi != null) statisticsPapi.unregister();
|
||||
}
|
||||
|
||||
public List<String> detectBasicPlaceholders(String text){
|
||||
if (text == null || !text.contains("%")) return Collections.emptyList();
|
||||
public String parse(Player player, String text) {
|
||||
if (hasPlaceholderAPI) {
|
||||
return ParseUtil.setPlaceholders(player, parseInner(player, text));
|
||||
}
|
||||
else {
|
||||
return parseInner(player, text);
|
||||
}
|
||||
}
|
||||
|
||||
public String parseInner(Player player, String text) {
|
||||
List<String> papis = detectBetterPlaceholders(text);
|
||||
for (String papi : papis) {
|
||||
text = text.replace(papi, parseSingleInner(player, papi));
|
||||
}
|
||||
return text;
|
||||
}
|
||||
|
||||
public String parseSinglePlaceholder(Player player, String placeholder) {
|
||||
if (placeholder.startsWith("{")) {
|
||||
return parseSingleInner(player, placeholder);
|
||||
}
|
||||
else if (hasPlaceholderAPI) {
|
||||
return ParseUtil.setPlaceholders(player, placeholder);
|
||||
}
|
||||
return placeholder;
|
||||
}
|
||||
|
||||
public List<String> detectBasicPlaceholders(String text) {
|
||||
List<String> placeholders = new ArrayList<>();
|
||||
Matcher matcher = basicPattern.matcher(text);
|
||||
while (matcher.find()) placeholders.add(matcher.group());
|
||||
return placeholders;
|
||||
}
|
||||
|
||||
public List<String> detectBetterPlaceholders(String text){
|
||||
if (text == null || !(text.contains("{") && text.contains("}"))) return Collections.emptyList();
|
||||
public List<String> detectBetterPlaceholders(String text) {
|
||||
List<String> placeholders = new ArrayList<>();
|
||||
Matcher matcher = betterPattern.matcher(text);
|
||||
while (matcher.find()) placeholders.add(matcher.group());
|
||||
return placeholders;
|
||||
}
|
||||
|
||||
public List<String> detectAllPlaceholders(String text) {
|
||||
List<String> placeholders = new ArrayList<>();
|
||||
Matcher matcher = allPattern.matcher(text);
|
||||
while (matcher.find()) placeholders.add(matcher.group());
|
||||
return placeholders;
|
||||
}
|
||||
|
||||
public List<String> detectPlaceholders(String text) {
|
||||
return hasPlaceholderAPI ? detectAllPlaceholders(text) : detectBetterPlaceholders(text);
|
||||
}
|
||||
|
||||
public String parseSingleInner(Player player, String placeholder) {
|
||||
switch (placeholder) {
|
||||
case "{player}" -> {
|
||||
return player.getName();
|
||||
}
|
||||
case "{rank}" -> {
|
||||
return Competition.currentCompetition.getPlayerRank(player);
|
||||
}
|
||||
case "{time}" -> {
|
||||
return String.valueOf(Competition.currentCompetition.getRemainingTime());
|
||||
}
|
||||
case "{minute}" -> {
|
||||
return String.format("%02d", Competition.currentCompetition.getRemainingTime() / 60);
|
||||
}
|
||||
case "{second}" -> {
|
||||
return String.format("%02d", Competition.currentCompetition.getRemainingTime() % 60);
|
||||
}
|
||||
case "{score}" -> {
|
||||
return String.format("%.1f", Competition.currentCompetition.getScore(player));
|
||||
}
|
||||
case "{1st_player}" -> {
|
||||
return Optional.ofNullable(Competition.currentCompetition.getRanking().getPlayerAt(1)).orElse(MessageManager.noPlayer);
|
||||
}
|
||||
case "{1st_score}" -> {
|
||||
return Competition.currentCompetition.getRanking().getScoreAt(1) <= 0 ? MessageManager.noScore : String.format("%.1f", Competition.currentCompetition.getRanking().getScoreAt(1));
|
||||
}
|
||||
case "{2nd_player}" -> {
|
||||
return Optional.ofNullable(Competition.currentCompetition.getRanking().getPlayerAt(2)).orElse(MessageManager.noPlayer);
|
||||
}
|
||||
case "{2nd_score}" -> {
|
||||
return Competition.currentCompetition.getRanking().getScoreAt(2) <= 0 ? MessageManager.noScore : String.format("%.1f", Competition.currentCompetition.getRanking().getScoreAt(2));
|
||||
}
|
||||
case "{3rd_player}" -> {
|
||||
return Optional.ofNullable(Competition.currentCompetition.getRanking().getPlayerAt(3)).orElse(MessageManager.noPlayer);
|
||||
}
|
||||
case "{3rd_score}" -> {
|
||||
return Competition.currentCompetition.getRanking().getScoreAt(3) <= 0 ? MessageManager.noScore : String.format("%.1f", Competition.currentCompetition.getRanking().getScoreAt(3));
|
||||
}
|
||||
default -> {
|
||||
return placeholder;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -925,6 +925,10 @@ public class FishingManager extends Function {
|
||||
}
|
||||
|
||||
private void useFinder(Player player) {
|
||||
if (!ConfigManager.getWorldsList().contains(player.getWorld().getName())) {
|
||||
return;
|
||||
}
|
||||
|
||||
FishingCondition fishingCondition = new FishingCondition(player.getLocation(), player);
|
||||
List<Loot> possibleLoots = getPossibleLootList(fishingCondition, true, plugin.getLootManager().getAllLoots());
|
||||
|
||||
|
||||
@@ -447,14 +447,11 @@ public class SellManager extends DataFunction {
|
||||
StructureModifier<WrappedChatComponent> wrappedChatComponentStructureModifier = packet.getChatComponents();
|
||||
WrappedChatComponent component = wrappedChatComponentStructureModifier.getValues().get(0);
|
||||
if (component.getJson().equals("{\"text\":\"{CustomFishing_Sell}\"}")) {
|
||||
PlaceholderManager placeholderManager = plugin.getIntegrationManager().getPlaceholderManager();
|
||||
String text = SellManager.title.replace("{player}", player.getName());
|
||||
placeholderManager.parse(player, text);
|
||||
wrappedChatComponentStructureModifier.write(0,
|
||||
WrappedChatComponent.fromJson(
|
||||
GsonComponentSerializer.gson().serialize(
|
||||
MiniMessage.miniMessage().deserialize(
|
||||
AdventureUtil.replaceLegacy(text)
|
||||
AdventureUtil.replaceLegacy(plugin.getIntegrationManager().getPlaceholderManager().parse(player, SellManager.title))
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
@@ -41,7 +41,7 @@ public class DynamicText {
|
||||
}
|
||||
|
||||
private void analyze(String value) {
|
||||
List<String> placeholdersOwner = new ArrayList<>(CustomFishing.getInstance().getIntegrationManager().getPlaceholderManager().detectBasicPlaceholders(value));
|
||||
List<String> placeholdersOwner = new ArrayList<>(CustomFishing.getInstance().getIntegrationManager().getPlaceholderManager().detectPlaceholders(value));
|
||||
String origin = value;
|
||||
for (String placeholder : placeholdersOwner) {
|
||||
origin = origin.replace(placeholder, "%s");
|
||||
@@ -61,31 +61,16 @@ public class DynamicText {
|
||||
if (ownerPlaceholders.length != 0) {
|
||||
PlaceholderManager placeholderManager = CustomFishing.getInstance().getIntegrationManager().getPlaceholderManager();
|
||||
if ("%s".equals(originalValue)) {
|
||||
string = placeholderManager.parse(owner, ownerPlaceholders[0]);
|
||||
string = placeholderManager.parseSinglePlaceholder(owner, ownerPlaceholders[0]);
|
||||
}
|
||||
else {
|
||||
Object[] values = new String[ownerPlaceholders.length];
|
||||
for (int i = 0; i < ownerPlaceholders.length; i++) {
|
||||
values[i] = placeholderManager.parse(owner, ownerPlaceholders[i]);
|
||||
values[i] = placeholderManager.parseSinglePlaceholder(owner, ownerPlaceholders[i]);
|
||||
}
|
||||
string = String.format(originalValue, values);
|
||||
}
|
||||
}
|
||||
|
||||
RankingInterface ranking = Competition.currentCompetition.getRanking();
|
||||
|
||||
string = string .replace("{rank}", Competition.currentCompetition.getPlayerRank(owner))
|
||||
.replace("{time}", String.valueOf(Competition.currentCompetition.getRemainingTime()))
|
||||
.replace("{minute}", String.format("%02d", Competition.currentCompetition.getRemainingTime() / 60))
|
||||
.replace("{second}",String.format("%02d", Competition.currentCompetition.getRemainingTime() % 60))
|
||||
.replace("{score}", String.format("%.1f", Competition.currentCompetition.getScore(owner)))
|
||||
.replace("{1st_player}", Optional.ofNullable(ranking.getPlayerAt(1)).orElse(MessageManager.noPlayer))
|
||||
.replace("{1st_score}", ranking.getScoreAt(1) <= 0 ? MessageManager.noScore : String.format("%.1f", ranking.getScoreAt(1)))
|
||||
.replace("{2nd_player}", Optional.ofNullable(ranking.getPlayerAt(2)).orElse(MessageManager.noPlayer))
|
||||
.replace("{2nd_score}", ranking.getScoreAt(2) <= 0 ? MessageManager.noScore : String.format("%.1f", ranking.getScoreAt(2)))
|
||||
.replace("{3rd_player}", Optional.ofNullable(ranking.getPlayerAt(3)).orElse(MessageManager.noPlayer))
|
||||
.replace("{3rd_score}", ranking.getScoreAt(3) <= 0 ? MessageManager.noScore : String.format("%.1f", ranking.getScoreAt(3)));
|
||||
|
||||
if (!latestValue.equals(string)) {
|
||||
latestValue = string;
|
||||
return true;
|
||||
|
||||
Reference in New Issue
Block a user