diff --git a/FUTURE.md b/FUTURE.md
index d8cf2a4..090a0f0 100644
--- a/FUTURE.md
+++ b/FUTURE.md
@@ -6,7 +6,7 @@ Some RPG thing :
- 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
+ - need custom mobs => some are made => not definitive need more => juste made the damage system and persistentdatacontainer on entities outside of Player, might consider to switch to persistentdatacontainer on player instead of having an hashmap (ProfileManager.java)
+ - need custom items => partialy made => need custom resource pack support
+ - can use custom texture pack => in making
- protection and logging feature => coreprotect
\ No newline at end of file
diff --git a/README.md b/README.md
index a7958ec..b35e7b3 100644
--- a/README.md
+++ b/README.md
@@ -11,3 +11,6 @@ to use custom texture for items, modify the custom data model => [Example](https
for more info contact me.
@unurled#0149
+
+
+custom Items uses custom model data to work => need to update in model/item/item.json [Example](https://github.com/elBukkit/MagicPlugin/wiki/ResourcePack#customizing)
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 0f0f674..a3f269a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
gq.unurled
raxen
- 0.0.3
+ 0.0.4
jar
Raxen
@@ -66,6 +66,10 @@
+
+ jitpack.io
+ https://jitpack.io
+
papermc-repo
https://papermc.io/repo/repository/maven-public/
@@ -74,10 +78,6 @@
sonatype
https://oss.sonatype.org/content/groups/public/
-
- jitpack.io
- https://jitpack.io
-
codemc-repo
https://repo.codemc.org/repository/maven-public/
@@ -132,12 +132,14 @@
2.9.0-SNAPSHOT
compile
+
com.comphenix.protocol
ProtocolLib
@@ -153,18 +155,6 @@
${project.basedir}/api/oraxen-1.117.0.jar
-->
-
- com.github.lokka30
- LevelledMobs
- 3.2.3
- provided
-
-
- com.github.Archy-X
- AureliumSkills
- Beta1.2.5
- provided
-
net.luckperms
api
diff --git a/src/main/java/gq/unurled/raxen/Raxen.java b/src/main/java/gq/unurled/raxen/Raxen.java
index 8a1c296..a36553b 100644
--- a/src/main/java/gq/unurled/raxen/Raxen.java
+++ b/src/main/java/gq/unurled/raxen/Raxen.java
@@ -1,13 +1,11 @@
package gq.unurled.raxen;
-import com.archyx.aureliumskills.api.AureliumAPI;
import com.comphenix.protocol.ProtocolLibrary;
import com.comphenix.protocol.ProtocolManager;
import gq.unurled.raxen.config.Config;
import gq.unurled.raxen.config.PlayerConfig;
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;
@@ -22,7 +20,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.3";
+ private static final String version = "0.0.4";
private final PluginManager pm = getServer().getPluginManager();
@Getter
@@ -45,12 +43,12 @@ public final class Raxen extends JavaPlugin {
private gq.unurled.raxen.manager.ProtocolManager protoManager;
@Getter
private ItemManager itemManager;
+ @Getter
+ private ResourcePackManager resourcePackManager;
@Getter
private ProtocolManager protocolManager;
@Getter
- public AureliumAPI aureliumAPI;
- @Getter
public LuckPerm luckPerm;
@Getter
public Vault vault;
@@ -71,9 +69,9 @@ public final class Raxen extends JavaPlugin {
commandManager = new CommandManager(this);
protocolManager = ProtocolLibrary.getProtocolManager();
protoManager = new gq.unurled.raxen.manager.ProtocolManager(this);
+ resourcePackManager = new ResourcePackManager(this);
playerConfig = new PlayerConfig(this);
- aureliumAPI = new AureliumAPI();
luckPerm = new LuckPerm(this);
luckPerm.register();
vault = new Vault(this);
diff --git a/src/main/java/gq/unurled/raxen/commands/RaxenCommand.java b/src/main/java/gq/unurled/raxen/commands/RaxenCommand.java
index fdb2092..cc9b839 100644
--- a/src/main/java/gq/unurled/raxen/commands/RaxenCommand.java
+++ b/src/main/java/gq/unurled/raxen/commands/RaxenCommand.java
@@ -9,7 +9,6 @@ import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabExecutor;
import org.bukkit.entity.Player;
-import org.bukkit.event.EventHandler;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
diff --git a/src/main/java/gq/unurled/raxen/commands/admin/NbtCommand.java b/src/main/java/gq/unurled/raxen/commands/admin/NbtCommand.java
index 2182f94..0a8fdee 100644
--- a/src/main/java/gq/unurled/raxen/commands/admin/NbtCommand.java
+++ b/src/main/java/gq/unurled/raxen/commands/admin/NbtCommand.java
@@ -18,6 +18,7 @@ import org.jetbrains.annotations.Nullable;
import java.util.ArrayList;
import java.util.List;
+import static gq.unurled.raxen.utils.Items.attributes;
import static gq.unurled.raxen.utils.Skills.updateSkills;
import static gq.unurled.raxen.utils.Utils.*;
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
index df59161..f8dcf78 100644
--- a/src/main/java/gq/unurled/raxen/components/enchantments/player/Telekinesis.java
+++ b/src/main/java/gq/unurled/raxen/components/enchantments/player/Telekinesis.java
@@ -1,17 +1,8 @@
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 {
diff --git a/src/main/java/gq/unurled/raxen/components/entity/EntityNamespacedKey.java b/src/main/java/gq/unurled/raxen/components/entity/EntityNamespacedKey.java
new file mode 100644
index 0000000..9971ed5
--- /dev/null
+++ b/src/main/java/gq/unurled/raxen/components/entity/EntityNamespacedKey.java
@@ -0,0 +1,20 @@
+package gq.unurled.raxen.components.entity;
+
+import gq.unurled.raxen.Raxen;
+import org.bukkit.NamespacedKey;
+
+public class EntityNamespacedKey {
+ public EntityNamespacedKey(Raxen main) {
+ levelKey = new NamespacedKey(main, "level");
+ strengthKey = new NamespacedKey(main, "strength");
+ healthKey = new NamespacedKey(main, "health");
+ speedKey = new NamespacedKey(main, "speed");
+ defenseKey = new NamespacedKey(main, "defense");
+ }
+
+ public final NamespacedKey levelKey;
+ public final NamespacedKey healthKey;
+ public final NamespacedKey speedKey;
+ public final NamespacedKey defenseKey;
+ public final NamespacedKey strengthKey;
+}
diff --git a/src/main/java/gq/unurled/raxen/components/entity/RaxenEntity.java b/src/main/java/gq/unurled/raxen/components/entity/RaxenEntity.java
new file mode 100644
index 0000000..0f47a52
--- /dev/null
+++ b/src/main/java/gq/unurled/raxen/components/entity/RaxenEntity.java
@@ -0,0 +1,41 @@
+package gq.unurled.raxen.components.entity;
+
+import gq.unurled.raxen.Raxen;
+import org.bukkit.Location;
+import org.bukkit.NamespacedKey;
+import org.bukkit.entity.Entity;
+import org.bukkit.entity.EntityType;
+import org.bukkit.persistence.PersistentDataContainer;
+import org.bukkit.persistence.PersistentDataType;
+
+public class RaxenEntity {
+
+ private final Raxen main;
+
+ private final String name;
+ private Integer level;
+ private Double health;
+ private Double strength;
+
+ public RaxenEntity(Raxen main, String name, Integer level, Double health, Double strength) {
+ this.main = main;
+ this.name = name;
+ this.level = level;
+ this.health = health;
+ this.strength = strength;
+ }
+
+ public Entity createEntity(EntityType type, String name, Location location) {
+ Entity e = location.getWorld().spawnEntity(location, type);
+ e.setCustomNameVisible(true);
+ e.setCustomName(name);
+
+ return e;
+ }
+
+ public void register(Entity e) {
+ PersistentDataContainer data = e.getPersistentDataContainer();
+ data.set(new NamespacedKey(main ,"NAME"), PersistentDataType.STRING, name);
+ }
+
+}
diff --git a/src/main/java/gq/unurled/raxen/components/gui/ItemListGui.java b/src/main/java/gq/unurled/raxen/components/gui/ItemListGui.java
index b41aaa9..cbc5090 100644
--- a/src/main/java/gq/unurled/raxen/components/gui/ItemListGui.java
+++ b/src/main/java/gq/unurled/raxen/components/gui/ItemListGui.java
@@ -1,12 +1,10 @@
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;
@@ -17,7 +15,9 @@ import org.bukkit.inventory.ItemStack;
import java.util.ArrayList;
import java.util.List;
-import static gq.unurled.raxen.utils.Utils.*;
+import static gq.unurled.raxen.utils.Items.*;
+import static gq.unurled.raxen.utils.Utils.fillGreyPane;
+import static gq.unurled.raxen.utils.Utils.log;
public class ItemListGui implements Listener {
@@ -38,6 +38,7 @@ public class ItemListGui implements Listener {
public ItemListGui(Raxen main) {
this.main = main;
this.itlist = this.main.getItemManager().getList();
+ this.inv = getInventories();
}
private ItemStack PREVIOUS = createItem(Material.ARROW, 1,true, false, "Previous page");
@@ -46,7 +47,7 @@ public class ItemListGui implements Listener {
private ItemStack CLOSE = closeItem();
private ItemStack GREY_PANE = greyPane();
- public Inventory getInv() {
+ public Inventory getInventories() {
Integer page = 1;
Integer item = -1;
for (ItemStack it : itlist) {
@@ -139,6 +140,7 @@ public class ItemListGui implements Listener {
}
}
page++;
+ inv.setItem(53, CLOSE);
inv = fillGreyPane(inv);
}
return inv;
diff --git a/src/main/java/gq/unurled/raxen/components/items/Attributes.java b/src/main/java/gq/unurled/raxen/components/items/Attributes.java
new file mode 100644
index 0000000..be2e8dd
--- /dev/null
+++ b/src/main/java/gq/unurled/raxen/components/items/Attributes.java
@@ -0,0 +1,15 @@
+package gq.unurled.raxen.components.items;
+
+import lombok.Getter;
+
+public class Attributes {
+ @Getter
+ Integer health, speed, defense, strength;
+
+ public Attributes(Integer health, Integer defense, Integer speed, Integer strength) {
+ this.health = health;
+ this.defense = defense;
+ this.speed = speed;
+ this.strength = strength;
+ }
+}
diff --git a/src/main/java/gq/unurled/raxen/components/player/Skills.java b/src/main/java/gq/unurled/raxen/components/player/Skills.java
index 9120479..246b830 100644
--- a/src/main/java/gq/unurled/raxen/components/player/Skills.java
+++ b/src/main/java/gq/unurled/raxen/components/player/Skills.java
@@ -7,13 +7,17 @@ public class Skills {
@Getter
@Setter
- private int health, defense, speed, strength;
+ private int health, itemHealth, defense, itemDefense, speed, itemSpeed, strength, itemDmg;
- public Skills(int health, int defense, int speed, int strength) {
+ public Skills(int health, int itemHealth, int defense, int itemDefense, int speed, int itemSpeed, int strength, int itemDmg) {
this.health = health;
+ this.itemHealth = health;
this.defense = defense;
+ this.itemDefense = itemDefense;
this.speed = speed;
+ this.itemSpeed = speed;
this.strength = strength;
+ this.itemDmg = itemDmg;
}
public void removeSpeed(int i) {
@@ -29,6 +33,19 @@ public class Skills {
this.strength =this.getStrength() - i;
}
+ public void removeItemSpeed(int i) {
+ this.itemSpeed =this.getItemSpeed() - i;
+ }
+ public void removeItemHealth(int i) {
+ this.itemHealth =this.getItemHealth() - i;
+ }
+ public void removeItemDefense(int i) {
+ this.itemDefense =this.getItemDefense() - i;
+ }
+ public void removeItemStrength(int i) {
+ this.itemDmg =this.getItemDmg() - i;
+ }
+
public void addSpeed(int i) {
this.speed = this.getSpeed() + i;
}
@@ -41,4 +58,17 @@ public class Skills {
public void addStrength(int i) {
this.strength = this.getStrength() + i;
}
+
+ public void addItemSpeed(int i) {
+ this.itemSpeed = this.getItemSpeed() + i;
+ }
+ public void addItemHealth(int i) {
+ this.itemHealth = this.getItemHealth() + i;
+ }
+ public void addItemDefense(int i) {
+ this.itemDefense = this.getItemDefense() + i;
+ }
+ public void addItemStrength(int i) {
+ this.itemDmg = this.getItemDmg() + i;
+ }
}
diff --git a/src/main/java/gq/unurled/raxen/components/resourcepack/ResourcePack.java b/src/main/java/gq/unurled/raxen/components/resourcepack/ResourcePack.java
new file mode 100644
index 0000000..cb6be80
--- /dev/null
+++ b/src/main/java/gq/unurled/raxen/components/resourcepack/ResourcePack.java
@@ -0,0 +1,31 @@
+package gq.unurled.raxen.components.resourcepack;
+
+import gq.unurled.raxen.Raxen;
+import gq.unurled.raxen.manager.ResourcePackManager;
+import org.bukkit.configuration.file.FileConfiguration;
+import org.bukkit.entity.Player;
+import org.bukkit.scheduler.BukkitRunnable;
+
+public class ResourcePack {
+
+ private Raxen main;
+ private FileConfiguration config;
+ private ResourcePackManager resourcePackManager;
+
+ public ResourcePack(Raxen main) {
+ this.main = main;
+ this.config = main.getConfig();
+ this.resourcePackManager = main.getResourcePackManager();
+ }
+
+ public void join(Player player) {
+ new BukkitRunnable() {
+ @Override
+ public void run() {
+ if(resourcePackManager.isUseRP()) {
+ player.setResourcePack(config.getString("ressource_pack_url"), config.getString("resource_pack_sha1"));
+ }
+ }
+ }.runTaskLater(main, 2L);
+ }
+}
diff --git a/src/main/java/gq/unurled/raxen/config/PlayerConfig.java b/src/main/java/gq/unurled/raxen/config/PlayerConfig.java
index c50a6a3..a625fa3 100644
--- a/src/main/java/gq/unurled/raxen/config/PlayerConfig.java
+++ b/src/main/java/gq/unurled/raxen/config/PlayerConfig.java
@@ -10,8 +10,8 @@ import gq.unurled.raxen.components.player.Storage;
import gq.unurled.raxen.components.player.Storages.EnderChest;
import gq.unurled.raxen.manager.ProfileManager;
import gq.unurled.raxen.manager.StorageManager;
+import gq.unurled.raxen.utils.Items;
import gq.unurled.raxen.utils.MongoDB;
-import gq.unurled.raxen.utils.Utils;
import net.kyori.adventure.text.Component;
import org.bson.Document;
import org.bukkit.Bukkit;
@@ -50,9 +50,13 @@ public class PlayerConfig {
Document doc = new Document("uuid", player.getUniqueId().toString())
.append("name", player.getName())
.append("health", skills.getHealth())
+ .append("itemHealth", skills.getItemHealth())
.append("defense", skills.getDefense())
+ .append("itemDefense", skills.getItemDefense())
.append("speed", skills.getSpeed())
+ .append("itemSpeed", skills.getItemSpeed())
.append("strength", skills.getStrength())
+ .append("itemDmg", skills.getItemDmg())
.append("inv", invstr);
if (profileManager.getPlayerStorage(player.getUniqueId()) != null) {
if(profileManager.getPlayerStorage(player.getUniqueId()).getEc() != null) {
@@ -62,11 +66,11 @@ public class PlayerConfig {
for(ItemStack it : ec.getEc()) {
reverse += 1;
if(it != null) {
- String s = Utils.itemStackSerilize(it, reverse);
+ String s = Items.itemStackSerilize(it, reverse);
list.add(s);
}
}
- String ecstr = Utils.listItemStackSerelize(list);
+ String ecstr = Items.listItemStackSerelize(list);
doc.append("ec", ecstr);
}
}
@@ -83,9 +87,13 @@ public class PlayerConfig {
FileConfiguration config = sto.createYml(player);
config.set("name", player.getName());
config.set("health", skills.getHealth());
+ config.set("itemHealth", skills.getItemHealth());
config.set("strength", skills.getStrength());
+ config.set("itemDmg", skills.getItemDmg());
config.set("speed", skills.getSpeed());
+ config.set("itemSpeed", skills.getItemSpeed());
config.set("defense", skills.getDefense());
+ config.set("itemDefense", skills.getItemDefense());
config.set("inv", invstr);
if (profileManager.getPlayerStorage(player.getUniqueId()) != null) {
if(profileManager.getPlayerStorage(player.getUniqueId()).getEc() != null) {
@@ -95,11 +103,11 @@ public class PlayerConfig {
for(ItemStack it : ec.getEc()) {
reverse += 1;
if(it != null) {
- String s = Utils.itemStackSerilize(it, reverse);
+ String s = Items.itemStackSerilize(it, reverse);
list.add(s);
}
}
- String ecstr = Utils.listItemStackSerelize(list);
+ String ecstr = Items.listItemStackSerelize(list);
config.set("ec", ecstr);
}
}
@@ -118,20 +126,20 @@ public class PlayerConfig {
profileManager.createNewInventory(player);
return;
}
- Skills skills = new Skills(playerDoc.getInteger("health"), playerDoc.getInteger("defense"), playerDoc.getInteger("speed"), playerDoc.getInteger("strength"));
+ Skills skills = new Skills(playerDoc.getInteger("health"), playerDoc.getInteger("itemHealth"), playerDoc.getInteger("defense"), playerDoc.getInteger("itemDefense"), playerDoc.getInteger("speed"), playerDoc.getInteger("itemSpeed"), playerDoc.getInteger("strength"), playerDoc.getInteger("itemDmg"));
Profile profile = new Profile(skills);
profileManager.setPlayerProfile(player.getUniqueId(), profile);
Inventory ec = Bukkit.createInventory(null, 54, Component.text("Ender Chest"));
if(playerDoc.getString("ec") != null) {
- ItemStack[] itList = Utils.listItemStackDeserilize(playerDoc.getString("ec"));
+ ItemStack[] itList = Items.listItemStackDeserilize(playerDoc.getString("ec"));
ec.addItem(itList);
}
EnderChest ecc = new EnderChest(ec);
Storage storage = new Storage(ecc);
profileManager.setPlayerStorage(player.getUniqueId(), storage);
Inventory inv = Bukkit.createInventory(player, InventoryType.PLAYER);
- ItemStack[] itListInv = Utils.listItemStackDeserilize(playerDoc.getString("inv"));
+ ItemStack[] itListInv = Items.listItemStackDeserilize(playerDoc.getString("inv"));
inv.addItem(itListInv);
player.updateInventory();
gq.unurled.raxen.components.player.Storages.Inventory invv = new gq.unurled.raxen.components.player.Storages.Inventory(inv);
@@ -141,20 +149,23 @@ public class PlayerConfig {
public void loadUsingYml(Player player) throws IOException {
FileConfiguration config = sto.createYml(player);
- Skills skills = new Skills((Integer) config.get("health"), (Integer) config.get("defense"), (Integer) config.get("speed"), (Integer) config.get("strength"));
+ Skills skills = new Skills(config.getInt("health"), config.getInt("itemHealth"),
+ config.getInt("defense"), config.getInt("itemDefense"),
+ config.getInt("speed"), config.getInt("itemSpeed"),
+ config.getInt("strength"), config.getInt("itemDmg"));
Profile profile = new Profile(skills);
profileManager.setPlayerProfile(player.getUniqueId(), profile);
Inventory ec = Bukkit.createInventory(null, 54, Component.text("Ender Chest"));
if((String) config.get("ec") != null) {
- ItemStack[] itList = Utils.listItemStackDeserilize((String) config.get("ec"));
+ ItemStack[] itList = Items.listItemStackDeserilize((String) config.get("ec"));
ec.addItem(itList);
}
EnderChest ecc = new EnderChest(ec);
Storage storage = new Storage(ecc);
profileManager.setPlayerStorage(player.getUniqueId(), storage);
Inventory inv = Bukkit.createInventory(player, InventoryType.PLAYER);
- ItemStack[] itListInv = Utils.listItemStackDeserilize((String) config.getString("inv"));
+ ItemStack[] itListInv = Items.listItemStackDeserilize((String) config.getString("inv"));
inv.addItem(itListInv);
player.updateInventory();
gq.unurled.raxen.components.player.Storages.Inventory invv = new gq.unurled.raxen.components.player.Storages.Inventory(inv);
@@ -170,11 +181,11 @@ public class PlayerConfig {
for(ItemStack it : inv) {
reverse = reverse + 1;
if(it != null && it.getType() != Material.AIR) {
- String s = Utils.itemStackSerilize(it, reverse);
+ String s = Items.itemStackSerilize(it, reverse);
listInv.add(s);
}
}
- String invstr = Utils.listItemStackSerelize(listInv);
+ String invstr = Items.listItemStackSerelize(listInv);
Object storage = sto.getConfig().get("storage");
diff --git a/src/main/java/gq/unurled/raxen/listener/entity/DamageEntity.java b/src/main/java/gq/unurled/raxen/listener/entity/DamageEntity.java
new file mode 100644
index 0000000..fa6e67b
--- /dev/null
+++ b/src/main/java/gq/unurled/raxen/listener/entity/DamageEntity.java
@@ -0,0 +1,95 @@
+package gq.unurled.raxen.listener.entity;
+
+import gq.unurled.raxen.Raxen;
+import gq.unurled.raxen.components.entity.EntityNamespacedKey;
+import gq.unurled.raxen.components.items.Attributes;
+import gq.unurled.raxen.components.player.Skills;
+import gq.unurled.raxen.manager.ProfileManager;
+import gq.unurled.raxen.utils.Items;
+import org.bukkit.attribute.Attribute;
+import org.bukkit.entity.Entity;
+import org.bukkit.entity.LivingEntity;
+import org.bukkit.entity.Player;
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.Listener;
+import org.bukkit.event.entity.EntityDamageByEntityEvent;
+import org.bukkit.persistence.PersistentDataContainer;
+import org.bukkit.persistence.PersistentDataType;
+
+public class DamageEntity implements Listener {
+ private Raxen main;
+ private ProfileManager profileManager;
+ private EntityNamespacedKey entityNamespacedKey;
+
+ public DamageEntity(Raxen main) {
+ this.main = main;
+ this.profileManager = main.getProfileManager();
+ this.entityNamespacedKey = new EntityNamespacedKey(main);
+ }
+
+ @EventHandler
+ public void entityDamageByEntity(EntityDamageByEntityEvent e) {
+ e.setDamage(0);
+ Integer damage = 1;
+ Integer strength = 0;
+ Integer itemDmg = 0;
+ Integer defense = 0;
+ Integer itemDefense = 0;
+ Integer health = 0;
+ Integer itemHealth = 0;
+ Integer initDamage = 0;
+ if (e.getDamager() instanceof Player) {
+ Player playerDamager = (Player) e.getDamager();
+ Skills skills = profileManager.getPlayerProfile(playerDamager.getUniqueId()).getSkils();
+ strength = skills.getStrength();
+ itemDmg = skills.getItemDmg();
+ } else {
+ Entity entityDamager = e.getDamager();
+ PersistentDataContainer data = entityDamager.getPersistentDataContainer();
+ if (data.has(entityNamespacedKey.strengthKey, PersistentDataType.INTEGER)) {
+ strength = data.get(entityNamespacedKey.strengthKey, PersistentDataType.INTEGER);
+ }
+ Attributes attributes = Items.getNbtFromEntity((LivingEntity) entityDamager);
+ itemDmg = attributes.getStrength();
+ }
+ if (e.getEntity() instanceof Player) {
+ Player playerVictim = (Player) e.getEntity();
+ Skills skills = profileManager.getPlayerProfile(playerVictim.getUniqueId()).getSkils();
+ defense = skills.getDefense();
+ health = skills.getHealth();
+ itemDefense = skills.getItemDefense();
+ itemHealth = skills.getItemHealth();
+ } else {
+ Entity entityVictim = e.getEntity();
+ PersistentDataContainer data = entityVictim.getPersistentDataContainer();
+ if (data.has(entityNamespacedKey.defenseKey, PersistentDataType.INTEGER)) {
+ defense = data.get(entityNamespacedKey.defenseKey, PersistentDataType.INTEGER);
+ }
+ if (data.has(entityNamespacedKey.healthKey, PersistentDataType.INTEGER)) {
+ health = data.get(entityNamespacedKey.healthKey, PersistentDataType.INTEGER);
+ }
+ Attributes attributes = Items.getNbtFromEntity((LivingEntity) entityVictim);
+ itemDefense = attributes.getDefense();
+ itemHealth = attributes.getHealth();
+ }
+ initDamage = (5+ itemDmg) * (1+ (strength/100));
+ damage = initDamage;
+ defense = defense + itemDefense;
+ defense = defense/(defense+100);
+ damage = damage*defense;
+ if (damage >= health) {
+ e.setDamage(e.getEntity().getType().getDefaultAttributes().getAttribute(Attribute.GENERIC_MAX_HEALTH).getDefaultValue());
+ } else {
+ health = health - damage;
+ if (e.getEntity() instanceof Player) {
+ Player playerVictim = (Player) e.getEntity();
+ Skills skills = profileManager.getPlayerProfile(playerVictim.getUniqueId()).getSkils();
+ skills.setHealth(health);
+ } else {
+ Entity entityVictim = e.getEntity();
+ PersistentDataContainer data = entityVictim.getPersistentDataContainer();
+ data.set(entityNamespacedKey.healthKey, PersistentDataType.INTEGER, health);
+ }
+ }
+ }
+}
diff --git a/src/main/java/gq/unurled/raxen/listener/player/ItemHandEvent.java b/src/main/java/gq/unurled/raxen/listener/player/ItemHandEvent.java
index 131e0e6..d4a9eef 100644
--- a/src/main/java/gq/unurled/raxen/listener/player/ItemHandEvent.java
+++ b/src/main/java/gq/unurled/raxen/listener/player/ItemHandEvent.java
@@ -28,31 +28,31 @@ public class ItemHandEvent implements Listener {
if(oldItem != null && oldItem.getType() != Material.AIR) {
NBTItem nbti = new NBTItem(oldItem);
if(nbti.hasKey("SPEED")) {
- skills.removeSpeed(nbti.getInteger("SPEED"));
+ skills.removeItemSpeed(nbti.getInteger("SPEED"));
}
if(nbti.hasKey("HEALTH")) {
- skills.removeHealth(nbti.getInteger("HEALTH"));
+ skills.removeItemHealth(nbti.getInteger("HEALTH"));
}
if(nbti.hasKey("DEFENSE")) {
- skills.removeDefense(nbti.getInteger("DEFENSE"));
+ skills.removeItemDefense(nbti.getInteger("DEFENSE"));
}
if(nbti.hasKey("STRENGTH")) {
- skills.removeStrength(nbti.getInteger("STRENGTH"));
+ skills.removeItemStrength(nbti.getInteger("STRENGTH"));
}
}
if(newItem != null && newItem.getType() != Material.AIR) {
NBTItem nbti = new NBTItem(newItem);
if(nbti.hasKey("SPEED")) {
- skills.addSpeed(nbti.getInteger("SPEED"));
+ skills.addItemSpeed(nbti.getInteger("SPEED"));
}
if(nbti.hasKey("HEALTH")) {
- skills.addHealth(nbti.getInteger("HEALTH"));
+ skills.addItemHealth(nbti.getInteger("HEALTH"));
}
if(nbti.hasKey("DEFENSE")) {
- skills.addDefense(nbti.getInteger("DEFENSE"));
+ skills.addItemDefense(nbti.getInteger("DEFENSE"));
}
if(nbti.hasKey("STRENGTH")) {
- skills.addStrength(nbti.getInteger("STRENGTH"));
+ skills.addItemStrength(nbti.getInteger("STRENGTH"));
}
}
gq.unurled.raxen.utils.Skills.updateSkills(player);
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 990548b..2c492cb 100644
--- a/src/main/java/gq/unurled/raxen/listener/player/JoinEvent.java
+++ b/src/main/java/gq/unurled/raxen/listener/player/JoinEvent.java
@@ -2,6 +2,7 @@ package gq.unurled.raxen.listener.player;
import gq.unurled.raxen.Raxen;
import gq.unurled.raxen.components.player.Scoreboard;
+import gq.unurled.raxen.components.resourcepack.ResourcePack;
import gq.unurled.raxen.config.PlayerConfig;
import gq.unurled.raxen.manager.ProfileManager;
import org.bukkit.entity.Player;
@@ -15,12 +16,14 @@ public class JoinEvent implements Listener {
private ProfileManager profileManager;
private PlayerConfig playerConfig;
private Scoreboard scoreboard;
+ private ResourcePack resourcePack;
public JoinEvent(Raxen main) {
this.main = main;
this.profileManager = main.getProfileManager();
this.playerConfig = main.getPlayerConfig();
this.scoreboard = new Scoreboard(main);
+ this.resourcePack = main.getResourcePackManager().getResourcePack();
}
@EventHandler
@@ -28,6 +31,7 @@ public class JoinEvent implements Listener {
Player player = e.getPlayer();
playerConfig.loadPlayerConfig(player);
scoreboard.createScorebord(player);
+ resourcePack.join(player);
}
}
diff --git a/src/main/java/gq/unurled/raxen/manager/EntityManager.java b/src/main/java/gq/unurled/raxen/manager/EntityManager.java
new file mode 100644
index 0000000..8819ad2
--- /dev/null
+++ b/src/main/java/gq/unurled/raxen/manager/EntityManager.java
@@ -0,0 +1,35 @@
+package gq.unurled.raxen.manager;
+
+import gq.unurled.raxen.Raxen;
+import lombok.Getter;
+import lombok.Setter;
+import org.bukkit.Bukkit;
+import org.bukkit.World;
+import org.bukkit.configuration.file.FileConfiguration;
+import org.bukkit.entity.EntityType;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class EntityManager {
+
+ private Raxen main;
+ @Getter
+ @Setter
+ public List list = new ArrayList<>();
+
+ public EntityManager(Raxen main) {
+ this.main = main;
+ }
+
+ public void registerLivingEntities(World world) {
+
+ }
+
+ public void registerEntityFromConfig(FileConfiguration config) {
+ World world = Bukkit.getWorld(config.getString("world"));
+ String name = config.getString("name");
+
+ }
+
+}
diff --git a/src/main/java/gq/unurled/raxen/manager/ItemManager.java b/src/main/java/gq/unurled/raxen/manager/ItemManager.java
index 12ec741..4ec44ea 100644
--- a/src/main/java/gq/unurled/raxen/manager/ItemManager.java
+++ b/src/main/java/gq/unurled/raxen/manager/ItemManager.java
@@ -11,14 +11,13 @@ 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.Items.setLoreFromNBT;
import static gq.unurled.raxen.utils.Utils.*;
public class ItemManager {
@@ -78,7 +77,6 @@ public class ItemManager {
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();
@@ -116,8 +114,8 @@ public class ItemManager {
for (String str : (List) Objects.requireNonNull(file.get("lore"))) {
lore.add(Component.text(color(str)));
}
+ itm.setCustomModelData(file.getConfigurationSection("Pack").getInt("custom_model_data"));
itm.lore(lore);
- itm.setCustomModelData(file.getInt("custom_model_data"));
it.setItemMeta(itm);
NBTItem nbti = new NBTItem(it);
nbti.setInteger("SPEED", file.getInt("speed"));
@@ -127,6 +125,7 @@ public class ItemManager {
nbti.setString("ID", file.getString("customId"));
nbti.setString("CUSTOM_ABILITY", file.getString("custom_ability"));
it = nbti.getItem();
+ it = setLoreFromNBT(it);
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 334f942..1294a7c 100644
--- a/src/main/java/gq/unurled/raxen/manager/ListenerManager.java
+++ b/src/main/java/gq/unurled/raxen/manager/ListenerManager.java
@@ -1,8 +1,8 @@
package gq.unurled.raxen.manager;
import gq.unurled.raxen.Raxen;
+import gq.unurled.raxen.listener.entity.DamageEntity;
import gq.unurled.raxen.listener.player.*;
-import gq.unurled.raxen.utils.AureliumSkills;
import gq.unurled.raxen.utils.Reload;
import org.bukkit.plugin.PluginManager;
@@ -21,9 +21,9 @@ public class ListenerManager {
this.pm.registerEvents(new LeaveEvent(main), main);
this.pm.registerEvents(new ArmorEvent(main), main);
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);
+ this.pm.registerEvents(new DamageEntity(main), main);
}
}
diff --git a/src/main/java/gq/unurled/raxen/manager/ProfileManager.java b/src/main/java/gq/unurled/raxen/manager/ProfileManager.java
index f59f6cd..d9c8119 100644
--- a/src/main/java/gq/unurled/raxen/manager/ProfileManager.java
+++ b/src/main/java/gq/unurled/raxen/manager/ProfileManager.java
@@ -30,7 +30,7 @@ public class ProfileManager {
}
public Profile createNewProfile(Player player) {
- Skills skills = new Skills( 100, 50, 100, 100);
+ Skills skills = new Skills( 100, 0, 50, 0, 100, 0, 100, 0);
Profile profile = new Profile(skills);
profiles.put(player.getUniqueId(), profile);
return profile;
diff --git a/src/main/java/gq/unurled/raxen/manager/ProtocolManager.java b/src/main/java/gq/unurled/raxen/manager/ProtocolManager.java
index 739a65e..b4af713 100644
--- a/src/main/java/gq/unurled/raxen/manager/ProtocolManager.java
+++ b/src/main/java/gq/unurled/raxen/manager/ProtocolManager.java
@@ -1,7 +1,10 @@
package gq.unurled.raxen.manager;
import com.comphenix.protocol.PacketType;
-import com.comphenix.protocol.events.*;
+import com.comphenix.protocol.events.ListenerPriority;
+import com.comphenix.protocol.events.PacketAdapter;
+import com.comphenix.protocol.events.PacketContainer;
+import com.comphenix.protocol.events.PacketEvent;
import gq.unurled.raxen.Raxen;
import org.bukkit.entity.Player;
diff --git a/src/main/java/gq/unurled/raxen/manager/ResourcePackManager.java b/src/main/java/gq/unurled/raxen/manager/ResourcePackManager.java
new file mode 100644
index 0000000..29e3a2a
--- /dev/null
+++ b/src/main/java/gq/unurled/raxen/manager/ResourcePackManager.java
@@ -0,0 +1,46 @@
+package gq.unurled.raxen.manager;
+
+import gq.unurled.raxen.Raxen;
+import gq.unurled.raxen.components.resourcepack.ResourcePack;
+import lombok.Getter;
+import org.bukkit.configuration.file.FileConfiguration;
+
+import java.util.Objects;
+
+import static gq.unurled.raxen.utils.Utils.error;
+import static gq.unurled.raxen.utils.Utils.log;
+
+public class ResourcePackManager {
+
+ private Raxen main;
+ @Getter
+ private ResourcePack resourcePack;
+ private FileConfiguration config;
+ @Getter
+ private boolean useRP;
+
+ public ResourcePackManager(Raxen main) {
+ this.main = main;
+ this.resourcePack = new ResourcePack(main);
+ this.config = main.getConfig();
+ this.useRP = this.config.getBoolean("useResourcePack");
+ enable();
+ }
+
+ private void enable() {
+ if(useRP) {
+ if(config.getString("resource_pack_url") == null || Objects.equals(config.getString("rssource_pack_url"), "") ||
+ config.getString("resource_pack_sha1") == null || Objects.equals(config.getString("resource_pack_sha1"), "") ||
+ Objects.equals(config.getString("resource_pack_url"), "https://mc-packs.net/") || Objects.equals(config.getString("resource_pack_sha1"), "sha1hallo")) {
+ error("You must specify an resource_pack_url and resource_pack_sha1!");
+ log("Resource pack not enabled.");
+ useRP = false;
+ } else {
+ log("Ressource Pack enabled.");
+ }
+ } else {
+ log("Resource pack not enabled.");
+ }
+
+ }
+}
diff --git a/src/main/java/gq/unurled/raxen/manager/StorageManager.java b/src/main/java/gq/unurled/raxen/manager/StorageManager.java
index 11b385f..4536136 100644
--- a/src/main/java/gq/unurled/raxen/manager/StorageManager.java
+++ b/src/main/java/gq/unurled/raxen/manager/StorageManager.java
@@ -11,7 +11,6 @@ import org.bukkit.entity.Player;
import java.io.File;
import java.io.IOException;
-import java.util.stream.IntStream;
import static gq.unurled.raxen.utils.Utils.*;
diff --git a/src/main/java/gq/unurled/raxen/utils/AureliumSkills.java b/src/main/java/gq/unurled/raxen/utils/AureliumSkills.java
deleted file mode 100644
index f86145e..0000000
--- a/src/main/java/gq/unurled/raxen/utils/AureliumSkills.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package gq.unurled.raxen.utils;
-
-import com.archyx.aureliumskills.api.AureliumAPI;
-import com.archyx.aureliumskills.api.event.SkillLevelUpEvent;
-import com.archyx.aureliumskills.skills.Skill;
-import gq.unurled.raxen.Raxen;
-import org.bukkit.entity.Player;
-import org.bukkit.event.EventHandler;
-import org.bukkit.event.Listener;
-
-public class AureliumSkills implements Listener {
-
- private static AureliumAPI aureliumAPI;
-
- public AureliumSkills(Raxen main) {
- this.aureliumAPI = main.getAureliumAPI();
- }
-
- @EventHandler
- public void skillLevelUp(SkillLevelUpEvent e) {
- Player p = e.getPlayer();
- Skill skill = e.getSkill();
- Integer level = e.getLevel();
- switch (skill.name()){
- case "FARMING":
- case "FORAGING":
- case "MINING":
- case "FISHING":
- case "EXCAVATION":
- case "ARCHERY":
- case "DEFENSE":
- case "FIGHTING":
- case "ENDURANCE":
- case "AGILITY":
- case "ALCHEMY":
- case "ENCHANTING":
- case "SORCERY":
- case "HEALING":
- case "FORGING":
- }
-
-
- }
-
-}
diff --git a/src/main/java/gq/unurled/raxen/utils/Items.java b/src/main/java/gq/unurled/raxen/utils/Items.java
new file mode 100644
index 0000000..0e7544b
--- /dev/null
+++ b/src/main/java/gq/unurled/raxen/utils/Items.java
@@ -0,0 +1,324 @@
+package gq.unurled.raxen.utils;
+
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
+import de.tr7zw.changeme.nbtapi.NBTItem;
+import gq.unurled.raxen.components.items.Attributes;
+import net.kyori.adventure.text.Component;
+import org.bukkit.Material;
+import org.bukkit.enchantments.Enchantment;
+import org.bukkit.entity.LivingEntity;
+import org.bukkit.inventory.EntityEquipment;
+import org.bukkit.inventory.ItemFlag;
+import org.bukkit.inventory.ItemStack;
+import org.bukkit.inventory.meta.ItemMeta;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+import static gq.unurled.raxen.utils.Utils.color;
+import static gq.unurled.raxen.utils.Utils.error;
+
+public class Items {
+
+ public static ItemStack createItem(Material material, int amount, boolean glow, boolean unb, String name, String... lore) {
+ ItemStack item = new ItemStack(material, amount);
+ ItemMeta itemMeta = item.getItemMeta();
+ if(name != null) {
+ itemMeta.displayName(Component.text(color(name)));
+ }
+ if(lore != null) {
+ List list = new ArrayList<>();
+ for(String string : lore) {
+ list.add(Component.text(color(string)));
+ }
+ itemMeta.lore(list);
+ }
+ if(glow) {
+ itemMeta.addItemFlags(ItemFlag.HIDE_ENCHANTS);
+ itemMeta.addEnchant(Enchantment.DURABILITY, 1, true);
+ }
+ if(unb) {
+ itemMeta.setUnbreakable(true);
+ }
+ item.setItemMeta(itemMeta);
+ return item;
+ }
+
+ 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 String itemStackSerilize(ItemStack it, Integer slot) {
+ Gson gson = new Gson();
+ //String str = gson.toJson(it.serialize());
+ String str = gson.toJson(it.serialize(), new TypeToken