Solved Player.sendMap(MapView) - Error - Exception in server tick loop java.lang.StackOverflowError

Discussion in 'Plugin Development' started by pollag, Dec 20, 2012.

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

    pollag

    Hello,
    I am trying to create a plugin that generate custom map (item) and I would like the render to be instantaneous. So I use the function sendMap(MapView) in a custom MapRender class in function render(MapView MV, MapCanvas MC, Player P). When I launch my plugin, an Exception appear ( Exception in server tick loop java.lang.StackOverflowError ) in the line that contains the function sendMap.

    I would know how I can resolve it

    Pollag

    Candera - https://www.youtube.com/playlist?list=PLFemUQtvBHc_rkwZfKbx-GGO5lld5wVIM - A french Server

    PS : Sorry for my bad english
     

    Attached Files:

  2. Offline

    tommycake50

    we would need to see your code...
     
  3. Offline

    pollag

    package fr.pollag.masterMap;

    import org.bukkit.entity.Player;
    import org.bukkit.map.MapCanvas;
    import org.bukkit.map.MapRenderer;
    import org.bukkit.map.MapView;
    import org.bukkit.map.MinecraftFont;

    public class MMRMainMenu extends MapRenderer {

    Player player;
    MapView map;

    public MMRMainMenu(MapView M, Player P) {
    super(true);
    player = P;
    map = M;
    }

    @Override
    public void render(MapView MV, MapCanvas MC, Player P) {
    MC.drawText(10, 10, MinecraftFont.Font, "Candera");
    try {
    player.sendMap(map);
    P.sendMessage("OK");
    } catch(Exception e) {
    P.sendMessage("E");
    e.printStackTrace();
    }
    MV.getRenderers().remove(0);
    }
    }
    //=================================================================
    package fr.pollag.masterMap;
    import org.bukkit.Bukkit;
    import org.bukkit.Material;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.map.MapRenderer;
    import org.bukkit.map.MapView;
    import org.bukkit.plugin.java.JavaPlugin;
    public class MMPlugin extends JavaPlugin {
    MMListener L;
    static YmlP P;
    static YmlV V;

    public void onEnable() {
    L = new MMListener();
    this.getServer().getPluginManager().registerEvents(this.L, this);
    P = new YmlP(this, "/data/player/Menu.yml");
    V = new YmlV(this, "/data/player/MapCanvas.yml");
    P.loadConfig();
    V.loadConfig();
    }

    public void onDisable() {
    P.saveConfig();
    V.saveConfig();
    }

    public boolean onCommand(CommandSender send, Command cmd, String label, String[] arg){

    if(label.equalsIgnoreCase("map")) {
    if(arg[0].equalsIgnoreCase("start")) {
    ItemStack I = this.getServer().getPlayer(send.getName()).getItemInHand();
    if (I.getType() == Material.MAP) {
    MapView map = Bukkit.getMap(I.getDurability());
    for (MapRenderer r : map.getRenderers()) {
    map.removeRenderer(r);
    }
    map.addRenderer(new MMRMainMenu(map, (Player) send));
    }
    }
    if(arg[0].equalsIgnoreCase("s")) {
    ItemStack I = this.getServer().getPlayer(send.getName()).getItemInHand();
    if (I.getType() == Material.MAP) {
    MapView map = Bukkit.getMap(I.getDurability());
    map.getRenderers().remove(0);
    }
    }
    }
    return true;
    }
    }
     
  4. Offline

    desht

  5. Offline

    pollag

    Thanks
     
Thread Status:
Not open for further replies.

Share This Page