mirror of
https://github.com/EssentialsX/Essentials.git
synced 2025-02-13 02:41:37 +01:00
Add per-provider implementations of ItemData
This commit is contained in:
parent
05fcb7b1aa
commit
96c6c7b1ca
@ -1,12 +1,14 @@
|
||||
package net.ess3.nms.flattened;
|
||||
|
||||
import com.google.gson.*;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.google.gson.JsonParser;
|
||||
import net.ess3.nms.ItemDbProvider;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.PotionMeta;
|
||||
import org.bukkit.potion.PotionData;
|
||||
import org.bukkit.potion.PotionType;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
@ -14,7 +16,7 @@ import java.util.stream.Collectors;
|
||||
public class FlatItemDbProvider extends ItemDbProvider {
|
||||
private static Gson gson = new Gson();
|
||||
|
||||
private final transient Map<String, ItemData> primaryNames = new HashMap<>();
|
||||
private final transient Map<String, FlatItemData> primaryNames = new HashMap<>();
|
||||
private final transient Map<String, List<String>> names = new HashMap<>();
|
||||
|
||||
@Override
|
||||
@ -39,9 +41,9 @@ public class FlatItemDbProvider extends ItemDbProvider {
|
||||
|
||||
@Override
|
||||
public String getPrimaryName(ItemStack item) {
|
||||
ItemData itemData = new ItemData(null, item.getType(), null);
|
||||
ItemData itemData = new FlatItemData(null, item.getType(), null);
|
||||
|
||||
for (Map.Entry<String, ItemData> entry : primaryNames.entrySet()) {
|
||||
for (Map.Entry<String, FlatItemData> entry : primaryNames.entrySet()) {
|
||||
if (entry.getValue().equals(itemData)) {
|
||||
return entry.getKey();
|
||||
}
|
||||
@ -116,7 +118,7 @@ public class FlatItemDbProvider extends ItemDbProvider {
|
||||
JsonElement element = entry.getValue();
|
||||
|
||||
if (element.isJsonObject()) {
|
||||
ItemData data = gson.fromJson(element, ItemData.class);
|
||||
FlatItemData data = gson.fromJson(element, FlatItemData.class);
|
||||
primaryNames.put(key, data);
|
||||
} else {
|
||||
try {
|
||||
@ -159,4 +161,30 @@ public class FlatItemDbProvider extends ItemDbProvider {
|
||||
public String getHumanName() {
|
||||
return "Post-1.13 item database provider";
|
||||
}
|
||||
|
||||
public static class FlatItemData extends ItemData {
|
||||
private FlatItemData(String itemName, Material material, PotionData potionData) {
|
||||
this.itemName = itemName;
|
||||
this.material = material;
|
||||
this.potionData = potionData;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return (31 * material.hashCode()) ^ potionData.hashCode();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (o == null) {
|
||||
return false;
|
||||
}
|
||||
if (!(o instanceof ItemData)) {
|
||||
return false;
|
||||
}
|
||||
ItemData pairo = (ItemData) o;
|
||||
return this.material == pairo.getMaterial() &&
|
||||
(this.potionData == null && pairo.getPotionData() == null) || this.potionData.equals(pairo.getPotionData());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,13 +1,10 @@
|
||||
package net.ess3.nms.ids;
|
||||
|
||||
import net.ess3.nms.ItemDbProvider;
|
||||
import net.ess3.nms.PotionMetaProvider;
|
||||
import net.ess3.nms.SpawnEggProvider;
|
||||
import net.ess3.nms.refl.ReflUtil;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Server;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
@ -19,7 +16,7 @@ public class LegacyItemDbProvider extends ItemDbProvider {
|
||||
private final transient Map<String, Integer> items = new HashMap<>();
|
||||
private final transient Map<ItemData, List<String>> names = new HashMap<>();
|
||||
private final transient Map<ItemData, String> primaryNames = new HashMap<>();
|
||||
private final transient Map<Integer, ItemData> legacyIds = new HashMap<>();
|
||||
private final transient Map<Integer, LegacyItemData> legacyIds = new HashMap<>();
|
||||
private final transient Map<String, Short> durabilities = new HashMap<>();
|
||||
private final transient Map<String, String> nbtData = new HashMap<>();
|
||||
|
||||
@ -147,10 +144,10 @@ public class LegacyItemDbProvider extends ItemDbProvider {
|
||||
|
||||
@Override
|
||||
public String getPrimaryName(ItemStack item) {
|
||||
ItemData itemData = new ItemData(null, item.getType(), item.getTypeId(), item.getDurability(), null);
|
||||
ItemData itemData = new LegacyItemData(null, item.getType(), item.getTypeId(), item.getDurability(), null);
|
||||
String name = primaryNames.get(itemData);
|
||||
if (name == null) {
|
||||
itemData = new ItemData(null, item.getType(), item.getTypeId(), (short) 0, null);
|
||||
itemData = new LegacyItemData(null, item.getType(), item.getTypeId(), (short) 0, null);
|
||||
name = primaryNames.get(itemData);
|
||||
if (name == null) {
|
||||
return null;
|
||||
@ -161,10 +158,10 @@ public class LegacyItemDbProvider extends ItemDbProvider {
|
||||
|
||||
@Override
|
||||
public List<String> getNames(ItemStack item) {
|
||||
ItemData itemData = new ItemData(null, item.getType(), item.getTypeId(), item.getDurability(), null);
|
||||
ItemData itemData = new LegacyItemData(null, item.getType(), item.getTypeId(), item.getDurability(), null);
|
||||
List<String> nameList = names.get(itemData);
|
||||
if (nameList == null) {
|
||||
itemData = new ItemData(null, item.getType(), item.getTypeId(), (short) 0, null);
|
||||
itemData = new LegacyItemData(null, item.getType(), item.getTypeId(), (short) 0, null);
|
||||
nameList = names.get(itemData);
|
||||
if (nameList == null) {
|
||||
return null;
|
||||
@ -200,7 +197,7 @@ public class LegacyItemDbProvider extends ItemDbProvider {
|
||||
addFrom(lines);
|
||||
}
|
||||
|
||||
private ItemData parseLine(String line) {
|
||||
private LegacyItemData parseLine(String line) {
|
||||
String itemName = null;
|
||||
int numeric = -1;
|
||||
short data = 0;
|
||||
@ -242,10 +239,10 @@ public class LegacyItemDbProvider extends ItemDbProvider {
|
||||
return null;
|
||||
}
|
||||
|
||||
return new ItemData(itemName, material, numeric, data, nbt);
|
||||
return new LegacyItemData(itemName, material, numeric, data, nbt);
|
||||
}
|
||||
|
||||
private void addItem(ItemData itemData) {
|
||||
private void addItem(LegacyItemData itemData) {
|
||||
final String name = itemData.getItemName();
|
||||
final int numeric = itemData.getItemNo();
|
||||
final short data = itemData.getItemData();
|
||||
@ -291,4 +288,31 @@ public class LegacyItemDbProvider extends ItemDbProvider {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public static class LegacyItemData extends ItemData {
|
||||
private LegacyItemData(String itemName, Material material, final int legacyId, final short itemData, String nbt) {
|
||||
this.itemName = itemName;
|
||||
this.material = material;
|
||||
this.legacyId = legacyId;
|
||||
this.itemData = itemData;
|
||||
this.nbt = nbt;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return (31 * legacyId) ^ itemData;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (o == null) {
|
||||
return false;
|
||||
}
|
||||
if (!(o instanceof ItemData)) {
|
||||
return false;
|
||||
}
|
||||
ItemData pairo = (ItemData) o;
|
||||
return this.legacyId == pairo.getItemNo() && this.itemData == pairo.getItemData();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -187,35 +187,13 @@ public abstract class ItemDbProvider implements Provider {
|
||||
this.potionMetaProvider = potionMetaProvider;
|
||||
}
|
||||
|
||||
public static class ItemData {
|
||||
final private String itemName;
|
||||
final private Material material;
|
||||
private int legacyId;
|
||||
private short itemData;
|
||||
final private String nbt;
|
||||
private PotionData potionData;
|
||||
|
||||
public ItemData(String itemName, Material material, String nbt) {
|
||||
this.itemName = itemName;
|
||||
this.material = material;
|
||||
this.nbt = nbt;
|
||||
}
|
||||
|
||||
public ItemData(String itemName, Material material, String nbt, PotionData potionData) {
|
||||
this.itemName = itemName;
|
||||
this.material = material;
|
||||
this.nbt = nbt;
|
||||
this.potionData = potionData;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public ItemData(String itemName, Material material, final int legacyId, final short itemData, String nbt) {
|
||||
this.itemName = itemName;
|
||||
this.material = material;
|
||||
this.legacyId = legacyId;
|
||||
this.itemData = itemData;
|
||||
this.nbt = nbt;
|
||||
}
|
||||
public abstract static class ItemData {
|
||||
protected String itemName;
|
||||
protected Material material;
|
||||
protected int legacyId;
|
||||
protected short itemData;
|
||||
protected String nbt;
|
||||
protected PotionData potionData;
|
||||
|
||||
public String getItemName() {
|
||||
return itemName;
|
||||
@ -225,7 +203,6 @@ public abstract class ItemDbProvider implements Provider {
|
||||
return material;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public int getItemNo() {
|
||||
return legacyId;
|
||||
}
|
||||
@ -238,11 +215,6 @@ public abstract class ItemDbProvider implements Provider {
|
||||
return nbt;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return (31 * material.hashCode()) ^ itemData;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (o == null) {
|
||||
|
Loading…
Reference in New Issue
Block a user