I’m still learning how to make sponge plugins, so require some guidance.
Have the following code:
public class getHand implements CommandExecutor {
@Override
public CommandResult execute(CommandSource src, CommandContext args) throws CommandException{
TypeSerializers.getDefaultSerializers();
if(!(src instanceof Player)) {
src.sendMessage(Text.of("Can only be run by players"));
return CommandResult.success();
}
Player player = (Player) src;
ItemStack item = player.getItemInHand(HandTypes.MAIN_HAND).get();
try {
String serializeItem = serializeItem(item);
player.sendMessage(Text.of(serializeItem));
} catch (IOException | ObjectMappingException err) {
player.sendMessage(Text.of(new Object[]{TextColors.RED, "Error: ", err.getMessage()}));
}
return CommandResult.success();
}
public static String serializeItem(ItemStack item) throws ObjectMappingException, IOException {
ConfigurationNode node = GsonConfigurationLoader.builder().build().createEmptyNode();
StringWriter stringWriter = new StringWriter();
node.setValue(TypeToken.of(ItemStack.class), item);
GsonConfigurationLoader.builder().setSink(() -> {
return new BufferedWriter(stringWriter);
}).setIndent(0).build().save(node);
return stringWriter.toString();
}
}
It’s just to get a string containing item information. Works for most items, however when faced with a pokecube containing a pokemon, I get “java.lang.IllegalArgumentException: Configuration does not accept objects of type class java.lang.Byte”
Same error can be seen here:
However, I’m having problems understanding what @BrainStone did to fix the problem. I took a brief look at his code, to see what the fix was, but it seems to have changed so much.