diff --git a/src/com/dre/dungeonsxl/DPlayer.java b/src/com/dre/dungeonsxl/DPlayer.java index 7e18b063..a86a4d6e 100644 --- a/src/com/dre/dungeonsxl/DPlayer.java +++ b/src/com/dre/dungeonsxl/DPlayer.java @@ -466,9 +466,11 @@ public class DPlayer { //Check Distance Trigger Signs for(DSign sign : gworld.dSigns){ - if(sign.isDistanceTrigger()){ - if(dplayer.player.getLocation().distance(sign.getSign().getLocation()) < sign.getDtDistance()){ - sign.onTrigger(); + if(sign != null){ + if(sign.isDistanceTrigger()){ + if(dplayer.player.getLocation().distance(sign.getSign().getLocation()) < sign.getDtDistance()){ + sign.onTrigger(); + } } } } diff --git a/src/com/dre/dungeonsxl/P.java b/src/com/dre/dungeonsxl/P.java index 4359e592..526f3cc5 100644 --- a/src/com/dre/dungeonsxl/P.java +++ b/src/com/dre/dungeonsxl/P.java @@ -37,6 +37,7 @@ import com.dre.dungeonsxl.listener.EntityListener; import com.dre.dungeonsxl.listener.HangingListener; import com.dre.dungeonsxl.listener.PlayerListener; import com.dre.dungeonsxl.listener.WorldListener; +import com.dre.dungeonsxl.util.DUtility; public class P extends JavaPlugin{ public static P p; @@ -63,7 +64,9 @@ public class P extends JavaPlugin{ @Override public void onEnable(){ p = this; - + + DUtility.convertOldSigns(); + //Commands getCommand("dungeonsxl").setExecutor(new CommandListener()); diff --git a/src/com/dre/dungeonsxl/game/GameWorld.java b/src/com/dre/dungeonsxl/game/GameWorld.java index 98077ea4..47e5c89c 100644 --- a/src/com/dre/dungeonsxl/game/GameWorld.java +++ b/src/com/dre/dungeonsxl/game/GameWorld.java @@ -84,8 +84,10 @@ public class GameWorld { this.isPlaying=true; for(DSign dSign : this.dSigns){ - if(!dSign.isOnDungeonInit()){ - dSign.onInit(); + if(dSign != null){ + if(!dSign.isOnDungeonInit()){ + dSign.onInit(); + } } } } diff --git a/src/com/dre/dungeonsxl/util/DUtility.java b/src/com/dre/dungeonsxl/util/DUtility.java new file mode 100644 index 00000000..7faf7ac6 --- /dev/null +++ b/src/com/dre/dungeonsxl/util/DUtility.java @@ -0,0 +1,84 @@ +package com.dre.dungeonsxl.util; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.ObjectInputStream; + +import org.bukkit.World; +import org.bukkit.WorldCreator; +import org.bukkit.block.Block; +import org.bukkit.block.Sign; + +import com.dre.dungeonsxl.P; + +public class DUtility { + public static P p = P.p; + + public static void convertOldSigns(){ + File file=new File(p.getDataFolder(),"/dungeons/"); + + if(file.exists()){ + for(File dungeonFolder : file.listFiles()){ + if(dungeonFolder.isDirectory()){ + p.copyDirectory(dungeonFolder, new File("DXL_TMP")); + + World world = p.getServer().createWorld(WorldCreator.name("DXL_TMP")); + + //World + try { + ObjectInputStream os=new ObjectInputStream(new FileInputStream(new File(p.getDataFolder(),"/dungeons/"+dungeonFolder.getName()+"/DXLData.data"))); + int length=os.readInt(); + for(int i=0; i= 3){ + sign.setLine(2, splitted[0] + "," + splitted[1]); + sign.setLine(3, "D "+splitted[2]); + } + } + + if(sign.getLine(0).equalsIgnoreCase("[msg]") || sign.getLine(0).equalsIgnoreCase("[soundmsg]")){ + sign.setLine(3, "D "+sign.getLine(2)); + sign.setLine(2, ""); + } + + if(sign.getLine(0).equalsIgnoreCase("[checkpoint]")){ + sign.setLine(3, "D "+sign.getLine(1)); + sign.setLine(1, ""); + } + + sign.update(); + } + } + } + + os.close(); + p.getServer().unloadWorld(world, true); + p.copyDirectory(new File("DXL_TMP"), dungeonFolder); + p.removeDirectory(new File("DXL_TMP")); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } + } +}