Skip to content

Commit

Permalink
Added BoolData
Browse files Browse the repository at this point in the history
  • Loading branch information
kindlich committed Nov 17, 2020
1 parent fb271d1 commit 2fe5bc1
Show file tree
Hide file tree
Showing 2 changed files with 78 additions and 0 deletions.
@@ -0,0 +1,16 @@
package com.blamejared.crafttweaker.api.zencode.expands;

import com.blamejared.crafttweaker.api.annotations.*;
import com.blamejared.crafttweaker.api.data.*;
import com.blamejared.crafttweaker.impl.data.*;
import org.openzen.zencode.java.*;

@ZenRegister
@ZenCodeType.Expansion("bool")
public class ExpandBool {

@ZenCodeType.Caster(implicit = true)
public static IData asData(boolean _this) {
return new BoolData(_this);
}
}
62 changes: 62 additions & 0 deletions src/main/java/com/blamejared/crafttweaker/impl/data/BoolData.java
@@ -0,0 +1,62 @@
package com.blamejared.crafttweaker.impl.data;

import com.blamejared.crafttweaker.api.annotations.*;
import com.blamejared.crafttweaker.api.data.*;
import com.blamejared.crafttweaker_annotations.annotations.*;
import net.minecraft.nbt.*;
import org.openzen.zencode.java.*;

/**
* Careful with BoolData: While it works for specifying boolean attributes in JSON syntax,
* using it in Tags will instead use a {@link ByteData} object. Reason for this is that
* Minecraft does not have Boolean NBT values.
*
* @docParam this true
*/
@ZenCodeType.Name("crafttweaker.api.data.BoolData")
@ZenRegister
@Document("vanilla/api/data/BoolData")
public class BoolData implements IData {

private final boolean internal;

@ZenCodeType.Constructor
public BoolData(boolean internal) {
this.internal = internal;
}

/**
* Converts this BoolData to a {@link ByteData} object.
* This will be used when this Data is converted to NBT
*/
@ZenCodeType.Caster
@ZenCodeType.Method
public ByteData getByteData() {
return new ByteData(ByteNBT.valueOf(internal));
}

@Override
public IData copy() {
return new BoolData(internal);
}

@Override
public IData copyInternal() {
return new BoolData(internal);
}

@Override
public INBT getInternal() {
return getByteData().getInternal();
}

@Override
public String asString() {
return Boolean.toString(internal);
}

@Override
public String toJsonString() {
return internal + " as bool";
}
}

0 comments on commit 2fe5bc1

Please sign in to comment.