Teleporting into the ground

Discussion in 'Plugin Development' started by br456, Mar 24, 2014.

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

    br456

    I am making a minigame plugin where people teleport to a lobby, start, and end. See the bottom for what the error is.

    Config File (open)

    Code:
    arenas:
      Test:
        world: world
        joinX: 11.0
        joinY: 70.0
        joinZ: -21.0
        startX: 15.0
        startY: 70.0
        startZ: -21.0
        endX: 18.0
        endY: 70.0
        endZ: -22.0
        maxPlayers: 1

    ArenaManager Class (open)

    Code:java
    1. package me.br456.WizardWar;
    2.  
    3. import org.bukkit.Bukkit;
    4. import org.bukkit.ChatColor;
    5. import org.bukkit.Location;
    6. import org.bukkit.World;
    7. import org.bukkit.configuration.file.FileConfiguration;
    8. import org.bukkit.entity.Player;
    9.  
    10. public class ArenaManager {
    11.  
    12. SettingsManager settings = SettingsManager.getInstance();
    13. private static ArenaManager am = new ArenaManager();
    14.  
    15. public static ArenaManager getManager() {
    16. return am;
    17. }
    18.  
    19. public Arena getArena(String name) {
    20. for(Arena a : Arena.arenas) {
    21. if(a.getName().equals(name)) {
    22. return a;
    23. }
    24. }
    25. return null;
    26. }
    27.  
    28. @SuppressWarnings("deprecation")
    29. public void addPlayer(Player player, String name) {
    30. if(getArena(name) != null) {
    31. Arena arena = getArena(name);
    32.  
    33. if(!arena.isFull()) {
    34.  
    35. if(!arena.isInGame()) {
    36.  
    37. ItemSaver.addInv(player.getName(), player.getInventory());
    38.  
    39. player.getInventory().clear();
    40. player.setHealth(20);
    41. player.setFireTicks(0);
    42.  
    43. player.teleport(arena.getLobby());
    44. arena.getPlayers().add(player.getName());
    45. int playersLeft = arena.getMaxPlayers() - arena.getPlayers().size();
    46.  
    47. arena.sendMessage(ChatColor.GRAY + "[" + ChatColor.YELLOW + "Wizard" + ChatColor.GRAY + "]" + ChatColor.WHITE +
    48. player.getName() + " has joined! (" + arena.getPlayers().size() + "/" + arena.getMaxPlayers() + ")");
    49.  
    50. if(playersLeft == 0) {
    51. startArena(name);
    52. }
    53.  
    54. } else {
    55. player.sendMessage(ChatColor.RED + "The game has already started!");
    56. }
    57. } else {
    58. player.sendMessage(ChatColor.RED + "The arena is full!");
    59. }
    60. } else {
    61. player.sendMessage("Arena doesn't exist!");
    62. }
    63. }
    64.  
    65. @SuppressWarnings("deprecation")
    66. public void removePlayer(Player player, String name) {
    67. if(getArena(name) != null) {
    68.  
    69. Arena arena = getArena(name);
    70.  
    71. if(arena.getPlayers().contains(player.getName())) {
    72. player.getInventory().clear();
    73.  
    74. player.getInventory().setContents(ItemSaver.getInv(player.getName()));
    75. player.getInventory().setArmorContents(ItemSaver.getArmor(player.getName()));
    76.  
    77. player.setHealth(20);
    78. player.setFireTicks(0);
    79.  
    80. player.teleport(arena.getEnd());
    81. arena.getPlayers().remove(player.getName());
    82.  
    83. arena.sendMessage(ChatColor.GRAY + "[" + ChatColor.YELLOW + "Wizard" + ChatColor.GRAY + "]" + ChatColor.WHITE +
    84. player.getName() + " has left! (" + arena.getPlayers().size() + "/" + arena.getMaxPlayers() + ")");
    85. } else {
    86. player.sendMessage("You aren't in the arena!");
    87. }
    88. } else {
    89. player.sendMessage("Arena doesn't exist!");
    90. }
    91. }
    92.  
    93. public void startArena(String name) {
    94. if (getArena(name) != null) {
    95. Arena arena = getArena(name);
    96.  
    97. arena.sendMessage(ChatColor.GREEN + "The game has started!");
    98. arena.setInGame(true);
    99.  
    100. for (String s: arena.getPlayers()) {
    101. Bukkit.getPlayer(s).teleport(arena.getStart());
    102. Bukkit.getPlayer(s).sendMessage("Welcome to the arena!");
    103. }
    104. }
    105. }
    106.  
    107. @SuppressWarnings("deprecation")
    108. public void endArena(String name) {
    109. if(getArena(name) != null) {
    110.  
    111. Arena arena = getArena(name);
    112.  
    113. arena.sendMessage(ChatColor.GREEN + "The game is over");
    114. arena.setInGame(false);
    115.  
    116. for (String s: arena.getPlayers()) {
    117. Player player = Bukkit.getPlayer(s);
    118. player.getInventory().clear();
    119.  
    120. player.getInventory().setContents(ItemSaver.getInv(player.getName()));
    121. player.getInventory().setArmorContents(ItemSaver.getArmor(player.getName()));
    122.  
    123. player.setHealth(20);
    124. player.setFireTicks(0);
    125.  
    126. player.teleport(arena.getEnd());
    127.  
    128. arena.getPlayers().remove(player.getName());
    129.  
    130. }
    131. }
    132. }
    133.  
    134. public void loadArenas() {
    135.  
    136. FileConfiguration config = settings.getData();
    137. if(config.getConfigurationSection("arenas") == null) return;
    138.  
    139. for (String keys: config.getConfigurationSection("arenas").getKeys(false)) {
    140. String worldName = settings.getData().getString("arenas." + keys + ".world");
    141. World world = Bukkit.getWorld(worldName);
    142.  
    143. double joinX = config.getDouble("arenas." + keys + ".joinX");
    144. double joinY = config.getDouble("arenas." + keys + ".joinY");
    145. double joinZ = config.getDouble("arenas." + keys + ".joinZ");
    146. Location joinLocation = new Location(world, joinX, joinY, joinZ);
    147.  
    148. double startX = config.getDouble("arenas." + keys + ".startX");
    149. double startY = config.getDouble("arenas." + keys + ".startY");
    150. double startZ = config.getDouble("arenas." + keys + ".startZ");
    151.  
    152. Location startLocation = new Location(world, startX, startY, startZ);
    153.  
    154. double endX = config.getDouble("arenas." + keys + ".endX");
    155. double endY = config.getDouble("arenas." + keys + ".endX");
    156. double endZ = config.getDouble("arenas." + keys + ".endX");
    157.  
    158. Location endLocation = new Location(world, endX, endY, endZ);
    159.  
    160. int maxPlayers = config.getInt("arenas." + keys + ".maxPlayers");
    161.  
    162. Arena arena = new Arena(keys, joinLocation, startLocation, endLocation, maxPlayers);
    163.  
    164. Arena.arenas.add(arena);
    165. }
    166. }
    167.  
    168. public void createArena(String name, Location lobby, Location start, Location end, int maxPlayers) {
    169.  
    170. Arena arena = new Arena(name, lobby, start, end, maxPlayers);
    171.  
    172. settings.getData().set("arenas." + name, null);
    173.  
    174. String path = "arenas." + name + ".";
    175.  
    176. settings.getData().set(path + "world", lobby.getWorld().getName());
    177.  
    178. settings.getData().set(path + "joinX", lobby.getX());
    179. settings.getData().set(path + "joinY", lobby.getY());
    180. settings.getData().set(path + "joinZ", lobby.getZ());
    181.  
    182. settings.getData().set(path + "startX", start.getX());
    183. settings.getData().set(path + "startY", start.getY());
    184. settings.getData().set(path + "startZ", start.getZ());
    185.  
    186. settings.getData().set(path + "endX", end.getX());
    187. settings.getData().set(path + "endY", end.getY());
    188. settings.getData().set(path + "endZ", end.getZ());
    189.  
    190. settings.getData().set(path + "maxPlayers", maxPlayers);
    191.  
    192. settings.saveData();
    193.  
    194. Arena.arenas.add(arena);
    195. }
    196. }
    197.  



    When I remove a player, they get teleported to the bottom of the world and at a different X and Z location(Using removePlayer method). When I teleport to the lobby(addPlayer method) this works fine. Why does this happen?
     
  2. Offline

    alex123099

    br456
    What is the Location that you get from arena.getEnd()?
     
  3. Offline

    br456

    alex123099
    It returns the location "end" from the arena object. The arena object is created in the create arena or load arena method.
     
  4. Offline

    GotRice

    br456 Just to make sure, when you get teleported, is your coordinates (0,0,0)? If it is, that's the default location you get teleported to in the event that there's an error with your defined location.
     
Thread Status:
Not open for further replies.

Share This Page