diff --git a/.gitignore b/.gitignore
index 8a53917..108f7ad 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,6 +7,7 @@
.project
api/
*.iml
+worlds/
.gradle/
gradle.properties
diff --git a/build.gradle b/build.gradle
index f32f2a9..f8f5d3c 100644
--- a/build.gradle
+++ b/build.gradle
@@ -81,7 +81,7 @@ dependencies {
}
group = 'gq.unurled'
-version = '0.4.9'
+version = '0.5.1'
description = 'Raxen'
java.sourceCompatibility = JavaVersion.VERSION_17
diff --git a/src/main/java/gq/unurled/raxen/Raxen.java b/src/main/java/gq/unurled/raxen/Raxen.java
index 1cb9219..a30e612 100644
--- a/src/main/java/gq/unurled/raxen/Raxen.java
+++ b/src/main/java/gq/unurled/raxen/Raxen.java
@@ -19,7 +19,7 @@ public final class Raxen extends JavaPlugin {
private static final String prefix = "Rx> ";
@Getter
- private static String version = "0.4.9";
+ private static String version = "0.5.1";
private final PluginManager pm = getServer().getPluginManager();
private static Raxen plugin;
diff --git a/src/main/java/gq/unurled/raxen/components/dungeons/Dungeon.java b/src/main/java/gq/unurled/raxen/components/dungeons/Dungeon.java
index 9c0cce3..5fd91ce 100644
--- a/src/main/java/gq/unurled/raxen/components/dungeons/Dungeon.java
+++ b/src/main/java/gq/unurled/raxen/components/dungeons/Dungeon.java
@@ -2,48 +2,45 @@ 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 lombok.Getter;
import org.bukkit.Bukkit;
import org.bukkit.Location;
-import org.bukkit.World;
-import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
-import java.util.UUID;
import static gq.unurled.raxen.utils.DungeonUtils.getRadiusFromRank;
-import static gq.unurled.raxen.utils.Utils.log;
public class Dungeon {
- private String name;
+ @Getter private String name;
- private Rank rank;
+ @Getter private Rank rank;
- private Gate gate;
+ @Getter private Gate gate;
- private Map monster = new HashMap();
+ @Getter private Map monster = new HashMap();
/**
* The Type of the Dungeon
*/
- private Types types;
+ @Getter private Types types;
/**
* Monster Types
*/
- private MonsterType monsterType;
+ @Getter private MonsterType monsterType;
- private Location location;
- private Integer radius;
+ @Getter private Location location;
+ @Getter private Integer radius;
public Dungeon(String name, Rank rank, Types types, MonsterType mType) {
this.name = name;
this.rank = rank;
this.types = types;
this.monsterType = mType;
+ generateGate();
}
/**
diff --git a/src/main/java/gq/unurled/raxen/components/dungeons/Gate.java b/src/main/java/gq/unurled/raxen/components/dungeons/Gate.java
index a48aead..6d98173 100644
--- a/src/main/java/gq/unurled/raxen/components/dungeons/Gate.java
+++ b/src/main/java/gq/unurled/raxen/components/dungeons/Gate.java
@@ -4,7 +4,6 @@ import org.bukkit.Location;
import org.bukkit.Material;
import java.util.Random;
-import java.util.UUID;
public class Gate {
diff --git a/src/main/java/gq/unurled/raxen/components/dungeons/types/MonsterType.java b/src/main/java/gq/unurled/raxen/components/dungeons/types/MonsterType.java
index 79b6fa1..f98ad1e 100644
--- a/src/main/java/gq/unurled/raxen/components/dungeons/types/MonsterType.java
+++ b/src/main/java/gq/unurled/raxen/components/dungeons/types/MonsterType.java
@@ -1,21 +1,34 @@
package gq.unurled.raxen.components.dungeons.types;
import gq.unurled.raxen.components.dungeons.Rank;
+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.scheduler.BukkitRunnable;
+import org.bukkit.scheduler.BukkitTask;
+import org.jetbrains.annotations.Nullable;
-public interface MonsterType {
+import java.util.Random;
+
+import static gq.unurled.raxen.utils.Utils.debug;
+
+public class 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) {
+ public static @Nullable type getTypeById(String ID) {
for (type type : type.values()) {
if(type.ID.equals(ID)) {
return type;
@@ -31,6 +44,7 @@ public interface MonsterType {
public void setRate(Double rate) {
this.rate = rate;
}
+
public String getID() {
return ID;
}
@@ -38,7 +52,43 @@ public interface MonsterType {
public void setID(String ID) {
this.ID = ID;
}
+
+ public Class getClazz() {
+ return clazz;
+ }
+
+ public void getClazz(Class clazz) {
+ this.clazz = clazz;
+ }
}
- void genMonster(World world, Rank rank);
+ 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 = ((RaxenEntity) type.getClazz()).createEntity();
+ 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();
+ }
+ }
}
diff --git a/src/main/java/gq/unurled/raxen/components/dungeons/types/forest/ForestDungeon.java b/src/main/java/gq/unurled/raxen/components/dungeons/types/forest/ForestDungeon.java
new file mode 100644
index 0000000..b511432
--- /dev/null
+++ b/src/main/java/gq/unurled/raxen/components/dungeons/types/forest/ForestDungeon.java
@@ -0,0 +1,16 @@
+package gq.unurled.raxen.components.dungeons.types.forest;
+
+import gq.unurled.raxen.components.dungeons.Dungeon;
+import gq.unurled.raxen.components.dungeons.Rank;
+import gq.unurled.raxen.components.dungeons.Types;
+import gq.unurled.raxen.components.dungeons.types.MonsterType;
+
+public class ForestDungeon extends Dungeon {
+ public ForestDungeon(String name, Rank rank, Types types, MonsterType mType) {
+ super(name, rank, types, mType);
+ }
+
+ public ForestDungeon() {
+ super("Forest", Rank.E, Types.FOREST, new ForestMonster());
+ }
+}
diff --git a/src/main/java/gq/unurled/raxen/components/dungeons/types/forest/ForestMonster.java b/src/main/java/gq/unurled/raxen/components/dungeons/types/forest/ForestMonster.java
index 545d515..f78d71e 100644
--- a/src/main/java/gq/unurled/raxen/components/dungeons/types/forest/ForestMonster.java
+++ b/src/main/java/gq/unurled/raxen/components/dungeons/types/forest/ForestMonster.java
@@ -1,60 +1,13 @@
package gq.unurled.raxen.components.dungeons.types.forest;
-import gq.unurled.raxen.components.dungeons.Rank;
import gq.unurled.raxen.components.dungeons.types.MonsterType;
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;
+public class ForestMonster extends MonsterType {
-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 {
+ @Getter enum type {
ELF(50.0 ,"ELF", Elf.class),
WOLF(50.0, "WOLF", Wolf.class);
diff --git a/src/main/java/gq/unurled/raxen/components/entity/other/custom/dungeon/forest/Elf.java b/src/main/java/gq/unurled/raxen/components/entity/other/custom/dungeon/forest/Elf.java
index ca30343..3adaada 100644
--- a/src/main/java/gq/unurled/raxen/components/entity/other/custom/dungeon/forest/Elf.java
+++ b/src/main/java/gq/unurled/raxen/components/entity/other/custom/dungeon/forest/Elf.java
@@ -9,8 +9,7 @@ import org.bukkit.entity.EntityType;
public class Elf extends RaxenEntity {
- @Getter
- private final String name;
+ @Getter private final String name;
public Elf(Raxen main, String name, Integer level, Double health, Double strength) {
super(main, name, level, health, strength);
diff --git a/src/main/java/gq/unurled/raxen/components/entity/other/custom/dungeon/forest/Wolf.java b/src/main/java/gq/unurled/raxen/components/entity/other/custom/dungeon/forest/Wolf.java
index fff8d7c..753491b 100644
--- a/src/main/java/gq/unurled/raxen/components/entity/other/custom/dungeon/forest/Wolf.java
+++ b/src/main/java/gq/unurled/raxen/components/entity/other/custom/dungeon/forest/Wolf.java
@@ -9,8 +9,7 @@ import org.bukkit.entity.EntityType;
public class Wolf extends RaxenEntity {
- @Getter
- private final String name;
+ @Getter private final String name;
public Wolf(Raxen main, String name, Integer level, Double health, Double strength) {
diff --git a/src/main/java/gq/unurled/raxen/manager/Manager.java b/src/main/java/gq/unurled/raxen/manager/Manager.java
index 08f23dc..836db72 100644
--- a/src/main/java/gq/unurled/raxen/manager/Manager.java
+++ b/src/main/java/gq/unurled/raxen/manager/Manager.java
@@ -28,11 +28,13 @@ public class Manager {
private LootManager lootManager;
@Getter
private LibsManager libsManager;
+ @Getter private DungeonsManager dungeonsManager;
@Getter private Multiverse multiverse;
public void set(Raxen main) {
libsManager = new LibsManager(main);
+ multiverse = new Multiverse();
worldManager = new WorldManager(main);
storageManager = new StorageManager(main);
@@ -45,6 +47,6 @@ public class Manager {
resourcePackManager = new ResourcePackManager(main);
entityManager = new EntityManager(main);
lootManager = new LootManager(main);
- multiverse = new Multiverse();
+ dungeonsManager = new DungeonsManager(main);
}
}
diff --git a/src/main/java/gq/unurled/raxen/manager/entity/ItemManager.java b/src/main/java/gq/unurled/raxen/manager/entity/ItemManager.java
index 8ad6db7..22f707e 100644
--- a/src/main/java/gq/unurled/raxen/manager/entity/ItemManager.java
+++ b/src/main/java/gq/unurled/raxen/manager/entity/ItemManager.java
@@ -32,49 +32,7 @@ public class ItemManager {
public ItemManager(Raxen main) {
this.main = main;
- register();
- }
-
- private void example() {
- File customFile;
- FileConfiguration customConfig;
- customFile = new File(main.getDataFolder() + "/Items/", "/example.yml");
-
- if (!customFile.exists()) {
- customFile.getParentFile().mkdirs();
- try {
- customFile.createNewFile();
- }
- catch (IOException e) {
- error((Raxen) Bukkit.getPluginManager().getPlugin("Raxen"),"Error in Item Manager saving new File.");
- e.printStackTrace();
- }
- }
- customConfig = new YamlConfiguration();
- try {
- customConfig.load(customFile);
- } catch (IOException | InvalidConfigurationException e) {
- e.printStackTrace();
- }
- List lore = new ArrayList<>();
- lore.add("super lore wahou");
- if (customConfig.get("name") == null) {
- customConfig.set("id", "minecraft_id_of_item");
- customConfig.set("customId", "id_of_item_used_to_identify_it");
- customConfig.set("name", "Name of the Item");
- customConfig.set("health", 100);
- customConfig.set("defense", 50);
- customConfig.set("speed", 100);
- customConfig.set("strength", 100);
- customConfig.set("custom_ability","fireball");
- customConfig.set("custom_model_data", 123);
- customConfig.set("lore",lore);
- try {
- customConfig.save(customFile);
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
+ // register();
}
private void register() {
diff --git a/src/main/java/gq/unurled/raxen/manager/server/DungeonsManager.java b/src/main/java/gq/unurled/raxen/manager/server/DungeonsManager.java
index d4a8838..2b955d6 100644
--- a/src/main/java/gq/unurled/raxen/manager/server/DungeonsManager.java
+++ b/src/main/java/gq/unurled/raxen/manager/server/DungeonsManager.java
@@ -1,11 +1,32 @@
package gq.unurled.raxen.manager.server;
+import gq.unurled.raxen.Raxen;
+import gq.unurled.raxen.components.dungeons.Dungeon;
import gq.unurled.raxen.components.dungeons.Gate;
+import gq.unurled.raxen.components.dungeons.types.forest.ForestDungeon;
import java.util.HashMap;
import java.util.UUID;
public class DungeonsManager {
+ private Raxen main;
+
private HashMap gates = new HashMap<>();
+
+ private HashMap dungeons = new HashMap<>();
+
+ public DungeonsManager(Raxen main) {
+ this.main = main;
+ registerDungeons();
+ }
+
+ public void registerDungeons() {
+ ForestDungeon forestDungeon = new ForestDungeon();
+ dungeons.put("FOREST", forestDungeon);
+
+ for (String s : dungeons.keySet()) {
+ main.getManager().getWorldManager().loadWorld(dungeons.get(s).getName());
+ }
+ }
}
diff --git a/src/main/java/gq/unurled/raxen/manager/server/WorldManager.java b/src/main/java/gq/unurled/raxen/manager/server/WorldManager.java
index 3acc377..769f697 100644
--- a/src/main/java/gq/unurled/raxen/manager/server/WorldManager.java
+++ b/src/main/java/gq/unurled/raxen/manager/server/WorldManager.java
@@ -3,13 +3,16 @@ package gq.unurled.raxen.manager.server;
import com.onarandombox.MultiverseCore.api.MVWorldManager;
import com.onarandombox.MultiverseCore.api.MultiverseWorld;
import gq.unurled.raxen.Raxen;
+import org.bukkit.World;
import java.io.File;
import java.io.IOException;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
import static gq.unurled.raxen.utils.Utils.*;
-import static gq.unurled.raxen.utils.Utils.error;
public class WorldManager {
@@ -34,8 +37,6 @@ public class WorldManager {
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 removeWorld(String name) {
@@ -82,19 +83,20 @@ public class WorldManager {
}
public void loadWorld(String name) {
- File world = new File(pluginFolder + name + "/");
+ File world = new File(pluginFolder + "/" + name + "/");
if (!world.exists() || !world.isDirectory()) {
- error("Loading world " + name + ". Folder don't exists.");
+ error("Loading world " + name + ". Folder " + world.getAbsolutePath() + " don't exists.");
return;
}
- File newWorld = new File(worldFolder + name);
+ File newWorld = new File(worldFolder + "/" + name);
try {
+ log(colorTextComp("Copping world " + world.getName() + "."), colorTextComp("From " + world.getAbsolutePath() + " to " + newWorld.getAbsolutePath() +"."));
copyDirectory(world.getAbsolutePath(), newWorld.getAbsolutePath());
} catch (IOException e) {
error("Error while Loading world " + name + " at coping data.");
e.printStackTrace();
}
worldManager.loadWorld(name);
+ worldManager.addWorld(world.getName(), World.Environment.NORMAL, null, null, false, null);
}
-
}
diff --git a/src/main/java/gq/unurled/raxen/utils/Utils.java b/src/main/java/gq/unurled/raxen/utils/Utils.java
index be3bf25..d84df38 100644
--- a/src/main/java/gq/unurled/raxen/utils/Utils.java
+++ b/src/main/java/gq/unurled/raxen/utils/Utils.java
@@ -18,10 +18,8 @@ import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.NotNull;
-import java.io.File;
import java.io.IOException;
import java.nio.file.*;
-import java.util.Comparator;
public class Utils {
@@ -84,6 +82,19 @@ public class Utils {
.serialize(minimessage.deserialize(string)));
}
+ public static String textCompToString(TextComponent comp) {
+ MiniMessage minimessage = MiniMessage.builder()
+ .tags(TagResolver.builder()
+ .resolver(StandardTags.color())
+ .resolver(StandardTags.decorations())
+ .resolver(StandardTags.reset())
+ .build()
+ )
+ .build();
+ return ChatColor.translateAlternateColorCodes('&', LegacyComponentSerializer.legacyAmpersand()
+ .serialize(comp));
+ }
+
public static String decolor(String string) {
return MiniMessage.miniMessage().stripTags(string);
}
@@ -146,6 +157,14 @@ public class Utils {
}
}
+ public static void log(TextComponent... strings) {
+ Raxen main = (Raxen) Bukkit.getPluginManager().getPlugin("Raxen");
+ assert main != null;
+ for(TextComponent string : strings) {
+ main.getServer().sendMessage(string);
+ }
+ }
+
public static void warn(String... strings) {
Raxen main = (Raxen) Bukkit.getPluginManager().getPlugin("Raxen");
assert main != null;
diff --git a/src/main/java/gq/unurled/raxen/utils/libs/Multiverse.java b/src/main/java/gq/unurled/raxen/utils/libs/Multiverse.java
index 0c6c07f..52376d2 100644
--- a/src/main/java/gq/unurled/raxen/utils/libs/Multiverse.java
+++ b/src/main/java/gq/unurled/raxen/utils/libs/Multiverse.java
@@ -10,8 +10,8 @@ public class Multiverse {
private MVWorldManager worldManager;
public Multiverse() {
- this.worldManager = core.getMVWorldManager();
this.core = (MultiverseCore) Bukkit.getServer().getPluginManager().getPlugin("Multiverse-Core");
+ this.worldManager = core.getMVWorldManager();
}
public MVWorldManager getWorldManager() {