diff --git a/build.gradle b/build.gradle
index 09d9bae..2dc78d9 100644
--- a/build.gradle
+++ b/build.gradle
@@ -16,28 +16,22 @@ repositories {
maven {
url = uri('https://papermc.io/repo/repository/maven-public/')
}
-
maven {
url = uri('https://oss.sonatype.org/content/groups/public/')
}
-
maven {
name = 'CodeMC'
url = 'https://repo.codemc.org/repository/maven-public/'
}
-
maven {
url = uri('https://repo.dmulloy2.net/repository/public/')
}
-
maven {
url = uri('https://repo.essentialsx.net/releases/')
}
-
maven {
url = uri('https://s01.oss.sonatype.org/content/repositories/snapshots/')
}
-
maven {
url = uri('https://repo.maven.apache.org/maven2/')
}
@@ -65,7 +59,7 @@ dependencies {
implementation 'org.mongodb:mongodb-driver-core:4.7.2'
implementation 'de.tr7zw:item-nbt-api-plugin:2.10.0'
- compileOnly 'io.papermc.paper:paper-api:1.19.2-R0.1-SNAPSHOT'
+ compileOnly 'io.papermc.paper:paper-api:1.19.3-R0.1-SNAPSHOT'
compileOnly 'com.comphenix.protocol:ProtocolLib:4.8.0'
compileOnly 'net.luckperms:api:5.4'
compileOnly 'com.github.MilkBowl:VaultAPI:1.7.1'
@@ -80,7 +74,7 @@ dependencies {
}
group = 'me.unurled'
-version = '0.5.5'
+version = '0.5.6'
description = 'Raxen'
java {
diff --git a/src/main/java/me/unurled/raxen/Raxen.java b/src/main/java/me/unurled/raxen/Raxen.java
index f898707..baa0654 100644
--- a/src/main/java/me/unurled/raxen/Raxen.java
+++ b/src/main/java/me/unurled/raxen/Raxen.java
@@ -18,7 +18,7 @@ import static me.unurled.raxen.utils.Utils.colorComp;
public final class Raxen extends JavaPlugin {
private static final String prefix = "Rx> ";
- @Getter private static String version = "0.5.5";
+ @Getter private static String version = "0.5.6";
private final PluginManager pm = getServer().getPluginManager();
private static Raxen plugin;
diff --git a/src/main/java/me/unurled/raxen/commands/admin/NbtCommand.java b/src/main/java/me/unurled/raxen/commands/admin/NbtCommand.java
index 5128762..42c7c01 100644
--- a/src/main/java/me/unurled/raxen/commands/admin/NbtCommand.java
+++ b/src/main/java/me/unurled/raxen/commands/admin/NbtCommand.java
@@ -53,8 +53,8 @@ public class NbtCommand implements TabExecutor {
a = nbti.getInteger(args[1]);
}
List lore = new ArrayList<>();
- ItemMeta itm = it.getItemMeta();
- lore.add((Component) itm.lore());
+ // ItemMeta itm = it.getItemMeta();
+ // lore.add((Component) itm.lore());
boolean yes = false;
boolean ever = false;
for (Component ct : lore) {
@@ -74,8 +74,8 @@ public class NbtCommand implements TabExecutor {
lore.add(colorTextComp("Attributes:"));
//lore.add(colorTextComp(attributes(args[0]) + ": " + (Integer.parseInt(args[1]) + a))); deprecated
}
- itm.lore(lore);
- it.setItemMeta(itm);
+ // itm.lore(lore);
+ // it.setItemMeta(itm);
PlayerManager pm = ((Raxen) Objects.requireNonNull(Bukkit.getPluginManager().getPlugin("Raxen"))).getManager().getPlayerManager();
nbti.setInteger(args[0], Integer.parseInt(args[1]) + a);
if (nbti.hasKey("SPEED")) {
diff --git a/src/main/java/me/unurled/raxen/components/entity/Attributes/Attribute.java b/src/main/java/me/unurled/raxen/components/entity/Attributes/Attribute.java
index ff3609b..2e465da 100644
--- a/src/main/java/me/unurled/raxen/components/entity/Attributes/Attribute.java
+++ b/src/main/java/me/unurled/raxen/components/entity/Attributes/Attribute.java
@@ -31,6 +31,14 @@ public class Attribute {
this.name = name;
}
+ /**
+ * gives the name uppercased
+ * @return the name in uppercase
+ */
+ public String nameUppercase() {
+ return name.toUpperCase();
+ }
+
/**
* get how many the Entity has Attributed
* @param entity a living entity
diff --git a/src/main/java/me/unurled/raxen/components/entity/other/custom/Entity.java b/src/main/java/me/unurled/raxen/components/entity/other/custom/Entity.java
index 3f9a673..3ab65c6 100644
--- a/src/main/java/me/unurled/raxen/components/entity/other/custom/Entity.java
+++ b/src/main/java/me/unurled/raxen/components/entity/other/custom/Entity.java
@@ -4,10 +4,14 @@ import lombok.Getter;
import lombok.Setter;
import me.unurled.raxen.Raxen;
+import java.util.UUID;
+
import static me.unurled.raxen.utils.Utils.colorString;
public class Entity {
+ private java.util.UUID uuid;
+
private final String name;
@Getter
private Integer level;
@@ -38,6 +42,7 @@ public class Entity {
this.speed = speed;
this.maxHealth = maxHealth;
this.isHostile = isHostile;
+ this.uuid = UUID.randomUUID();
}
public void register (Raxen main) {
diff --git a/src/main/java/me/unurled/raxen/components/entity/other/custom/Humanoid.java b/src/main/java/me/unurled/raxen/components/entity/other/custom/Humanoid.java
new file mode 100644
index 0000000..f76c294
--- /dev/null
+++ b/src/main/java/me/unurled/raxen/components/entity/other/custom/Humanoid.java
@@ -0,0 +1,15 @@
+package me.unurled.raxen.components.entity.other.custom;
+
+import java.util.UUID;
+
+public class Humanoid extends Entity {
+
+ private String skin; // used to get the path to the skin
+ private UUID skinUuid; // used to get the player skin (if i do it this way...
+
+ public Humanoid(String name, Integer level, Double maxHealth, Double strength, Double defense, Double speed, boolean isHostile, String skin, UUID skinUuid) {
+ super(name, level, maxHealth, strength, defense, speed, isHostile);
+ this.skin = skin;
+ this.skinUuid = skinUuid;
+ }
+}
diff --git a/src/main/java/me/unurled/raxen/components/entity/player/RaxenPlayer.java b/src/main/java/me/unurled/raxen/components/entity/player/RaxenPlayer.java
index 4617236..53cbdb8 100644
--- a/src/main/java/me/unurled/raxen/components/entity/player/RaxenPlayer.java
+++ b/src/main/java/me/unurled/raxen/components/entity/player/RaxenPlayer.java
@@ -68,8 +68,7 @@ public class RaxenPlayer {
PersistentDataContainer data = player.getPersistentDataContainer();
String inv = data.get(namespacedKey.inventory, PersistentDataType.STRING);
org.bukkit.inventory.Inventory invv = Bukkit.createInventory(player, InventoryType.PLAYER);
- PlayerInventory invvvvv = (PlayerInventory) Bukkit.createInventory(null, InventoryType.PLAYER);
- invv = setItemsToInventory(Items.listItemStackDeserialize(inv), invvvvv);
+ invv = setItemsToInventory(Items.listItemStackDeserialize(inv), (PlayerInventory) invv);
Inventory invvv = new Inventory(invv);
Inventories invvvv = new Inventories(invvv);
return invvvv;
diff --git a/src/main/java/me/unurled/raxen/components/entity/player/attributes/Attributes.java b/src/main/java/me/unurled/raxen/components/entity/player/attributes/Attributes.java
index 51ae63d..9ed0816 100644
--- a/src/main/java/me/unurled/raxen/components/entity/player/attributes/Attributes.java
+++ b/src/main/java/me/unurled/raxen/components/entity/player/attributes/Attributes.java
@@ -6,6 +6,8 @@ import me.unurled.raxen.manager.entity.PlayerManager;
import org.bukkit.Bukkit;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
+import org.jetbrains.annotations.Contract;
+import org.jetbrains.annotations.NotNull;
public class Attributes {
@@ -15,7 +17,8 @@ public class Attributes {
namespacedKey = new EntityNamespacedKey(main);
}
- public static Attribute getAttribute(Player player) {
+ @Contract("_ -> new")
+ public static @NotNull Attribute getAttribute(Player player) {
int maxHealth, health, itemHealth, defense, itemDefense, speed, itemSpeed, strength, itemStrength, maxMana, mana, itemMana, luck, itemLuck;
PlayerManager pm = ((Raxen) Bukkit.getPluginManager().getPlugin("Raxen")).getManager().getPlayerManager();
Entity e = player;
@@ -54,4 +57,9 @@ public class Attributes {
pm.getItemSpeed().set(e, itemSpeed);
pm.getItemMana().set(e, itemMana);
}
+
+ public static String[] getNameList() {
+ return new String[]{"Defense", "Health", "Luck", "Mana", "Speed", "Strength"};
+
+ }
}
diff --git a/src/main/java/me/unurled/raxen/components/entity/player/classes/list/Assassin.java b/src/main/java/me/unurled/raxen/components/entity/player/classes/list/Assassin.java
index 53f8b41..775203f 100644
--- a/src/main/java/me/unurled/raxen/components/entity/player/classes/list/Assassin.java
+++ b/src/main/java/me/unurled/raxen/components/entity/player/classes/list/Assassin.java
@@ -1,7 +1,7 @@
package me.unurled.raxen.components.entity.player.classes.list;
import me.unurled.raxen.components.entity.player.classes.Class;
-import me.unurled.raxen.components.items.custom.weapon.Dager;
+import me.unurled.raxen.components.items.custom.weapon.Dagger;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
@@ -16,9 +16,9 @@ public class Assassin extends Class {
public Assassin() {
super("Assassin", "Assassin", "ASSASSIN", new ItemStack(Material.AIR), 100);
- Dager dager = new Dager();
- dager.buildItem();
- placeHolder = dager.getDager();
+ Dagger dagger = new Dagger();
+ dagger.buildItem();
+ placeHolder = dagger.getItem();
}
public Assassin(String name, String colorName, String ID, String itemPlaceHolder, Integer max_level) {
diff --git a/src/main/java/me/unurled/raxen/components/gui/ItemListGui.java b/src/main/java/me/unurled/raxen/components/gui/ItemListGui.java
index 37f76f8..fec5d97 100644
--- a/src/main/java/me/unurled/raxen/components/gui/ItemListGui.java
+++ b/src/main/java/me/unurled/raxen/components/gui/ItemListGui.java
@@ -3,8 +3,12 @@ package me.unurled.raxen.components.gui;
import lombok.Getter;
import me.unurled.raxen.Raxen;
import me.unurled.raxen.components.entity.player.PlayerUtils;
+import me.unurled.raxen.utils.Utils;
import net.kyori.adventure.text.Component;
+import net.kyori.adventure.text.TextComponent;
+import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
import org.bukkit.Bukkit;
+import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
@@ -163,7 +167,8 @@ public class ItemListGui implements Listener {
//previous
if (e.getCurrentItem() != GREY_PANE) {
ItemStack pagee = einv.getItem(49);
- Integer page = Integer.parseInt(pagee.displayName().toString().replace("page", ""));
+ String name = ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&',Utils.textCompToString(pagee.displayName())));
+ Integer page = Integer.parseInt(name.toString().replace("page", ""));
switch(page) {
case 2:
player.openInventory(inv);
@@ -189,24 +194,30 @@ public class ItemListGui implements Listener {
} 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);
+ if (pagee != null) {
+ String name = ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&',Utils.textCompToString(pagee.displayName())));
+ name = name.replace("[", "");
+ name = name.replace("]", "");
+ log(name);
+ Integer page = Integer.parseInt(name.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
diff --git a/src/main/java/me/unurled/raxen/components/items/abilities/weapon/ThrowingDagger.java b/src/main/java/me/unurled/raxen/components/items/abilities/weapon/ThrowingDagger.java
new file mode 100644
index 0000000..e2a6003
--- /dev/null
+++ b/src/main/java/me/unurled/raxen/components/items/abilities/weapon/ThrowingDagger.java
@@ -0,0 +1,47 @@
+package me.unurled.raxen.components.items.abilities.weapon;
+
+import me.unurled.raxen.utils.RayTrace;
+import org.bukkit.Location;
+import org.bukkit.Material;
+import org.bukkit.block.Block;
+import org.bukkit.entity.Player;
+import org.bukkit.inventory.ItemStack;
+import org.bukkit.util.BoundingBox;
+import org.bukkit.util.Vector;
+
+import java.util.ArrayList;
+
+public class ThrowingDagger {
+
+ Player player;
+ ItemStack item;
+ Location start;
+
+ public ThrowingDagger(Player p) {
+ this.player = p;
+ this.item = p.getActiveItem();
+ this.start = p.getLocation();
+ }
+
+ public void throwDagger() {
+ // ability throw a dagger in the direction the player is looking, max 20 blocks
+ RayTrace rayTrace = new RayTrace(player.getEyeLocation().toVector(),player.getEyeLocation().getDirection());
+ ArrayList positions = rayTrace.traverse(10,0.01);
+ for(int i = 0; i < positions.size();i++){
+
+ Location position = positions.get(i).toLocation(player.getWorld());
+ Block block = player.getWorld().getBlockAt(position);
+
+ if(block != null && block.getType() != Material.AIR && rayTrace.intersects(BoundingBox.of(block),10,0.01)){
+ player.sendMessage(block.getType().toString());
+ break;
+ }
+
+ }
+ /*for (int i = 0 ; i < 20 ; i++) {
+ // spawn an item in air
+ // dispawn the last one
+ // repeat
+ }*/
+ }
+}
diff --git a/src/main/java/me/unurled/raxen/components/items/custom/Item.java b/src/main/java/me/unurled/raxen/components/items/custom/Item.java
index bf426ea..763e805 100644
--- a/src/main/java/me/unurled/raxen/components/items/custom/Item.java
+++ b/src/main/java/me/unurled/raxen/components/items/custom/Item.java
@@ -1,11 +1,32 @@
package me.unurled.raxen.components.items.custom;
+import lombok.Getter;
import me.unurled.raxen.Raxen;
+import org.bukkit.inventory.ItemStack;
+import org.jetbrains.annotations.NotNull;
-public interface Item {
+public abstract class Item {
- public void buildItem();
+ @Getter
+ ItemStack item;
- public void registerItem(Raxen main);
+ String NAME;
+ String ID;
+
+ ItemClass ITEM_CLASS;
+ ItemTypes ITEM_TYPES;
+
+ protected Item() {
+ this.item = buildItem();
+ }
+
+ public abstract ItemStack buildItem();
+
+ /**
+ * need item to be set before calling this method.
+ */
+ public void registerItem(@NotNull Raxen main) {
+ main.getManager().getItemManager().registerItem(item);
+ }
}
diff --git a/src/main/java/me/unurled/raxen/components/items/custom/ItemClass.java b/src/main/java/me/unurled/raxen/components/items/custom/ItemClass.java
new file mode 100644
index 0000000..c1de173
--- /dev/null
+++ b/src/main/java/me/unurled/raxen/components/items/custom/ItemClass.java
@@ -0,0 +1,16 @@
+package me.unurled.raxen.components.items.custom;
+
+public enum ItemClass {
+ F,
+ E,
+ D,
+ C,
+ B,
+ A,
+ S,
+ SS,
+ SSS,
+ MYTHIC,
+ UNIC,
+ GOD,
+}
diff --git a/src/main/java/me/unurled/raxen/components/items/custom/ItemTypes.java b/src/main/java/me/unurled/raxen/components/items/custom/ItemTypes.java
new file mode 100644
index 0000000..348754c
--- /dev/null
+++ b/src/main/java/me/unurled/raxen/components/items/custom/ItemTypes.java
@@ -0,0 +1,11 @@
+package me.unurled.raxen.components.items.custom;
+
+public enum ItemTypes {
+ WEAPON,
+ BOW,
+ TOOLS,
+ MEDICINE,
+ ARMOR,
+ BLOCKS,
+ MISCELLANEOUS
+}
diff --git a/src/main/java/me/unurled/raxen/components/items/custom/List.java b/src/main/java/me/unurled/raxen/components/items/custom/List.java
index b0768c9..54963b3 100644
--- a/src/main/java/me/unurled/raxen/components/items/custom/List.java
+++ b/src/main/java/me/unurled/raxen/components/items/custom/List.java
@@ -2,7 +2,7 @@ package me.unurled.raxen.components.items.custom;
import lombok.Getter;
import me.unurled.raxen.Raxen;
-import me.unurled.raxen.components.items.custom.weapon.Dager;
+import me.unurled.raxen.components.items.custom.weapon.Dagger;
import java.util.ArrayList;
@@ -16,11 +16,11 @@ public class List {
public List(Raxen main) {
this.main = main;
this.items = new ArrayList<>();
-
+ build();
}
public void build() {
// weapons
- items.add(new Dager());
+ items.add(new Dagger());
}
}
diff --git a/src/main/java/me/unurled/raxen/components/items/custom/weapon/Dager.java b/src/main/java/me/unurled/raxen/components/items/custom/weapon/Dager.java
deleted file mode 100644
index 9198d56..0000000
--- a/src/main/java/me/unurled/raxen/components/items/custom/weapon/Dager.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package me.unurled.raxen.components.items.custom.weapon;
-
-import de.tr7zw.nbtapi.NBTItem;
-import lombok.Getter;
-import me.unurled.raxen.Raxen;
-import me.unurled.raxen.components.items.custom.Item;
-import net.kyori.adventure.text.Component;
-import org.bukkit.Material;
-import org.bukkit.enchantments.Enchantment;
-import org.bukkit.inventory.ItemFlag;
-import org.bukkit.inventory.ItemStack;
-import org.bukkit.inventory.meta.ItemMeta;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import static me.unurled.raxen.components.items.NBT.*;
-import static me.unurled.raxen.utils.Utils.colorTextComp;
-
-public class Dager implements Item {
- @Getter
- ItemStack dager;
-
- public void buildItem() {
- dager = new ItemStack(Material.IRON_SWORD);
- ItemMeta itm = dager.getItemMeta();
- itm.displayName(colorTextComp("Dager"));
- itm.addEnchant(Enchantment.PROTECTION_ENVIRONMENTAL, 1, false);
- itm.addItemFlags(ItemFlag.HIDE_ATTRIBUTES, ItemFlag.HIDE_ENCHANTS);
- itm.setUnbreakable(true);
- List lore = new ArrayList<>();
- lore.add(Component.text("hallooo"));
- itm.lore(lore);
- dager.setItemMeta(itm);
- NBTItem nbti = new NBTItem(dager);
- nbti.setString(ID, "DAGER");
- nbti.setInteger(SPEED, 100);
- nbti.setInteger(STRENGTH, 50);
- nbti.setString(CUSTOM_ABILITY, "throwing_dager");
- nbti.setDouble(DROP_RATE, 50.0);
- dager = nbti.getItem();
- }
-
- /**
- * need Raxen main to be set before calling this method.
- */
- @Override
- public void registerItem(Raxen main) {
- main.getManager().getItemManager().registerItem(dager);
- }
-}
diff --git a/src/main/java/me/unurled/raxen/components/items/custom/weapon/Dagger.java b/src/main/java/me/unurled/raxen/components/items/custom/weapon/Dagger.java
new file mode 100644
index 0000000..25e12df
--- /dev/null
+++ b/src/main/java/me/unurled/raxen/components/items/custom/weapon/Dagger.java
@@ -0,0 +1,51 @@
+package me.unurled.raxen.components.items.custom.weapon;
+
+import de.tr7zw.nbtapi.NBTItem;
+import lombok.Getter;
+import me.unurled.raxen.components.items.NBT;
+import me.unurled.raxen.components.items.custom.Item;
+import me.unurled.raxen.components.items.custom.ItemClass;
+import me.unurled.raxen.components.items.custom.ItemTypes;
+import net.kyori.adventure.text.Component;
+import org.bukkit.Material;
+import org.bukkit.enchantments.Enchantment;
+import org.bukkit.inventory.ItemFlag;
+import org.bukkit.inventory.ItemStack;
+import org.bukkit.inventory.meta.ItemMeta;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import static me.unurled.raxen.utils.Utils.colorTextComp;
+
+public class Dagger extends Item {
+ @Getter
+ ItemStack item;
+
+ String NAME = "Dager";
+ String ID = "DAGER";
+
+ ItemClass ITEM_CLASS = ItemClass.F;
+ ItemTypes ITEM_TYPES = ItemTypes.WEAPON;
+
+ public ItemStack buildItem() {
+ item = new ItemStack(Material.IRON_SWORD);
+ ItemMeta itm = item.getItemMeta();
+ itm.displayName(colorTextComp("" + this.NAME));
+ itm.addEnchant(Enchantment.PROTECTION_ENVIRONMENTAL, 1, false);
+ itm.addItemFlags(ItemFlag.HIDE_ATTRIBUTES, ItemFlag.HIDE_ENCHANTS);
+ itm.setUnbreakable(true);
+ List lore = new ArrayList<>();
+ lore.add(Component.text("hallooo"));
+ itm.lore(lore);
+ item.setItemMeta(itm);
+ NBTItem nbti = new NBTItem(item);
+ nbti.setString(NBT.ID, ID);
+ nbti.setInteger(NBT.SPEED, 100);
+ nbti.setInteger(NBT.STRENGTH, 50);
+ nbti.setString(NBT.CUSTOM_ABILITY, "throwing_dager");
+ nbti.setDouble(NBT.DROP_RATE, 50.0);
+ item = nbti.getItem();
+ return item;
+ }
+}
diff --git a/src/main/java/me/unurled/raxen/listener/player/ItemHandEvent.java b/src/main/java/me/unurled/raxen/listener/player/ItemHandEvent.java
index 5edb79b..88f70b9 100644
--- a/src/main/java/me/unurled/raxen/listener/player/ItemHandEvent.java
+++ b/src/main/java/me/unurled/raxen/listener/player/ItemHandEvent.java
@@ -2,6 +2,7 @@ package me.unurled.raxen.listener.player;
import de.tr7zw.nbtapi.NBTItem;
import me.unurled.raxen.Raxen;
+import me.unurled.raxen.components.entity.Attributes.Attribute;
import me.unurled.raxen.components.entity.player.PlayerUtils;
import me.unurled.raxen.components.entity.player.attributes.Attributes;
import me.unurled.raxen.manager.entity.PlayerManager;
@@ -14,6 +15,10 @@ import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerItemHeldEvent;
import org.bukkit.inventory.ItemStack;
+import java.lang.reflect.InvocationTargetException;
+
+import static me.unurled.raxen.utils.Utils.debug;
+
public class ItemHandEvent implements Listener {
private Raxen main;
@@ -36,25 +41,66 @@ public class ItemHandEvent implements Listener {
ItemStack newItem = player.getInventory().getItem(e.getNewSlot());
if(oldItem != null && oldItem.getType() != Material.AIR) {
NBTItem nbti = new NBTItem(oldItem);
- if(nbti.hasKey("SPEED")) {
+ for (String s : Attributes.getNameList()) {
+ if (nbti.hasKey(s.toUpperCase())) {
+ java.lang.reflect.Method method = null;
+ try {
+ method = pm.getClass().getMethod("getItem" + s);
+ } catch (SecurityException | NoSuchMethodException exception) {
+
+ }
+ if (method != null) {
+ me.unurled.raxen.components.entity.Attributes.Attribute attribute = null;
+ try {
+ attribute = (Attribute) method.invoke(pm, null);
+ } catch (InvocationTargetException | IllegalAccessException exception) {
+
+ }
+ if (attribute != null) {
+ attribute.remove(player, nbti.getInteger(s.toUpperCase()));
+ debug("removed " + s + " for player " + player.getName());
+ }
+ }
+ }
+ }
+ /*if(nbti.hasKey("SPEED")) {
pm.getItemSpeed().remove(player, nbti.getInteger("SPEED"));
}
if(nbti.hasKey("HEALTH")) {
pm.getItemHealth().remove(player, nbti.getInteger("HEALTH"));
-
}
if(nbti.hasKey("DEFENSE")) {
pm.getItemDefense().remove(player, nbti.getInteger("DEFENSE"));
-
}
if(nbti.hasKey("STRENGTH")) {
pm.getItemStrength().remove(player, nbti.getInteger("STRENGTH"));
-
- }
+ }*/
}
if(newItem != null && newItem.getType() != Material.AIR) {
NBTItem nbti = new NBTItem(newItem);
- if(nbti.hasKey("SPEED")) {
+ for (String s : Attributes.getNameList()) {
+ if (nbti.hasKey(s.toUpperCase())) {
+ java.lang.reflect.Method method = null;
+ try {
+ method = pm.getClass().getMethod("getItem" + s);
+ } catch (SecurityException | NoSuchMethodException exception) {
+
+ }
+ if (method != null) {
+ me.unurled.raxen.components.entity.Attributes.Attribute attribute = null;
+ try {
+ attribute = (Attribute) method.invoke(pm, null);
+ } catch (InvocationTargetException | IllegalAccessException exception) {
+
+ }
+ if (attribute != null) {
+ attribute.add(player, nbti.getInteger(s.toUpperCase()));
+ debug("add " + s + " for player " + player.getName());
+ }
+ }
+ }
+ }
+ /* if(nbti.hasKey("SPEED")) {
pm.getItemSpeed().add(player, nbti.getInteger("SPEED"));
}
if(nbti.hasKey("HEALTH")) {
@@ -67,8 +113,7 @@ public class ItemHandEvent implements Listener {
}
if(nbti.hasKey("STRENGTH")) {
pm.getItemStrength().add(player, nbti.getInteger("STRENGTH"));
-
- }
+ }*/
}
PlayerUtils.updateSkills(main, player);
}
diff --git a/src/main/java/me/unurled/raxen/listener/player/JoinEvent.java b/src/main/java/me/unurled/raxen/listener/player/JoinEvent.java
index 7227c11..1970c43 100644
--- a/src/main/java/me/unurled/raxen/listener/player/JoinEvent.java
+++ b/src/main/java/me/unurled/raxen/listener/player/JoinEvent.java
@@ -1,6 +1,7 @@
package me.unurled.raxen.listener.player;
import me.unurled.raxen.Raxen;
+import me.unurled.raxen.components.entity.player.PlayerUtils;
import me.unurled.raxen.components.entity.player.Scoreboard;
import me.unurled.raxen.components.resourcepack.ResourcePack;
import me.unurled.raxen.config.PlayerConfig;
@@ -38,6 +39,7 @@ public class JoinEvent implements Listener {
resourcePack.join(player);
playerManager.getRaxenPlayer(player).isRaxenPlayer(true);
playerManager.registerActionBar(player);
+ PlayerUtils.updateSkills(main, player);
}
}
diff --git a/src/main/java/me/unurled/raxen/listener/player/LeaveEvent.java b/src/main/java/me/unurled/raxen/listener/player/LeaveEvent.java
index 4f6cf22..0767d63 100644
--- a/src/main/java/me/unurled/raxen/listener/player/LeaveEvent.java
+++ b/src/main/java/me/unurled/raxen/listener/player/LeaveEvent.java
@@ -1,6 +1,7 @@
package me.unurled.raxen.listener.player;
import me.unurled.raxen.Raxen;
+import me.unurled.raxen.components.entity.player.PlayerUtils;
import me.unurled.raxen.config.PlayerConfig;
import me.unurled.raxen.manager.entity.PlayerManager;
import org.bukkit.entity.Player;
diff --git a/src/main/java/me/unurled/raxen/manager/entity/ItemManager.java b/src/main/java/me/unurled/raxen/manager/entity/ItemManager.java
index df7bad2..d48b52c 100644
--- a/src/main/java/me/unurled/raxen/manager/entity/ItemManager.java
+++ b/src/main/java/me/unurled/raxen/manager/entity/ItemManager.java
@@ -44,7 +44,7 @@ public class ItemManager {
private void registerItem() {
me.unurled.raxen.components.items.custom.List lisst = new me.unurled.raxen.components.items.custom.List(main);
for (Item items : lisst.getItems()) {
- items.registerItem(main);
+ registerItem(items.getItem());
}
}
diff --git a/src/main/java/me/unurled/raxen/manager/entity/PlayerManager.java b/src/main/java/me/unurled/raxen/manager/entity/PlayerManager.java
index d792d8a..95c1445 100644
--- a/src/main/java/me/unurled/raxen/manager/entity/PlayerManager.java
+++ b/src/main/java/me/unurled/raxen/manager/entity/PlayerManager.java
@@ -7,7 +7,6 @@ import me.unurled.raxen.components.entity.other.EntityNamespacedKey;
import me.unurled.raxen.components.entity.player.RaxenPlayer;
import me.unurled.raxen.components.entity.player.classes.Class;
import me.unurled.raxen.components.entity.player.classes.Classes;
-import net.kyori.adventure.text.Component;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;
import org.bukkit.scheduler.BukkitTask;
@@ -19,12 +18,12 @@ import static me.unurled.raxen.utils.Utils.*;
public class PlayerManager {
- private Raxen main;
- private HashMap actionBar = new HashMap<>();
- //TODO: player classes
- private HashMap classes = new HashMap<>();
+ private final Raxen main;
+ private final HashMap actionBar = new HashMap<>();
+ // TODO: player classes
+ private final HashMap classes = new HashMap<>();
@Getter
- private HashMap attribute = new HashMap<>();
+ private final HashMap attribute = new HashMap<>();
private Classes classesRegister;
diff --git a/src/main/java/me/unurled/raxen/utils/EntityUtils.java b/src/main/java/me/unurled/raxen/utils/EntityUtils.java
new file mode 100644
index 0000000..4a83bea
--- /dev/null
+++ b/src/main/java/me/unurled/raxen/utils/EntityUtils.java
@@ -0,0 +1,17 @@
+package me.unurled.raxen.utils;
+
+import org.bukkit.Bukkit;
+import org.bukkit.Location;
+import org.bukkit.craftbukkit.v1_19_R1.entity.CraftPlayer;
+import org.bukkit.entity.Entity;
+import org.bukkit.entity.Player;
+
+public class EntityUtils {
+
+ public void setSkin(Entity e) {
+ if (e instanceof Player) {
+
+ }
+// Bukkit.getWorld("aa").spawn(new Location(Bukkit.getWorld("aa"), 0, 0, 0), new CraftPlayer())
+ }
+}
diff --git a/src/main/java/me/unurled/raxen/utils/RayTrace.java b/src/main/java/me/unurled/raxen/utils/RayTrace.java
new file mode 100644
index 0000000..d8f2da9
--- /dev/null
+++ b/src/main/java/me/unurled/raxen/utils/RayTrace.java
@@ -0,0 +1,108 @@
+package me.unurled.raxen.utils;
+
+import org.bukkit.Effect;
+import org.bukkit.World;
+import org.bukkit.util.BoundingBox;
+import org.bukkit.util.Vector;
+
+import java.util.ArrayList;
+
+public class RayTrace {
+
+ //origin = start position
+ //direction = direction in which the raytrace will go
+ Vector origin, direction;
+
+ public RayTrace(Vector origin, Vector direction) {
+ this.origin = origin;
+ this.direction = direction;
+ }
+
+ //get a point on the raytrace at X blocks away
+ public Vector getPostion(double blocksAway) {
+ return origin.clone().add(direction.clone().multiply(blocksAway));
+ }
+
+ //checks if a position is on contained within the position
+ public boolean isOnLine(Vector position) {
+ double t = (position.getX() - origin.getX()) / direction.getX();
+ ;
+ if (position.getBlockY() == origin.getY() + (t * direction.getY()) && position.getBlockZ() == origin.getZ() + (t * direction.getZ())) {
+ return true;
+ }
+ return false;
+ }
+
+ //get all postions on a raytrace
+ public ArrayList traverse(double blocksAway, double accuracy) {
+ ArrayList positions = new ArrayList<>();
+ for (double d = 0; d <= blocksAway; d += accuracy) {
+ positions.add(getPostion(d));
+ }
+ return positions;
+ }
+
+ //intersection detection for current raytrace with return
+ public Vector positionOfIntersection(Vector min, Vector max, double blocksAway, double accuracy) {
+ ArrayList positions = traverse(blocksAway, accuracy);
+ for (Vector position : positions) {
+ if (intersects(position, min, max)) {
+ return position;
+ }
+ }
+ return null;
+ }
+
+ //intersection detection for current raytrace
+ public boolean intersects(Vector min, Vector max, double blocksAway, double accuracy) {
+ ArrayList positions = traverse(blocksAway, accuracy);
+ for (Vector position : positions) {
+ if (intersects(position, min, max)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ //bounding box instead of vector
+ public Vector positionOfIntersection(BoundingBox boundingBox, double blocksAway, double accuracy) {
+ ArrayList positions = traverse(blocksAway, accuracy);
+ for (Vector position : positions) {
+ if (intersects(position, boundingBox.getMin(), boundingBox.getMax())) {
+ return position;
+ }
+ }
+ return null;
+ }
+
+ //bounding box instead of vector
+ public boolean intersects(BoundingBox boundingBox, double blocksAway, double accuracy) {
+ ArrayList positions = traverse(blocksAway, accuracy);
+ for (Vector position : positions) {
+ if (intersects(position, boundingBox.getMin(), boundingBox.getMax())) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ //general intersection detection
+ public static boolean intersects(Vector position, Vector min, Vector max) {
+ if (position.getX() < min.getX() || position.getX() > max.getX()) {
+ return false;
+ } else if (position.getY() < min.getY() || position.getY() > max.getY()) {
+ return false;
+ } else if (position.getZ() < min.getZ() || position.getZ() > max.getZ()) {
+ return false;
+ }
+ return true;
+ }
+
+ //debug / effects
+ public void highlight(World world, double blocksAway, double accuracy){
+ for(Vector position : traverse(blocksAway,accuracy)){
+ world.playEffect(position.toLocation(world), Effect.BOW_FIRE,0);
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/me/unurled/raxen/utils/Utils.java b/src/main/java/me/unurled/raxen/utils/Utils.java
index cc95da3..17e08aa 100644
--- a/src/main/java/me/unurled/raxen/utils/Utils.java
+++ b/src/main/java/me/unurled/raxen/utils/Utils.java
@@ -98,18 +98,40 @@ public class Utils {
* @return a String
*/
public static String textCompToString(TextComponent comp) {
- MiniMessage minimessage = MiniMessage.builder()
+ /* MiniMessage minimessage = MiniMessage.builder()
.tags(TagResolver.builder()
.resolver(StandardTags.color())
.resolver(StandardTags.decorations())
.resolver(StandardTags.reset())
.build()
)
- .build();
+ .build(); */
return ChatColor.translateAlternateColorCodes('&', LegacyComponentSerializer.legacyAmpersand()
.serialize(comp));
}
+ /**
+ * transform a text-component to a string
+ * @param comp a string
+ * @return a String
+ */
+ public static String textCompToString(Component 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 void comp(Component comp) {
+ LegacyComponentSerializer.legacyAmpersand().serialize(comp);
+ }
+
/**
* Strips all color from a string.
* @param string the string that wants to be decolored.