Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import org.spongepowered.api.Sponge;
- import org.spongepowered.api.data.key.Keys;
- import org.spongepowered.api.data.manipulator.mutable.MobSpawnerData;
- import org.spongepowered.api.entity.EntitySnapshot;
- import org.spongepowered.api.entity.EntityType;
- import org.spongepowered.api.event.Listener;
- import org.spongepowered.api.event.block.InteractBlockEvent;
- import org.spongepowered.api.event.game.state.GameStartedServerEvent;
- import org.spongepowered.api.plugin.Plugin;
- import org.spongepowered.api.util.weighted.WeightedSerializableObject;
- import org.spongepowered.api.util.weighted.WeightedTable;
- import org.spongepowered.api.world.World;
- import org.spongepowered.api.world.storage.WorldProperties;
- /**
- * Ensures that mod IDs can successfully be used to create spawners, including
- * once the are serialized and deserialized.
- * <p>
- * An NBT editor can be used to show that the data is saved correctly.
- * </p>
- *
- */
- @Plugin(id = "modspawn", name = "ModSpawnTest", version = "0.1")
- public class ModSpawningTest {
- private EntitySnapshot modSnapshot;
- @Listener
- public void onStarted(GameStartedServerEvent event) {
- WorldProperties props = Sponge.getServer().getDefaultWorld().get();
- World world = Sponge.getServer().getWorld(props.getUniqueId()).get();
- EntityType type = Sponge.getRegistry().getType(EntityType.class, "thaumcraft:brainyzombie").get();
- modSnapshot = EntitySnapshot.builder().type(type).build();
- //TODO: Test extra NBT data
- }
- @Listener
- public void onClick(InteractBlockEvent event) {
- event.getTargetBlock().getLocation().get().getTileEntity().ifPresent(tile -> {
- tile.getOrCreate(MobSpawnerData.class).ifPresent(data -> {
- WeightedSerializableObject<EntitySnapshot> weighted = new WeightedSerializableObject<>(modSnapshot, 1);
- WeightedTable<EntitySnapshot> table = new WeightedTable<>();
- table.add(weighted);
- data.set(Keys.SPAWNER_ENTITIES, table);
- data.set(Keys.SPAWNER_NEXT_ENTITY_TO_SPAWN, weighted);
- tile.offer(data);
- });
- });
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement