From b8b41aa5846dae5a9bbf4fee82020f1d9e2b2a48 Mon Sep 17 00:00:00 2001 From: Benjamin Culkin Date: Mon, 12 Aug 2024 17:08:54 -0400 Subject: Initial commit --- .../fyresmodjam/commands/CommandWeaponStats.java | 157 +++++++++++++++++++++ 1 file changed, 157 insertions(+) create mode 100644 src/main/java/fyresmodjam/commands/CommandWeaponStats.java (limited to 'src/main/java/fyresmodjam/commands/CommandWeaponStats.java') diff --git a/src/main/java/fyresmodjam/commands/CommandWeaponStats.java b/src/main/java/fyresmodjam/commands/CommandWeaponStats.java new file mode 100644 index 0000000..f3ea8b7 --- /dev/null +++ b/src/main/java/fyresmodjam/commands/CommandWeaponStats.java @@ -0,0 +1,157 @@ +package fyresmodjam.commands; + +import java.util.LinkedList; +import java.util.List; + +import fyresmodjam.ModjamMod; +import fyresmodjam.handlers.NewPacketHandler; +import fyresmodjam.misc.EntityStatHelper; +import net.minecraft.command.ICommand; +import net.minecraft.command.ICommandSender; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.server.MinecraftServer; +import net.minecraft.util.math.BlockPos; + +public class CommandWeaponStats implements ICommand { + + @Override + public int compareTo(ICommand arg0) { + return 0; + } + + @Override + public String getName() { + return "weaponKnowledge"; + } + + @Override + public String getUsage(ICommandSender icommandsender) { + return "commands.weaponKnowledge.usage"; + } + + @Override + public List getAliases() { + return new LinkedList<>(); + } + + @Override + public void execute(MinecraftServer mcServer, + ICommandSender icommandsender, String[] astring) { + int page = astring.length > 0 + ? Integer.parseInt(astring[0]) - 1 + : 0, maxPage = 0; + if (icommandsender instanceof EntityPlayer) { + EntityPlayer entityplayer = (EntityPlayer) icommandsender; + + String message = "\u00A7c\u00A7oWeapon kill stats not enabled."; + + if (ModjamMod.enableWeaponKillStats) { + message = "@Weapon Knowledge:"; + + if (entityplayer.getEntityData() + .hasKey("WeaponStats")) { + NBTTagCompound itemStats = entityplayer + .getEntityData() + .getCompoundTag("WeaponStats"); + + String trackedItems = itemStats + .hasKey("TrackedItemList") + ? itemStats.getString( + "TrackedItemList") + : ""; + + if (trackedItems != null + && trackedItems.length() > 0) { + String[] trackedItemList = trackedItems + .split(";"); + + maxPage = Math.max(0, + (itemStats.getSize()) + / 4); + if (page > maxPage) { + page = maxPage; + } + if (page < 0) { + page = 0; + } + + message = "@Weapon Knowledge (page " + + (page + 1) + + "/" + + (maxPage + 1) + + "):"; + + int count = 0, skip = 0; + for (String item : trackedItemList) { + if (skip < page * 4) { + skip++; + continue; + } + + int kills = itemStats + .getInteger(item); + + int last = 0; + for (int i = 0; i < EntityStatHelper.killCount.length; i++) { + if (kills >= EntityStatHelper.killCount[i] + * 2) { + last = i; + continue; + } else { + break; + } + } + + message += "@\u00A7b " + + EntityStatHelper.knowledge[last] + + " " + + item.toLowerCase() + + " user\u00A73 " + + (last > 0 ? "+" + + EntityStatHelper.damageBonusString[last] + + "% damage bonus (" + : "(") + + kills + + " kill(s)" + + (last < EntityStatHelper.knowledge.length + - 1 ? ", " + (EntityStatHelper.killCount[last + 1] * 2 - kills + " kill(s) to next rank)") : ")"); + count++; + + if (count >= 4) { + break; + } + } + } + } else { + message += "@ You've yet to learn anything."; + } + } + + NewPacketHandler.SEND_MESSAGE.sendToPlayer( + entityplayer, message); + } + } + + @Override + public boolean checkPermission(MinecraftServer mcServer, + ICommandSender icommandsender) { + return true; + } + + @Override + public List getTabCompletions(MinecraftServer mcServer, ICommandSender icommandsender, + String[] astring, BlockPos bPos) { + return new LinkedList<>(); + } + + @Override + public boolean isUsernameIndex(String[] astring, int i) { + return false; + } + + public int getRequiredPermissionLevel() { + return 0; + } + +} -- cgit v1.2.3