0.5.0 bis
Monster stuff
This commit is contained in:
parent
26cf701494
commit
0d910d3baf
12 changed files with 301 additions and 143 deletions
|
@ -1,37 +1,49 @@
|
||||||
package gq.unurled.raxen.components.dungeons;
|
package gq.unurled.raxen.components.dungeons;
|
||||||
|
|
||||||
|
import gq.unurled.raxen.Raxen;
|
||||||
|
import gq.unurled.raxen.components.dungeons.types.MonsterType;
|
||||||
|
import gq.unurled.raxen.components.dungeons.types.forest.ForestMonster;
|
||||||
import gq.unurled.raxen.components.entity.other.RaxenEntity;
|
import gq.unurled.raxen.components.entity.other.RaxenEntity;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.World;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
import static gq.unurled.raxen.utils.DungeonUtils.getRadiusFromRank;
|
import static gq.unurled.raxen.utils.DungeonUtils.getRadiusFromRank;
|
||||||
|
import static gq.unurled.raxen.utils.Utils.log;
|
||||||
|
|
||||||
public class Dungeon {
|
public class Dungeon {
|
||||||
|
|
||||||
private UUID uuid;
|
private String name;
|
||||||
|
|
||||||
private Rank rank;
|
private Rank rank;
|
||||||
|
|
||||||
private Gate gate;
|
private Gate gate;
|
||||||
|
|
||||||
private Map<UUID, RaxenEntity> monster = new HashMap();
|
private Map<String, RaxenEntity> monster = new HashMap();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The Type of the Dungeon
|
* The Type of the Dungeon
|
||||||
*/
|
*/
|
||||||
private Types types;
|
private Types types;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Monster Types
|
||||||
|
*/
|
||||||
|
private MonsterType monsterType;
|
||||||
|
|
||||||
private Location location;
|
private Location location;
|
||||||
private Integer radius;
|
private Integer radius;
|
||||||
|
|
||||||
public Dungeon(UUID uuid, Rank rank, Types types) {
|
public Dungeon(String name, Rank rank, Types types, MonsterType mType) {
|
||||||
this.uuid = uuid;
|
this.name = name;
|
||||||
this.rank = rank;
|
this.rank = rank;
|
||||||
this.types = types;
|
this.types = types;
|
||||||
|
this.monsterType = mType;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -42,17 +54,16 @@ public class Dungeon {
|
||||||
// -281.50 36.00 187.50
|
// -281.50 36.00 187.50
|
||||||
Location loc = new Location(Bukkit.getWorld("Liberty_City"), -284.0, 45.00, 187.50);
|
Location loc = new Location(Bukkit.getWorld("Liberty_City"), -284.0, 45.00, 187.50);
|
||||||
Integer radius = getRadiusFromRank(this.rank);
|
Integer radius = getRadiusFromRank(this.rank);
|
||||||
this.gate = new Gate(uuid, loc, radius);
|
this.gate = new Gate(name, loc, radius);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TODO: Terrain Generation of the inside of the Dungeons
|
* TODO: Terrain Generation of the inside of the Dungeons
|
||||||
*/
|
*/
|
||||||
public void generate() {
|
public void generate() {
|
||||||
genMonster();
|
Raxen main = (Raxen) Bukkit.getPluginManager().getPlugin("Raxen");
|
||||||
}
|
main.getManager().getWorldManager().loadWorld(name);
|
||||||
|
monsterType.genMonster(Bukkit.getWorld(name), rank);
|
||||||
public void genMonster() {
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,17 +8,16 @@ import java.util.UUID;
|
||||||
|
|
||||||
public class Gate {
|
public class Gate {
|
||||||
|
|
||||||
private UUID uuid;
|
private String name;
|
||||||
|
|
||||||
|
|
||||||
private Location loc;
|
private Location loc;
|
||||||
private Integer portalRadius;
|
private Integer portalRadius;
|
||||||
|
|
||||||
|
|
||||||
public Gate(UUID uuid, Location loc, Integer portalRadius) {
|
public Gate(String name, Location loc, Integer portalRadius) {
|
||||||
this.loc = loc;
|
this.loc = loc;
|
||||||
this.portalRadius = portalRadius;
|
this.portalRadius = portalRadius;
|
||||||
this.uuid = uuid;
|
this.name = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void teleport() {
|
public void teleport() {
|
||||||
|
@ -70,7 +69,7 @@ public class Gate {
|
||||||
return portalRadius;
|
return portalRadius;
|
||||||
}
|
}
|
||||||
|
|
||||||
public UUID getUuid() {
|
public String getName() {
|
||||||
return uuid;
|
return name;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,69 +0,0 @@
|
||||||
package gq.unurled.raxen.components.dungeons;
|
|
||||||
|
|
||||||
import com.onarandombox.MultiverseCore.api.MVWorldManager;
|
|
||||||
import com.onarandombox.MultiverseCore.api.MultiverseWorld;
|
|
||||||
import gq.unurled.raxen.Raxen;
|
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import static gq.unurled.raxen.utils.Utils.*;
|
|
||||||
|
|
||||||
public class WorldManagement {
|
|
||||||
|
|
||||||
private Raxen main;
|
|
||||||
|
|
||||||
MVWorldManager worldManager;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* String : name
|
|
||||||
* MultiverseWorld : a world that need to be registered
|
|
||||||
*/
|
|
||||||
private Map<String, MultiverseWorld> loadedWorlds = new HashMap<>();
|
|
||||||
|
|
||||||
private List<String> worlds = new ArrayList<>();
|
|
||||||
|
|
||||||
private File pluginFolder;
|
|
||||||
private File worldFolder;
|
|
||||||
|
|
||||||
|
|
||||||
public WorldManagement(Raxen main) {
|
|
||||||
this.main = main;
|
|
||||||
this.pluginFolder = new File(main.getDataFolder() + "/worlds/");
|
|
||||||
this.worldFolder = new File("worlds/");
|
|
||||||
this.worldManager = main.getManager().getMultiverse().getWorldManager();
|
|
||||||
worlds.add("Forest");
|
|
||||||
log(pluginFolder.getAbsolutePath(), "" + pluginFolder.isDirectory());
|
|
||||||
log(worldFolder.getAbsolutePath(), "" + worldFolder.isDirectory());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void load() {
|
|
||||||
if (!pluginFolder.exists()) {
|
|
||||||
pluginFolder.mkdirs();
|
|
||||||
error("Please put in the folder " + pluginFolder.getAbsolutePath() + " all the needed worlds :");
|
|
||||||
for (String s : worlds) {
|
|
||||||
error(" - " + s + ",");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void loadWorld(String name) {
|
|
||||||
File world = new File(pluginFolder + name + "/");
|
|
||||||
if (!world.exists() || !world.isDirectory()) {
|
|
||||||
error("Loading world " + name + ". Folder don't exists.");
|
|
||||||
}
|
|
||||||
File newWorld = new File(worldFolder + name);
|
|
||||||
try {
|
|
||||||
copyDirectory(world.getAbsolutePath(), newWorld.getAbsolutePath());
|
|
||||||
} catch (IOException e) {
|
|
||||||
error("Error while Loading world " + name + " at coping data.");
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
worldManager.loadWorld(name);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -0,0 +1,44 @@
|
||||||
|
package gq.unurled.raxen.components.dungeons.types;
|
||||||
|
|
||||||
|
import gq.unurled.raxen.components.dungeons.Rank;
|
||||||
|
import org.bukkit.World;
|
||||||
|
|
||||||
|
public interface MonsterType {
|
||||||
|
public enum type {;
|
||||||
|
|
||||||
|
private Double rate;
|
||||||
|
public String ID;
|
||||||
|
public Class clazz;
|
||||||
|
type(Double rate, String ID, Class clazz) {
|
||||||
|
this.rate = rate;
|
||||||
|
this.ID = ID;
|
||||||
|
this.clazz = clazz;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static type getTypeById(String ID) {
|
||||||
|
for (type type : type.values()) {
|
||||||
|
if(type.ID.equals(ID)) {
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Double getRate() {
|
||||||
|
return rate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRate(Double rate) {
|
||||||
|
this.rate = rate;
|
||||||
|
}
|
||||||
|
public String getID() {
|
||||||
|
return ID;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setID(String ID) {
|
||||||
|
this.ID = ID;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void genMonster(World world, Rank rank);
|
||||||
|
}
|
|
@ -1,6 +1,71 @@
|
||||||
package gq.unurled.raxen.components.dungeons.types.forest;
|
package gq.unurled.raxen.components.dungeons.types.forest;
|
||||||
|
|
||||||
public enum ForestMonster {
|
import gq.unurled.raxen.components.dungeons.Rank;
|
||||||
ELF,
|
import gq.unurled.raxen.components.dungeons.types.MonsterType;
|
||||||
WOLF
|
import gq.unurled.raxen.components.entity.other.custom.dungeon.forest.Elf;
|
||||||
|
import gq.unurled.raxen.components.entity.other.custom.dungeon.forest.Wolf;
|
||||||
|
import lombok.Getter;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.World;
|
||||||
|
import org.bukkit.entity.Entity;
|
||||||
|
import org.bukkit.entity.EntityType;
|
||||||
|
import org.bukkit.entity.Zombie;
|
||||||
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
|
import org.bukkit.scheduler.BukkitScheduler;
|
||||||
|
import org.bukkit.scheduler.BukkitTask;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
import static gq.unurled.raxen.utils.Utils.debug;
|
||||||
|
import static org.apache.commons.lang.math.RandomUtils.nextInt;
|
||||||
|
|
||||||
|
public class ForestMonster implements MonsterType {
|
||||||
|
@Override
|
||||||
|
public void genMonster(World world, Rank rank) {
|
||||||
|
Double x = 0.0;
|
||||||
|
Double y = 100.0;
|
||||||
|
Double z = 0.0;
|
||||||
|
for (type type : type.values()) {
|
||||||
|
type.name();
|
||||||
|
Random r = new Random();
|
||||||
|
int per = r.nextInt(100);
|
||||||
|
if (per >= type.rate) {
|
||||||
|
// spawn entity
|
||||||
|
debug("Spawning Entity " + type.ID);
|
||||||
|
Entity e = world.spawnEntity(new Location(world, x, y, z), EntityType.ARROW);
|
||||||
|
e.setInvulnerable(true);
|
||||||
|
BukkitTask task = new BukkitRunnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
Location loc = new Location(e.getWorld(), e.getLocation().getX(), e.getLocation().getY()-1, e.getLocation().getZ());
|
||||||
|
if (loc.getBlock().getType() != Material.AIR) {
|
||||||
|
e.setInvulnerable(false);
|
||||||
|
this.cancel();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}.runTaskTimerAsynchronously(Bukkit.getPluginManager().getPlugin("Raxen"), 0L, 20L);
|
||||||
|
}
|
||||||
|
x = 5.0 + ( 50.0 - 5.0 ) * r.nextDouble();
|
||||||
|
z = 5.0 + ( 50.0 - 5.0 ) * r.nextDouble();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
enum type {
|
||||||
|
ELF(50.0 ,"ELF", Elf.class),
|
||||||
|
WOLF(50.0, "WOLF", Wolf.class);
|
||||||
|
|
||||||
|
private Double rate;
|
||||||
|
public String ID;
|
||||||
|
public Class clazz;
|
||||||
|
|
||||||
|
type(Double rate, String ID, Class clazz) {
|
||||||
|
this.rate = rate;
|
||||||
|
this.ID = ID;
|
||||||
|
this.clazz = clazz;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,7 +11,7 @@ import org.bukkit.entity.EntityType;
|
||||||
import org.bukkit.persistence.PersistentDataContainer;
|
import org.bukkit.persistence.PersistentDataContainer;
|
||||||
import org.bukkit.persistence.PersistentDataType;
|
import org.bukkit.persistence.PersistentDataType;
|
||||||
|
|
||||||
public class RaxenEntity {
|
public abstract class RaxenEntity {
|
||||||
|
|
||||||
private final Raxen main;
|
private final Raxen main;
|
||||||
|
|
||||||
|
@ -52,4 +52,5 @@ public class RaxenEntity {
|
||||||
return data.get(key.maxHealth, PersistentDataType.DOUBLE);
|
return data.get(key.maxHealth, PersistentDataType.DOUBLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public abstract Entity createEntity(Location location);
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,35 @@
|
||||||
|
package gq.unurled.raxen.components.entity.other.custom.dungeon.forest;
|
||||||
|
|
||||||
|
import gq.unurled.raxen.Raxen;
|
||||||
|
import gq.unurled.raxen.components.entity.other.RaxenEntity;
|
||||||
|
import lombok.Getter;
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.entity.Entity;
|
||||||
|
import org.bukkit.entity.EntityType;
|
||||||
|
|
||||||
|
public class Elf extends RaxenEntity {
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
private final String name;
|
||||||
|
|
||||||
|
public Elf(Raxen main, String name, Integer level, Double health, Double strength) {
|
||||||
|
super(main, name, level, health, strength);
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Entity createEntity(Location location) {
|
||||||
|
return super.createEntity(EntityType.PLAYER, name, location);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Elf Default values
|
||||||
|
* @param main the main instance
|
||||||
|
* @param name
|
||||||
|
*/
|
||||||
|
public Elf(Raxen main, String name) {
|
||||||
|
super(main, "Elf", 10, 120.0, 25.0);
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,30 @@
|
||||||
|
package gq.unurled.raxen.components.entity.other.custom.dungeon.forest;
|
||||||
|
|
||||||
|
import gq.unurled.raxen.Raxen;
|
||||||
|
import gq.unurled.raxen.components.entity.other.RaxenEntity;
|
||||||
|
import lombok.Getter;
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.entity.Entity;
|
||||||
|
import org.bukkit.entity.EntityType;
|
||||||
|
|
||||||
|
public class Wolf extends RaxenEntity {
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
private final String name;
|
||||||
|
|
||||||
|
|
||||||
|
public Wolf(Raxen main, String name, Integer level, Double health, Double strength) {
|
||||||
|
super(main, name, level, health, strength);
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Wolf(Raxen main) {
|
||||||
|
super(main, "Wolf", 5, 100.0, 20.0);
|
||||||
|
this.name = "Wolf";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Entity createEntity(Location location) {
|
||||||
|
return super.createEntity(EntityType.WOLF, name, location);
|
||||||
|
}
|
||||||
|
}
|
|
@ -3,6 +3,8 @@ package gq.unurled.raxen.components.entity.other.custom.hostile.low;
|
||||||
import gq.unurled.raxen.Raxen;
|
import gq.unurled.raxen.Raxen;
|
||||||
import gq.unurled.raxen.components.entity.other.RaxenEntity;
|
import gq.unurled.raxen.components.entity.other.RaxenEntity;
|
||||||
import gq.unurled.raxen.components.entity.other.custom.Entity;
|
import gq.unurled.raxen.components.entity.other.custom.Entity;
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.entity.EntityType;
|
||||||
|
|
||||||
public class Goblin extends Entity {
|
public class Goblin extends Entity {
|
||||||
|
|
||||||
|
@ -10,7 +12,12 @@ public class Goblin extends Entity {
|
||||||
|
|
||||||
public Goblin(Raxen main) {
|
public Goblin(Raxen main) {
|
||||||
super("Goblin", 1, 100.0, 10.0, 0.0, 50.0, true);
|
super("Goblin", 1, 100.0, 10.0, 0.0, 50.0, true);
|
||||||
this.goblin = new RaxenEntity(main, "Goblin", 1, 100.0, 10.0);
|
this.goblin = new RaxenEntity(main, "Goblin", 1, 100.0, 10.0) {
|
||||||
|
@Override
|
||||||
|
public org.bukkit.entity.Entity createEntity(Location location) {
|
||||||
|
return super.createEntity(EntityType.PLAYER, "Goblin", location);
|
||||||
|
}
|
||||||
|
};
|
||||||
register(main);
|
register(main);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,72 +1,100 @@
|
||||||
package gq.unurled.raxen.manager.server;
|
package gq.unurled.raxen.manager.server;
|
||||||
|
|
||||||
|
import com.onarandombox.MultiverseCore.api.MVWorldManager;
|
||||||
|
import com.onarandombox.MultiverseCore.api.MultiverseWorld;
|
||||||
import gq.unurled.raxen.Raxen;
|
import gq.unurled.raxen.Raxen;
|
||||||
import gq.unurled.raxen.manager.entity.StorageManager;
|
|
||||||
import lombok.Getter;
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.World;
|
|
||||||
import org.bukkit.WorldCreator;
|
|
||||||
import org.bukkit.configuration.file.FileConfiguration;
|
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.HashMap;
|
import java.util.*;
|
||||||
import java.util.List;
|
|
||||||
import java.util.UUID;
|
import static gq.unurled.raxen.utils.Utils.*;
|
||||||
|
import static gq.unurled.raxen.utils.Utils.error;
|
||||||
|
|
||||||
public class WorldManager {
|
public class WorldManager {
|
||||||
|
|
||||||
private Raxen main;
|
private Raxen main;
|
||||||
private static StorageManager sto;
|
|
||||||
|
|
||||||
@Getter
|
MVWorldManager worldManager;
|
||||||
private HashMap<String, World> worlds = new HashMap<>();
|
|
||||||
|
/**
|
||||||
|
* String : name
|
||||||
|
* MultiverseWorld : a world that need to be registered
|
||||||
|
*/
|
||||||
|
private Map<String, MultiverseWorld> loadedWorlds = new HashMap<>();
|
||||||
|
|
||||||
|
private List<String> worlds = new ArrayList<>();
|
||||||
|
|
||||||
|
private File pluginFolder;
|
||||||
|
private File worldFolder;
|
||||||
|
|
||||||
public WorldManager(Raxen main) {
|
public WorldManager(Raxen main) {
|
||||||
this.main = main;
|
this.main = main;
|
||||||
this.sto = main.getManager().getStorageManager();
|
this.pluginFolder = new File(main.getDataFolder() + "/worlds/");
|
||||||
if(!(new File(main.getDataFolder() + "/Worlds/").exists())) {
|
this.worldFolder = new File("worlds/");
|
||||||
new File(main.getDataFolder() + "/Worlds/").mkdirs();
|
this.worldManager = main.getManager().getMultiverse().getWorldManager();
|
||||||
|
worlds.add("Forest");
|
||||||
|
log(pluginFolder.getAbsolutePath(), "" + pluginFolder.isDirectory());
|
||||||
|
log(worldFolder.getAbsolutePath(), "" + worldFolder.isDirectory());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void removeWorld(String name) {
|
||||||
|
File world = new File(worldFolder + name + "/");
|
||||||
|
if (!world.exists() || !world.isDirectory()) {
|
||||||
|
error("Saving world " + name + ". Folder don't exists.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
worldManager.unloadWorld(name);
|
||||||
|
try {
|
||||||
|
removeDirectory(world.toPath());
|
||||||
|
} catch (IOException e) {
|
||||||
|
error("Error while Saving world " + name + " at coping data.");
|
||||||
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void save() {
|
public void load() {
|
||||||
String path = main.getDataFolder() + "/Worlds/";
|
if (!pluginFolder.exists()) {
|
||||||
File folder = new File(path);
|
pluginFolder.mkdirs();
|
||||||
List<World> worlds = Bukkit.getWorlds();
|
error("Please put in the folder " + pluginFolder.getAbsolutePath() + " all the needed worlds :");
|
||||||
for (World world : worlds) {
|
for (String s : worlds) {
|
||||||
File file = new File(path + world.getName() + ".yml");
|
error(" - " + s + ",");
|
||||||
FileConfiguration fileConf = sto.createYml(file);
|
}
|
||||||
fileConf.set("name", world.getName());
|
return;
|
||||||
fileConf.set("uuid", world.getUID().toString());
|
}
|
||||||
try {
|
for (String s : worlds) {
|
||||||
fileConf.save(file);
|
File world = new File(pluginFolder + s);
|
||||||
} catch (IOException e) {
|
File worldd = new File(worldFolder + s);
|
||||||
e.printStackTrace();
|
if (worldd.exists()) {
|
||||||
|
if (worldd.isDirectory()) {
|
||||||
|
worldManager.loadWorld(s);
|
||||||
|
}
|
||||||
|
} else if (world.exists() ) {
|
||||||
|
if (world.isDirectory()) {
|
||||||
|
loadWorld(s);
|
||||||
|
} else {
|
||||||
|
error("World " + s + " is not a world Folder!");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
error("World " + s + " do not exist.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void saveWorld(String name) {
|
public void loadWorld(String name) {
|
||||||
World world = Bukkit.getWorld(name);
|
File world = new File(pluginFolder + name + "/");
|
||||||
UUID uuid = world.getUID();
|
if (!world.exists() || !world.isDirectory()) {
|
||||||
String key = world.getKey().getKey();
|
error("Loading world " + name + ". Folder don't exists.");
|
||||||
File file = new File(main.getDataFolder() + "/Worlds/" + name + ".yml");
|
return;
|
||||||
}
|
|
||||||
|
|
||||||
public void load() {
|
|
||||||
String path = main.getDataFolder() + "/Worlds/";
|
|
||||||
File folder = new File(path);
|
|
||||||
File[] listFile = folder.listFiles();
|
|
||||||
for (File file : listFile) {
|
|
||||||
loadWorld(file);
|
|
||||||
}
|
}
|
||||||
|
File newWorld = new File(worldFolder + name);
|
||||||
|
try {
|
||||||
|
copyDirectory(world.getAbsolutePath(), newWorld.getAbsolutePath());
|
||||||
|
} catch (IOException e) {
|
||||||
|
error("Error while Loading world " + name + " at coping data.");
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
worldManager.loadWorld(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
public World loadWorld(File file) {
|
|
||||||
FileConfiguration fileConf = sto.createYml(file);
|
|
||||||
World world = Bukkit.createWorld(new WorldCreator(fileConf.getString("name")));
|
|
||||||
worlds.put(world.getName(), world);
|
|
||||||
return world;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,10 +18,10 @@ import org.bukkit.inventory.Inventory;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.*;
|
||||||
import java.nio.file.Path;
|
import java.util.Comparator;
|
||||||
import java.nio.file.Paths;
|
|
||||||
|
|
||||||
public class Utils {
|
public class Utils {
|
||||||
|
|
||||||
|
@ -226,4 +226,15 @@ public class Utils {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void removeDirectory(Path path) throws IOException {
|
||||||
|
if (Files.isDirectory(path, LinkOption.NOFOLLOW_LINKS)) {
|
||||||
|
try (DirectoryStream<Path> entries = Files.newDirectoryStream(path)) {
|
||||||
|
for (Path entry : entries) {
|
||||||
|
removeDirectory(entry);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Files.delete(path);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,8 +12,4 @@
|
||||||
resource_pack_url: "https://mc-packs.net/" # recommend to use https://mc-packs.net/ => free resource pack hoster (will eventually develop one myself but not atm)
|
resource_pack_url: "https://mc-packs.net/" # recommend to use https://mc-packs.net/ => free resource pack hoster (will eventually develop one myself but not atm)
|
||||||
resource_pack_sha1: "sha1hallo" # sha1 hash
|
resource_pack_sha1: "sha1hallo" # sha1 hash
|
||||||
|
|
||||||
worlds:
|
|
||||||
forest:
|
|
||||||
enabled: true
|
|
||||||
|
|
||||||
debug: false
|
debug: false
|
Loading…
Reference in a new issue