Skip to content

Instantly share code, notes, and snippets.

View derkalaender's full-sized avatar
🦌

derkalaender derkalaender

🦌
View GitHub Profile
@derkalaender
derkalaender / NBTUtil.kt
Created April 7, 2020 22:45
Minecraft/Forge NBT DSL
abstract class ItemNBTHolder(val stack: ItemStack, val compound: CompoundNBT) {
protected fun byte(defaultValue: Byte) = SimpleNBTDelegate(defaultValue, CompoundNBT::getByte, CompoundNBT::putByte)
protected fun short(defaultValue: Short) = SimpleNBTDelegate(defaultValue, CompoundNBT::getShort, CompoundNBT::putShort)
protected fun int(defaultValue: Int) = SimpleNBTDelegate(defaultValue, CompoundNBT::getInt, CompoundNBT::putInt)
protected fun long(defaultValue: Long) = SimpleNBTDelegate(defaultValue, CompoundNBT::getLong, CompoundNBT::putLong)
protected fun float(defaultValue: Float) = SimpleNBTDelegate(defaultValue, CompoundNBT::getFloat, CompoundNBT::putFloat)
protected fun double(defaultValue: Double) = SimpleNBTDelegate(defaultValue, CompoundNBT::getDouble, CompoundNBT::putDouble)
protected fun string(defaultValue: String) = SimpleNBTDelegate(defaultValue, CompoundNBT::getString, CompoundNBT::putString)
protected fun byteArray(defaultValue: ByteArray = ByteArray(0)) = SimpleN
@derkalaender
derkalaender / ExampleItem.kt
Last active April 7, 2020 21:46
Easy and safe Minecraft/Forge NBT dsl example
class ExampleItem : Item(Properties().group(ItemGroup.MISC)) {
/**
* root
* |- someString (String)
* |- someBoolean (Boolean)
* |- nested (Compound)
* - |- immutableString (String)
* |- nullableUUID (UUID)
* |- evenMoreNested (Compound)
* - |- someIntArray (int[])
@derkalaender
derkalaender / Example.kt
Last active December 31, 2019 17:37
Simple to use builder for making Minecraft/Forge VoxelShapes
private val INSIDE_SHAPE: VoxelShape by lazy {
voxelShape { cube(2 by 2 by 2, 14 by 14 by 14) }
}
private val OUTSIDE_SHAPE: VoxelShape by lazy {
voxelShape {
shape { fullCube }
-voxelShape {
cube(2 by 2 by 0, 14 by 14 by 16)
+voxelShape { cube(2 by 0 by 2, 14 by 16 by 14) }