mirror of
https://gitlab.com/SamB440/rpgregions-2.git
synced 2025-12-28 11:19:24 +00:00
Properly serialize and deserialize itemstacks
This commit is contained in:
@@ -10,6 +10,7 @@ import net.islandearth.languagy.language.Translator;
|
||||
import net.islandearth.rpgregions.api.RPGRegionsAPI;
|
||||
import net.islandearth.rpgregions.commands.RPGRegionsCommand;
|
||||
import net.islandearth.rpgregions.gson.AbstractAdapter;
|
||||
import net.islandearth.rpgregions.gson.ItemStackAdapter;
|
||||
import net.islandearth.rpgregions.listener.ConnectionListener;
|
||||
import net.islandearth.rpgregions.listener.MoveListener;
|
||||
import net.islandearth.rpgregions.listener.RegionListener;
|
||||
@@ -21,6 +22,7 @@ import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.plugin.PluginManager;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
@@ -132,6 +134,7 @@ public final class RPGRegions extends JavaPlugin implements RPGRegionsAPI, Langu
|
||||
public Gson getGson() {
|
||||
return new GsonBuilder()
|
||||
.registerTypeAdapter(DiscoveryReward.class, new AbstractAdapter<DiscoveryReward>(null))
|
||||
.registerTypeHierarchyAdapter(ItemStack.class, new ItemStackAdapter())
|
||||
.setPrettyPrinting()
|
||||
.serializeNulls().create();
|
||||
}
|
||||
|
||||
@@ -195,9 +195,6 @@ public class RPGRegionsCommand extends BaseCommand {
|
||||
String region = args[0];
|
||||
ConfiguredRegion configuredRegion = plugin.getManagers().getRegionsCache().getConfiguredRegion(region);
|
||||
if (configuredRegion != null) {
|
||||
System.out.println(player.getInventory().getItemInMainHand().getData());
|
||||
System.out.println(player.getInventory().getItemInMainHand().getItemMeta());
|
||||
System.out.println(plugin.getGson().toJson(player.getInventory().getItemInMainHand()));
|
||||
configuredRegion.getRewards().add(new ItemReward(player.getInventory().getItemInMainHand()));
|
||||
player.sendMessage(ChatColor.GREEN + "Item added to configuration!");
|
||||
} else {
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
package net.islandearth.rpgregions.gson;
|
||||
|
||||
import com.google.gson.*;
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.Map;
|
||||
|
||||
public class ItemStackAdapter implements JsonSerializer<ItemStack>, JsonDeserializer<ItemStack> {
|
||||
|
||||
private final Gson gson;
|
||||
|
||||
public ItemStackAdapter() {
|
||||
this.gson = new GsonBuilder().create();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext context) throws JsonParseException {
|
||||
Map<String, Object> map = gson.fromJson(jsonElement, new TypeToken<Map<String, Object>>(){}.getType());
|
||||
return ItemStack.deserialize(map);
|
||||
}
|
||||
|
||||
@Override
|
||||
public JsonElement serialize(ItemStack itemStack, Type type, JsonSerializationContext context) {
|
||||
return gson.toJsonTree(itemStack.serialize());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user