Advertisement
Guest User

Untitled

a guest
Feb 8th, 2016
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.12 KB | None | 0 0
  1. import org.spongepowered.api.Sponge;
  2. import org.spongepowered.api.data.key.Keys;
  3. import org.spongepowered.api.data.manipulator.mutable.MobSpawnerData;
  4. import org.spongepowered.api.entity.EntitySnapshot;
  5. import org.spongepowered.api.entity.EntityType;
  6. import org.spongepowered.api.event.Listener;
  7. import org.spongepowered.api.event.block.InteractBlockEvent;
  8. import org.spongepowered.api.event.game.state.GameStartedServerEvent;
  9. import org.spongepowered.api.plugin.Plugin;
  10. import org.spongepowered.api.util.weighted.WeightedSerializableObject;
  11. import org.spongepowered.api.util.weighted.WeightedTable;
  12. import org.spongepowered.api.world.World;
  13. import org.spongepowered.api.world.storage.WorldProperties;
  14.  
  15. /**
  16. * Ensures that mod IDs can successfully be used to create spawners, including
  17. * once the are serialized and deserialized.
  18. * <p>
  19. * An NBT editor can be used to show that the data is saved correctly.
  20. * </p>
  21. *
  22. */
  23. @Plugin(id = "modspawn", name = "ModSpawnTest", version = "0.1")
  24. public class ModSpawningTest {
  25.  
  26. private EntitySnapshot modSnapshot;
  27.  
  28. @Listener
  29. public void onStarted(GameStartedServerEvent event) {
  30. WorldProperties props = Sponge.getServer().getDefaultWorld().get();
  31. World world = Sponge.getServer().getWorld(props.getUniqueId()).get();
  32. EntityType type = Sponge.getRegistry().getType(EntityType.class, "thaumcraft:brainyzombie").get();
  33. modSnapshot = EntitySnapshot.builder().type(type).build();
  34. //TODO: Test extra NBT data
  35. }
  36.  
  37. @Listener
  38. public void onClick(InteractBlockEvent event) {
  39. event.getTargetBlock().getLocation().get().getTileEntity().ifPresent(tile -> {
  40. tile.getOrCreate(MobSpawnerData.class).ifPresent(data -> {
  41. WeightedSerializableObject<EntitySnapshot> weighted = new WeightedSerializableObject<>(modSnapshot, 1);
  42. WeightedTable<EntitySnapshot> table = new WeightedTable<>();
  43. table.add(weighted);
  44.  
  45. data.set(Keys.SPAWNER_ENTITIES, table);
  46. data.set(Keys.SPAWNER_NEXT_ENTITY_TO_SPAWN, weighted);
  47. tile.offer(data);
  48. });
  49. });
  50. }
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement