New command 'nbttools' also integrating ACF

This commit is contained in:
nossr50 2020-02-07 15:06:00 -08:00
parent ab0fc06dc2
commit 24ba3b1a01
12 changed files with 108 additions and 70 deletions

View File

@ -11,6 +11,8 @@ subprojects {
maven("https://repo.codemc.org/repository/maven-public") maven("https://repo.codemc.org/repository/maven-public")
maven("https://maven.sk89q.com/repo") maven("https://maven.sk89q.com/repo")
maven("https://mvnrepository.com/artifact/org.jetbrains/annotations") maven("https://mvnrepository.com/artifact/org.jetbrains/annotations")
maven("https://repo.aikar.co/content/groups/aikar/")
maven("https://hub.spigotmc.org/nexus/content/groups/public/")
} }
tasks { tasks {

View File

@ -20,12 +20,14 @@ tasks {
include(dependency("org.apache.tomcat:tomcat-jdbc")) include(dependency("org.apache.tomcat:tomcat-jdbc"))
include(dependency("org.apache.tomcat:tomcat-juli")) include(dependency("org.apache.tomcat:tomcat-juli"))
include(dependency("com.typesafe:config")) include(dependency("com.typesafe:config"))
include(dependency("co.aikar:acf-bukkit"))
exclude(dependency("org.spigotmc:spigot")) exclude(dependency("org.spigotmc:spigot"))
} }
relocate("org.apache.commons.logging", "com.gmail.nossr50.commons.logging") relocate("org.apache.commons.logging", "com.gmail.nossr50.commons.logging")
relocate("org.apache.juli", "com.gmail.nossr50.database.tomcat.juli") relocate("org.apache.juli", "com.gmail.nossr50.database.tomcat.juli")
relocate("org.apache.tomcat", "com.gmail.nossr50.database.tomcat") relocate("org.apache.tomcat", "com.gmail.nossr50.database.tomcat")
relocate("org.bstats", "com.gmail.nossr50.metrics.bstat") relocate("org.bstats", "com.gmail.nossr50.metrics.bstat")
relocate("co.aikar.commands", "com.gmail.nossr50.acf")
} }
processResources { processResources {
@ -43,6 +45,7 @@ dependencies {
api("org.spongepowered:configurate-core:3.7-SNAPSHOT") api("org.spongepowered:configurate-core:3.7-SNAPSHOT")
api("org.spongepowered:configurate-yaml:3.7-SNAPSHOT") api("org.spongepowered:configurate-yaml:3.7-SNAPSHOT")
api("org.spongepowered:configurate-hocon:3.7-SNAPSHOT") api("org.spongepowered:configurate-hocon:3.7-SNAPSHOT")
api("co.aikar:acf-bukkit:0.5.0-SNAPSHOT")
implementation("org.jetbrains:annotations:17.0.0") implementation("org.jetbrains:annotations:17.0.0")
implementation("org.apache.maven.scm:maven-scm-provider-gitexe:1.8.1") implementation("org.apache.maven.scm:maven-scm-provider-gitexe:1.8.1")
implementation("org.bstats:bstats-bukkit:1.4") implementation("org.bstats:bstats-bukkit:1.4")

View File

@ -0,0 +1,15 @@
package com.gmail.nossr50.commands.admin;
import co.aikar.commands.BaseCommand;
import co.aikar.commands.annotation.Dependency;
import co.aikar.commands.annotation.Description;
import com.gmail.nossr50.mcMMO;
@Description("Read or Modify values of NBT on an item in-hand")
public class NBTToolsCommand extends BaseCommand {
@Dependency
private mcMMO pluginRef;
}

View File

@ -1,20 +0,0 @@
package com.gmail.nossr50.commands.admin;
import com.gmail.nossr50.mcMMO;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
public class PlayerDebug implements CommandExecutor {
private final mcMMO pluginRef;
public PlayerDebug(mcMMO pluginRef) {
this.pluginRef = pluginRef;
}
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
return false;
}
}

View File

@ -1,29 +1,28 @@
package com.gmail.nossr50.commands.admin; package com.gmail.nossr50.commands.admin;
import co.aikar.commands.BaseCommand;
import co.aikar.commands.annotation.Dependency;
import co.aikar.commands.annotation.Description;
import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.player.McMMOPlayer;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
public class PlayerDebugCommand implements CommandExecutor {
private final mcMMO pluginRef; @Description("Puts the player into debug mode, which helps problem solve bugs in mcMMO.")
public class PlayerDebugCommand extends BaseCommand {
public PlayerDebugCommand(mcMMO pluginRef) { @Dependency
this.pluginRef = pluginRef; private mcMMO pluginRef;
}
@Override public void onCommand(CommandSender sender) {
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if(sender instanceof Player) { if(sender instanceof Player) {
McMMOPlayer mcMMOPlayer = pluginRef.getUserManager().getPlayer((Player) sender); McMMOPlayer mcMMOPlayer = pluginRef.getUserManager().getPlayer((Player) sender);
mcMMOPlayer.toggleDebugMode(); //Toggle debug mode mcMMOPlayer.toggleDebugMode(); //Toggle debug mode
pluginRef.getNotificationManager().sendPlayerInformationChatOnlyPrefixed(mcMMOPlayer.getPlayer(), "Commands.Mmodebug.Toggle", String.valueOf(mcMMOPlayer.isDebugMode())); pluginRef.getNotificationManager().sendPlayerInformationChatOnlyPrefixed(mcMMOPlayer.getPlayer(), "Commands.Mmodebug.Toggle", String.valueOf(mcMMOPlayer.isDebugMode()));
return true;
} else { } else {
return false; //TODO: Localize
sender.sendMessage("Players only");
} }
} }

View File

@ -3,7 +3,6 @@ package com.gmail.nossr50.config.skills.ranks;
import com.gmail.nossr50.api.exceptions.MissingSkillPropertyDefinition; import com.gmail.nossr50.api.exceptions.MissingSkillPropertyDefinition;
import com.gmail.nossr50.datatypes.skills.properties.SkillProperty; import com.gmail.nossr50.datatypes.skills.properties.SkillProperty;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import org.apache.logging.log4j.Level;
import java.util.HashMap; import java.util.HashMap;

View File

@ -32,7 +32,7 @@ public class BukkitNBTAdapter implements NBTAdapter {
case LIST: case LIST:
return asNativeNBTList((NBTList) nbtBase); return asNativeNBTList((NBTList) nbtBase);
case COMPOUND: case COMPOUND:
return ; return asNativeNBTCompound((NBTCompound) nbtBase);
case INT_ARRAY: case INT_ARRAY:
return asNativeNBTIntArray((NBTIntArray) nbtBase); return asNativeNBTIntArray((NBTIntArray) nbtBase);
case LONG_ARRAY: case LONG_ARRAY:
@ -130,9 +130,12 @@ public class BukkitNBTAdapter implements NBTAdapter {
* @param nbtCompound target NBTCompound * @param nbtCompound target NBTCompound
* @return NBTTagCompound copy of our NBTCompound representation * @return NBTTagCompound copy of our NBTCompound representation
*/ */
//TODO: Finish
private NBTTagCompound asNativeNBTCompound(NBTCompound nbtCompound) { private NBTTagCompound asNativeNBTCompound(NBTCompound nbtCompound) {
System.out.println("FINISH asNativeNBTCompound()");
NBTTagCompound nbtTagCompound = new NBTTagCompound(); NBTTagCompound nbtTagCompound = new NBTTagCompound();
nbtCompound
return nbtTagCompound;
} }
/** /**

View File

@ -1,7 +1,5 @@
package com.gmail.nossr50.core.nbt; package com.gmail.nossr50.core.nbt;
import org.checkerframework.checker.nullness.qual.NonNull;
import java.util.Arrays; import java.util.Arrays;
public class NBTByteArray implements NBTBase { public class NBTByteArray implements NBTBase {

View File

@ -1,7 +1,5 @@
package com.gmail.nossr50.core.nbt; package com.gmail.nossr50.core.nbt;
import org.checkerframework.checker.nullness.qual.NonNull;
import java.util.Arrays; import java.util.Arrays;
public class NBTIntArray implements NBTBase { public class NBTIntArray implements NBTBase {

View File

@ -1,6 +1,8 @@
package com.gmail.nossr50.util.commands; package com.gmail.nossr50.util.commands;
import co.aikar.commands.BukkitCommandManager;
import com.gmail.nossr50.commands.*; import com.gmail.nossr50.commands.*;
import com.gmail.nossr50.commands.admin.NBTToolsCommand;
import com.gmail.nossr50.commands.admin.PlayerDebugCommand; import com.gmail.nossr50.commands.admin.PlayerDebugCommand;
import com.gmail.nossr50.commands.admin.ReloadLocaleCommand; import com.gmail.nossr50.commands.admin.ReloadLocaleCommand;
import com.gmail.nossr50.commands.chat.AdminChatCommand; import com.gmail.nossr50.commands.chat.AdminChatCommand;
@ -30,10 +32,12 @@ import java.util.Locale;
public final class CommandRegistrationManager { public final class CommandRegistrationManager {
private final mcMMO pluginRef; private final mcMMO pluginRef;
private String permissionsMessage; private String permissionsMessage;
private BukkitCommandManager bukkitCommandManager;
public CommandRegistrationManager(mcMMO pluginRef) { public CommandRegistrationManager(mcMMO pluginRef) {
this.pluginRef = pluginRef; this.pluginRef = pluginRef;
permissionsMessage = pluginRef.getLocaleManager().getString("mcMMO.NoPermission"); permissionsMessage = pluginRef.getLocaleManager().getString("mcMMO.NoPermission");
bukkitCommandManager = new BukkitCommandManager(pluginRef);
} }
private void registerSkillCommands() { private void registerSkillCommands() {
@ -117,6 +121,40 @@ public final class CommandRegistrationManager {
} }
} }
/**
* Initialize ACF commands
*/
private void initACF() {
//TODO: See if needed
bukkitCommandManager.enableUnstableAPI("help");
registerACFCommands();
}
/**
* Register ACF Commands
*/
private void registerACFCommands() {
//Register ACF Commands
registerNBTToolsCommand();
registerMmoDebugCommand();
}
/**
* Register the NBT Tools command
*/
private void registerNBTToolsCommand() {
bukkitCommandManager.registerCommand(new NBTToolsCommand());
}
/**
* Register the MMO Debug command
*/
private void registerMmoDebugCommand() {
bukkitCommandManager.registerCommand(new PlayerDebugCommand());
}
private void registerAddlevelsCommand() { private void registerAddlevelsCommand() {
PluginCommand command = pluginRef.getCommand("addlevels"); PluginCommand command = pluginRef.getCommand("addlevels");
command.setDescription(pluginRef.getLocaleManager().getString("Commands.Description.addlevels")); command.setDescription(pluginRef.getLocaleManager().getString("Commands.Description.addlevels"));
@ -153,16 +191,6 @@ public final class CommandRegistrationManager {
command.setExecutor(new MmoInfoCommand(pluginRef)); command.setExecutor(new MmoInfoCommand(pluginRef));
} }
private void registerMmoDebugCommand() {
PluginCommand command = pluginRef.getCommand("mmodebug");
command.setDescription(pluginRef.getLocaleManager().getString("Commands.Description.mmodebug"));
command.setPermission(null); //No perm required to save support headaches
command.setPermissionMessage(permissionsMessage);
command.setUsage(pluginRef.getLocaleManager().getString("Commands.Usage.0", "mmodebug"));
command.setExecutor(new PlayerDebugCommand(pluginRef));
}
private void registerMcChatSpyCommand() { private void registerMcChatSpyCommand() {
PluginCommand command = pluginRef.getCommand("mcchatspy"); PluginCommand command = pluginRef.getCommand("mcchatspy");
command.setDescription(pluginRef.getLocaleManager().getString("Commands.Description.mcchatspy")); command.setDescription(pluginRef.getLocaleManager().getString("Commands.Description.mcchatspy"));
@ -476,5 +504,8 @@ public final class CommandRegistrationManager {
registerMcmmoReloadCommand(); registerMcmmoReloadCommand();
// Admin commands // Admin commands
registerReloadLocaleCommand(); registerReloadLocaleCommand();
//ACF Commands
initACF();
} }
} }

View File

@ -5,28 +5,30 @@ import com.gmail.nossr50.core.nbt.NBTCompound;
import net.minecraft.server.v1_14_R1.NBTTagByte; import net.minecraft.server.v1_14_R1.NBTTagByte;
public class NBTFactory { public class NBTFactory {
//TODO: Finish
/** /**
* Converts NMS NBT types into our own NBT type representation * Converts NMS NBT types into our own NBT type representation
* @param nmsNBT target NMS Compound * @param nmsNBT target NMS Compound
* @return NMS Representation of our NBT * @return NMS Representation of our NBT
*/ */
public NBTCompound asNBT(net.minecraft.server.v1_14_R1.NBTTagCompound nmsNBT) { // public NBTCompound asNBT(net.minecraft.server.v1_14_R1.NBTTagCompound nmsNBT) {
NBTCompound nbtCompound = new NBTCompound(""); // NBTCompound nbtCompound = new NBTCompound("");
//
// //Traverse the NMS Map
// for(String key : nmsNBT.getKeys()) {
//
// }
// }
//Traverse the NMS Map //TODO: Finish
for(String key : nmsNBT.getKeys()) { // /**
// * Convert our NBT type into the NMS NBT Type equivalent
} // * @param nbtCompound target nbt compound
} // * @return NMS NBT copy of our NBT type
// */
/** // public net.minecraft.server.v1_14_R1.NBTTagCompound asNMSCopy(NBTCompound nbtCompound) {
* Convert our NBT type into the NMS NBT Type equivalent //
* @param nbtCompound target nbt compound // }
* @return NMS NBT copy of our NBT type
*/
public net.minecraft.server.v1_14_R1.NBTTagCompound asNMSCopy(NBTCompound nbtCompound) {
}
/** /**
* Create a new NMS NBT tag compound with only 1 tag compound named "tag" * Create a new NMS NBT tag compound with only 1 tag compound named "tag"
@ -40,12 +42,13 @@ public class NBTFactory {
return nbtTagCompound; return nbtTagCompound;
} }
private NBTCompound deepCopy(NBTCompound target, String key, net.minecraft.server.v1_14_R1.NBTBase nbtBase) { //TODO: Finish
switch (nbtBase.getTypeId()) { // private NBTCompound deepCopy(NBTCompound target, String key, net.minecraft.server.v1_14_R1.NBTBase nbtBase) {
case 0: // switch (nbtBase.getTypeId()) {
return new NBTCompound(); // case 0:
} // return new NBTCompound();
} // }
// }
/** /**
* Create a NBTByte representation of NBTTagByte (NMS Type) * Create a NBTByte representation of NBTTagByte (NMS Type)

View File

@ -19,6 +19,9 @@ load: POSTWORLD
api-version: 1.13 api-version: 1.13
commands: commands:
nbttools:
description: Modify or Read NBT from an item in hand
permission: mcmmo.commands.nbttools
mmodebug: mmodebug:
aliases: [mcmmodebugmode] aliases: [mcmmodebugmode]
description: Toggles a debug mode which will print useful information to chat description: Toggles a debug mode which will print useful information to chat
@ -628,6 +631,10 @@ permissions:
children: children:
mcmmo.commands.mcconvert.all: true mcmmo.commands.mcconvert.all: true
mcmmo.commands.xprate.all: true mcmmo.commands.xprate.all: true
mcmmo.commands.nbttools: true
mcmmo.commands.nbttools:
default: false
description: Modify or Read NBT of an item in-hand
mcmmo.bypass.*: mcmmo.bypass.*:
default: false default: false
description: Implies all bypass permissions. description: Implies all bypass permissions.