Merge branch 'master' into 1.15

This commit is contained in:
gnembon committed 2019-10-16 21:17:21 -03:00
commit f32b0765e2
2 files changed
+29 -9

No files matched your search

@@ -51,7 +51,7 @@ public class ListValue extends AbstractListValue implements ContainerValueInterf
return ListValue.of( return ListValue.of(
new StringValue(Registry.ITEM.getId(itemstack.getItem()).getPath()), new StringValue(Registry.ITEM.getId(itemstack.getItem()).getPath()),
new NumericValue(itemstack.getCount()), new NumericValue(itemstack.getCount()),
new NBTSerializableValue(itemstack) NBTSerializableValue.fromStack(itemstack)
); );
} }
@@ -19,6 +19,7 @@ import net.minecraft.nbt.AbstractNumberTag;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.ListTag; import net.minecraft.nbt.ListTag;
import net.minecraft.nbt.StringNbtReader; import net.minecraft.nbt.StringNbtReader;
import net.minecraft.nbt.StringTag;
import net.minecraft.nbt.Tag; import net.minecraft.nbt.Tag;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
@@ -37,10 +38,7 @@ public class NBTSerializableValue extends Value implements ContainerValueInterfa
private Tag nbtTag = null; private Tag nbtTag = null;
private Supplier<Tag> nbtSupplier = null; private Supplier<Tag> nbtSupplier = null;
public NBTSerializableValue(ItemStack stack) private NBTSerializableValue() {}
{
nbtSupplier = () -> stack.hasTag() ? stack.getTag(): new CompoundTag();
}
public NBTSerializableValue(String nbtString) public NBTSerializableValue(String nbtString)
{ {
@@ -57,6 +55,22 @@ public class NBTSerializableValue extends Value implements ContainerValueInterfa
}; };
} }
public NBTSerializableValue(Tag tag)
{
nbtTag = tag;
}
public static Value fromStack(ItemStack stack)
{
if (stack.hasTag())
{
NBTSerializableValue value = new NBTSerializableValue();
value.nbtSupplier = stack::getTag;
return value;
}
return Value.NULL;
}
public static NBTSerializableValue parseString(String nbtString) public static NBTSerializableValue parseString(String nbtString)
{ {
Tag tag; Tag tag;
@@ -77,10 +91,7 @@ public class NBTSerializableValue extends Value implements ContainerValueInterfa
{ {
return new NBTSerializableValue(getTag().copy()); return new NBTSerializableValue(getTag().copy());
} }
public NBTSerializableValue(Tag tag)
{
nbtTag = tag;
}
public static InventoryLocator locateInventory(CarpetContext c, List<LazyValue> params, int offset) public static InventoryLocator locateInventory(CarpetContext c, List<LazyValue> params, int offset)
{ {
@@ -224,6 +235,15 @@ public class NBTSerializableValue extends Value implements ContainerValueInterfa
@Override @Override
public boolean getBoolean() public boolean getBoolean()
{ {
Tag tag = getTag();
if (tag instanceof CompoundTag)
return !((CompoundTag) tag).isEmpty();
if (tag instanceof AbstractListTag)
return ((AbstractListTag) tag).isEmpty();
if (tag instanceof AbstractNumberTag)
return ((AbstractNumberTag) tag).getDouble()!=0.0;
if (tag instanceof StringTag)
return tag.asString().isEmpty();
return true; return true;
} }