0.0.4: Added custom damage system, little bit of custom entities

⚠ havn't tested at all, probably not working great, gonna make some update on it this week.
want to make a better system for custom mobs.
optimized imports with idea.
This commit is contained in:
unurled 2021-12-24 14:51:32 +01:00
parent 47efef1b71
commit d943dfadaa
33 changed files with 761 additions and 308 deletions

View file

@ -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

View file

@ -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)

24
pom.xml
View file

@ -6,7 +6,7 @@
<groupId>gq.unurled</groupId>
<artifactId>raxen</artifactId>
<version>0.0.3</version>
<version>0.0.4</version>
<packaging>jar</packaging>
<name>Raxen</name>
@ -66,6 +66,10 @@
</build>
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
<repository>
<id>papermc-repo</id>
<url>https://papermc.io/repo/repository/maven-public/</url>
@ -74,10 +78,6 @@
<id>sonatype</id>
<url>https://oss.sonatype.org/content/groups/public/</url>
</repository>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
<repository>
<id>codemc-repo</id>
<url>https://repo.codemc.org/repository/maven-public/</url>
@ -132,12 +132,14 @@
<version>2.9.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<!--
<dependency>
<groupId>com.github.simplix-softworks</groupId>
<artifactId>SimplixStorage</artifactId>
<version>3.2.3</version>
<scope>compile</scope>
</dependency>
-->
<dependency>
<groupId>com.comphenix.protocol</groupId>
<artifactId>ProtocolLib</artifactId>
@ -153,18 +155,6 @@
<systemPath>${project.basedir}/api/oraxen-1.117.0.jar</systemPath>
</dependency>
-->
<dependency>
<groupId>com.github.lokka30</groupId>
<artifactId>LevelledMobs</artifactId>
<version>3.2.3</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.github.Archy-X</groupId>
<artifactId>AureliumSkills</artifactId>
<version>Beta1.2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>net.luckperms</groupId>
<artifactId>api</artifactId>

View file

@ -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);

View file

@ -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;

View file

@ -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.*;

View file

@ -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 {

View file

@ -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;
}

View file

@ -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);
}
}

View file

@ -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;

View file

@ -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;
}
}

View file

@ -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;
}
}

View file

@ -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);
}
}

View file

@ -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");

View file

@ -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);
}
}
}
}

View file

@ -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);

View file

@ -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);
}
}

View file

@ -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<EntityType> 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");
}
}

View file

@ -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<String>) 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);
}
}

View file

@ -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);
}
}

View file

@ -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;

View file

@ -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;

View file

@ -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.");
}
}
}

View file

@ -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.*;

View file

@ -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":
}
}
}

View file

@ -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<Component> 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<Component> 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<Map>(){}.getType());
NBTItem nbti = new NBTItem(it);
str = str + "@#NBT#" + nbti.toString();
str = str + "@#SLOT#" + slot.toString();
return str;
}
public static class itemStackDeserilizeResult {
int slot;
ItemStack it;
public itemStackDeserilizeResult(Integer slot, ItemStack it) {
this.slot = slot;
this.it = it;
}
}
public static itemStackDeserilizeResult itemStackDeserilize(String str) {
List<String> mapp = Arrays.asList(str.split("@#NBT#"));
Gson gson = new Gson();
ItemStack it = new ItemStack(Material.AIR);
Integer slot = 0;
for (String s : mapp) {
if(s != null && s.length() > 2) {
try {
Map<String, Object> map = gson.fromJson(s, new TypeToken<Map<String, Object>>(){}.getType());
it = ItemStack.deserialize(map);
} catch (Exception e) {
List<String> mappp = Arrays.asList(s.split("@#SLOT#"));
for (String ss : mappp) {
try {
if (ss != null && ss.length() > 2) {
NBTItem nbti = new NBTItem(it);
String strrr = ss;
if (strrr.length() > 2) {
for (String strr : strrr.split(",")) {
if (!strr.equals("{") && !strr.equals("}")) {
strr = strr.replace("{", "");
strr = strr.replace("}", "");
String[] nb = strr.split(":");
nbti.setInteger(nb[0], Integer.valueOf(nb[1]));
it = nbti.getItem();
}
}
}
}
} catch (Exception ee) {
slot = Integer.valueOf(ss);
}
}
}
}
}
itemStackDeserilizeResult itt = new itemStackDeserilizeResult(slot, it);
return itt;
}
public static String listItemStackSerelize(List<String> list) {
Gson gson = new Gson();
String str = "";
for(String a : list) {
str = str + "@#NEW_ITEM#" + a;
}
return str;
}
public static ItemStack[] listItemStackDeserilize(String str) {
Gson gson = new Gson();
List<String> map = Arrays.asList(str.split("@#NEW_ITEM#"));
ArrayList<ItemStack> items = new ArrayList<ItemStack>();
for(String s : map) {
ItemStack itt;
if(s != null) {
itt = itemStackDeserilize(s).it;
if (itt != null && itt.getType() != Material.AIR) {
items.add(itt);
}
}
}
ItemStack[] it = items.toArray(new ItemStack[0]);
return it;
}
public static String attributes(String str) {
String stt = "";
if(str.contains("SPEED")) {
stt = "&fSpeed";
return stt;
}
if(str.contains("STRENGTH")) {
stt = "&4Strength";
return stt;
}
if(str.contains("HEALTH")) {
stt = "&cHealth";
return stt;
}
if(str.contains("DEFENSE")) {
stt = "&1Defense";
return stt;
}
else {
stt = "None";
return stt;
}
}
public static NBTItem setAttributes(String str, Integer nb, NBTItem nbti) {
switch (str) {
case "SPEED":
nbti.setInteger("SPEED", nb);
case "STRENGTH":
nbti.setInteger("STRENGTH", nb);
case "HEALTH":
nbti.setInteger("HEALTH", nb);
case "DEFENSE":
nbti.setInteger("DEFENSE", nb);
default:
error("Cant set Attributes with an unknown attribute.");
}
return nbti;
}
public static Integer getHealth(ItemStack it) {
NBTItem nbti = new NBTItem(it);
if (nbti.hasKey("HEALTH")){
return nbti.getInteger("HEALTH");
}
return 0;
}
public static Integer getSpeed(ItemStack it) {
NBTItem nbti = new NBTItem(it);
if (nbti.hasKey("SPEED")){
return nbti.getInteger("SPEED");
}
return 0;
}
public static Integer getDefense(ItemStack it) {
NBTItem nbti = new NBTItem(it);
if (nbti.hasKey("DEFENSE")){
return nbti.getInteger("DEFENSE");
}
return 0;
}
public static Integer getStrength(ItemStack it) {
NBTItem nbti = new NBTItem(it);
if (nbti.hasKey("STRENGTH")){
return nbti.getInteger("STRENGTH");
}
return 0;
}
public static ItemStack setLoreFromNBT(ItemStack it) {
ItemMeta itm = it.getItemMeta();
List<Component> lore = new ArrayList<>();
for (Component cp : itm.lore()) {
lore.add(cp);
}
NBTItem nbti = new NBTItem(it);
if(nbti.hasKey("SPEED")) {
if(lore.size() > 2) {
lore.add(2, Component.text(color(attributes("SPEED")) + nbti.getInteger("SPEED")));
} else {
lore.add(Component.text(color(attributes("SPEED")) + nbti.getInteger("SPEED")));
}
}
if(nbti.hasKey("HEALTH")) {
if(lore.size() > 1) {
lore.add(1, Component.text(color(attributes("HEALTH")) + nbti.getInteger("HEALTH")));
} else {
lore.add(Component.text(color(attributes("HEALTH")) + nbti.getInteger("HEALTH")));
}
}
if(nbti.hasKey("DEFENSE")) {
if(lore.size() > 3) {
lore.add(3, Component.text(color(attributes("DEFENSE")) + nbti.getInteger("DEFENSE")));
} else {
lore.add(Component.text(color(attributes("DEFENSE")) + nbti.getInteger("DEFENSE")));
}
}
if(nbti.hasKey("STRENGTH")) {
if(lore.size() > 3) {
lore.add(3, Component.text(color(attributes("STRENGTH")) + nbti.getInteger("STRENGTH")));
} else {
lore.add(Component.text(color(attributes("STRENGTH")) + nbti.getInteger("STRENGTH")));
}
}
itm.lore(lore);
it.setItemMeta(itm);
return it;
}
public static Attributes getNbtFromEntity(LivingEntity e) {
EntityEquipment equi = e.getEquipment();
Integer health = 0;
Integer defense = 0;
Integer speed = 0;
Integer strength = 0;
if (equi != null) {
if (equi.getItemInMainHand().getType() != Material.AIR || equi.getItemInMainHand() != null) {
ItemStack item = equi.getItemInMainHand();
health = health + getHealth(item);
defense = defense + getDefense(item);
speed = speed + getSpeed(item);
strength = strength + getStrength(item);
}
if (equi.getHelmet().getType() != Material.AIR || equi.getHelmet() != null) {
ItemStack item = equi.getHelmet();
health = health + getHealth(item);
defense = defense + getDefense(item);
speed = speed + getSpeed(item);
strength = strength + getStrength(item);
}
if (equi.getChestplate().getType() != Material.AIR || equi.getChestplate() != null) {
ItemStack item = equi.getChestplate();
health = health + getHealth(item);
defense = defense + getDefense(item);
speed = speed + getSpeed(item);
strength = strength + getStrength(item);
}
if (equi.getChestplate().getType() != Material.AIR || equi.getChestplate() != null) {
ItemStack item = equi.getChestplate();
health = health + getHealth(item);
defense = defense + getDefense(item);
speed = speed + getSpeed(item);
strength = strength + getStrength(item);
}
if (equi.getLeggings().getType() != Material.AIR || equi.getLeggings() != null) {
ItemStack item = equi.getLeggings();
health = health + getHealth(item);
defense = defense + getDefense(item);
speed = speed + getSpeed(item);
strength = strength + getStrength(item);
}
if (equi.getBoots().getType() != Material.AIR || equi.getBoots() != null) {
ItemStack item = equi.getBoots();
health = health + getHealth(item);
defense = defense + getDefense(item);
speed = speed + getSpeed(item);
strength = strength + getStrength(item);
}
}
Attributes attributes = new Attributes(health, defense, speed, strength);
return attributes;
}
}

View file

@ -5,7 +5,7 @@ import gq.unurled.raxen.config.Config;
import gq.unurled.raxen.manager.StorageManager;
import org.bukkit.entity.Player;
import java.sql.*;
import java.sql.SQLException;
public class Mysql {

View file

@ -9,7 +9,7 @@ import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.server.ServerListPingEvent;
import java.io.*;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;

View file

@ -10,15 +10,19 @@ public class Skills {
public static void updateSkills(Player player) {
gq.unurled.raxen.components.player.Skills skills = Raxen.getProfileManager().getPlayerProfile(player.getUniqueId()).getSkils();
int health, defense, speed, strength;
int health, itemHealth, defense, itemDefense, speed, itemSpeed, strength, itemDmg;
health = skills.getHealth();
itemHealth = skills.getItemHealth();
defense = skills.getDefense();
itemDefense = skills.getItemDefense();
speed = skills.getSpeed();
itemSpeed = skills.getItemSpeed();
strength = skills.getStrength();
player.getAttribute(Attribute.GENERIC_MAX_HEALTH).setBaseValue(20D + health / 100);
player.setWalkSpeed((float) (0.0 + (speed / 100) * 0.2));
player.setFlySpeed((float) (0.0 + (speed / 100) * 0.2));
msgPlayer(player, "Speed " + speed, "Health " + health, "Defense " + defense, "Strength " + strength);
itemDmg = skills.getItemDmg();
player.getAttribute(Attribute.GENERIC_MAX_HEALTH).setBaseValue(20D + (health + itemHealth) / 100);
player.setWalkSpeed((float) (0.0 + ((speed + itemSpeed) / 100) * 0.2));
player.setFlySpeed((float) (0.0 + ((speed + itemSpeed) / 100) * 0.2));
msgPlayer(player, "Speed " + (speed + itemSpeed), "Health " + (health + itemHealth), "Defense " + (defense+itemDefense), "Strength " + (strength+itemDmg));
}
}

View file

@ -1,20 +1,13 @@
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.Raxen;
import net.kyori.adventure.text.Component;
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;
import java.util.*;
import java.util.logging.Logger;
public class Utils {
@ -53,58 +46,12 @@ public class Utils {
}
}
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<Component> 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<Component> 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());
inv.setItem(in, Items.greyPane());
}
}
return inv;
@ -118,134 +65,6 @@ public class Utils {
return Component.text(color("&cAn Error has occurred. Please retry or contact an Admin."));
}
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<Map>(){}.getType());
NBTItem nbti = new NBTItem(it);
str = str + "@#NBT#" + nbti.toString();
str = str + "@#SLOT#" + slot.toString();
return str;
}
public static class itemStackDeserilizeResult {
int slot;
ItemStack it;
public itemStackDeserilizeResult(Integer slot, ItemStack it) {
this.slot = slot;
this.it = it;
}
}
public static itemStackDeserilizeResult itemStackDeserilize(String str) {
List<String> mapp = Arrays.asList(str.split("@#NBT#"));
Gson gson = new Gson();
ItemStack it = new ItemStack(Material.AIR);
Integer slot = 0;
for (String s : mapp) {
if(s != null && s.length() > 2) {
try {
Map<String, Object> map = gson.fromJson(s, new TypeToken<Map<String, Object>>(){}.getType());
it = ItemStack.deserialize(map);
} catch (Exception e) {
List<String> mappp = Arrays.asList(s.split("@#SLOT#"));
for (String ss : mappp) {
try {
if (ss != null && ss.length() > 2) {
NBTItem nbti = new NBTItem(it);
String strrr = ss;
if (strrr.length() > 2) {
for (String strr : strrr.split(",")) {
if (!strr.equals("{") && !strr.equals("}")) {
strr = strr.replace("{", "");
strr = strr.replace("}", "");
String[] nb = strr.split(":");
nbti.setInteger(nb[0], Integer.valueOf(nb[1]));
it = nbti.getItem();
}
}
}
}
} catch (Exception ee) {
slot = Integer.valueOf(ss);
}
}
}
}
}
itemStackDeserilizeResult itt = new itemStackDeserilizeResult(slot, it);
return itt;
}
public static String listItemStackSerelize(List<String> list) {
Gson gson = new Gson();
String str = "";
for(String a : list) {
str = str + "@#NEW_ITEM#" + a;
}
return str;
}
public static ItemStack[] listItemStackDeserilize(String str) {
Gson gson = new Gson();
List<String> map = Arrays.asList(str.split("@#NEW_ITEM#"));
ArrayList<ItemStack> items = new ArrayList<ItemStack>();
for(String s : map) {
ItemStack itt;
if(s != null) {
itt = itemStackDeserilize(s).it;
if (itt != null && itt.getType() != Material.AIR) {
items.add(itt);
}
}
}
ItemStack[] it = items.toArray(new ItemStack[0]);
return it;
}
public static String attributes(String str) {
String stt = "";
if(str.contains("SPEED")) {
stt = "&fSpeed";
return stt;
}
if(str.contains("STRENGTH")) {
stt = "&4Strength";
return stt;
}
if(str.contains("HEALTH")) {
stt = "&cHealth";
return stt;
}
if(str.contains("DEFENSE")) {
stt = "&1Defense";
return stt;
}
else {
stt = "None";
return stt;
}
}
public static NBTItem setAttributes(String str, Integer nb, NBTItem nbti) {
log(str);
switch (str) {
case "SPEED":
nbti.setInteger("SPEED", nb);
case "STRENGTH":
nbti.setInteger("STRENGTH", nb);
case "HEALTH":
nbti.setInteger("HEALTH", nb);
case "DEFENSE":
nbti.setInteger("DEFENSE", nb);
default:
error("Cant set Attributes with an unknown attribute.");
}
return nbti;
}
}

View file

@ -6,4 +6,8 @@ storage: "MONGODB" #switch between "MONGODB", "MYSQL"(not implemented), "YML"(cu
#if MYSQL
username: "Your-username-here"
password: "Your-password-here"
url: "url-to-the-server/db_Name"
url: "url-to-the-server/db_Name"
useResourcePack: true
resource_pack_url: "https://mc-packs.net/" # recommend to use https://mc-packs.net/ => free ressource pack hoster (will eventualy developp one myself but not atm)
resource_pack_sha1: "sha1hallo" # sha1 hash

View file

@ -8,6 +8,9 @@ strength: 100
custom_ability: "fireball"
isGlowing: true
isUnbreakable: true
custom_model_data: 123
Pack:
parent: "item/generated"
custom_model_data: 123
model: "red_wool"
lore:
- '&cSuper lore'

View file

@ -0,0 +1,31 @@
world: world
display_name: '&fLvl: {level} {name} &c❤{hp}&f/&c❤{hp_max}'
name: 'example mob'
base_mob: ZOMBIE
ID: EXAMPLE_MOB
level:
1-10:
hp_max: 100*{level}
speed: 100+({level}/10)
strength: 10*{level}
defense: 0
11-20:
hp_max: 200*{level}
speed: 100+({level}/10)
strength: 10*{level}
defense: 0
21-30:
hp_max: 200*{level}
speed: 100+({level}/10)
strength: 10*{level}
defense: 0
31-40:
hp_max: 200*{level}
speed: 100+({level}/10)
strength: 10*{level}
defense: 0
41-50:
hp_max: 200*{level}
speed: 100+({level}/10)
strength: 10*{level}
defense: 0