diff --git a/FUTURE.md b/FUTURE.md
new file mode 100644
index 0000000..d8cf2a4
--- /dev/null
+++ b/FUTURE.md
@@ -0,0 +1,12 @@
+# Future for Raxen
+ #### to wich direction i want Raxen to go ?
+Some RPG thing :
+- Hypixel has Skyblock
+- Wyncraft has Quests
+- Raxen must do :
+ - some survival and RPG thing
+ - need some sort of action => pve, pvp maybe ?
+ - need custom mobs
+ - need custom items
+ - can use custom texture pack
+ - protection and logging feature => coreprotect
\ No newline at end of file
diff --git a/README.md b/README.md
index 2af35aa..a7958ec 100644
--- a/README.md
+++ b/README.md
@@ -7,5 +7,7 @@ Minecraft Plugin that do multiple stuff.
no build and no running info atm.
+to use custom texture for items, modify the custom data model => [Example](https://www.youtube.com/watch?v=XGxn_Mb8VzI)
+
for more info contact me.
@unurled#0149
diff --git a/pom.xml b/pom.xml
index e2d61b0..0f0f674 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
gq.unurled
raxen
- 0.0.2
+ 0.0.3
jar
Raxen
@@ -87,6 +87,10 @@
dmulloy2-repo
https://repo.dmulloy2.net/repository/public/
+
+ essentials-releases
+ https://repo.essentialsx.net/releases/
+
@@ -102,7 +106,7 @@
nms
4.7.0
system
- ${project.basedir}/api/patched_1.17.1.jar
+ ${project.basedir}/api/paper-1.18.1.jar
org.projectlombok
@@ -167,6 +171,18 @@
5.3
provided
+
+ com.github.MilkBowl
+ VaultAPI
+ 1.7
+ provided
+
+
+ net.essentialsx
+ EssentialsX
+ 2.19.0
+ provided
+
diff --git a/src/main/java/gq/unurled/raxen/Raxen.java b/src/main/java/gq/unurled/raxen/Raxen.java
index 0659416..8a1c296 100644
--- a/src/main/java/gq/unurled/raxen/Raxen.java
+++ b/src/main/java/gq/unurled/raxen/Raxen.java
@@ -9,6 +9,7 @@ import gq.unurled.raxen.manager.*;
import gq.unurled.raxen.utils.LuckPerm;
import gq.unurled.raxen.utils.MongoDB;
import gq.unurled.raxen.utils.Reload;
+import gq.unurled.raxen.utils.Vault;
import lombok.Getter;
import net.kyori.adventure.text.Component;
import org.bukkit.ChatColor;
@@ -21,7 +22,7 @@ public final class Raxen extends JavaPlugin {
private static final String prefix = ChatColor.AQUA + "Rx" + ChatColor.LIGHT_PURPLE + "> ";
@Getter
- private static final String version = "0.0.2";
+ private static final String version = "0.0.3";
private final PluginManager pm = getServer().getPluginManager();
@Getter
@@ -38,7 +39,12 @@ public final class Raxen extends JavaPlugin {
private static PlayerConfig playerConfig;
private static ListenerManager listenerManager;
+ @Getter
private static CommandManager commandManager;
+ @Getter
+ private gq.unurled.raxen.manager.ProtocolManager protoManager;
+ @Getter
+ private ItemManager itemManager;
@Getter
private ProtocolManager protocolManager;
@@ -46,25 +52,33 @@ public final class Raxen extends JavaPlugin {
public AureliumAPI aureliumAPI;
@Getter
public LuckPerm luckPerm;
+ @Getter
+ public Vault vault;
@Override
public void onEnable() {
plugin = this;
logger = getLogger();
+
+ //Config and storage sruff
config = new Config(this);
storageManager = new StorageManager(this);
- //config = new Config(this);
+ //Managers
+ itemManager = new ItemManager(this);
profileManager = new ProfileManager(this);
listenerManager = new ListenerManager(this);
commandManager = new CommandManager(this);
protocolManager = ProtocolLibrary.getProtocolManager();
+ protoManager = new gq.unurled.raxen.manager.ProtocolManager(this);
playerConfig = new PlayerConfig(this);
aureliumAPI = new AureliumAPI();
luckPerm = new LuckPerm(this);
luckPerm.register();
+ vault = new Vault(this);
+ //register Commands and Events
registerCommands();
registerEvents();
diff --git a/src/main/java/gq/unurled/raxen/commands/RaxenCommand.java b/src/main/java/gq/unurled/raxen/commands/RaxenCommand.java
index cb3b668..fdb2092 100644
--- a/src/main/java/gq/unurled/raxen/commands/RaxenCommand.java
+++ b/src/main/java/gq/unurled/raxen/commands/RaxenCommand.java
@@ -1,6 +1,7 @@
package gq.unurled.raxen.commands;
import gq.unurled.raxen.Raxen;
+import gq.unurled.raxen.manager.StorageManager;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.TextComponent;
import net.kyori.adventure.text.event.ClickEvent;
@@ -42,14 +43,57 @@ public class RaxenCommand implements TabExecutor {
case "MONGODB":
case "MONGO":
//print info about connection
+ msgPlayer(player, Raxen.getPrefix() + color("&6--------------------------------"),color("&cMONGO DB"));
+ msgPlayer(player, StorageManager.getMongo().getMongoClient().getClusterDescription().toString());
+ msgPlayer(player, StorageManager.getMongo().getMongoDatabase().getName());
+ msgPlayer(player, StorageManager.getMongo().getMongoCollection().getNamespace().toString());
case "v":
case "version":
case "ver":
- //print case 0?
+ msgPl(player, 0);
case "hemlp":
case "?":
case "h":
- //print plugin help
+ //print help
+ }
+ }
+ }
+ else {
+ switch (args.length) {
+ case 0:
+ sender.sendMessage(Raxen.getPrefix() + color("&6Printing About Raxen..."),
+ color("&6---------------------------------------------"),
+ color("&3 Raxen "),
+ color("&3 - Version: " + Raxen.getVersion()),
+ color("&3 - Author: &l&cU&6n&eu&2r&al&be&3d&r"));
+ TextComponent txt = Component.text(color("&3 - Website: https://unurled.gq"));
+ sender.sendMessage(txt);
+ case 1:
+ switch (args[0]) {
+ case "mongodb":
+ case "mongo":
+ case "MONGODB":
+ case "MONGO":
+ //print info about connection
+ sender.sendMessage( Raxen.getPrefix() + color("&6--------------------------------"),color("&cMONGO DB"));
+ sender.sendMessage( StorageManager.getMongo().getMongoClient().getClusterDescription().toString());
+ sender.sendMessage( StorageManager.getMongo().getMongoDatabase().getName());
+ sender.sendMessage( StorageManager.getMongo().getMongoCollection().getNamespace().toString());
+ case "v":
+ case "version":
+ case "ver":
+ sender.sendMessage(Raxen.getPrefix() + color("&6Printing About Raxen..."),
+ color("&6---------------------------------------------"),
+ color("&3 Raxen "),
+ color("&3 - Version: " + Raxen.getVersion()),
+ color("&3 - Author: &l&cU&6n&eu&2r&al&be&3d&r"));
+ txt = Component.text(color("&3 - Website: https://unurled.gq"));
+ sender.sendMessage(txt);
+ sender.sendMessage(color("&6---------------------------------------------"));
+ case "hemlp":
+ case "?":
+ case "h":
+ //print help
}
}
}
@@ -65,8 +109,8 @@ public class RaxenCommand implements TabExecutor {
color("&3 - Version: " + Raxen.getVersion()),
color("&3 - Author: &l&cU&6n&eu&2r&al&be&3d&r"),
color("&3 - Website: https://unurled.gq"));
- TextComponent txt = Component.text(color("&3 - Website: https://unurled.gq"));
- txt.clickEvent(ClickEvent.openUrl("https://unurled.gq"));
+ TextComponent txt = Component.text(color("&3 - Website: https://unurled.gq"))
+ .clickEvent(ClickEvent.openUrl("https://unurled.gq"));
player.sendMessage(txt);
msgPlayer(player, "", color("&6---------------------------------------------"));
}
diff --git a/src/main/java/gq/unurled/raxen/commands/admin/ItemListCommand.java b/src/main/java/gq/unurled/raxen/commands/admin/ItemListCommand.java
new file mode 100644
index 0000000..495485f
--- /dev/null
+++ b/src/main/java/gq/unurled/raxen/commands/admin/ItemListCommand.java
@@ -0,0 +1,49 @@
+package gq.unurled.raxen.commands.admin;
+
+import gq.unurled.raxen.Raxen;
+import gq.unurled.raxen.components.gui.ItemListGui;
+import lombok.Getter;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandSender;
+import org.bukkit.command.TabExecutor;
+import org.bukkit.entity.Player;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+
+import static gq.unurled.raxen.utils.Utils.*;
+
+public class ItemListCommand implements TabExecutor {
+
+ private Raxen main;
+
+ @Getter
+ private ItemListGui itemListGui;
+
+ public ItemListCommand(Raxen main) {
+ this.main = main;
+ this.itemListGui = new ItemListGui(this.main);
+ }
+
+ @Override
+ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command cmd, @NotNull String msg, @NotNull String[] args) {
+ if (!(sender instanceof Player)) {
+ log("Console can't execute this command atm.");
+ return true;
+ }
+ Player player = (Player) sender;
+ if(!(player.hasPermission("raxen.itemlist.cmd"))) {
+ msgPlayer(player, color("&cYou'dont have the permission to execute this command."));
+ return true;
+ }
+ //openGui logic
+ player.openInventory(itemListGui.getInv());
+ return false;
+ }
+
+ @Override
+ public @Nullable List onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, @NotNull String[] args) {
+ return null;
+ }
+}
diff --git a/src/main/java/gq/unurled/raxen/components/enchantments/EnchantmentWarpper.java b/src/main/java/gq/unurled/raxen/components/enchantments/EnchantmentWarpper.java
new file mode 100644
index 0000000..40fd3e7
--- /dev/null
+++ b/src/main/java/gq/unurled/raxen/components/enchantments/EnchantmentWarpper.java
@@ -0,0 +1,100 @@
+package gq.unurled.raxen.components.enchantments;
+
+import io.papermc.paper.enchantments.EnchantmentRarity;
+import net.kyori.adventure.text.Component;
+import org.bukkit.NamespacedKey;
+import org.bukkit.enchantments.Enchantment;
+import org.bukkit.enchantments.EnchantmentTarget;
+import org.bukkit.entity.EntityCategory;
+import org.bukkit.inventory.EquipmentSlot;
+import org.bukkit.inventory.ItemStack;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.Set;
+
+public class EnchantmentWarpper extends Enchantment {
+
+ private final String name;
+ private final int maxLevel;
+
+ public EnchantmentWarpper(String nameSpace, String name, int lvl) {
+ super(NamespacedKey.minecraft(nameSpace));
+ this.name = name;
+ this.maxLevel = lvl;
+ }
+
+ @Override
+ public @NotNull String getName() {
+ return name;
+ }
+
+ @Override
+ public int getMaxLevel() {
+ return maxLevel;
+ }
+
+ @Override
+ public int getStartLevel() {
+ return 0;
+ }
+
+ @Override
+ public @NotNull EnchantmentTarget getItemTarget() {
+ return null;
+ }
+
+ @Override
+ public boolean isTreasure() {
+ return false;
+ }
+
+ @Override
+ public boolean isCursed() {
+ return false;
+ }
+
+ @Override
+ public boolean conflictsWith(@NotNull Enchantment other) {
+ return false;
+ }
+
+ @Override
+ public boolean canEnchantItem(@NotNull ItemStack item) {
+ return false;
+ }
+
+ @Override
+ public @NotNull Component displayName(int level) {
+ return null;
+ }
+
+ @Override
+ public boolean isTradeable() {
+ return false;
+ }
+
+ @Override
+ public boolean isDiscoverable() {
+ return false;
+ }
+
+ @Override
+ public @NotNull EnchantmentRarity getRarity() {
+ return null;
+ }
+
+ @Override
+ public float getDamageIncrease(int level, @NotNull EntityCategory entityCategory) {
+ return 0;
+ }
+
+ @Override
+ public @NotNull Set getActiveSlots() {
+ return null;
+ }
+
+ @Override
+ public @NotNull String translationKey() {
+ return null;
+ }
+}
diff --git a/src/main/java/gq/unurled/raxen/components/enchantments/player/Telekinesis.java b/src/main/java/gq/unurled/raxen/components/enchantments/player/Telekinesis.java
new file mode 100644
index 0000000..df59161
--- /dev/null
+++ b/src/main/java/gq/unurled/raxen/components/enchantments/player/Telekinesis.java
@@ -0,0 +1,19 @@
+package gq.unurled.raxen.components.enchantments.player;
+
+import gq.unurled.raxen.components.enchantments.EnchantmentWarpper;
+import org.bukkit.GameMode;
+import org.bukkit.block.Block;
+import org.bukkit.block.Container;
+import org.bukkit.enchantments.Enchantment;
+import org.bukkit.entity.Player;
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.Listener;
+import org.bukkit.event.block.BlockBreakEvent;
+import org.bukkit.inventory.ItemStack;
+
+import java.util.Collection;
+
+public class Telekinesis implements Listener {
+
+ public static final Enchantment TELEKINESIS = new EnchantmentWarpper("telekinesis", "telekinesis", 1);
+}
diff --git a/src/main/java/gq/unurled/raxen/components/gui/ItemListGui.java b/src/main/java/gq/unurled/raxen/components/gui/ItemListGui.java
new file mode 100644
index 0000000..b41aaa9
--- /dev/null
+++ b/src/main/java/gq/unurled/raxen/components/gui/ItemListGui.java
@@ -0,0 +1,218 @@
+package gq.unurled.raxen.components.gui;
+
+import gq.unurled.raxen.Raxen;
+import gq.unurled.raxen.manager.ItemManager;
+import lombok.Getter;
+import net.kyori.adventure.text.Component;
+import org.bukkit.Bukkit;
+import org.bukkit.Material;
+import org.bukkit.entity.Item;
+import org.bukkit.entity.Player;
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.Listener;
+import org.bukkit.event.inventory.InventoryClickEvent;
+import org.bukkit.inventory.Inventory;
+import org.bukkit.inventory.ItemStack;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import static gq.unurled.raxen.utils.Utils.*;
+
+public class ItemListGui implements Listener {
+
+ private Raxen main;
+ @Getter
+ private Inventory inv = Bukkit.createInventory(null, 54, Component.text("Item List"));
+ private Inventory inv2 = Bukkit.createInventory(null, 54, Component.text("Item List"));
+ private Inventory inv3 = Bukkit.createInventory(null, 54, Component.text("Item List"));
+ private Inventory inv4 = Bukkit.createInventory(null, 54, Component.text("Item List"));
+ private Inventory inv5 = Bukkit.createInventory(null, 54, Component.text("Item List"));
+ private Inventory inv6 = Bukkit.createInventory(null, 54, Component.text("Item List"));
+ private Inventory inv7 = Bukkit.createInventory(null, 54, Component.text("Item List"));
+ private Inventory inv8 = Bukkit.createInventory(null, 54, Component.text("Item List"));
+ private Inventory inv9 = Bukkit.createInventory(null, 54, Component.text("Item List"));
+
+ private List itlist;
+
+ public ItemListGui(Raxen main) {
+ this.main = main;
+ this.itlist = this.main.getItemManager().getList();
+ }
+
+ private ItemStack PREVIOUS = createItem(Material.ARROW, 1,true, false, "Previous page");
+ private ItemStack NEXT = createItem(Material.ARROW, 1,true, false, "Next page");
+ private ItemStack PAGE = createItem(Material.PAPER, 1,true, false, "Page");
+ private ItemStack CLOSE = closeItem();
+ private ItemStack GREY_PANE = greyPane();
+
+ public Inventory getInv() {
+ Integer page = 1;
+ Integer item = -1;
+ for (ItemStack it : itlist) {
+ item++;
+ if(item > 44 && item < 91) {
+ inv2.addItem(it);
+ inv2.setItem(48, PREVIOUS);
+ inv2.setItem(49, editItem(PAGE, "page" + page,1, new ArrayList()));
+ inv2.setItem(53, CLOSE);
+ inv2 = fillGreyPane(inv2);
+ }
+ if (item > 90 && item < 136) {
+ inv3.setItem(48, PREVIOUS);
+ inv3.setItem(49, editItem(PAGE, "page" + page,1, new ArrayList()));
+ inv3.setItem(53, CLOSE);
+ inv3 = fillGreyPane(inv3);
+ }
+ if (item > 135 && item < 181) {
+ inv4.addItem(it);
+ inv4.setItem(48, PREVIOUS);
+ inv4.setItem(49, editItem(PAGE, "page" + page,1, new ArrayList()));
+ inv4.setItem(53, CLOSE);
+ inv4 = fillGreyPane(inv4);
+ }
+ if (item > 180 && item < 226) {
+ inv5.addItem(it);
+ inv5.setItem(48, PREVIOUS);
+ inv5.setItem(49, editItem(PAGE, "page" + page,1, new ArrayList()));
+ inv5.setItem(53, CLOSE);
+ inv5 = fillGreyPane(inv5);
+ }
+ if (item > 225 && item < 271) {
+ inv6.addItem(it);
+ inv6.setItem(48, PREVIOUS);
+ inv6.setItem(49, editItem(PAGE, "page" + page,1, new ArrayList()));
+ inv6.setItem(53, CLOSE);
+ inv6 = fillGreyPane(inv6);
+ }
+ if (item > 270 && item < 316) {
+ inv7.addItem(it);
+ inv7.setItem(48, PREVIOUS);
+ inv7.setItem(49, editItem(PAGE, "page" + page,1, new ArrayList()));
+ inv7.setItem(53, CLOSE);
+ inv7 = fillGreyPane(inv7);
+ }
+ if (item > 315 && item < 361) {
+ inv8.addItem(it);
+ inv8.setItem(48, PREVIOUS);
+ inv8.setItem(49, editItem(PAGE, "page" + page,1, new ArrayList()));
+ inv8.setItem(53, CLOSE);
+ inv8 = fillGreyPane(inv8);
+ }
+ if (item > 360 && item < 406) {
+ inv9.addItem(it);
+ inv9.setItem(48, PREVIOUS);
+ inv9.setItem(49, editItem(PAGE, "page" + page,1, new ArrayList()));
+ inv9.setItem(53, CLOSE);
+ inv9 = fillGreyPane(inv9);
+ }
+ if (item > 405) {
+ log("Too many item to render.");
+ }
+ else {
+ inv.addItem(it);
+ inv.setItem(49, PAGE);
+ inv.setItem(50, NEXT);
+ }
+ if (item > 44) {
+ inv.setItem(50, NEXT);
+ if (item > 90) {
+ inv2.setItem(50, NEXT);
+ if (item > 135) {
+ inv3.setItem(50, NEXT);
+ if (item > 180) {
+ inv4.setItem(50, NEXT);
+ if (item > 225) {
+ inv5.setItem(50, NEXT);
+ if (item > 270) {
+ inv6.setItem(50, NEXT);
+ if (item > 315) {
+ inv7.setItem(50, NEXT);
+ if (item > 360) {
+ inv8.setItem(50, NEXT);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ page++;
+ inv = fillGreyPane(inv);
+ }
+ return inv;
+ }
+
+ @EventHandler
+ public void clickInventory(InventoryClickEvent e) {
+ Player player = (Player) e.getWhoClicked();
+ Inventory einv = e.getClickedInventory();
+ if (einv == inv || einv == inv2 || einv == inv3 ||
+ einv == inv4 || einv == inv5 || einv == inv6 ||
+ einv == inv7 || einv == inv8 || einv == inv9) {
+ if(e.getCurrentItem() != null && e.getCurrentItem().getType() != Material.AIR) {
+ Integer slot = e.getSlot();
+ ItemStack clicked;
+ if (slot ==48) {
+ //previous
+ if (e.getCurrentItem() != GREY_PANE) {
+ ItemStack pagee = einv.getItem(49);
+ Integer page = Integer.parseInt(pagee.displayName().toString().replace("page", ""));
+ switch(page) {
+ case 2:
+ player.openInventory(inv);
+ case 3:
+ player.openInventory(inv2);
+ case 4:
+ player.openInventory(inv3);
+ case 5:
+ player.openInventory(inv4);
+ case 6:
+ player.openInventory(inv5);
+ case 7:
+ player.openInventory(inv6);
+ case 8:
+ player.openInventory(inv7);
+ case 9:
+ player.openInventory(inv8);
+ }
+ }
+ } else if (slot == 49) {
+ //page
+ return;
+ } else if (slot == 50) {
+ //next
+ ItemStack pagee = einv.getItem(49);
+ Integer page = Integer.parseInt(pagee.displayName().toString().replace("page", ""));
+ switch(page) {
+ case 1:
+ player.openInventory(inv2);
+ case 2:
+ player.openInventory(inv3);
+ case 3:
+ player.openInventory(inv4);
+ case 4:
+ player.openInventory(inv5);
+ case 5:
+ player.openInventory(inv6);
+ case 6:
+ player.openInventory(inv7);
+ case 7:
+ player.openInventory(inv8);
+ case 8:
+ player.openInventory(inv9);
+ }
+ } else if (slot == 53) {
+ //close
+ player.closeInventory();
+ } else {
+ //if (player.getInventory().firstEmpty() == -1) {
+ //add to stash
+ //}
+ player.getInventory().addItem(e.getCurrentItem());
+ }
+ }
+ }
+ }
+}
diff --git a/src/main/java/gq/unurled/raxen/components/items/CustomModelData.java b/src/main/java/gq/unurled/raxen/components/items/CustomModelData.java
new file mode 100644
index 0000000..e3b6224
--- /dev/null
+++ b/src/main/java/gq/unurled/raxen/components/items/CustomModelData.java
@@ -0,0 +1,4 @@
+package gq.unurled.raxen.components.items;
+
+public class CustomModelData {
+}
diff --git a/src/main/java/gq/unurled/raxen/components/player/Scoreboard.java b/src/main/java/gq/unurled/raxen/components/player/Scoreboard.java
new file mode 100644
index 0000000..5f0ac4a
--- /dev/null
+++ b/src/main/java/gq/unurled/raxen/components/player/Scoreboard.java
@@ -0,0 +1,59 @@
+package gq.unurled.raxen.components.player;
+
+import gq.unurled.raxen.Raxen;
+import gq.unurled.raxen.utils.Vault;
+import net.kyori.adventure.text.Component;
+import org.bukkit.Bukkit;
+import org.bukkit.entity.Player;
+import org.bukkit.scoreboard.DisplaySlot;
+import org.bukkit.scoreboard.Objective;
+import org.bukkit.scoreboard.Score;
+import org.bukkit.scoreboard.ScoreboardManager;
+
+import static gq.unurled.raxen.utils.Utils.color;
+import static gq.unurled.raxen.utils.Utils.log;
+
+public class Scoreboard {
+
+ private Raxen main;
+ private Vault vault;
+
+ public Scoreboard(Raxen main) {
+ this.main = main;
+ this.vault = main.getVault();
+ }
+
+ public void createScorebord(Player player) {
+ ScoreboardManager manager = Bukkit.getScoreboardManager();
+ org.bukkit.scoreboard.Scoreboard board = manager.getNewScoreboard();
+ Objective obj = board.registerNewObjective("Raxen","dummy", Component.text(color("&cElixium")));
+ obj.setDisplaySlot(DisplaySlot.SIDEBAR);
+ Score score = obj.getScore(color("&6-------------"));
+ score.setScore(4);
+ Score score1 = obj.getScore(color("&bName:" + player.getName()));
+ score1.setScore(3);
+ Score score2 = obj.getScore(color("&fLocation"));
+ score2.setScore(2);
+ Score score3 = obj.getScore(color("&6Coins: &6" + vault.getBalanceString(player)));
+ score3.setScore(1);
+ Score score4 = obj.getScore(color("&eunurled.gq"));
+ score4.setScore(0);
+ player.setScoreboard(board);
+ }
+
+ public void updateScoreboardTransaction(Player player) {
+ if(player != null) {
+ Objective objective = player.getScoreboard().getObjective(DisplaySlot.SIDEBAR);
+ player.getScoreboard().getObjective(DisplaySlot.SIDEBAR);
+ log(String.valueOf(player.getScoreboard().getEntries()));
+ for (String str : player.getScoreboard().getEntries()) {
+ if(str.contains(player.getName())) {
+
+ }
+ }
+ player.getScoreboard().resetScores("Coins");
+ Score score = objective.getScore(color("&6Coins: &6" + vault.getBalanceString(player)));
+ score.setScore(1);
+ }
+ }
+}
diff --git a/src/main/java/gq/unurled/raxen/config/PlayerConfig.java b/src/main/java/gq/unurled/raxen/config/PlayerConfig.java
index 03c1672..c50a6a3 100644
--- a/src/main/java/gq/unurled/raxen/config/PlayerConfig.java
+++ b/src/main/java/gq/unurled/raxen/config/PlayerConfig.java
@@ -178,10 +178,10 @@ public class PlayerConfig {
Object storage = sto.getConfig().get("storage");
- if ("MONGODB".equals(storage)) {
+ if (storage == "MONGODB") {
saveUsingMongoDB(player, skills, invstr, reverse);
saveUsingMongoDB(player, skills, invstr, reverse);
- } else if ("MYSQL".equals(storage) || "YML".equals(storage)) {
+ } else if (storage == "MYSQL" || storage == "YML") {
saveUsingYml(player, skills, invstr, reverse);
}
diff --git a/src/main/java/gq/unurled/raxen/listener/player/EnchantmentManager.java b/src/main/java/gq/unurled/raxen/listener/player/EnchantmentManager.java
new file mode 100644
index 0000000..2c52dd0
--- /dev/null
+++ b/src/main/java/gq/unurled/raxen/listener/player/EnchantmentManager.java
@@ -0,0 +1,20 @@
+package gq.unurled.raxen.listener.player;
+
+import org.bukkit.enchantments.Enchantment;
+
+import java.lang.reflect.Field;
+
+public class EnchantmentManager {
+ public static void registerEnchantment(Enchantment enchantment) {
+ boolean registered = true;
+ try {
+ Field f = Enchantment.class.getDeclaredField("acceptingNew");
+ f.setAccessible(true);
+ f.set(null, true);
+ Enchantment.registerEnchantment(enchantment);
+ } catch (Exception e) {
+ registered = false;
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/src/main/java/gq/unurled/raxen/listener/player/JoinEvent.java b/src/main/java/gq/unurled/raxen/listener/player/JoinEvent.java
index bb7a1c3..990548b 100644
--- a/src/main/java/gq/unurled/raxen/listener/player/JoinEvent.java
+++ b/src/main/java/gq/unurled/raxen/listener/player/JoinEvent.java
@@ -1,6 +1,7 @@
package gq.unurled.raxen.listener.player;
import gq.unurled.raxen.Raxen;
+import gq.unurled.raxen.components.player.Scoreboard;
import gq.unurled.raxen.config.PlayerConfig;
import gq.unurled.raxen.manager.ProfileManager;
import org.bukkit.entity.Player;
@@ -13,17 +14,20 @@ public class JoinEvent implements Listener {
private Raxen main;
private ProfileManager profileManager;
private PlayerConfig playerConfig;
+ private Scoreboard scoreboard;
public JoinEvent(Raxen main) {
this.main = main;
this.profileManager = main.getProfileManager();
this.playerConfig = main.getPlayerConfig();
+ this.scoreboard = new Scoreboard(main);
}
@EventHandler
public void PlayerJoinEvent(PlayerJoinEvent e) {
Player player = e.getPlayer();
playerConfig.loadPlayerConfig(player);
+ scoreboard.createScorebord(player);
}
}
diff --git a/src/main/java/gq/unurled/raxen/listener/player/TransactionEvent.java b/src/main/java/gq/unurled/raxen/listener/player/TransactionEvent.java
new file mode 100644
index 0000000..b3fc0f2
--- /dev/null
+++ b/src/main/java/gq/unurled/raxen/listener/player/TransactionEvent.java
@@ -0,0 +1,30 @@
+package gq.unurled.raxen.listener.player;
+
+import gq.unurled.raxen.Raxen;
+import gq.unurled.raxen.components.player.Scoreboard;
+import gq.unurled.raxen.utils.Vault;
+import org.bukkit.Bukkit;
+import org.bukkit.entity.Player;
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.Listener;
+
+public class TransactionEvent implements Listener {
+
+ private Raxen main;
+ private Scoreboard scoreboard;
+ private Vault vault;
+
+ public TransactionEvent(Raxen main) {
+ this.main = main;
+ this.scoreboard = new Scoreboard(main);
+ this.vault = main.getVault();
+ }
+
+ @EventHandler
+ public void transaction(net.essentialsx.api.v2.events.TransactionEvent e) {
+ Player player = Bukkit.getPlayer(e.getTarget().getName());
+ Player source = e.getRequester().getPlayer();
+ scoreboard.updateScoreboardTransaction(player);
+ scoreboard.updateScoreboardTransaction(source);
+ }
+}
diff --git a/src/main/java/gq/unurled/raxen/manager/CommandManager.java b/src/main/java/gq/unurled/raxen/manager/CommandManager.java
index 6a0d832..35391e8 100644
--- a/src/main/java/gq/unurled/raxen/manager/CommandManager.java
+++ b/src/main/java/gq/unurled/raxen/manager/CommandManager.java
@@ -2,46 +2,54 @@ package gq.unurled.raxen.manager;
import gq.unurled.raxen.Raxen;
import gq.unurled.raxen.commands.RaxenCommand;
+import gq.unurled.raxen.commands.admin.ItemListCommand;
import gq.unurled.raxen.commands.admin.NbtCommand;
import gq.unurled.raxen.commands.admin.ReloadCommand;
import gq.unurled.raxen.commands.admin.TestGuiCommand;
import gq.unurled.raxen.commands.player.SkillsCommand;
import gq.unurled.raxen.commands.player.StorageCommand;
+import lombok.Getter;
public class CommandManager {
private Raxen main;
+ @Getter
+ private ItemListCommand itemListCommand;
+ private ReloadCommand reloadComand = new ReloadCommand();
+ private NbtCommand nbtCommand = new NbtCommand(main);
+ private TestGuiCommand testGuiCommand = new TestGuiCommand();
+ private StorageCommand storageCommand = new StorageCommand();
+ private SkillsCommand skillsCommand = new SkillsCommand(main);
+ private RaxenCommand raxenCommand = new RaxenCommand(main);
public CommandManager(Raxen main) {
this.main = main;
+ this.itemListCommand = new ItemListCommand(this.main);
}
public void register() {
- ReloadCommand reloadComand = new ReloadCommand();
main.getCommand("reloadplugin").setExecutor(reloadComand);
main.getCommand("reloadplugin").setTabCompleter(reloadComand);
- NbtCommand nbtCommand = new NbtCommand(main);
main.getCommand("nbt").setExecutor(nbtCommand);
main.getCommand("nbt").setTabCompleter(nbtCommand);
- TestGuiCommand testGuiCommand = new TestGuiCommand();
main.getCommand("testgui").setExecutor(testGuiCommand);
main.getCommand("testgui").setTabCompleter(testGuiCommand);
- StorageCommand storageCommand = new StorageCommand();
main.getCommand("storage").setExecutor(storageCommand);
main.getCommand("storage").setTabCompleter(storageCommand);
- SkillsCommand skillsCommand = new SkillsCommand(main);
main.getCommand("skills").setTabCompleter(skillsCommand);
main.getCommand("skills").setExecutor(skillsCommand);
- RaxenCommand raxenCommand = new RaxenCommand(main);
main.getCommand("raxen").setTabCompleter(raxenCommand);
main.getCommand("raxen").setExecutor(raxenCommand);
+
+ main.getCommand("itemlist").setExecutor(itemListCommand);
+ main.getCommand("itemlist").setTabCompleter(itemListCommand);
}
}
diff --git a/src/main/java/gq/unurled/raxen/manager/ItemManager.java b/src/main/java/gq/unurled/raxen/manager/ItemManager.java
new file mode 100644
index 0000000..12ec741
--- /dev/null
+++ b/src/main/java/gq/unurled/raxen/manager/ItemManager.java
@@ -0,0 +1,132 @@
+package gq.unurled.raxen.manager;
+
+import de.tr7zw.changeme.nbtapi.NBTItem;
+import gq.unurled.raxen.Raxen;
+import lombok.Getter;
+import net.kyori.adventure.text.Component;
+import org.bukkit.Material;
+import org.bukkit.configuration.InvalidConfigurationException;
+import org.bukkit.configuration.file.FileConfiguration;
+import org.bukkit.configuration.file.YamlConfiguration;
+import org.bukkit.inventory.ItemStack;
+import org.bukkit.inventory.meta.ItemMeta;
+
+import java.awt.*;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+
+import static gq.unurled.raxen.utils.Utils.*;
+
+public class ItemManager {
+
+ private final Raxen main;
+ @Getter
+ private List list = new ArrayList<>();
+
+ 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("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("&csuper 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", "&cName 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();
+ }
+ }
+ }
+
+ private void register() {
+ File folder = new File(main.getDataFolder() + "/Items/");
+ File[] listFile = folder.listFiles();
+
+
+ for (int i = 0; i < listFile.length; i++) {
+ if (listFile[i].isFile()) {
+ FileConfiguration customItem = new YamlConfiguration();
+ try {
+ customItem.load(listFile[i]);
+ } catch (IOException | InvalidConfigurationException e) {
+ e.printStackTrace();
+ }
+ registerItem(customItem);
+ } else if (listFile[i].isDirectory()) {
+ for (int a = 0; a < listFile[i].listFiles().length; a++) {
+ if(listFile[i].listFiles()[a].isFile()) {
+ FileConfiguration customItem = new YamlConfiguration();
+ try {
+ customItem.load(listFile[i].listFiles()[a]);
+ } catch (IOException | InvalidConfigurationException e) {
+ e.printStackTrace();
+ }
+ registerItem(customItem);
+ } else if (listFile[i].listFiles()[a].isDirectory()) {
+ error("Cann't use more than 2 folder to get Items.yml");
+ }
+
+ }
+ }
+ }
+ }
+
+ private void registerItem(FileConfiguration file) {
+ log((String) file.get("id"));
+ ItemStack it = new ItemStack(Material.getMaterial((String) file.get("id")));
+ ItemMeta itm = it.getItemMeta();
+ itm.displayName(Component.text(color((String) file.get("name"))));
+ List lore = new ArrayList<>();
+ for (String str : (List) Objects.requireNonNull(file.get("lore"))) {
+ lore.add(Component.text(color(str)));
+ }
+ itm.lore(lore);
+ itm.setCustomModelData(file.getInt("custom_model_data"));
+ it.setItemMeta(itm);
+ NBTItem nbti = new NBTItem(it);
+ nbti.setInteger("SPEED", file.getInt("speed"));
+ nbti.setInteger("HEALTH", file.getInt("health"));
+ nbti.setInteger("DEFENSE", file.getInt("defense"));
+ nbti.setInteger("STRENGTH", file.getInt("strength"));
+ nbti.setString("ID", file.getString("customId"));
+ nbti.setString("CUSTOM_ABILITY", file.getString("custom_ability"));
+ it = nbti.getItem();
+ list.add(it);
+ }
+}
diff --git a/src/main/java/gq/unurled/raxen/manager/ListenerManager.java b/src/main/java/gq/unurled/raxen/manager/ListenerManager.java
index b6c4199..334f942 100644
--- a/src/main/java/gq/unurled/raxen/manager/ListenerManager.java
+++ b/src/main/java/gq/unurled/raxen/manager/ListenerManager.java
@@ -23,5 +23,7 @@ public class ListenerManager {
this.pm.registerEvents(new ItemHandEvent(main), main);
this.pm.registerEvents(new AureliumSkills(main), main);
this.pm.registerEvents(new Reload(), main);
+ this.pm.registerEvents(new TransactionEvent(main), main);
+ this.pm.registerEvents(main.getCommandManager().getItemListCommand().getItemListGui(), main);
}
}
diff --git a/src/main/java/gq/unurled/raxen/manager/ProtocolManager.java b/src/main/java/gq/unurled/raxen/manager/ProtocolManager.java
new file mode 100644
index 0000000..739a65e
--- /dev/null
+++ b/src/main/java/gq/unurled/raxen/manager/ProtocolManager.java
@@ -0,0 +1,27 @@
+package gq.unurled.raxen.manager;
+
+import com.comphenix.protocol.PacketType;
+import com.comphenix.protocol.events.*;
+import gq.unurled.raxen.Raxen;
+import org.bukkit.entity.Player;
+
+public class ProtocolManager {
+ private final Raxen main;
+ private com.comphenix.protocol.ProtocolManager manager;
+
+ public ProtocolManager(Raxen main) {
+ this.main = main;
+ this.manager = main.getProtocolManager();
+ }
+
+ public void listen() {
+ manager.addPacketListener(new PacketAdapter(main, ListenerPriority.NORMAL, PacketType.Play.Client.BLOCK_DIG) {
+ @Override
+ public void onPacketReceiving(PacketEvent event) {
+ Player player = event.getPlayer();
+ PacketContainer packet = event.getPacket();
+ //if(player.)
+ }
+ });
+ }
+}
diff --git a/src/main/java/gq/unurled/raxen/manager/StorageManager.java b/src/main/java/gq/unurled/raxen/manager/StorageManager.java
index 40af61f..11b385f 100644
--- a/src/main/java/gq/unurled/raxen/manager/StorageManager.java
+++ b/src/main/java/gq/unurled/raxen/manager/StorageManager.java
@@ -57,7 +57,6 @@ public class StorageManager {
public static FileConfiguration createYml(Player player) {
File customFile;
FileConfiguration customConfig;
- log(main.getDataFolder() + "/playerInfo/" + player.getUniqueId() + "/playerInfo.yml");
customFile = new File(main.getDataFolder() + "/playerInfo/" + player.getUniqueId(), "/playerInfo.yml");
if (!customFile.exists()) {
diff --git a/src/main/java/gq/unurled/raxen/utils/Utils.java b/src/main/java/gq/unurled/raxen/utils/Utils.java
index e0adb24..ef93774 100644
--- a/src/main/java/gq/unurled/raxen/utils/Utils.java
+++ b/src/main/java/gq/unurled/raxen/utils/Utils.java
@@ -9,6 +9,7 @@ import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;
+import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemFlag;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
@@ -18,7 +19,7 @@ import java.util.logging.Logger;
public class Utils {
- private static Logger logger = Raxen.getPluginLogger();
+ private static final Logger logger = Raxen.getPluginLogger();
public static String color(String string) {
return ChatColor.translateAlternateColorCodes('&', string);
@@ -76,17 +77,39 @@ public class Utils {
return item;
}
- public static ItemStack editItem(ItemStack item, int amount, List lore) {
+ public static ItemStack editItem(ItemStack item, String name,int amount, List lore) {
if(amount == 0) {
amount = 1;
}
item.setAmount(amount);
ItemMeta itemMeta = item.getItemMeta();
+ if (name != null) {
+ itemMeta.displayName(Component.text(name));
+ }
itemMeta.lore(lore);
item.setItemMeta(itemMeta);
return item;
}
+ public static ItemStack closeItem () {
+ return createItem(Material.BARRIER, 1, false, false, color("&cCLOSE"));
+ }
+
+ public static ItemStack greyPane() {
+ return createItem(Material.GRAY_STAINED_GLASS_PANE, 1, false, true, "");
+ }
+
+ public static Inventory fillGreyPane(Inventory inv) {
+ Integer in = -1;
+ for (ItemStack it : inv) {
+ in++;
+ if (it == null || it.getType() == Material.AIR) {
+ inv.setItem(in, greyPane());
+ }
+ }
+ return inv;
+ }
+
public static Component noPerms() {
return Component.text(color("&cYou don't have the permission to use this feature."));
}
diff --git a/src/main/java/gq/unurled/raxen/utils/Vault.java b/src/main/java/gq/unurled/raxen/utils/Vault.java
new file mode 100644
index 0000000..90a93fc
--- /dev/null
+++ b/src/main/java/gq/unurled/raxen/utils/Vault.java
@@ -0,0 +1,47 @@
+package gq.unurled.raxen.utils;
+
+import gq.unurled.raxen.Raxen;
+import lombok.Getter;
+import net.milkbowl.vault.economy.Economy;
+import org.bukkit.entity.Player;
+import org.bukkit.plugin.RegisteredServiceProvider;
+
+import java.text.DecimalFormat;
+
+import static gq.unurled.raxen.utils.Utils.error;
+
+public class Vault {
+ @Getter
+ private Economy econ = null;
+ //econ.depositPlayer(player,amount)
+ //econ.withdrawPlayer(player,amount)
+ //econ.getBalance(player);
+
+
+ private static Raxen main;
+
+ public Vault(Raxen main) {
+ this.main = main;
+ setupEconomy();
+ }
+
+ private void setupEconomy() {
+ if (main.getServer().getPluginManager().getPlugin("Vault") == null) {
+ error("Need to install plugin Vault. (https://github.com/milkbowl/Vault)");
+ return;
+ }
+ RegisteredServiceProvider rsp = main.getServer().getServicesManager().getRegistration(Economy.class);
+ if (rsp == null) {
+ error("Some bug happend in the initialisation of Vault and Raxen.");
+ return;
+ }
+ econ = rsp.getProvider();
+ return;
+ }
+
+ public String getBalanceString(Player player) {
+ double bal = econ.getBalance(player);
+ DecimalFormat format = new DecimalFormat("#,###.00");
+ return format.format(bal);
+ }
+}
diff --git a/src/main/resources/example_item.yml b/src/main/resources/example_item.yml
new file mode 100644
index 0000000..4e83525
--- /dev/null
+++ b/src/main/resources/example_item.yml
@@ -0,0 +1,13 @@
+id: "RED_WOOL"
+customId: "BEST_NEW_ITEM"
+name: "best Item name ever"
+health: 100
+defense: 50
+speed: 100
+strength: 100
+custom_ability: "fireball"
+isGlowing: true
+isUnbreakable: true
+custom_model_data: 123
+lore:
+ - '&cSuper lore'
\ No newline at end of file
diff --git a/src/main/resources/players.yml b/src/main/resources/players.yml
deleted file mode 100644
index e69de29..0000000
diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml
index 26be3b5..ec4de7b 100644
--- a/src/main/resources/plugin.yml
+++ b/src/main/resources/plugin.yml
@@ -1,7 +1,7 @@
name: Raxen
version: '${project.version}'
main: gq.unurled.raxen.Raxen
-api-version: 1.17
+api-version: 1.18
depend: [ProtocolLib]
softdepend: [AureliumSkills, LuckPerms]
@@ -23,6 +23,10 @@ commands:
description: nbt command
raxen:
description: raxen main command
+ itemlist:
+ aliases: itl
+ description: Open ItemList menu
+ usage: /itemlist
permissions:
raxen.reload.cmd:
@@ -31,6 +35,7 @@ permissions:
description: testgui command permission
raxen.nbt.cmd:
description: nbt command permission
- permission:
- raxen.raxen.cmd:
- description: raxen command permssion
\ No newline at end of file
+ raxen.raxen.cmd:
+ description: raxen command permssion
+ raxen.itemlist.cmd:
+ description: itemlist command permission
\ No newline at end of file