Helping people with their mob spawners

Discussion in 'Other/Uncategorized Suggestions Archive' started by Saint, Dec 25, 2012.

  1. Saint
    Offline

    Saint Member

    Joined:
    Oct 5, 2012
    Messages:
    208
    Hey developers. I have an idea, why not make it so that mob spawners register to the person who placed them.

    ie saving their name and the spawner location on BlockPlaceEvent with
    Location loc = event.getBlock().getLocation();
    Player player = event.getPlayer();
    String name = player.getName();
    spawners.put(name, loc);

    then when they break it check if their the owner
    Location loc = event.getBlock().getLocation();
    Player player = event.getPlayer();
    String name = player.getName();
    if(spawners.contains(name, loc);
    {
    loc.dropNaturally(new Itemstack(Material.MOBSPAWNER, 1);
    spawners.remove(name, null);
    }
    else
    {
    event.setCancelled();
    player.sendMessage("You didn't place this mobspawner.");

    This will make it so that people don't lose their mob spawners, they can't be griefed, and they're able to move it without having to bother the moderators.
     
  2. Saint
    Offline

    Saint Member

    Joined:
    Oct 5, 2012
    Messages:
    208
  3. snooze107
    Offline

    snooze107 Well-Known Member

    Joined:
    Oct 2, 2012
    Messages:
    515
    Plugins=lag

    The end.
     
    • Dumb Dumb x 1
  4. Noobcrew
    Offline

    Noobcrew Server Owner Server Owner Administrator

    Joined:
    Sep 12, 2012
    Messages:
    1,455
    IGN:
    Noobcrew
    No, only plugins that have to do a lot of "work", some plugins can cause virtually no strain on the server.
     
  5. korilla
    Offline

    korilla Well-Known Member

    Joined:
    Sep 15, 2012
    Messages:
    502
    so, noobcrew, can you please install this? I am getting tired of msging a mod everytime, and I know there are a lot of people out there that feel the same...
     
  6. Noobcrew
    Offline

    Noobcrew Server Owner Server Owner Administrator

    Joined:
    Sep 12, 2012
    Messages:
    1,455
    IGN:
    Noobcrew
    Yes I will do something like this soon.
     
  7. _PupChi_
    Offline

    _PupChi_ Active Member

    Joined:
    Sep 25, 2012
    Messages:
    336
    Thanks Noobcrew
     
  8. Theway2cool1
    Offline

    Theway2cool1 Guest

    Joined:
    Messages:
    0
    Code incoming, prepare your anuses for my next reply.
     
  9. _PupChi_
    Offline

    _PupChi_ Active Member

    Joined:
    Sep 25, 2012
    Messages:
    336
    Ok what is it ?
     
  10. Akrill
    Offline

    Akrill Senior Member

    Joined:
    Sep 20, 2012
    Messages:
    4,630
    LOL
    Ready
     
  11. Theway2cool1
    Offline

    Theway2cool1 Guest

    Joined:
    Messages:
    0
    Code:
    public class test implements Listener{
        @EventHandler
        public void onBlockPlace(BlockPlaceEvent e){
            if(e.getBlock().getType() == Material.MOB_SPAWNER){
                File f = new File("plugins" + File.separator + "PluginNameHere" + File.separator + "SpawnerData" + File.separator + e.getPlayer().getName() + ".yml");
                try {
                    PrintWriter out = new PrintWriter(new FileWriter(f, true));
                    out.println(e.getBlock().getWorld().getName() + "," + e.getBlock().getLocation().getBlockX() + "," + e.getBlock().getLocation().getBlockY() + "," +
                    e.getBlock().getLocation().getBlockZ());
                    out.close();
                } catch (IOException e1) {
                    e1.printStackTrace();
                }
            }
        }
        @EventHandler
        public void onBlockBreak(BlockBreakEvent e){
            if(e.getBlock().getType() == Material.MOB_SPAWNER){
                if(!this.canBreakSpawner(e.getPlayer(), e.getBlock().getLocation())){
                    e.setCancelled(true);
                    e.getPlayer().sendMessage(ChatColor.RED + "This is not your spawner.");
                }
            }
        }
        private Location parseLocation(String s){
            World world = Bukkit.getWorld(s.split(",")[0]);
            double x = Double.parseDouble(s.split(",")[1]);
            double y = Double.parseDouble(s.split(",")[2]);
            double z = Double.parseDouble(s.split(",")[3]);
            return new Location(world,x,y,z);
        }
        private boolean canBreakSpawner(Player p, Location l){
            File f = new File("plugins" + File.separator + "PluginNameHere" + File.separator + "SpawnerData" + File.separator + p.getName() + ".yml");
            try {
                BufferedReader in = new BufferedReader(new FileReader(f));
                String line;
                while((line = in.readLine()) != null){
                    if(this.parseLocation(line) == l){
                        in.close();
                        return true;
                    }
                }
                in.close();
            }catch(IOException e){
                e.printStackTrace();
            }
            return false;
        }
    }
    Done. This will do everything described here.
     
  12. Riyer
    Offline

    Riyer Well-Known Member

    Joined:
    Nov 11, 2012
    Messages:
    3,108
    I understood everything that code expressed.







    No really, I did D:
     
  13. Theway2cool1
    Offline

    Theway2cool1 Guest

    Joined:
    Messages:
    0
    So easy, a caveman could do it.
     
  14. Riyer
    Offline

    Riyer Well-Known Member

    Joined:
    Nov 11, 2012
    Messages:
    3,108

    >_>

    <_<
     
  15. Akrill
    Offline

    Akrill Senior Member

    Joined:
    Sep 20, 2012
    Messages:
    4,630
    Congratulations, Akrill.
    You're dumber than a caveman
     
  16. Riyer
    Offline

    Riyer Well-Known Member

    Joined:
    Nov 11, 2012
    Messages:
    3,108
    Well, at least Akrill went right out with it :pomp:
     
  17. snooze107
    Offline

    snooze107 Well-Known Member

    Joined:
    Oct 2, 2012
    Messages:
    515
    I only understood the boolean.
     
  18. Saint
    Offline

    Saint Member

    Joined:
    Oct 5, 2012
    Messages:
    208
    I usually use a universal config controller and filemaker. It's a little more complicated to make, much more organized.
     
  19. Akrill
    Offline

    Akrill Senior Member

    Joined:
    Sep 20, 2012
    Messages:
    4,630
    Saint, you seem to know what you're doing.
     
  20. TheRedJello
    Offline

    TheRedJello Well-Known Member

    Joined:
    Oct 28, 2012
    Messages:
    67
    o_ODear god I have NO idea whats going on here!
     

Share This Page