9
0
mirror of https://github.com/Xiao-MoMi/Custom-Fishing.git synced 2025-12-28 19:39:06 +00:00
This commit is contained in:
Xiao-MoMi
2023-03-23 18:38:08 +08:00
parent 1032c60aa5
commit d014889d65
6 changed files with 98 additions and 42 deletions

View File

@@ -4,7 +4,7 @@ plugins {
}
group = 'net.momirealms'
version = '1.3.0.3-hotfix'
version = '1.3.0.4'
repositories {
mavenCentral()

View File

@@ -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");

View File

@@ -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;
}
}
}
}

View File

@@ -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());

View File

@@ -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))
)
)
)

View File

@@ -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;