+ nbt update

This commit is contained in:
坏黑 2019-05-26 15:02:29 +08:00
parent b09dfbde60
commit fd9817e5c5
4 changed files with 25 additions and 23 deletions

View File

@ -34,15 +34,15 @@ public abstract class NMSHandler {
abstract public void sendActionBar(Player player, String text); abstract public void sendActionBar(Player player, String text);
abstract public ItemStack saveNBT(ItemStack itemStack, NBTCompound compound);
abstract public Object _NBT(ItemStack itemStack); abstract public Object _NBT(ItemStack itemStack);
abstract public ItemStack _NBT(ItemStack itemStack, Object compound);
public NBTCompound loadNBT(ItemStack itemStack) { public NBTCompound loadNBT(ItemStack itemStack) {
return (NBTCompound) _NBT(itemStack); return (NBTCompound) _NBT(itemStack);
} }
public static NMSHandler getHandler() { public ItemStack saveNBT(ItemStack itemStack, NBTCompound compound) {
return handler; return _NBT(itemStack, compound);
} }
} }

View File

@ -175,10 +175,10 @@ public class NMSHandlerImpl extends NMSHandler {
} }
@Override @Override
public ItemStack saveNBT(ItemStack itemStack, NBTCompound compound) { public ItemStack _NBT(ItemStack itemStack, Object compound) {
Object nmsItem = CraftItemStack.asNMSCopy(itemStack); Object nmsItem = CraftItemStack.asNMSCopy(itemStack);
try { try {
((net.minecraft.server.v1_8_R3.ItemStack) nmsItem).setTag((net.minecraft.server.v1_8_R3.NBTTagCompound) toNBTBase(compound)); ((net.minecraft.server.v1_8_R3.ItemStack) nmsItem).setTag((net.minecraft.server.v1_8_R3.NBTTagCompound) toNBTBase((me.skymc.taboolib.common.nms.nbt.NBTBase) compound));
} catch (Throwable t) { } catch (Throwable t) {
t.printStackTrace(); t.printStackTrace();
} }
@ -197,30 +197,30 @@ public class NMSHandlerImpl extends NMSHandler {
} }
private Object toNBTBase(me.skymc.taboolib.common.nms.nbt.NBTBase base) { private Object toNBTBase(me.skymc.taboolib.common.nms.nbt.NBTBase base) {
switch (base.getType()) { switch (base.getType().getId()) {
case INT: case 1:
return new NBTTagInt(base.asInt());
case BYTE:
return new NBTTagByte(base.asByte()); return new NBTTagByte(base.asByte());
case LONG: case 2:
return new NBTTagLong(base.asLong());
case FLOAT:
return new NBTTagFloat(base.asFloat());
case SHORT:
return new NBTTagShort(base.asShort()); return new NBTTagShort(base.asShort());
case DOUBLE: case 3:
return new NBTTagInt(base.asInt());
case 4:
return new NBTTagLong(base.asLong());
case 5:
return new NBTTagFloat(base.asFloat());
case 6:
return new NBTTagDouble(base.asDouble()); return new NBTTagDouble(base.asDouble());
case STRING: case 7:
return new NBTTagString(base.asString());
case INT_ARRAY:
return new NBTTagIntArray(base.asIntArray());
case BYTE_ARRAY:
return new NBTTagByteArray(base.asByteArray()); return new NBTTagByteArray(base.asByteArray());
case LIST: case 11:
return new NBTTagIntArray(base.asIntArray());
case 8:
return new NBTTagString(base.asString());
case 9:
Object nmsList = new NBTTagList(); Object nmsList = new NBTTagList();
base.asList().forEach(value -> ((NBTTagList) nmsList).add((net.minecraft.server.v1_8_R3.NBTBase) toNBTBase(value))); base.asList().forEach(value -> ((NBTTagList) nmsList).add((net.minecraft.server.v1_8_R3.NBTBase) toNBTBase(value)));
return nmsList; return nmsList;
case COMPOUND: case 10:
Object nmsTag = new net.minecraft.server.v1_8_R3.NBTTagCompound(); Object nmsTag = new net.minecraft.server.v1_8_R3.NBTTagCompound();
base.asCompound().forEach((k, v) -> ((net.minecraft.server.v1_8_R3.NBTTagCompound) nmsTag).set(k, (net.minecraft.server.v1_8_R3.NBTBase) toNBTBase(v))); base.asCompound().forEach((k, v) -> ((net.minecraft.server.v1_8_R3.NBTTagCompound) nmsTag).set(k, (net.minecraft.server.v1_8_R3.NBTBase) toNBTBase(v)));
return nmsTag; return nmsTag;

View File

@ -21,6 +21,7 @@ public class NBTCompound extends NBTBase implements Map<String, NBTBase> {
public NBTCompound() { public NBTCompound() {
super(0); super(0);
this.type = NBTType.COMPOUND; this.type = NBTType.COMPOUND;
this.data = this;
} }
@Override @Override

View File

@ -19,6 +19,7 @@ public class NBTList extends NBTBase implements List<NBTBase> {
public NBTList() { public NBTList() {
super(0); super(0);
this.type = NBTType.LIST; this.type = NBTType.LIST;
this.data = this;
} }
@Override @Override