From 30b8619dd15e4730e25f82debdfc0155a0f9dc49 Mon Sep 17 00:00:00 2001 From: Daniel Mills Date: Wed, 13 Jan 2021 09:33:40 -0500 Subject: [PATCH] "Spawner Support" --- .../com/volmit/iris/object/tile/TileData.java | 1 + .../volmit/iris/object/tile/TileSpawner.java | 64 +++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 src/main/java/com/volmit/iris/object/tile/TileSpawner.java diff --git a/src/main/java/com/volmit/iris/object/tile/TileData.java b/src/main/java/com/volmit/iris/object/tile/TileData.java index e75418712..d96d6f3c1 100644 --- a/src/main/java/com/volmit/iris/object/tile/TileData.java +++ b/src/main/java/com/volmit/iris/object/tile/TileData.java @@ -19,6 +19,7 @@ public interface TileData extends Cloneable { KList> registry = new KList<>(); registry.add(new TileSign()); + registry.add(new TileSpawner()); return registry; } diff --git a/src/main/java/com/volmit/iris/object/tile/TileSpawner.java b/src/main/java/com/volmit/iris/object/tile/TileSpawner.java new file mode 100644 index 000000000..1d3f7fc01 --- /dev/null +++ b/src/main/java/com/volmit/iris/object/tile/TileSpawner.java @@ -0,0 +1,64 @@ +package com.volmit.iris.object.tile; + +import lombok.Data; +import net.querz.nbt.tag.CompoundTag; +import net.querz.nbt.tag.ListTag; +import org.bukkit.block.CreatureSpawner; +import org.bukkit.block.data.BlockData; +import org.bukkit.block.data.type.WallSign; +import org.bukkit.entity.EntityType; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +@Data +public class TileSpawner implements TileData { + public static int id = TileData.id; + private EntityType entityType; + + @Override + public boolean isApplicable(BlockData data) { + return data instanceof org.bukkit.block.data.type.Sign || data instanceof WallSign; + } + + @Override + public void toBukkit(CreatureSpawner t) { + t.setSpawnedType(entityType); + } + + @Override + public void fromBukkit(CreatureSpawner sign) { + entityType = sign.getSpawnedType(); + } + + @Override + public TileSpawner clone() { + TileSpawner ts = new TileSpawner(); + ts.setEntityType(getEntityType()); + return ts; + } + + @Override + public void toBinary(DataOutputStream out) throws IOException { + out.writeShort(id); + out.writeShort(entityType.ordinal()); + } + + @Override + public void fromBinary(DataInputStream in) throws IOException { + entityType = EntityType.values()[in.readShort()]; + } + + @Override + public void toNBT(CompoundTag tag) { + ListTag potentials = (ListTag) ListTag.createUnchecked(CompoundTag.class); + CompoundTag t = new CompoundTag(); + CompoundTag ent = new CompoundTag(); + ent.putString("id", entityType.getKey().toString()); + t.put("Entity", ent); + t.putInt("Weight", 1); + potentials.add(t); + tag.put("SpawnPotentials", potentials); + } +}