further Componentization + language supp stub

+ fixes to tab complete and lang support stub
This commit is contained in:
Luka de Vrij committed 2023-11-23 23:17:49 +01:00
1 parent 8f471a25d4
commit d1c931cff0
10 files changed
+87 -74

No files matched your search

@@ -173,16 +173,22 @@ public class AdminCommandManager implements TabExecutor {
}
if (args.length == 3) {
List<String> arguments = new ArrayList<>();
arguments.add("&1");
arguments.add("&2");
arguments.add("&3");
arguments.add("&4");
arguments.add("&5");
arguments.add("&6");
arguments.add("&7");
arguments.add("&8");
arguments.add("&9");
arguments.add("&0");
arguments.add("black");
arguments.add("dark_blue");
arguments.add("dark_green");
arguments.add("dark_aqua");
arguments.add("dark_red");
arguments.add("dark_purple");
arguments.add("gold");
arguments.add("gray");
arguments.add("dark_gray");
arguments.add("blue");
arguments.add("green");
arguments.add("aqua");
arguments.add("red");
arguments.add("light_purple");
arguments.add("yellow");
arguments.add("white");
return arguments;
}
@@ -265,7 +271,7 @@ public class AdminCommandManager implements TabExecutor {
autoComplete.add("pause");
return autoComplete;
}
if (args[1].equalsIgnoreCase("start")){
if (args[1].equalsIgnoreCase("start") || args[1].equalsIgnoreCase("stop") ){
if (args.length == 3) {
List<String> autoComplete = new ArrayList<>();
for (AbstractEvent event : globalEventManager.enabledByConfig) {
@@ -28,6 +28,8 @@ import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
import org.bukkit.plugin.java.JavaPlugin;
import java.io.File;
public final class PureKitPvP extends JavaPlugin {
@Override
@@ -76,6 +78,15 @@ public final class PureKitPvP extends JavaPlugin {
EventData.get().options().copyDefaults(true);
EventData.save();
File lang = new File(getDataFolder(), "lang");
if(!lang.exists()) {
lang.mkdirs();
}
//TODO Check what language is selected in config
//Based on that load map from en_US.yml into a translation Map
// Use this map everywhere to query text
TabManager tabManager = new TabManager(this);
tabManager.addHeader(Component.text("Hello there!").color(NamedTextColor.RED));
tabManager.showTab();
@@ -34,6 +34,7 @@ import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import org.bukkit.projectiles.ProjectileSource;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
@@ -425,6 +426,7 @@ public class DeathHandler implements Listener {
public void onPlayerCombatHit(EntityDamageByEntityEvent event){
Player player = null;
Player damager = null;
boolean rangedCombat = true; // whether a chat message should be sent; if ranged; yes
// HAND-TO-HAND COMBAT
if (!(event.getEntity().getWorld().getName().equalsIgnoreCase(plugin.getConfig().getString("world")))){
// If the entity that is damaged is in this world, the entire event should be in this world
@@ -440,12 +442,12 @@ public class DeathHandler implements Listener {
if (!(player.getWorld().getName().equalsIgnoreCase(plugin.getConfig().getString("world")))){
return;
}
rangedCombat = false;
PerkFireHandler.fireCombatPerks(player, damager);
PerkFireHandler.fireVampirePerk(event);
} else if ((event.getDamager() instanceof Arrow || event.getDamager() instanceof SpectralArrow) && event.getEntity() instanceof Player) {
//This branch is a fuckin nightmare: too many hacked in exceptions because fucking spectral arrows and fucking skeletons
//This branch is a fuckin nightmare: too many hacked in exceptions because spectral arrows and skeletons
//Projectile combat
if(((AbstractArrow) event.getDamager()).getShooter() instanceof Player){
@@ -460,13 +462,7 @@ public class DeathHandler implements Listener {
PerkFireHandler.fireRangedPerks(event, damager);
double damage = event.getDamage();
double playerHP = player.getHealth() - damage;
if (playerHP < 0) {
playerHP = 0;
}
damager.sendMessage(ChatColor.translateAlternateColorCodes(
'&', "&a" + player.getName() + " &cis on &a" + (int) playerHP + " &cHP."));
} else if(((AbstractArrow) event.getDamager()).getShooter() instanceof Monster){
// Shooter is a skeleton probably
player = (Player) event.getEntity();
@@ -483,13 +479,7 @@ public class DeathHandler implements Listener {
ThrownPotion potion = (ThrownPotion) event.getDamager();
damager = (Player) potion.getShooter(); //works
double damage = event.getDamage();
double playerHP = player.getHealth() - damage;
if (playerHP < 0){
playerHP = 0;
}
damager.sendMessage(ChatColor.translateAlternateColorCodes(
'&', "&a" + player.getName() + " &cis on &a" + (int) playerHP + " &cHP."));
} else if (event.getDamager() instanceof Trident && event.getEntity() instanceof Player){
@@ -498,13 +488,7 @@ public class DeathHandler implements Listener {
Trident trident = (Trident) event.getDamager();
damager = (Player) trident.getShooter(); //works
double damage = event.getDamage();
double playerHP = player.getHealth() - damage;
if (playerHP < 0){
playerHP = 0;
}
damager.sendMessage(ChatColor.translateAlternateColorCodes(
'&', "&a" + player.getName() + " &cis on &a" + (int) playerHP + " &cHP."));
} else if (event.getDamager() instanceof Monster && event.getEntity() instanceof Player) {
@@ -515,20 +499,38 @@ public class DeathHandler implements Listener {
} else if (event.getDamager() instanceof EnderPearl && event.getEntity() instanceof Player) {
PerkFireHandler.fireEnderpearlDamagePerks((Player) event.getEntity(), event);
return;
}
else if (event.getDamager() instanceof Firework && event.getEntity() instanceof Player){
} else if (event.getDamager() instanceof Firework && event.getEntity() instanceof Player){
Firework fw = (Firework) event.getDamager();
if (fw.getShooter() instanceof Player){
player = (Player) event.getEntity();
damager = (Player) fw.getShooter();
} else {return;}
}
}
else {
//If we end up here idk what happened but nothing relevant (probably a zombie hitting a pig or something)
return;
}
// HP Message
if (rangedCombat){
double damage = event.getDamage();
double playerHP = player.getHealth() - damage;
if (playerHP < 0){
playerHP = 0;
}
DecimalFormat decimalFormat = new DecimalFormat("#.#");
String formattedDamage = decimalFormat.format(damage);
String formattedHP = decimalFormat.format(playerHP);
damager.sendMessage(
Component.text(player.getName(), NamedTextColor.GREEN).append(
Component.text(" is on ", NamedTextColor.RED).append(
Component.text(formattedHP, NamedTextColor.GREEN).append(
Component.text(" HP!", NamedTextColor.RED)
))));
damager.sendMessage(
Component.text(" You dealt ", NamedTextColor.GRAY).append(
Component.text(formattedDamage, NamedTextColor.GREEN).append(
Component.text(" damage!", NamedTextColor.GRAY))));
}
int damageAmount = (int) event.getDamage();
@@ -3,6 +3,7 @@ package me.lifelessnerd.purekitpvp.cosmetics.cosmeticsCommand;
import me.lifelessnerd.purekitpvp.kitCommand.GetKit;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.TextComponent;
import net.kyori.adventure.text.format.NamedTextColor;
import net.kyori.adventure.text.format.TextColor;
import net.kyori.adventure.text.format.TextDecoration;
import org.bukkit.Bukkit;
@@ -25,7 +26,7 @@ import java.util.List;
public class CosmeticsCommand implements CommandExecutor {
Plugin plugin;
public CosmeticsCommand(Plugin plugin) {
public CosmeticsCommand(Plugin plugin) {
this.plugin = plugin;
}
@@ -38,7 +39,9 @@ public class CosmeticsCommand implements CommandExecutor {
Player player = (Player) sender;
if (!(player.getWorld().getName().equalsIgnoreCase(plugin.getConfig().getString("world")))){
player.sendMessage(ChatColor.RED + "You can only use this menu in " + ChatColor.GRAY + plugin.getConfig().getString("world"));
player.sendMessage(
Component.text("You can only use this menu in ", NamedTextColor.RED).append(
Component.text(plugin.getConfig().getString("world"), NamedTextColor.GRAY)));
return true;
}
//Create inventory GUI
@@ -62,6 +62,9 @@ public class CreateKit extends Subcommand {
try {
displayColor = NamedTextColor.NAMES.value(args[2]);
// System.out.println(displayColor);
if (displayColor == null){
throw new NullPointerException();
}
} catch(Exception e) {
player.sendMessage(Component.text("Color is not valid!", NamedTextColor.RED));
return false;
@@ -93,12 +96,6 @@ public class CreateKit extends Subcommand {
killItem = "AIR";
}
//Storing all contents
ItemStack helmet = player.getInventory().getHelmet();
ItemStack chestplate = player.getInventory().getChestplate();
ItemStack leggings = player.getInventory().getLeggings();
ItemStack boots = player.getInventory().getBoots();
ItemStack[] kitContents = player.getInventory().getContents();
//Create kit in config
@@ -107,16 +104,12 @@ public class CreateKit extends Subcommand {
KitConfig.get().set("kits." + kitName + ".displayname", displayColor.toString());
KitConfig.get().set("kits." + kitName + ".guiitem", kitIcon);
KitConfig.get().set("kits." + kitName + ".guilore", "");
KitConfig.get().set("kits." + kitName + ".helmet", helmet);
KitConfig.get().set("kits." + kitName + ".chestplate", chestplate);
KitConfig.get().set("kits." + kitName + ".leggings", leggings);
KitConfig.get().set("kits." + kitName + ".boots", boots);
KitConfig.get().set("kits." + kitName + ".contents", kitContents);
//Killitem
Material killItemMat = Material.getMaterial(killItem);
ItemStack killItemStack = new ItemStack(killItemMat); // Forced by contains in MatList above
KitConfig.get().addDefault("kits." + kitName + ".killitem", "GOLDEN_APPLE");
// KitConfig.get().addDefault("kits." + kitName + ".killitem", "GOLDEN_APPLE"); //what does addDefault even do? not this at least
KitConfig.get().set("kits." + kitName + ".killitem", killItemStack);
KitConfig.get().options().copyDefaults(true);
@@ -1,10 +1,8 @@
package me.lifelessnerd.purekitpvp.globalevents;
import me.lifelessnerd.purekitpvp.Subcommand;
import me.lifelessnerd.purekitpvp.globalevents.events.AbstractEvent;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
@@ -75,7 +75,7 @@ public class GUIListener implements Listener {
player.chat("/perks");
} else if (e.getRawSlot() == 48){ // Prev page button
if (e.getCurrentItem().equals(new ItemStack(Material.AIR))){
if (e.getCurrentItem() == null){
return;
}
e.setCancelled(true);
@@ -84,7 +84,7 @@ public class GUIListener implements Listener {
player.chat("/kit " + prevPage);
} else if (e.getRawSlot() == 50){ // Next page button
if (e.getCurrentItem().equals(new ItemStack(Material.AIR))){
if (e.getCurrentItem() == null){
return;
}
e.setCancelled(true);
@@ -3,6 +3,8 @@ package me.lifelessnerd.purekitpvp.kitCommand;
import me.lifelessnerd.purekitpvp.files.KitConfig;
import me.lifelessnerd.purekitpvp.files.KitStatsConfig;
import me.lifelessnerd.purekitpvp.files.PlayerStatsConfig;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.command.Command;
@@ -53,22 +55,24 @@ public class GetKit implements TabExecutor, Listener {
String kitNameArg = args[0].substring(0, 1).toUpperCase() + args[0].substring(1);
if (!(player.getWorld().getName().equalsIgnoreCase(plugin.getConfig().getString("world")))){
player.sendMessage("You cannot use that command in this world!");
player.sendMessage(
Component.text("You can only use this menu in ", NamedTextColor.RED).append(
Component.text(plugin.getConfig().getString("world"), NamedTextColor.GRAY)));
return true;
}
if (hasKit.contains(player.getName())){
player.sendMessage(ChatColor.GRAY + "You already have a kit!");
player.sendMessage(Component.text("You already have a kit!", NamedTextColor.RED));
return true;
}
if (args.length != 1) {
player.sendMessage(ChatColor.RED + "Incorrect arguments!");
player.sendMessage(Component.text("Incorrect arguments!", NamedTextColor.RED));
return false;
}
if (!(KitConfig.get().isSet("kits." + kitNameArg))){
player.sendMessage(ChatColor.GRAY + "That kit does not exist.");
player.sendMessage(Component.text("That kit does not exist!", NamedTextColor.RED));
return true;
}
@@ -88,7 +92,7 @@ public class GetKit implements TabExecutor, Listener {
FileConfiguration fileConfiguration = KitConfig.get();
List<ItemStack> kitItems = (List<ItemStack>) fileConfiguration.get("kits." + kitNameArg + ".contents");
//Remove any potion effects that make PvP unfair
//Remove any active potion effects that make PvP unfair
for (PotionEffect effect : player.getActivePotionEffects())
player.removePotionEffect(effect.getType());
@@ -98,18 +102,10 @@ public class GetKit implements TabExecutor, Listener {
if (item == null) {
item = new ItemStack(Material.AIR);
}
// This code is from PureKits, idk why it works (.setHelmet is called for every armor piece?)
player.getInventory().setItem(index, item);
ItemStack helmet = fileConfiguration.getItemStack("kits." + kitNameArg + ".helmet");
player.getInventory().setHelmet(helmet);
ItemStack chestplate = fileConfiguration.getItemStack("kits." + kitNameArg + ".helmet");
player.getInventory().setHelmet(chestplate);
ItemStack leggings = fileConfiguration.getItemStack("kits." + kitNameArg + ".helmet");
player.getInventory().setHelmet(leggings);
ItemStack boots = fileConfiguration.getItemStack("kits." + kitNameArg + ".helmet");
player.getInventory().setHelmet(boots);
}
hasKit.add(player.getName());
//Add current kit to config
@@ -47,12 +47,14 @@ public class KitsGUI implements TabExecutor {
}
if (!KitConfig.get().isSet("kits.")) {
player.sendMessage(ChatColor.GRAY + "There aren't any kits yet!");
player.sendMessage(Component.text("There are no kits!", NamedTextColor.RED));
return true;
}
if (!(player.getWorld().getName().equalsIgnoreCase(plugin.getConfig().getString("world")))){
player.sendMessage(ChatColor.RED + "You can only use this menu in " + ChatColor.GRAY + plugin.getConfig().getString("world"));
player.sendMessage(
Component.text("You can only use this menu in ", NamedTextColor.RED).append(
Component.text(plugin.getConfig().getString("world"), NamedTextColor.GRAY)));
return true;
}
@@ -228,7 +230,6 @@ public class KitsGUI implements TabExecutor {
itemMeta.setDisplayName(ChatColor.translateAlternateColorCodes('&', kitDisplayColor + key)); //For legacy kits
} else {
itemMeta.displayName(Component.text(key, NamedTextColor.NAMES.value(kitDisplayColor)));
System.out.println(NamedTextColor.NAMES.value(kitDisplayColor));
}
itemStack.setItemMeta(itemMeta);
@@ -8,6 +8,7 @@ import me.lifelessnerd.purekitpvp.utils.ComponentUtils;
import me.lifelessnerd.purekitpvp.utils.MyStringUtils;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.TextComponent;
import net.kyori.adventure.text.format.NamedTextColor;
import net.kyori.adventure.text.format.TextColor;
import net.kyori.adventure.text.format.TextDecoration;
import org.bukkit.Bukkit;
@@ -46,7 +47,9 @@ public class PerkCommand implements CommandExecutor {
Player player = (Player) sender;
if (!(player.getWorld().getName().equalsIgnoreCase(plugin.getConfig().getString("world")))){
player.sendMessage(ChatColor.RED + "You can only use this menu in " + ChatColor.GRAY + plugin.getConfig().getString("world"));
player.sendMessage(
Component.text("You can only use this menu in ", NamedTextColor.RED).append(
Component.text(plugin.getConfig().getString("world"), NamedTextColor.GRAY)));
return true;
}
if (GetKit.hasKit.contains(player.getName())){