Minecraft Blog

  1. Teletrasporto (mod bukkit)

    Avatar
    Tags
    Mods
    Server
    Utility
    By Zio Crocifisso il 13 Dec. 2011
     
    +1   -1    4 Comments   5,591 Views
    .
    Questa mod permette agli utenti di teletrasportarsi a casa, nel punto in cui sono morti, e in punti scelti da loro (tutti i punti vengono salvati, quindi se l'utente o il server cadono, l'utente può tornarci lo stesso)...
    I comandi sono:
    CODICE
    /pret [posizione]

    Mettete "death" o niente per tornare nel punto in cui siete morti e "home" per tornare nel letto.

    CODICE
    /pset posizione

    Per impostare una posizione personalizzata.


    Esempi:
    CODICE
    /pret death
    /pret
    /pret home
    /pset miniera
    /pret miniera


    Download
    (da mettere sulla cartella plugins)

    Sorgente:
    DeathTeleport:
    CODICE
    package ziocroc.dtp;

    import org.bukkit.Location;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.event.Event;
    import org.bukkit.plugin.PluginManager;
    import org.bukkit.plugin.java.JavaPlugin;

    public class DeathTeleport extends JavaPlugin {
           DTPPlayerListener l;
           
           @Override
           public void onDisable() {
                   saveConfig();                
           }

           @Override
           public void onEnable() {
                   PluginManager pm = this.getServer().getPluginManager();
                   l = new DTPPlayerListener(this);
                   pm.registerEvent(Event.Type.PLAYER_CHAT, l, Event.Priority.High, this);
                   pm.registerEvent(Event.Type.PLAYER_RESPAWN, l, Event.Priority.High, this);
           }
           
           @Override
           public boolean onCommand(CommandSender sender, Command command,
                           String label, String[] args) {
                   Player player;
                   String nick;
                   
                   if (sender instanceof Player)
                           player = (Player) sender;
                   else
                           return false;
                   
                   nick = player.getDisplayName().toLowerCase();
                   
                   if (command.getName().equalsIgnoreCase("pret")) {
                           String arg;
                           if (args.length < 1)
                                   arg = "death";
                           else
                                   arg = args[0];
                           
                           if (getConfig().getBoolean(nick + "." + arg + ".exists", false) == true || arg.equals("home")) {
                                   if (arg.equals("home")) {
                                           if (player.getBedSpawnLocation() != null)
                                                   player.teleport(player.getBedSpawnLocation());
                                           else
                                                   player.sendMessage("Non hai una casa, barbone.");
                                   } else {
                                           player.teleport(new Location(getServer().getWorld(getConfig().getString(nick + "." + arg + ".world")),
                                                                                                    getConfig().getDouble(nick + "." + arg + ".x"),
                                                                                                    getConfig().getDouble(nick + "." + arg + ".y"),
                                                                                                    getConfig().getDouble(nick + "." + arg + ".z"),
                                                                                    (float) getConfig().getDouble(nick + "." + arg + ".yaw"),
                                                                                    (float) getConfig().getDouble(nick + "." + arg + ".pitch")));
                                   }
                           } else {
                                   if (arg.equals("death"))
                                           player.sendMessage("Non sei morto (tranquillo: morirai fra poco).");
                                   else
                                           player.sendMessage("\"" + args[0] + "\" non esiste, proprio come il tuo pene.");
                           }
                           return true;
                   } else if (command.getName().equalsIgnoreCase("pset")) {
                           if (args.length < 1)
                                   return false;
                           
                           if (args[0].equals("home") || args[0].equals("death"))
                                   return false;
                           
                           addPoint(player, args[0]);
                           player.sendMessage("Posizione \"" + args[0] + "\" salvata (forse).");
                   }
                   
                   return true;
           }

           public void addPoint(Player player, String name) {
                   Location l = player.getLocation();
                   String nick = player.getDisplayName().toLowerCase();
                   
                   getConfig().set(nick + "." + name + ".exists", true);
                   getConfig().set(nick + "." + name + ".world", l.getWorld().getName());
                   getConfig().set(nick + "." + name + ".x", l.getX());
                   getConfig().set(nick + "." + name + ".y", l.getY());
                   getConfig().set(nick + "." + name + ".z", l.getZ());
                   getConfig().set(nick + "." + name + ".yaw", (double) l.getYaw());
                   getConfig().set(nick + "." + name + ".pitch", (double) l.getPitch());
                   saveConfig();
                   reloadConfig();
           }
    }

    DTPPlayerListener:
    CODICE
    package ziocroc.dtp;

    import org.bukkit.event.player.PlayerListener;
    import org.bukkit.event.player.PlayerRespawnEvent;

    public class DTPPlayerListener extends PlayerListener {
           private DeathTeleport plugin;
           
           public DTPPlayerListener(DeathTeleport plugin) {
                   this.plugin = plugin;
           }
           
           @Override
           public void onPlayerRespawn(PlayerRespawnEvent event) {
                   plugin.addPoint(event.getPlayer(), "death");
           }        
    }
      Share  
     
    .

Comments
  1. Oblivion
    view post
     
    .

    User deleted

    User deleted


    Il che è cosa buona e giusta, ovviamente.
    Ora ti rompo il toffy... ma per client? D:
    Lati, usa questa, non cercare essential per nerdate troppo stupide.
     
    Top
    .
  2. Zio Crocifisso
    view post
     
    .

    User deleted

    User deleted


    CITAZIONE (Oblivion @ 13/12/2011, 14:01) 
    ma per client? D:

    Mi secco... questa l'ho fatta apposta per il server di lato :ahsisi:
    La mod per mettere giorno/notte con /day e /night:
    Toffly


    Edited by Zio Crocifisso - 13/12/2011, 14:26
     
    Top
    .
  3. _Lati_
    view post
     
    .

    User deleted

    User deleted


    L'ho messa, ma finchè non funziona il server è inutile.
     
    Top
    .
  4. Zio Crocifisso
    view post
     
    .

    User deleted

    User deleted


    Corretti i bug (forse), adesso dovrebbe funzionare anche nella 1.0.1 :lookomg:
     
    Top
    .