9
0
mirror of https://github.com/Xiao-MoMi/Custom-Fishing.git synced 2025-12-29 11:59:11 +00:00
This commit is contained in:
Xiao-MoMi
2022-11-29 16:58:23 +08:00
parent 0bd8e447d0
commit f4c3f42cf0
13 changed files with 162 additions and 141 deletions

View File

@@ -65,6 +65,7 @@ public class MySQLStorageImpl implements DataStorageInterface {
else {
inventory = Bukkit.createInventory(null, 9, "{CustomFishing_Bag_" + player.getName() + "}");
}
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
@@ -87,8 +88,11 @@ public class MySQLStorageImpl implements DataStorageInterface {
private void createTableIfNotExist(String table) {
String sql = String.format(SqlConstants.SQL_CREATE_BAG_TABLE, table);
try (Connection connection = sqlConnection.getConnection(); PreparedStatement statement = connection.prepareStatement(sql)) {
try {
Connection connection = sqlConnection.getConnection();
PreparedStatement statement = connection.prepareStatement(sql);
statement.executeUpdate();
connection.close();
} catch (SQLException ex) {
AdventureUtil.consoleMessage("[CustomFishing] Failed to create table");
}
@@ -96,11 +100,13 @@ public class MySQLStorageImpl implements DataStorageInterface {
private void insertBagData(UUID uuid, int size, String contents) {
String sql = String.format(SqlConstants.SQL_INSERT_BAG, sqlConnection.getTablePrefix() + "_fishingbag");
try (Connection connection = sqlConnection.getConnection(); PreparedStatement statement = connection.prepareStatement(sql)) {
try {
Connection connection = sqlConnection.getConnection(); PreparedStatement statement = connection.prepareStatement(sql);
statement.setString(1, uuid.toString());
statement.setInt(2, size);
statement.setString(3, contents);
statement.executeUpdate();
connection.close();
} catch (SQLException ex) {
AdventureUtil.consoleMessage("[CustomFishing] Failed to insert data for " + uuid);
}
@@ -108,11 +114,13 @@ public class MySQLStorageImpl implements DataStorageInterface {
private void updateBagData(UUID uuid, int size, String contents) {
String sql = String.format(SqlConstants.SQL_UPDATE_BAG_BY_UUID, sqlConnection.getTablePrefix() + "_fishingbag");
try (Connection connection = sqlConnection.getConnection(); PreparedStatement statement = connection.prepareStatement(sql)) {
try {
Connection connection = sqlConnection.getConnection(); PreparedStatement statement = connection.prepareStatement(sql);
statement.setInt(1, size);
statement.setString(2, contents);
statement.setString(3, uuid.toString());
statement.executeUpdate();
connection.close();
} catch (SQLException ex) {
AdventureUtil.consoleMessage("[CustomFishing] Failed to update data for " + uuid);
}
@@ -121,10 +129,12 @@ public class MySQLStorageImpl implements DataStorageInterface {
public boolean exists(UUID uuid) {
String sql = String.format(SqlConstants.SQL_SELECT_BAG_BY_UUID, sqlConnection.getTablePrefix() + "_fishingbag");
boolean exist;
try (Connection connection = sqlConnection.getConnection(); PreparedStatement statement = connection.prepareStatement(sql)) {
try {
Connection connection = sqlConnection.getConnection(); PreparedStatement statement = connection.prepareStatement(sql);
statement.setString(1, uuid.toString());
ResultSet rs = statement.executeQuery();
exist = rs.next();
connection.close();
} catch (SQLException ex) {
AdventureUtil.consoleMessage("[CustomFishing] Failed to select data for " + uuid);
return false;

View File

@@ -34,6 +34,6 @@ public class MMOItemsItemImpl implements ItemInterface {
material = material.substring(9);
String[] split = StringUtils.split(material, ":");
MMOItem mmoItem = MMOItems.plugin.getMMOItem(Type.get(split[0]), split[1]);
return mmoItem == null ? null : mmoItem.newBuilder().getItemStack();
return mmoItem == null ? null : mmoItem.newBuilder().build();
}
}

View File

@@ -26,4 +26,4 @@ public class CustomCropsSeasonImpl implements SeasonInterface {
public String getSeason(World world) {
return SeasonUtils.getSeason(world).name();
}
}
}

View File

@@ -25,6 +25,13 @@ public class RealisticSeasonsImpl implements SeasonInterface {
@Override
public String getSeason(World world) {
return SeasonsAPI.getInstance().getSeason(world).toString();
return switch (SeasonsAPI.getInstance().getSeason(world)) {
case WINTER -> "winter";
case SPRING -> "spring";
case SUMMER -> "summer";
case FALL -> "autumn";
case DISABLED -> "disabled";
case RESTORE -> "restore";
};
}
}

View File

@@ -161,7 +161,7 @@ public class BagDataManager extends Function {
WrappedChatComponent.fromJson(
GsonComponentSerializer.gson().serialize(
MiniMessage.miniMessage().deserialize(
ItemStackUtil.replaceLegacy(text)
AdventureUtil.replaceLegacy(text)
)
)
)

View File

@@ -638,18 +638,18 @@ public class FishingManager extends Function {
if (text.contains("{loot}")){
text = text.replace("{loot}","|");
if (text.startsWith("|")){
component = getDisplayName(itemStack).append(MiniMessage.miniMessage().deserialize(text.substring(1)));
component = getDisplayName(itemStack).append(MiniMessage.miniMessage().deserialize(AdventureUtil.replaceLegacy(text.substring(1))));
}
else if (text.endsWith("|")){
component = MiniMessage.miniMessage().deserialize(text.substring(0,text.length() - 1)).append(getDisplayName(itemStack));
component = MiniMessage.miniMessage().deserialize(AdventureUtil.replaceLegacy(text.substring(0,text.length() - 1))).append(getDisplayName(itemStack));
}
else {
String[] titleSplit = StringUtils.split(text, "|");
component = MiniMessage.miniMessage().deserialize(titleSplit[0]).append(getDisplayName(itemStack)).append(MiniMessage.miniMessage().deserialize(titleSplit[1]));
component = MiniMessage.miniMessage().deserialize(AdventureUtil.replaceLegacy(titleSplit[0])).append(getDisplayName(itemStack)).append(MiniMessage.miniMessage().deserialize(AdventureUtil.replaceLegacy(titleSplit[1])));
}
}
else {
component = MiniMessage.miniMessage().deserialize(text);
component = MiniMessage.miniMessage().deserialize(AdventureUtil.replaceLegacy(text));
}
return component;
}

View File

@@ -97,9 +97,7 @@ public class SellManager extends Function {
loadConfig();
CustomFishing.protocolManager.addPacketListener(windowPacketListener);
Bukkit.getPluginManager().registerEvents(inventoryListener, CustomFishing.plugin);
if (sellLimitation) {
readLimitationCache();
}
readLimitationCache();
}
private void readLimitationCache() {
@@ -199,7 +197,7 @@ public class SellManager extends Function {
titleIn = config.getInt("actions.title.in");
titleStay = config.getInt("actions.title.stay");
titleOut = config.getInt("actions.title.out");
} else actionbarNotification = null;
} else titleNotification = null;
if (config.getBoolean("actions.commands.enable")) {
commands = config.getStringList("actions.commands.value").toArray(new String[0]);
} else commands = null;
@@ -261,7 +259,7 @@ public class SellManager extends Function {
}
double earnings = Optional.ofNullable(todayEarning.get(player.getName())).orElse(0d);
if (earnings + totalPrice > upperLimit) {
if (sellLimitation && earnings + totalPrice > upperLimit) {
inventory.close();
AdventureUtil.playerMessage(player, MessageManager.prefix + MessageManager.reachSellLimit);
if (denyKey != null) AdventureUtil.playerSound(player, soundSource, denyKey, 1, 1);
@@ -369,21 +367,21 @@ public class SellManager extends Function {
private void doActions(Player player, float earnings, double remains) {
if (titleNotification != null) AdventureUtil.playerTitle(
player,
titleNotification.replace("{money}", String.format("%.2f", earnings)).replace("{remains}", String.format("%.2f", remains)),
subtitleNotification.replace("{money}", String.format("%.2f", earnings)).replace("{remains}", String.format("%.2f", remains)),
titleNotification.replace("{money}", String.format("%.2f", earnings)).replace("{remains}", sellLimitation ? String.format("%.2f", remains) : "unlimited"),
subtitleNotification.replace("{money}", String.format("%.2f", earnings)).replace("{remains}", sellLimitation ? String.format("%.2f", remains) : "unlimited"),
titleIn * 50,
titleStay * 50,
titleOut * 50
);
if (msgNotification != null) {
AdventureUtil.playerMessage(player, msgNotification.replace("{money}", String.format("%.2f", earnings)).replace("{remains}", String.format("%.2f", remains)));
AdventureUtil.playerMessage(player, msgNotification.replace("{money}", String.format("%.2f", earnings)).replace("{remains}", sellLimitation ? String.format("%.2f", remains) : "unlimited"));
}
if (actionbarNotification != null) {
AdventureUtil.playerActionbar(player, actionbarNotification.replace("{money}", String.format("%.2f", earnings)).replace("{remains}", String.format("%.2f", remains)));
AdventureUtil.playerActionbar(player, actionbarNotification.replace("{money}", String.format("%.2f", earnings)).replace("{remains}", sellLimitation ? String.format("%.2f", remains) : "unlimited"));
}
if (commands != null) {
for (String cmd : commands) {
Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), cmd.replace("{player}", player.getName()).replace("{money}", String.format("%.2f", earnings)).replace("{remains}", String.format("%.2f", remains)));
Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), cmd.replace("{player}", player.getName()).replace("{money}", String.format("%.2f", earnings)).replace("{remains}", sellLimitation ? String.format("%.2f", remains) : "unlimited"));
}
}
if (ConfigManager.logEarning) {
@@ -408,7 +406,7 @@ public class SellManager extends Function {
WrappedChatComponent.fromJson(
GsonComponentSerializer.gson().serialize(
MiniMessage.miniMessage().deserialize(
ItemStackUtil.replaceLegacy(text)
AdventureUtil.replaceLegacy(text)
)
)
)

View File

@@ -76,8 +76,12 @@ public class TextCache {
.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}", Competition.currentCompetition.getFirstPlayer())
.replace("{1st_score}", String.format("%.1f", Competition.currentCompetition.getFirstScore()))
.replace("{1st_player}", Competition.currentCompetition.getFirstPlayer());
.replace("{2nd_player}", Competition.currentCompetition.getSecondPlayer())
.replace("{2nd_score}", String.format("%.1f", Competition.currentCompetition.getSecondScore()))
.replace("{3rd_player}", Competition.currentCompetition.getThirdPlayer())
.replace("{3rd_score}", String.format("%.1f", Competition.currentCompetition.getThirdScore()));
if (!latestValue.equals(string)) {
latestValue = string;

View File

@@ -18,6 +18,7 @@
package net.momirealms.customfishing.object.requirements;
import net.momirealms.customfishing.CustomFishing;
import net.momirealms.customfishing.helper.Log;
import net.momirealms.customfishing.integration.SeasonInterface;
import net.momirealms.customfishing.object.fishing.FishingCondition;

View File

@@ -40,14 +40,14 @@ public class AdventureUtil {
public static void consoleMessage(String s) {
Audience au = CustomFishing.adventure.sender(Bukkit.getConsoleSender());
MiniMessage mm = MiniMessage.miniMessage();
Component parsed = mm.deserialize(ItemStackUtil.replaceLegacy(s));
Component parsed = mm.deserialize(replaceLegacy(s));
au.sendMessage(parsed);
}
public static void playerMessage(Player player, String s) {
Audience au = CustomFishing.adventure.player(player);
MiniMessage mm = MiniMessage.miniMessage();
Component parsed = mm.deserialize(ItemStackUtil.replaceLegacy(s));
Component parsed = mm.deserialize(replaceLegacy(s));
au.sendMessage(parsed);
}
@@ -55,7 +55,7 @@ public class AdventureUtil {
Audience au = CustomFishing.adventure.player(player);
MiniMessage mm = MiniMessage.miniMessage();
Title.Times times = Title.Times.times(Duration.ofMillis(in), Duration.ofMillis(duration), Duration.ofMillis(out));
Title title = Title.title(mm.deserialize(ItemStackUtil.replaceLegacy(s1)), mm.deserialize(ItemStackUtil.replaceLegacy(s2)), times);
Title title = Title.title(mm.deserialize(replaceLegacy(s1)), mm.deserialize(replaceLegacy(s2)), times);
au.showTitle(title);
}
@@ -69,7 +69,7 @@ public class AdventureUtil {
public static void playerActionbar(Player player, String s) {
Audience au = CustomFishing.adventure.player(player);
MiniMessage mm = MiniMessage.miniMessage();
au.sendActionBar(mm.deserialize(ItemStackUtil.replaceLegacy(s)));
au.sendActionBar(mm.deserialize(replaceLegacy(s)));
}
public static void playerSound(Player player, Sound.Source source, Key key, float volume, float pitch) {
@@ -77,4 +77,113 @@ public class AdventureUtil {
Audience au = CustomFishing.adventure.player(player);
au.playSound(sound);
}
public static String replaceLegacy(String s) {
StringBuilder stringBuilder = new StringBuilder();
char[] chars = s.replaceAll("&","§").toCharArray();
for (int i = 0; i < chars.length; i++) {
if (chars[i] == '§') {
if (i + 1 < chars.length) {
switch (chars[i+1]){
case '0' -> {
i++;
stringBuilder.append("<black>");
}
case '1' -> {
i++;
stringBuilder.append("<dark_blue>");
}
case '2' -> {
i++;
stringBuilder.append("<dark_green>");
}
case '3' -> {
i++;
stringBuilder.append("<dark_aqua>");
}
case '4' -> {
i++;
stringBuilder.append("<dark_red>");
}
case '5' -> {
i++;
stringBuilder.append("<dark_purple>");
}
case '6' -> {
i++;
stringBuilder.append("<gold>");
}
case '7' -> {
i++;
stringBuilder.append("<gray>");
}
case '8' -> {
i++;
stringBuilder.append("<dark_gray>");
}
case '9' -> {
i++;
stringBuilder.append("<blue>");
}
case 'a' -> {
i++;
stringBuilder.append("<green>");
}
case 'b' -> {
i++;
stringBuilder.append("<aqua>");
}
case 'c' -> {
i++;
stringBuilder.append("<red>");
}
case 'd' -> {
i++;
stringBuilder.append("<light_purple>");
}
case 'e' -> {
i++;
stringBuilder.append("<yellow>");
}
case 'f' -> {
i++;
stringBuilder.append("<white>");
}
case 'r' -> {
i++;
stringBuilder.append("<reset><!italic>");
}
case 'l' -> {
i++;
stringBuilder.append("<bold>");
}
case 'm' -> {
i++;
stringBuilder.append("<strikethrough>");
}
case 'o' -> {
i++;
stringBuilder.append("<italic>");
}
case 'n' -> {
i++;
stringBuilder.append("<underlined>");
}
case 'x' -> {
stringBuilder.append("<#").append(chars[i+3]).append(chars[i+5]).append(chars[i+7]).append(chars[i+9]).append(chars[i+11]).append(chars[i+13]).append(">");
i += 13;
}
case 'k' -> {
i++;
stringBuilder.append("<obfuscated>");
}
}
}
}
else {
stringBuilder.append(chars[i]);
}
}
return stringBuilder.toString();
}
}

View File

@@ -68,7 +68,7 @@ public class ItemStackUtil {
NBTCompound display = nbtItem.addCompound("display");
String name = item.getName();
if (name.contains("&") || name.contains("§")){
name = replaceLegacy(name);
name = AdventureUtil.replaceLegacy(name);
}
display.setString("Name", GsonComponentSerializer.gson().serialize(MiniMessage.miniMessage().deserialize("<!i>" + name)));
}
@@ -77,7 +77,7 @@ public class ItemStackUtil {
List<String> lore = display.getStringList("Lore");
item.getLore().forEach(line -> {
if (line.contains("&") || line.contains("§")){
line = replaceLegacy(line);
line = AdventureUtil.replaceLegacy(line);
}
lore.add(GsonComponentSerializer.gson().serialize(MiniMessage.miniMessage().deserialize("<!i>" + line)));
});
@@ -289,113 +289,4 @@ public class ItemStackUtil {
});
return map;
}
public static String replaceLegacy(String s) {
StringBuilder stringBuilder = new StringBuilder();
char[] chars = s.replaceAll("&","§").toCharArray();
for (int i = 0; i < chars.length; i++) {
if (chars[i] == '§') {
if (i + 1 < chars.length) {
switch (chars[i+1]){
case '0' -> {
i++;
stringBuilder.append("<black>");
}
case '1' -> {
i++;
stringBuilder.append("<dark_blue>");
}
case '2' -> {
i++;
stringBuilder.append("<dark_green>");
}
case '3' -> {
i++;
stringBuilder.append("<dark_aqua>");
}
case '4' -> {
i++;
stringBuilder.append("<dark_red>");
}
case '5' -> {
i++;
stringBuilder.append("<dark_purple>");
}
case '6' -> {
i++;
stringBuilder.append("<gold>");
}
case '7' -> {
i++;
stringBuilder.append("<gray>");
}
case '8' -> {
i++;
stringBuilder.append("<dark_gray>");
}
case '9' -> {
i++;
stringBuilder.append("<blue>");
}
case 'a' -> {
i++;
stringBuilder.append("<green>");
}
case 'b' -> {
i++;
stringBuilder.append("<aqua>");
}
case 'c' -> {
i++;
stringBuilder.append("<red>");
}
case 'd' -> {
i++;
stringBuilder.append("<light_purple>");
}
case 'e' -> {
i++;
stringBuilder.append("<yellow>");
}
case 'f' -> {
i++;
stringBuilder.append("<white>");
}
case 'r' -> {
i++;
stringBuilder.append("<reset><!italic>");
}
case 'l' -> {
i++;
stringBuilder.append("<bold>");
}
case 'm' -> {
i++;
stringBuilder.append("<strikethrough>");
}
case 'o' -> {
i++;
stringBuilder.append("<italic>");
}
case 'n' -> {
i++;
stringBuilder.append("<underlined>");
}
case 'x' -> {
stringBuilder.append("<#").append(chars[i+3]).append(chars[i+5]).append(chars[i+7]).append(chars[i+9]).append(chars[i+11]).append(chars[i+13]).append(">");
i += 13;
}
case 'k' -> {
i++;
stringBuilder.append("<obfuscated>");
}
}
}
}
else {
stringBuilder.append(chars[i]);
}
}
return stringBuilder.toString();
}
}

View File

@@ -36,7 +36,8 @@ rainbow_fish:
- '<gray>This is a <font:uniform>rainbow fish!'
- '<gray>It is {size}cm long!'
custom-model-data: 1
# breakable
unbreakable: false
# Optional
size: 10~200