How can I spawn a mob where you can ride on (no horse or pig)

Discussion in 'Plugin Development' started by Ozeir, Mar 3, 2014.

Thread Status:
Not open for further replies.
  1. Offline

    Ozeir

    Hello,
    I am developing a plugin.
    And I wanted to do when a player gets 5 kills, The player gets an item.
    When he does right click/left click at te direction he/she is looking @, there will spawn a mob where he/she can ride on.
    I hope you can help me.
    Greetz,
    Ozeir
     
  2. Offline

    LarsNitro

    Ozeir
    This code works for me at least.

    Code:java
    1. package me.Test2;
    2.  
    3. import org.bukkit.Material;
    4. import org.bukkit.block.Block;
    5. import org.bukkit.entity.Bat;
    6. import org.bukkit.entity.EntityType;
    7. import org.bukkit.entity.Player;
    8. import org.bukkit.event.EventHandler;
    9. import org.bukkit.event.Listener;
    10. import org.bukkit.event.block.Action;
    11. import org.bukkit.event.player.PlayerInteractEvent;
    12. import org.bukkit.plugin.java.JavaPlugin;
    13.  
    14. public class Test extends JavaPlugin implements Listener {
    15. public void onEnable() {
    16. getServer().getPluginManager().registerEvents(this, this);
    17. }
    18.  
    19. public void onDisable() {
    20.  
    21. }
    22.  
    23. @EventHandler
    24. public void onInteract(PlayerInteractEvent e) {
    25. Player player = e.getPlayer();
    26.  
    27.  
    28. if (e.getAction() == Action.RIGHT_CLICK_BLOCK
    29. || e.getAction() == Action.LEFT_CLICK_BLOCK) {
    30.  
    31. if (!e.getItem().hasItemMeta()) return;
    32. if (e.getItem().getItemMeta().getDisplayName().equals("Example")) {
    33.  
    34. Block block = e.getClickedBlock().getRelative(e.getBlockFace());
    35.  
    36. if (block == null || block.getType() == Material.AIR) {
    37.  
    38. Bat bat = (Bat) block.getWorld().spawnEntity(block.getLocation(),
    39. EntityType.BAT /*EXAMPLE*/);
    40.  
    41. bat.setPassenger(player);
    42. }
    43. }
    44. }
    45. }
    46.  
    47. }
    48.  



    Show Spoiler


    EDIT: if you want it to be rideable at all times, you have to add a little more code:

    Code:java
    1. package me.Test2;
    2.  
    3. import org.bukkit.Material;
    4. import org.bukkit.block.Block;
    5. import org.bukkit.entity.Bat;
    6. import org.bukkit.entity.EntityType;
    7. import org.bukkit.entity.Player;
    8. import org.bukkit.event.EventHandler;
    9. import org.bukkit.event.Listener;
    10. import org.bukkit.event.block.Action;
    11. import org.bukkit.event.player.PlayerInteractEntityEvent;
    12. import org.bukkit.event.player.PlayerInteractEvent;
    13. import org.bukkit.plugin.java.JavaPlugin;
    14.  
    15. public class Test extends JavaPlugin implements Listener {
    16.  
    17. public void onEnable() {
    18. getServer().getPluginManager().registerEvents(this, this);
    19. }
    20.  
    21. public void onDisable() {
    22.  
    23. }
    24.  
    25. @EventHandler
    26. public void onInteract(PlayerInteractEvent e) {
    27. Player p = e.getPlayer();
    28.  
    29.  
    30. if (e.getAction() == Action.RIGHT_CLICK_BLOCK
    31. || e.getAction() == Action.LEFT_CLICK_BLOCK) {
    32.  
    33. if (!e.getItem().hasItemMeta()) return;
    34. if (e.getItem().getItemMeta().getDisplayName().equals("Example")) {
    35.  
    36.  
    37. Block b = e.getClickedBlock().getRelative(e.getBlockFace());
    38.  
    39. if (b == null || b.getType() == Material.AIR) {
    40.  
    41. Bat ba = (Bat) b.getWorld().spawnEntity(b.getLocation(),
    42. EntityType.BAT /*EXAMPLE*/);
    43.  
    44. ba.setCustomName("BatMan");
    45. ba.setCustomNameVisible(true);
    46. ba.setPassenger(p);
    47. }
    48. }
    49. }
    50. }
    51.  
    52. @EventHandler
    53. public void onPlayerInteractEntity(PlayerInteractEntityEvent e) {
    54.  
    55. if (e.getRightClicked().getType() != EntityType.BAT) return;
    56.  
    57. Bat bat = (Bat) e.getRightClicked();
    58. if (!bat.getCustomName().equals("BatMan")) return;
    59.  
    60. bat.setPassenger(e.getPlayer());
    61.  
    62. }
    63. }
    64.  


    Tested both, and it works like a charm.
     
Thread Status:
Not open for further replies.

Share This Page