mirror of
				https://github.com/SunNetservers/Launchpad.git
				synced 2025-11-04 03:33:47 +01:00 
			
		
		
		
	Improves message formatting #6
This commit is contained in:
		@@ -1,5 +1,6 @@
 | 
				
			|||||||
package net.knarcraft.launchpad.command;
 | 
					package net.knarcraft.launchpad.command;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import net.knarcraft.launchpad.config.Message;
 | 
				
			||||||
import net.knarcraft.launchpad.launchpad.ModificationAction;
 | 
					import net.knarcraft.launchpad.launchpad.ModificationAction;
 | 
				
			||||||
import net.knarcraft.launchpad.launchpad.ModificationRequest;
 | 
					import net.knarcraft.launchpad.launchpad.ModificationRequest;
 | 
				
			||||||
import net.knarcraft.launchpad.launchpad.ModificationRequestHandler;
 | 
					import net.knarcraft.launchpad.launchpad.ModificationRequestHandler;
 | 
				
			||||||
@@ -19,7 +20,7 @@ public class LaunchpadCommand implements CommandExecutor {
 | 
				
			|||||||
    public boolean onCommand(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s,
 | 
					    public boolean onCommand(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s,
 | 
				
			||||||
                             @NotNull String[] arguments) {
 | 
					                             @NotNull String[] arguments) {
 | 
				
			||||||
        if (!(commandSender instanceof Player player)) {
 | 
					        if (!(commandSender instanceof Player player)) {
 | 
				
			||||||
            commandSender.sendMessage("This command can only be used by a player");
 | 
					            commandSender.sendMessage(Message.ERROR_PLAYER_ONLY.getMessage());
 | 
				
			||||||
            return false;
 | 
					            return false;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -46,7 +47,7 @@ public class LaunchpadCommand implements CommandExecutor {
 | 
				
			|||||||
            case ABORT -> {
 | 
					            case ABORT -> {
 | 
				
			||||||
                // Retrieving modification requests also removes them
 | 
					                // Retrieving modification requests also removes them
 | 
				
			||||||
                ModificationRequestHandler.getRequests(player.getUniqueId());
 | 
					                ModificationRequestHandler.getRequests(player.getUniqueId());
 | 
				
			||||||
                commandSender.sendMessage("Launchpad modifications cleared");
 | 
					                commandSender.sendMessage(Message.SUCCESS_MODIFICATIONS_CLEARED.getMessage());
 | 
				
			||||||
                return true;
 | 
					                return true;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            case VELOCITIES -> {
 | 
					            case VELOCITIES -> {
 | 
				
			||||||
@@ -57,7 +58,7 @@ public class LaunchpadCommand implements CommandExecutor {
 | 
				
			|||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        commandSender.sendMessage("Right-click the block to modify launchpad properties for");
 | 
					        commandSender.sendMessage(Message.SUCCESS_CLICK_BLOCK.getMessage());
 | 
				
			||||||
        return true;
 | 
					        return true;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,7 @@
 | 
				
			|||||||
package net.knarcraft.launchpad.command;
 | 
					package net.knarcraft.launchpad.command;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import net.knarcraft.launchpad.Launchpad;
 | 
					import net.knarcraft.launchpad.Launchpad;
 | 
				
			||||||
 | 
					import net.knarcraft.launchpad.config.Message;
 | 
				
			||||||
import org.bukkit.command.Command;
 | 
					import org.bukkit.command.Command;
 | 
				
			||||||
import org.bukkit.command.CommandSender;
 | 
					import org.bukkit.command.CommandSender;
 | 
				
			||||||
import org.bukkit.command.TabExecutor;
 | 
					import org.bukkit.command.TabExecutor;
 | 
				
			||||||
@@ -18,7 +19,7 @@ public class ReloadCommand implements TabExecutor {
 | 
				
			|||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public boolean onCommand(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s, @NotNull String[] strings) {
 | 
					    public boolean onCommand(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s, @NotNull String[] strings) {
 | 
				
			||||||
        Launchpad.getInstance().reload();
 | 
					        Launchpad.getInstance().reload();
 | 
				
			||||||
        commandSender.sendMessage("Launchpad reloaded");
 | 
					        commandSender.sendMessage(Message.SUCCESS_PLUGIN_RELOADED.getMessage());
 | 
				
			||||||
        return true;
 | 
					        return true;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										99
									
								
								src/main/java/net/knarcraft/launchpad/config/Message.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										99
									
								
								src/main/java/net/knarcraft/launchpad/config/Message.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,99 @@
 | 
				
			|||||||
 | 
					package net.knarcraft.launchpad.config;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import net.knarcraft.launchpad.Launchpad;
 | 
				
			||||||
 | 
					import net.knarcraft.launchpad.util.ColorHelper;
 | 
				
			||||||
 | 
					import org.jetbrains.annotations.NotNull;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * A message which ca be displayed to the user
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					public enum Message {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /* ************** *
 | 
				
			||||||
 | 
					     * Error messages *
 | 
				
			||||||
 | 
					     * ************** */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * The message displayed if the console tries to execute a player-only command
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    ERROR_PLAYER_ONLY("&cThis command must be used by a player"),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * The message displayed if the player tries to modify launchpad property for a block outside the whitelist
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    ERROR_NOT_WHITELISTED("&cThe block could not be modified, as it's not whitelisted. If you want to " +
 | 
				
			||||||
 | 
					            "abort changing a launchpad, use \"/launchpad abort\""),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * The message displayed if an un-parse-able message is given by a user
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    ERROR_MATERIAL_NOT_PARSE_ABLE("&cUnable to parse material: {material}"),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /* **************** *
 | 
				
			||||||
 | 
					     * Success messages *
 | 
				
			||||||
 | 
					     * **************** */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * The message displayed if the Launchpad plugin is reloaded
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    SUCCESS_PLUGIN_RELOADED("&aPlugin reloaded!"),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * The message to display when a player uses /launchpad clear
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    SUCCESS_MODIFICATIONS_CLEARED("&aCleared your launchpad modification queue"),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * The message to display to prompt the player to click a launchpad
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    SUCCESS_CLICK_BLOCK("&aClick the launchpad you want to create or modify"),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * The message to display when a launchpad has been added or modified
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    SUCCESS_MODIFIED_LAUNCHPAD("&aThe clicked block's launchpad properties have been modified"),
 | 
				
			||||||
 | 
					    ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private final @NotNull String defaultMessage;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Instantiates a new message
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param defaultMessage <p>The default value of the message</p>
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    Message(@NotNull String defaultMessage) {
 | 
				
			||||||
 | 
					        this.defaultMessage = defaultMessage;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Gets the message this enum represents
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @return <p>The formatted message</p>
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public @NotNull String getMessage() {
 | 
				
			||||||
 | 
					        return formatMessage(this.defaultMessage);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Gets the message this enum represents
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param placeholder <p>The placeholder to replace</p>
 | 
				
			||||||
 | 
					     * @param replacement <p>The replacement to use</p>
 | 
				
			||||||
 | 
					     * @return <p>The formatted message</p>
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public @NotNull String getMessage(@NotNull String placeholder, @NotNull String replacement) {
 | 
				
			||||||
 | 
					        return formatMessage(this.defaultMessage.replace(placeholder, replacement));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Gets the formatted version of the given message
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param message <p>The message to format</p>
 | 
				
			||||||
 | 
					     * @return <p>The formatted message</p>
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private @NotNull String formatMessage(@NotNull String message) {
 | 
				
			||||||
 | 
					        String prefix = Launchpad.getInstance().getDescription().getPrefix();
 | 
				
			||||||
 | 
					        return ColorHelper.translateAllColorCodes("#FFE34C[&r&l" + prefix + "#FFE34C]&r " + message);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -1,6 +1,7 @@
 | 
				
			|||||||
package net.knarcraft.launchpad.listener;
 | 
					package net.knarcraft.launchpad.listener;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import net.knarcraft.launchpad.Launchpad;
 | 
					import net.knarcraft.launchpad.Launchpad;
 | 
				
			||||||
 | 
					import net.knarcraft.launchpad.config.Message;
 | 
				
			||||||
import net.knarcraft.launchpad.launchpad.LaunchpadBlock;
 | 
					import net.knarcraft.launchpad.launchpad.LaunchpadBlock;
 | 
				
			||||||
import net.knarcraft.launchpad.launchpad.LaunchpadBlockHandler;
 | 
					import net.knarcraft.launchpad.launchpad.LaunchpadBlockHandler;
 | 
				
			||||||
import net.knarcraft.launchpad.launchpad.ModificationRequest;
 | 
					import net.knarcraft.launchpad.launchpad.ModificationRequest;
 | 
				
			||||||
@@ -49,10 +50,9 @@ public class LaunchpadModifyListener implements Listener {
 | 
				
			|||||||
            event.setUseItemInHand(Event.Result.DENY);
 | 
					            event.setUseItemInHand(Event.Result.DENY);
 | 
				
			||||||
            event.setUseInteractedBlock(Event.Result.DENY);
 | 
					            event.setUseInteractedBlock(Event.Result.DENY);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            event.getPlayer().sendMessage("Modified launchpad!");
 | 
					            event.getPlayer().sendMessage(Message.SUCCESS_MODIFIED_LAUNCHPAD.getMessage());
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            event.getPlayer().sendMessage("The block could not be modified, as it's not whitelisted. If you want " +
 | 
					            event.getPlayer().sendMessage(Message.ERROR_NOT_WHITELISTED.getMessage());
 | 
				
			||||||
                    "to abort changing a launchpad, use \"/launchpad abort\"");
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -195,7 +195,8 @@ public class ParticleSpawner implements Runnable {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        // Spawn particles on the stored locations, relative to the launchpad
 | 
					        // Spawn particles on the stored locations, relative to the launchpad
 | 
				
			||||||
        for (double[] circleCoordinate : circleCoordinates) {
 | 
					        for (double[] circleCoordinate : circleCoordinates) {
 | 
				
			||||||
            spawnParticle(world, location.clone().add(circleCoordinate[0], getParticleConfig().getHeightOffset(), circleCoordinate[1]));
 | 
					            spawnParticle(world, location.clone().add(circleCoordinate[0], getParticleConfig().getHeightOffset(),
 | 
				
			||||||
 | 
					                    circleCoordinate[1]));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										29
									
								
								src/main/java/net/knarcraft/launchpad/util/ColorHelper.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								src/main/java/net/knarcraft/launchpad/util/ColorHelper.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,29 @@
 | 
				
			|||||||
 | 
					package net.knarcraft.launchpad.util;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import net.md_5.bungee.api.ChatColor;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.regex.Matcher;
 | 
				
			||||||
 | 
					import java.util.regex.Pattern;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * A helper class for converting colors
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					public class ColorHelper {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Translates all found color codes to formatting in a string
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param message <p>The string to search for color codes</p>
 | 
				
			||||||
 | 
					     * @return <p>The message with color codes translated</p>
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public static String translateAllColorCodes(String message) {
 | 
				
			||||||
 | 
					        message = ChatColor.translateAlternateColorCodes('&', message);
 | 
				
			||||||
 | 
					        Pattern pattern = Pattern.compile("&?(#[a-fA-F0-9]{6})");
 | 
				
			||||||
 | 
					        Matcher matcher = pattern.matcher(message);
 | 
				
			||||||
 | 
					        while (matcher.find()) {
 | 
				
			||||||
 | 
					            message = message.replace(matcher.group(), "" + ChatColor.of(matcher.group(1)));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return message;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -1,6 +1,7 @@
 | 
				
			|||||||
package net.knarcraft.launchpad.util;
 | 
					package net.knarcraft.launchpad.util;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import net.knarcraft.launchpad.Launchpad;
 | 
					import net.knarcraft.launchpad.Launchpad;
 | 
				
			||||||
 | 
					import net.knarcraft.launchpad.config.Message;
 | 
				
			||||||
import org.bukkit.Bukkit;
 | 
					import org.bukkit.Bukkit;
 | 
				
			||||||
import org.bukkit.Material;
 | 
					import org.bukkit.Material;
 | 
				
			||||||
import org.bukkit.NamespacedKey;
 | 
					import org.bukkit.NamespacedKey;
 | 
				
			||||||
@@ -56,7 +57,8 @@ public final class MaterialHelper {
 | 
				
			|||||||
        if (matched != null) {
 | 
					        if (matched != null) {
 | 
				
			||||||
            parsedMaterials.add(matched);
 | 
					            parsedMaterials.add(matched);
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            Launchpad.log(Level.WARNING, "&cUnable to parse material: " + materialString);
 | 
					            Launchpad.log(Level.WARNING, Message.ERROR_MATERIAL_NOT_PARSE_ABLE.getMessage("{material}",
 | 
				
			||||||
 | 
					                    materialString));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        return parsedMaterials;
 | 
					        return parsedMaterials;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -78,7 +80,8 @@ public final class MaterialHelper {
 | 
				
			|||||||
            if (tag != null) {
 | 
					            if (tag != null) {
 | 
				
			||||||
                targetSet.addAll(tag.getValues());
 | 
					                targetSet.addAll(tag.getValues());
 | 
				
			||||||
            } else {
 | 
					            } else {
 | 
				
			||||||
                Launchpad.log(Level.WARNING, "Unable to parse: " + materialName);
 | 
					                Launchpad.log(Level.WARNING, Message.ERROR_MATERIAL_NOT_PARSE_ABLE.getMessage("{material}",
 | 
				
			||||||
 | 
					                        materialName));
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            return true;
 | 
					            return true;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -97,7 +97,7 @@ launchpad:
 | 
				
			|||||||
      #- SMOKE_NORMAL # While cool, it leaves a short trail compared to other particles
 | 
					      #- SMOKE_NORMAL # While cool, it leaves a short trail compared to other particles
 | 
				
			||||||
      - SNEEZE
 | 
					      - SNEEZE
 | 
				
			||||||
      - SNOWFLAKE
 | 
					      - SNOWFLAKE
 | 
				
			||||||
      - SONIC_BOOM
 | 
					      #- SONIC_BOOM # Cool, but a bit short and extreme
 | 
				
			||||||
      - SOUL
 | 
					      - SOUL
 | 
				
			||||||
      - SOUL_FIRE_FLAME
 | 
					      - SOUL_FIRE_FLAME
 | 
				
			||||||
      - SPELL
 | 
					      - SPELL
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,6 +5,7 @@ api-version: '1.20'
 | 
				
			|||||||
author: EpicKnarvik97
 | 
					author: EpicKnarvik97
 | 
				
			||||||
description: A plugin that adds customizable launchpads to the game
 | 
					description: A plugin that adds customizable launchpads to the game
 | 
				
			||||||
website: https://git.knarcraft.net
 | 
					website: https://git.knarcraft.net
 | 
				
			||||||
 | 
					prefix: Launchpad
 | 
				
			||||||
 | 
					
 | 
				
			||||||
commands:
 | 
					commands:
 | 
				
			||||||
  reload:
 | 
					  reload:
 | 
				
			||||||
@@ -12,7 +13,10 @@ commands:
 | 
				
			|||||||
    description: Used to reload the Launchpad plugin
 | 
					    description: Used to reload the Launchpad plugin
 | 
				
			||||||
    permission: launchpad.reload
 | 
					    permission: launchpad.reload
 | 
				
			||||||
  launchpad:
 | 
					  launchpad:
 | 
				
			||||||
    usage: /<command> <add | remove | abort | verticalVelocity | horizontalVelocity | fixedDirection> [value]
 | 
					    usage: |
 | 
				
			||||||
 | 
					      /<command> <add | remove | abort>
 | 
				
			||||||
 | 
					      /<command> <verticalVelocity | horizontalVelocity | fixedDirection> <value>
 | 
				
			||||||
 | 
					      /<command> velocities <horizontalVelocity> <verticalVelocity>
 | 
				
			||||||
    description: Used to alter launchpads
 | 
					    description: Used to alter launchpads
 | 
				
			||||||
    permission: launchpad.modify
 | 
					    permission: launchpad.modify
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user