Save as branch

This commit is contained in:
unurled 2022-01-06 11:26:32 +01:00
parent 00cb3c2b8c
commit 5447241c89
34 changed files with 538 additions and 43 deletions

7
.gitignore vendored
View file

@ -6,8 +6,13 @@
.classpath .classpath
.project .project
api/ api/
libs/
*.iml *.iml
.gradle/
*.lock
*.iml *.iml
*.ipr *.ipr
*.iws *.iws
@ -103,6 +108,7 @@ $RECYCLE.BIN/
*.lnk *.lnk
target/ target/
build/
pom.xml.tag pom.xml.tag
pom.xml.releaseBackup pom.xml.releaseBackup
@ -118,3 +124,4 @@ buildNumber.properties
# Common working directory # Common working directory
run/ run/
/.gradle/

View file

@ -1,6 +1,9 @@
# Future for Raxen # Future for Raxen
#### to wich direction i want Raxen to go ?
#### to wich direction i want Raxen to go ?
Some RPG thing : Some RPG thing :
- Hypixel has Skyblock - Hypixel has Skyblock
- Wyncraft has Quests and Magic - Wyncraft has Quests and Magic
- Raxen must do : - Raxen must do :
@ -9,4 +12,15 @@ Some RPG thing :
- 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 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 - need custom items => partialy made => need custom resource pack support
- can use custom texture pack => in making - can use custom texture pack => in making
- protection and logging feature => coreprotect - protection and logging feature => coreprotect
- solo leveling inspired thing with player being mc of his onw world, can do side quest with every1, and can make a party to play, max of 4?:
- Gates:
- power: ranked from F, E, D, C, B, A, S, SS, SSS, world, unbeatable and so on
- Dungunes:
- differents types => labirynth, graves,abandoned castle, openfiled like jungles, forest, plains => all of them with night variant and many days to complete
- Monster:
- basic isekai manga sort of monster and also high leveled op monster king of something => bosses
- outbreak if gate isn't closed in time
- loots:
- items of different rarities with multiple purpose => medicinal, combat related type, defensive etc...
- leveling system for the player

View file

@ -5,6 +5,8 @@ Minecraft Plugin that do multiple stuff.
## Future of the Plugin/to do ## Future of the Plugin/to do
![Schema of Raxen](./main.svg)
[FUTURE.md](/FUTURE.md) [FUTURE.md](/FUTURE.md)
## Installing ## Installing

View file

@ -0,0 +1,145 @@
<mxfile host="65bd71144e">
<diagram id="Bpj--LMIeMzEPN0B_4bc" name="Page-1">
<mxGraphModel dx="879" dy="658" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="2" value="Raxen" style="whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="360" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="3" value="RPG" style="whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="120" y="100" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="5" value="" style="endArrow=classic;html=1;entryX=1;entryY=0;entryDx=0;entryDy=0;exitX=0;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="2" target="3">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="365" y="50" as="sourcePoint"/>
<mxPoint x="365" y="100" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="8" value="Custom Mobs" style="whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="180" y="240" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="9" value="Custom Items" style="whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="60" y="240" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="10" value="" style="endArrow=classic;html=1;exitX=0;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="3" target="9">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="120" y="150" as="sourcePoint"/>
<mxPoint x="170" y="100" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="12" value="" style="endArrow=classic;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=1;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="3" target="8">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="240" y="150" as="sourcePoint"/>
<mxPoint x="290" y="100" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="13" value="Dungeons accesed via Gates" style="whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="360" y="240" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="14" value="Combat" style="whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="360" y="100" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="15" value="" style="endArrow=classic;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="2" target="14">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="425" y="60" as="sourcePoint"/>
<mxPoint x="475" y="10" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="16" value="" style="endArrow=classic;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="14" target="13">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="400" y="420" as="sourcePoint"/>
<mxPoint x="420" y="210" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="17" value="" style="endArrow=classic;html=1;exitX=0;exitY=1;exitDx=0;exitDy=0;entryX=1;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="14" target="8">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="400" y="420" as="sourcePoint"/>
<mxPoint x="450" y="370" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="18" value="" style="endArrow=classic;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0.75;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="14" target="9">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="400" y="420" as="sourcePoint"/>
<mxPoint x="450" y="370" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="19" value="Attack with" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rotation=-30;" vertex="1" parent="1">
<mxGeometry x="250" y="150" width="70" height="20" as="geometry"/>
</mxCell>
<mxCell id="20" value="Attack" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rotation=-45;" vertex="1" parent="1">
<mxGeometry x="300" y="190" width="40" height="20" as="geometry"/>
</mxCell>
<mxCell id="22" value="" style="endArrow=classic;startArrow=classic;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="8" target="13">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="310" y="280" as="sourcePoint"/>
<mxPoint x="350" y="240" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="23" value="loots" style="whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="360" y="370" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="24" value="" style="endArrow=classic;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="13" target="23">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="380" y="300" as="sourcePoint"/>
<mxPoint x="430" y="250" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="25" value="" style="endArrow=classic;startArrow=classic;html=1;entryX=0;entryY=0;entryDx=0;entryDy=0;exitX=0.613;exitY=1.047;exitDx=0;exitDy=0;exitPerimeter=0;" edge="1" parent="1" source="9" target="23">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="200" y="380" as="sourcePoint"/>
<mxPoint x="250" y="330" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="26" value="obtain" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rotation=15;" vertex="1" parent="1">
<mxGeometry x="270" y="330" width="40" height="20" as="geometry"/>
</mxCell>
<mxCell id="27" value="better loots with better luck" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rotation=0;" vertex="1" parent="1">
<mxGeometry x="540" y="410" width="90" height="20" as="geometry"/>
</mxCell>
<mxCell id="28" value="Player" style="whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="600" y="100" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="29" value="" style="endArrow=classic;html=1;exitX=1;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="2" target="28">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="560" y="50" as="sourcePoint"/>
<mxPoint x="610" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="30" value="Stats" style="whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="660" y="240" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="31" value="" style="endArrow=classic;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="28" target="30">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="400" y="270" as="sourcePoint"/>
<mxPoint x="450" y="220" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="32" value="Custom Items" style="whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="540" y="240" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="33" value="" style="endArrow=classic;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="28" target="32">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="400" y="270" as="sourcePoint"/>
<mxPoint x="450" y="220" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="34" value="Health, Strength, Defense, Mana, Luck, Agility, Stamina" style="whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="660" y="370" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="35" value="" style="endArrow=classic;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="30" target="34">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="400" y="350" as="sourcePoint"/>
<mxPoint x="450" y="300" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="36" value="" style="endArrow=classic;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="34" target="23">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="575" y="420" as="sourcePoint"/>
<mxPoint x="625" y="370" as="targetPoint"/>
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

View file

@ -20,10 +20,9 @@ public final class Raxen extends JavaPlugin {
private static final String prefix = ChatColor.AQUA + "Rx" + ChatColor.LIGHT_PURPLE + "> "; private static final String prefix = ChatColor.AQUA + "Rx" + ChatColor.LIGHT_PURPLE + "> ";
@Getter @Getter
private static final String version = "0.4.4"; private static String version = "";
private final PluginManager pm = getServer().getPluginManager(); private final PluginManager pm = getServer().getPluginManager();
@Getter
private static Raxen plugin; private static Raxen plugin;
private static Logger logger; private static Logger logger;
@ -44,6 +43,8 @@ public final class Raxen extends JavaPlugin {
private ItemManager itemManager; private ItemManager itemManager;
@Getter @Getter
private ResourcePackManager resourcePackManager; private ResourcePackManager resourcePackManager;
@Getter
private LootManager lootManager;
@Getter @Getter
private ProtocolManager protocolManager; private ProtocolManager protocolManager;
@ -56,6 +57,7 @@ public final class Raxen extends JavaPlugin {
public void onEnable() { public void onEnable() {
plugin = this; plugin = this;
logger = getLogger(); logger = getLogger();
version = plugin.getDescription().getVersion();
//Config and storage sruff //Config and storage sruff
config = new Config(this); config = new Config(this);
@ -69,6 +71,7 @@ public final class Raxen extends JavaPlugin {
protocolManager = ProtocolLibrary.getProtocolManager(); protocolManager = ProtocolLibrary.getProtocolManager();
protoManager = new gq.unurled.raxen.manager.ProtocolManager(this); protoManager = new gq.unurled.raxen.manager.ProtocolManager(this);
resourcePackManager = new ResourcePackManager(this); resourcePackManager = new ResourcePackManager(this);
lootManager = new LootManager(this);
playerConfig = new PlayerConfig(this); playerConfig = new PlayerConfig(this);
luckPerm = new LuckPerm(this); luckPerm = new LuckPerm(this);

View file

@ -1,6 +1,6 @@
package gq.unurled.raxen.commands.admin; package gq.unurled.raxen.commands.admin;
import de.tr7zw.changeme.nbtapi.NBTItem; import de.tr7zw.nbtapi.NBTItem;
import gq.unurled.raxen.Raxen; import gq.unurled.raxen.Raxen;
import gq.unurled.raxen.components.player.Attributes.Attributes; import gq.unurled.raxen.components.player.Attributes.Attributes;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.Component;

View file

@ -17,7 +17,7 @@ public class Attributes {
public static Attribute getAttribute(Entity e) { public static Attribute getAttribute(Entity e) {
PersistentDataContainer data = e.getPersistentDataContainer(); PersistentDataContainer data = e.getPersistentDataContainer();
int maxHealth, health, itemHealth, defense, itemDefense, speed, itemSpeed, strength, itemDmg, maxMana, mana, itemMana; int maxHealth, health, itemHealth, defense, itemDefense, speed, itemSpeed, strength, itemDmg, maxMana, mana, itemMana, luck, itemLuck;
maxHealth = data.get(namespacedKey.maxHealth, PersistentDataType.INTEGER); maxHealth = data.get(namespacedKey.maxHealth, PersistentDataType.INTEGER);
health = data.get(namespacedKey.healthKey, PersistentDataType.INTEGER); health = data.get(namespacedKey.healthKey, PersistentDataType.INTEGER);
itemHealth = data.get(namespacedKey.itemHealthKey, PersistentDataType.INTEGER); itemHealth = data.get(namespacedKey.itemHealthKey, PersistentDataType.INTEGER);
@ -30,11 +30,13 @@ public class Attributes {
maxMana = data.get(namespacedKey.maxMana, PersistentDataType.INTEGER); maxMana = data.get(namespacedKey.maxMana, PersistentDataType.INTEGER);
mana = data.get(namespacedKey.mana, PersistentDataType.INTEGER); mana = data.get(namespacedKey.mana, PersistentDataType.INTEGER);
itemMana = data.get(namespacedKey.itemMana, PersistentDataType.INTEGER); itemMana = data.get(namespacedKey.itemMana, PersistentDataType.INTEGER);
luck = data.get(namespacedKey.luck, PersistentDataType.INTEGER);
itemLuck = data.get(namespacedKey.itemLuck, PersistentDataType.INTEGER);
return new Attribute(maxHealth, health, itemHealth, defense, itemDefense, speed, itemSpeed, strength, itemDmg, maxMana, mana, itemMana); return new Attribute(maxHealth, health, itemHealth, defense, itemDefense, speed, itemSpeed, strength, itemDmg, maxMana, mana, itemMana, luck, itemLuck);
} }
public static void setAttributes(Entity e, int health, int itemHealth, int defense, int itemDefense, int speed, int itemSpeed, int strength, int itemDmg, int maxMana, int mana, int itemMana) { public static void setAttributes(Entity e, int health, int itemHealth, int defense, int itemDefense, int speed, int itemSpeed, int strength, int itemDmg, int maxMana, int mana, int itemMana, int luck, int itemLuck) {
PersistentDataContainer data = e.getPersistentDataContainer(); PersistentDataContainer data = e.getPersistentDataContainer();
data.set(namespacedKey.healthKey, PersistentDataType.INTEGER, health); data.set(namespacedKey.healthKey, PersistentDataType.INTEGER, health);
data.set(namespacedKey.itemHealthKey, PersistentDataType.INTEGER, itemHealth); data.set(namespacedKey.itemHealthKey, PersistentDataType.INTEGER, itemHealth);
@ -47,6 +49,8 @@ public class Attributes {
data.set(namespacedKey.maxMana, PersistentDataType.INTEGER, maxMana); data.set(namespacedKey.maxMana, PersistentDataType.INTEGER, maxMana);
data.set(namespacedKey.mana, PersistentDataType.INTEGER, mana); data.set(namespacedKey.mana, PersistentDataType.INTEGER, mana);
data.set(namespacedKey.itemMana, PersistentDataType.INTEGER, itemMana); data.set(namespacedKey.itemMana, PersistentDataType.INTEGER, itemMana);
data.set(namespacedKey.luck, PersistentDataType.INTEGER, luck);
data.set(namespacedKey.itemLuck, PersistentDataType.INTEGER, itemLuck);
} }
public void removeSpeed(Entity e, int i) { public void removeSpeed(Entity e, int i) {
@ -77,6 +81,10 @@ public class Attributes {
PersistentDataContainer data = player.getPersistentDataContainer(); PersistentDataContainer data = player.getPersistentDataContainer();
data.set(namespacedKey.maxHealth, PersistentDataType.INTEGER, data.get(namespacedKey.maxHealth, PersistentDataType.INTEGER) -i); data.set(namespacedKey.maxHealth, PersistentDataType.INTEGER, data.get(namespacedKey.maxHealth, PersistentDataType.INTEGER) -i);
} }
public void removeLuck(Player player, int i) {
PersistentDataContainer data = player.getPersistentDataContainer();
data.set(namespacedKey.luck, PersistentDataType.INTEGER, data.get(namespacedKey.luck, PersistentDataType.INTEGER) -i);
}
public void removeItemSpeed(Entity e, int i) { public void removeItemSpeed(Entity e, int i) {
PersistentDataContainer data = e.getPersistentDataContainer(); PersistentDataContainer data = e.getPersistentDataContainer();
@ -94,6 +102,11 @@ public class Attributes {
PersistentDataContainer data = e.getPersistentDataContainer(); PersistentDataContainer data = e.getPersistentDataContainer();
data.set(namespacedKey.itemStrengthKey, PersistentDataType.INTEGER, data.get(namespacedKey.itemStrengthKey, PersistentDataType.INTEGER) -i); data.set(namespacedKey.itemStrengthKey, PersistentDataType.INTEGER, data.get(namespacedKey.itemStrengthKey, PersistentDataType.INTEGER) -i);
} }
public void removeItemLuck(Player player, int i) {
PersistentDataContainer data = player.getPersistentDataContainer();
data.set(namespacedKey.itemLuck, PersistentDataType.INTEGER, data.get(namespacedKey.itemLuck, PersistentDataType.INTEGER) -i);
}
public void addSpeed(Entity e, int i) { public void addSpeed(Entity e, int i) {
PersistentDataContainer data = e.getPersistentDataContainer(); PersistentDataContainer data = e.getPersistentDataContainer();
@ -123,6 +136,10 @@ public class Attributes {
PersistentDataContainer data = player.getPersistentDataContainer(); PersistentDataContainer data = player.getPersistentDataContainer();
data.set(namespacedKey.maxHealth, PersistentDataType.INTEGER, data.get(namespacedKey.maxHealth, PersistentDataType.INTEGER) +i); data.set(namespacedKey.maxHealth, PersistentDataType.INTEGER, data.get(namespacedKey.maxHealth, PersistentDataType.INTEGER) +i);
} }
public void addLuck(Player player, int i) {
PersistentDataContainer data = player.getPersistentDataContainer();
data.set(namespacedKey.luck, PersistentDataType.INTEGER, data.get(namespacedKey.luck, PersistentDataType.INTEGER) +i);
}
public void addItemSpeed(Entity e, int i) { public void addItemSpeed(Entity e, int i) {
PersistentDataContainer data = e.getPersistentDataContainer(); PersistentDataContainer data = e.getPersistentDataContainer();
@ -140,6 +157,10 @@ public class Attributes {
PersistentDataContainer data = e.getPersistentDataContainer(); PersistentDataContainer data = e.getPersistentDataContainer();
data.set(namespacedKey.itemStrengthKey, PersistentDataType.INTEGER, data.get(namespacedKey.itemStrengthKey, PersistentDataType.INTEGER) +i); data.set(namespacedKey.itemStrengthKey, PersistentDataType.INTEGER, data.get(namespacedKey.itemStrengthKey, PersistentDataType.INTEGER) +i);
} }
public void addItemLuck(Entity e, int i) {
PersistentDataContainer data = e.getPersistentDataContainer();
data.set(namespacedKey.itemLuck, PersistentDataType.INTEGER, data.get(namespacedKey.itemLuck, PersistentDataType.INTEGER) +i);
}
public Integer getSpeed(Entity e) { public Integer getSpeed(Entity e) {
PersistentDataContainer data = e.getPersistentDataContainer(); PersistentDataContainer data = e.getPersistentDataContainer();
@ -169,6 +190,10 @@ public class Attributes {
PersistentDataContainer data = player.getPersistentDataContainer(); PersistentDataContainer data = player.getPersistentDataContainer();
return data.get(namespacedKey.maxHealth, PersistentDataType.INTEGER); return data.get(namespacedKey.maxHealth, PersistentDataType.INTEGER);
} }
public Integer getLuck(Player player) {
PersistentDataContainer data = player.getPersistentDataContainer();
return data.get(namespacedKey.luck, PersistentDataType.INTEGER);
}
public Integer getItemSpeed(Entity e) { public Integer getItemSpeed(Entity e) {
PersistentDataContainer data = e.getPersistentDataContainer(); PersistentDataContainer data = e.getPersistentDataContainer();
@ -186,6 +211,10 @@ public class Attributes {
PersistentDataContainer data = e.getPersistentDataContainer(); PersistentDataContainer data = e.getPersistentDataContainer();
return data.get(namespacedKey.itemDefenseKey, PersistentDataType.INTEGER); return data.get(namespacedKey.itemDefenseKey, PersistentDataType.INTEGER);
} }
public Integer getItemLuck(Entity e) {
PersistentDataContainer data = e.getPersistentDataContainer();
return data.get(namespacedKey.itemLuck, PersistentDataType.INTEGER);
}
public void setHealth(Entity e, int i) { public void setHealth(Entity e, int i) {
PersistentDataContainer data = e.getPersistentDataContainer(); PersistentDataContainer data = e.getPersistentDataContainer();
@ -215,6 +244,10 @@ public class Attributes {
PersistentDataContainer data = player.getPersistentDataContainer(); PersistentDataContainer data = player.getPersistentDataContainer();
data.set(namespacedKey.maxHealth, PersistentDataType.INTEGER, i); data.set(namespacedKey.maxHealth, PersistentDataType.INTEGER, i);
} }
public void setLuck(Player player, int i) {
PersistentDataContainer data = player.getPersistentDataContainer();
data.set(namespacedKey.luck, PersistentDataType.INTEGER, i);
}
public void setItemHealth(Entity e, int i) { public void setItemHealth(Entity e, int i) {
PersistentDataContainer data = e.getPersistentDataContainer(); PersistentDataContainer data = e.getPersistentDataContainer();
@ -232,4 +265,8 @@ public class Attributes {
PersistentDataContainer data = e.getPersistentDataContainer(); PersistentDataContainer data = e.getPersistentDataContainer();
data.set(namespacedKey.itemStrengthKey, PersistentDataType.INTEGER, i); data.set(namespacedKey.itemStrengthKey, PersistentDataType.INTEGER, i);
} }
public void setItemLuck(Entity e, int i) {
PersistentDataContainer data = e.getPersistentDataContainer();
data.set(namespacedKey.itemLuck, PersistentDataType.INTEGER, i);
}
} }

View file

@ -21,6 +21,8 @@ public class EntityNamespacedKey {
maxMana = new NamespacedKey(main, "maxMana"); maxMana = new NamespacedKey(main, "maxMana");
mana = new NamespacedKey(main, "mana"); mana = new NamespacedKey(main, "mana");
itemMana = new NamespacedKey(main, "itemMana"); itemMana = new NamespacedKey(main, "itemMana");
luck = new NamespacedKey(main, "luck");
itemLuck = new NamespacedKey(main, "itemLuck");
inventory = new NamespacedKey(main, "inventory"); inventory = new NamespacedKey(main, "inventory");
storage = new NamespacedKey(main, "storage"); storage = new NamespacedKey(main, "storage");
@ -40,6 +42,8 @@ public class EntityNamespacedKey {
public final NamespacedKey maxMana; public final NamespacedKey maxMana;
public final NamespacedKey mana; public final NamespacedKey mana;
public final NamespacedKey itemMana; public final NamespacedKey itemMana;
public final NamespacedKey luck;
public final NamespacedKey itemLuck;
public final NamespacedKey inventory; public final NamespacedKey inventory;
public final NamespacedKey storage; public final NamespacedKey storage;

View file

@ -13,7 +13,9 @@ import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import static gq.unurled.raxen.utils.Items.*; import static gq.unurled.raxen.utils.Items.*;
import static gq.unurled.raxen.utils.Utils.fillGreyPane; import static gq.unurled.raxen.utils.Utils.fillGreyPane;
@ -33,7 +35,7 @@ public class ItemListGui implements Listener {
private Inventory inv8 = Bukkit.createInventory(null, 54, Component.text("Item List")); private Inventory inv8 = Bukkit.createInventory(null, 54, Component.text("Item List"));
private Inventory inv9 = Bukkit.createInventory(null, 54, Component.text("Item List")); private Inventory inv9 = Bukkit.createInventory(null, 54, Component.text("Item List"));
private List<ItemStack> itlist; private HashMap<String, ItemStack> itlist;
public ItemListGui(Raxen main) { public ItemListGui(Raxen main) {
this.main = main; this.main = main;
@ -50,7 +52,8 @@ public class ItemListGui implements Listener {
public Inventory getInventories() { public Inventory getInventories() {
Integer page = 1; Integer page = 1;
Integer item = -1; Integer item = -1;
for (ItemStack it : itlist) { for (Map.Entry<String, ItemStack> entry : itlist.entrySet()) {
ItemStack it = entry.getValue();
item++; item++;
if(item > 44 && item < 91) { if(item > 44 && item < 91) {
inv2.addItem(it); inv2.addItem(it);

View file

@ -6,7 +6,7 @@ public class Attributes {
@Getter @Getter
Integer health, speed, defense, strength; Integer health, speed, defense, strength;
public Attributes(Integer health, Integer defense, Integer speed, Integer strength) { public Attributes(Integer health, Integer defense, Integer speed, Integer strength, Integer mana, Integer luck) {
this.health = health; this.health = health;
this.defense = defense; this.defense = defense;
this.speed = speed; this.speed = speed;

View file

@ -6,7 +6,10 @@ public class NBT {
public static String SPEED = "SPEED"; public static String SPEED = "SPEED";
public static String STRENGTH = "STRENGTH"; public static String STRENGTH = "STRENGTH";
public static String DEFENSE = "DEFENSE"; public static String DEFENSE = "DEFENSE";
public static String LUCK = "LUCK";
public static String MANA = "MANA";
public static String ID = "ID"; public static String ID = "ID";
public static String CUSTOM_ABILITY = "CUSTOM_ABILITY"; public static String CUSTOM_ABILITY = "CUSTOM_ABILITY";
public static String DROP_RATE = "DROP_RATE";
} }

View file

@ -1,2 +1,24 @@
package gq.unurled.raxen.components.lootchest;public class GUI { package gq.unurled.raxen.components.lootchest;
import gq.unurled.raxen.Raxen;
import gq.unurled.raxen.manager.PlayerManager;
import lombok.Getter;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
public class GUI {
@Getter
private static Inventory inv = Bukkit.createInventory(null, 54);
private static PlayerManager playerManager;
public GUI(Raxen main) {
this.playerManager = main.getPlayerManager();
}
public static Inventory addItems(Player player) {
Integer luck = playerManager.getRaxenPlayer(player).getAttributes().getLuck(player);
return inv;
}
} }

View file

@ -1,2 +1,43 @@
package gq.unurled.raxen.components.lootchest.loots;public class CustomLoot { package gq.unurled.raxen.components.lootchest.loots;
import de.tr7zw.nbtapi.NBTItem;
import gq.unurled.raxen.Raxen;
import gq.unurled.raxen.components.items.NBT;
import org.bukkit.Location;
import org.bukkit.inventory.ItemStack;
import java.util.HashMap;
public class CustomLoot {
private Raxen main;
public HashMap<String, ItemStack> itlist;
public ItemStack item;
public Double drop_rate;
public LootItem lootItem;
public String ID;
public LootItem getLootItem() {
return new LootItem(registerItem(), drop_rate);
}
public ItemStack registerItem() {
return itlist.get(ID);
}
public Double getDrop_rate() {
NBTItem nbti = new NBTItem(item);
if (nbti.hasKey(NBT.DROP_RATE)) {
return nbti.getDouble(NBT.DROP_RATE);
}
return 0.0;
}
public void tryDropLoot(Location location) {
for (LootItem item : main.getLootManager().getLootTable()) {
item.tryDropItem(location);
}
}
} }

View file

@ -1,2 +1,29 @@
package gq.unurled.raxen.components.lootchest.loots;public class LootItem { package gq.unurled.raxen.components.lootchest.loots;
import org.bukkit.Location;
import org.bukkit.inventory.ItemStack;
import java.util.Random;
public class LootItem {
private ItemStack item;
private int min = 1, max = 1;
private double dropRate;
private static Random randomiser = new Random();
public LootItem(ItemStack item, double dropRate) {
this.item = item;
this.dropRate = dropRate;
}
public void tryDropItem(Location loc) {
if (Math.random() * 101 > dropRate) return;
int amount = randomiser.nextInt(max - min + 1) + min;
if (amount == 0) return;
ItemStack item = this.item.clone();
item.setAmount(amount);
loc.getWorld().dropItemNaturally(loc, item);
}
} }

View file

@ -1,2 +1,15 @@
package gq.unurled.raxen.components.lootchest.loots.test;public class TestSword { package gq.unurled.raxen.components.lootchest.loots.test;
import gq.unurled.raxen.Raxen;
import gq.unurled.raxen.components.lootchest.loots.CustomLoot;
public class TestSword extends CustomLoot {
public TestSword(Raxen main) {
this.itlist = main.getItemManager().getList();
this.ID = "BEST_NEW_ITEM";
this.drop_rate = getDrop_rate();
this.item = registerItem();
this.lootItem = getLootItem();
}
} }

View file

@ -7,9 +7,9 @@ public class Attribute {
@Getter @Getter
@Setter @Setter
private int maxHealth, health, itemHealth, defense, itemDefense, speed, itemSpeed, strength, itemStrength, maxMana, mana, itemMana; private int maxHealth, health, itemHealth, defense, itemDefense, speed, itemSpeed, strength, itemStrength, maxMana, mana, itemMana, luck, itemLuck;
public Attribute(int maxHealth, int health, int itemHealth, int defense, int itemDefense, int speed, int itemSpeed, int strength, int itemStrength, int maxMana, int mana, int itemMana) { public Attribute(int maxHealth, int health, int itemHealth, int defense, int itemDefense, int speed, int itemSpeed, int strength, int itemStrength, int maxMana, int mana, int itemMana, int luck, int itemLuck) {
this.maxHealth = maxHealth; this.maxHealth = maxHealth;
this.health = health; this.health = health;
this.itemHealth = itemHealth; this.itemHealth = itemHealth;
@ -22,5 +22,7 @@ public class Attribute {
this.maxHealth = maxMana; this.maxHealth = maxMana;
this.mana = mana; this.mana = mana;
this.itemMana = itemMana; this.itemMana = itemMana;
this.luck = luck;
this.itemLuck = itemLuck;
} }
} }

View file

@ -16,7 +16,7 @@ public class Attributes {
public static Attribute getAttribute(Player player) { public static Attribute getAttribute(Player player) {
PersistentDataContainer data = player.getPersistentDataContainer(); PersistentDataContainer data = player.getPersistentDataContainer();
int maxHealth, health, itemHealth, defense, itemDefense, speed, itemSpeed, strength, itemDmg, maxMana, mana, itemMana; int maxHealth, health, itemHealth, defense, itemDefense, speed, itemSpeed, strength, itemDmg, maxMana, mana, itemMana, luck, itemLuck;
maxHealth = data.get(namespacedKey.maxHealth, PersistentDataType.INTEGER); maxHealth = data.get(namespacedKey.maxHealth, PersistentDataType.INTEGER);
health = data.get(namespacedKey.healthKey, PersistentDataType.INTEGER); health = data.get(namespacedKey.healthKey, PersistentDataType.INTEGER);
itemHealth = data.get(namespacedKey.itemHealthKey, PersistentDataType.INTEGER); itemHealth = data.get(namespacedKey.itemHealthKey, PersistentDataType.INTEGER);
@ -29,10 +29,12 @@ public class Attributes {
mana = data.get(namespacedKey.mana, PersistentDataType.INTEGER); mana = data.get(namespacedKey.mana, PersistentDataType.INTEGER);
itemMana = data.get(namespacedKey.itemMana, PersistentDataType.INTEGER); itemMana = data.get(namespacedKey.itemMana, PersistentDataType.INTEGER);
maxMana = data.get(namespacedKey.maxMana, PersistentDataType.INTEGER); maxMana = data.get(namespacedKey.maxMana, PersistentDataType.INTEGER);
return new Attribute(maxHealth, health, itemHealth, defense, itemDefense, speed, itemSpeed, strength, itemDmg, maxMana, mana, itemMana); luck = data.get(namespacedKey.luck, PersistentDataType.INTEGER);
itemLuck = data.get(namespacedKey.itemLuck, PersistentDataType.INTEGER);
return new Attribute(maxHealth, health, itemHealth, defense, itemDefense, speed, itemSpeed, strength, itemDmg, maxMana, mana, itemMana, luck, itemLuck);
} }
public static void setAttributes(Player player, int maxHealth, int health, int itemHealth, int defense, int itemDefense, int speed, int itemSpeed, int strength, int itemDmg, int maxMana, int mana, int itemMana) { public static void setAttributes(Player player, int maxHealth, int health, int itemHealth, int defense, int itemDefense, int speed, int itemSpeed, int strength, int itemDmg, int maxMana, int mana, int itemMana, int luck, int itemLuck) {
PersistentDataContainer data = player.getPersistentDataContainer(); PersistentDataContainer data = player.getPersistentDataContainer();
data.set(namespacedKey.maxHealth, PersistentDataType.INTEGER, maxHealth); data.set(namespacedKey.maxHealth, PersistentDataType.INTEGER, maxHealth);
data.set(namespacedKey.healthKey, PersistentDataType.INTEGER, health); data.set(namespacedKey.healthKey, PersistentDataType.INTEGER, health);
@ -46,6 +48,8 @@ public class Attributes {
data.set(namespacedKey.maxMana, PersistentDataType.INTEGER, maxMana); data.set(namespacedKey.maxMana, PersistentDataType.INTEGER, maxMana);
data.set(namespacedKey.mana, PersistentDataType.INTEGER, mana); data.set(namespacedKey.mana, PersistentDataType.INTEGER, mana);
data.set(namespacedKey.itemMana, PersistentDataType.INTEGER, itemMana); data.set(namespacedKey.itemMana, PersistentDataType.INTEGER, itemMana);
data.set(namespacedKey.luck, PersistentDataType.INTEGER, luck);
data.set(namespacedKey.itemLuck, PersistentDataType.INTEGER, itemLuck);
} }
public void removeSpeed(Player player, int i) { public void removeSpeed(Player player, int i) {
@ -76,8 +80,10 @@ public class Attributes {
PersistentDataContainer data = player.getPersistentDataContainer(); PersistentDataContainer data = player.getPersistentDataContainer();
data.set(namespacedKey.maxHealth, PersistentDataType.INTEGER, data.get(namespacedKey.maxHealth, PersistentDataType.INTEGER) -i); data.set(namespacedKey.maxHealth, PersistentDataType.INTEGER, data.get(namespacedKey.maxHealth, PersistentDataType.INTEGER) -i);
} }
public void removeLuck(Player player, int i) {
PersistentDataContainer data = player.getPersistentDataContainer();
data.set(namespacedKey.luck, PersistentDataType.INTEGER, data.get(namespacedKey.luck, PersistentDataType.INTEGER) -i);
}
public void removeItemSpeed(Player player, int i) { public void removeItemSpeed(Player player, int i) {
PersistentDataContainer data = player.getPersistentDataContainer(); PersistentDataContainer data = player.getPersistentDataContainer();
@ -99,7 +105,10 @@ public class Attributes {
PersistentDataContainer data = player.getPersistentDataContainer(); PersistentDataContainer data = player.getPersistentDataContainer();
data.set(namespacedKey.itemMana, PersistentDataType.INTEGER, data.get(namespacedKey.itemMana, PersistentDataType.INTEGER) -i); data.set(namespacedKey.itemMana, PersistentDataType.INTEGER, data.get(namespacedKey.itemMana, PersistentDataType.INTEGER) -i);
} }
public void removeItemLuck(Player player, int i) {
PersistentDataContainer data = player.getPersistentDataContainer();
data.set(namespacedKey.itemLuck, PersistentDataType.INTEGER, data.get(namespacedKey.itemLuck, PersistentDataType.INTEGER) -i);
}
public void addSpeed(Player player, int i) { public void addSpeed(Player player, int i) {
PersistentDataContainer data = player.getPersistentDataContainer(); PersistentDataContainer data = player.getPersistentDataContainer();
@ -129,6 +138,10 @@ public class Attributes {
PersistentDataContainer data = player.getPersistentDataContainer(); PersistentDataContainer data = player.getPersistentDataContainer();
data.set(namespacedKey.maxHealth, PersistentDataType.INTEGER, data.get(namespacedKey.maxHealth, PersistentDataType.INTEGER) +i); data.set(namespacedKey.maxHealth, PersistentDataType.INTEGER, data.get(namespacedKey.maxHealth, PersistentDataType.INTEGER) +i);
} }
public void addLuck(Player player, int i) {
PersistentDataContainer data = player.getPersistentDataContainer();
data.set(namespacedKey.luck, PersistentDataType.INTEGER, data.get(namespacedKey.luck, PersistentDataType.INTEGER) +i);
}
public void addItemSpeed(Player player, int i) { public void addItemSpeed(Player player, int i) {
PersistentDataContainer data = player.getPersistentDataContainer(); PersistentDataContainer data = player.getPersistentDataContainer();
@ -150,6 +163,10 @@ public class Attributes {
PersistentDataContainer data = player.getPersistentDataContainer(); PersistentDataContainer data = player.getPersistentDataContainer();
data.set(namespacedKey.itemMana, PersistentDataType.INTEGER, data.get(namespacedKey.itemMana, PersistentDataType.INTEGER) +i); data.set(namespacedKey.itemMana, PersistentDataType.INTEGER, data.get(namespacedKey.itemMana, PersistentDataType.INTEGER) +i);
} }
public void addItemLuck(Player player, int i) {
PersistentDataContainer data = player.getPersistentDataContainer();
data.set(namespacedKey.itemLuck, PersistentDataType.INTEGER, data.get(namespacedKey.itemLuck, PersistentDataType.INTEGER) +i);
}
public Integer getSpeed(Player player) { public Integer getSpeed(Player player) {
PersistentDataContainer data = player.getPersistentDataContainer(); PersistentDataContainer data = player.getPersistentDataContainer();
@ -179,6 +196,10 @@ public class Attributes {
PersistentDataContainer data = player.getPersistentDataContainer(); PersistentDataContainer data = player.getPersistentDataContainer();
return data.get(namespacedKey.maxHealth, PersistentDataType.INTEGER); return data.get(namespacedKey.maxHealth, PersistentDataType.INTEGER);
} }
public Integer getLuck(Player player) {
PersistentDataContainer data = player.getPersistentDataContainer();
return data.get(namespacedKey.luck, PersistentDataType.INTEGER);
}
public Integer getItemSpeed(Player player) { public Integer getItemSpeed(Player player) {
PersistentDataContainer data = player.getPersistentDataContainer(); PersistentDataContainer data = player.getPersistentDataContainer();
@ -200,6 +221,10 @@ public class Attributes {
PersistentDataContainer data = player.getPersistentDataContainer(); PersistentDataContainer data = player.getPersistentDataContainer();
return data.get(namespacedKey.itemMana, PersistentDataType.INTEGER); return data.get(namespacedKey.itemMana, PersistentDataType.INTEGER);
} }
public Integer getItemLuck(Player player) {
PersistentDataContainer data = player.getPersistentDataContainer();
return data.get(namespacedKey.itemLuck, PersistentDataType.INTEGER);
}
public void setHealth(Player player, int i) { public void setHealth(Player player, int i) {
PersistentDataContainer data = player.getPersistentDataContainer(); PersistentDataContainer data = player.getPersistentDataContainer();
@ -229,6 +254,10 @@ public class Attributes {
PersistentDataContainer data = player.getPersistentDataContainer(); PersistentDataContainer data = player.getPersistentDataContainer();
data.set(namespacedKey.maxHealth, PersistentDataType.INTEGER, i); data.set(namespacedKey.maxHealth, PersistentDataType.INTEGER, i);
} }
public void setLuck(Player player, int i) {
PersistentDataContainer data = player.getPersistentDataContainer();
data.set(namespacedKey.luck, PersistentDataType.INTEGER, i);
}
public void setItemHealth(Player player, int i) { public void setItemHealth(Player player, int i) {
PersistentDataContainer data = player.getPersistentDataContainer(); PersistentDataContainer data = player.getPersistentDataContainer();
@ -250,4 +279,8 @@ public class Attributes {
PersistentDataContainer data = player.getPersistentDataContainer(); PersistentDataContainer data = player.getPersistentDataContainer();
data.set(namespacedKey.mana, PersistentDataType.INTEGER, i); data.set(namespacedKey.mana, PersistentDataType.INTEGER, i);
} }
public void setItemLuck(Player player, int i) {
PersistentDataContainer data = player.getPersistentDataContainer();
data.set(namespacedKey.itemLuck, PersistentDataType.INTEGER, i);
}
} }

View file

@ -45,8 +45,8 @@ public class RaxenPlayer {
public Attribute createNewAttribute() { public Attribute createNewAttribute() {
debug(main, "Created new Attribute"); debug(main, "Created new Attribute");
attributes.setAttributes(player, 100, 100,0,50,0,100,0,100,0, 100, 100, 0); attributes.setAttributes(player, 100, 100,0,50,0,100,0,100,0, 100, 100, 0, 10, 0);
return new Attribute(100,100,0,50,0,100,0,100,0, 100, 100, 0); return new Attribute(100,100,0,50,0,100,0,100,0, 100, 100, 0, 10, 0);
} }
public void setStorages(org.bukkit.inventory.Inventory inv, org.bukkit.inventory.Inventory ec) { public void setStorages(org.bukkit.inventory.Inventory inv, org.bukkit.inventory.Inventory ec) {

View file

@ -68,6 +68,8 @@ public class PlayerConfig {
.append("maxMana", attributes.getMaxMana(player)) .append("maxMana", attributes.getMaxMana(player))
.append("mana", attributes.getMana(player)) .append("mana", attributes.getMana(player))
.append("itemMana", attributes.getItemMana(player)) .append("itemMana", attributes.getItemMana(player))
.append("luck", attributes.getLuck(player))
.append("itemLuck", attributes.getItemLuck(player))
.append("inv", invstr); .append("inv", invstr);
if (playerManager.getRaxenPlayer(player).getStorage() != null) { if (playerManager.getRaxenPlayer(player).getStorage() != null) {
if(playerManager.getRaxenPlayer(player).getStorage().getEc() != null) { if(playerManager.getRaxenPlayer(player).getStorage().getEc() != null) {
@ -111,6 +113,8 @@ public class PlayerConfig {
config.set("maxMana", attributes.getMaxMana(player)); config.set("maxMana", attributes.getMaxMana(player));
config.set("mana", attributes.getMana(player)); config.set("mana", attributes.getMana(player));
config.set("itemMana", attributes.getItemMana(player)); config.set("itemMana", attributes.getItemMana(player));
config.set("luck", attributes.getLuck(player));
config.set("itemLuck", attributes.getItemLuck(player));
config.set("inv", invstr); config.set("inv", invstr);
if (playerManager.getRaxenPlayer(player).getStorage() != null) { if (playerManager.getRaxenPlayer(player).getStorage() != null) {
if(playerManager.getRaxenPlayer(player).getStorage().getEc() != null) { if(playerManager.getRaxenPlayer(player).getStorage().getEc() != null) {
@ -148,7 +152,8 @@ public class PlayerConfig {
attributes.setAttributes(player, playerDoc.getInteger("maxHealth"), playerDoc.getInteger("health"), playerDoc.getInteger("itemHealth"), playerDoc.getInteger("defense"), attributes.setAttributes(player, playerDoc.getInteger("maxHealth"), playerDoc.getInteger("health"), playerDoc.getInteger("itemHealth"), playerDoc.getInteger("defense"),
playerDoc.getInteger("itemDefense"), playerDoc.getInteger("speed"), playerDoc.getInteger("itemSpeed"), playerDoc.getInteger("itemDefense"), playerDoc.getInteger("speed"), playerDoc.getInteger("itemSpeed"),
playerDoc.getInteger("strength"), playerDoc.getInteger("itemStrength"), playerDoc.getInteger("strength"), playerDoc.getInteger("itemStrength"),
playerDoc.getInteger("maxMana"), playerDoc.getInteger("mana"), playerDoc.getInteger("itemMana")); playerDoc.getInteger("maxMana"), playerDoc.getInteger("mana"), playerDoc.getInteger("itemMana"),
playerDoc.getInteger("luck"), playerDoc.getInteger("itemLuck"));
Inventory ec = Bukkit.createInventory(null, 54, Component.text("Ender Chest")); Inventory ec = Bukkit.createInventory(null, 54, Component.text("Ender Chest"));
if(playerDoc.getString("ec") != null) { if(playerDoc.getString("ec") != null) {
ec = setItemsToInventory(listItemStackDeserilize(playerDoc.getString("ec")), ec); ec = setItemsToInventory(listItemStackDeserilize(playerDoc.getString("ec")), ec);
@ -171,7 +176,8 @@ public class PlayerConfig {
config.getInt("defense"), config.getInt("itemDefense"), config.getInt("defense"), config.getInt("itemDefense"),
config.getInt("speed"), config.getInt("itemSpeed"), config.getInt("speed"), config.getInt("itemSpeed"),
config.getInt("strength"), config.getInt("itemStrength"), config.getInt("strength"), config.getInt("itemStrength"),
config.getInt("maxMana"), config.getInt("mana"), config.getInt("itemMana")); config.getInt("maxMana"), config.getInt("mana"), config.getInt("itemMana"),
config.getInt("luck"), config.getInt("itemLuck"));
Inventory ec = Bukkit.createInventory(null, 54, Component.text("Ender Chest")); Inventory ec = Bukkit.createInventory(null, 54, Component.text("Ender Chest"));
if((String) config.get("ec") != null) { if((String) config.get("ec") != null) {
ec = setItemsToInventory(listItemStackDeserilize((String) config.get("ec")), ec); ec = setItemsToInventory(listItemStackDeserilize((String) config.get("ec")), ec);
@ -200,7 +206,10 @@ public class PlayerConfig {
listInv.add(s); listInv.add(s);
} }
} }
String invstr = Items.listItemStackSerelize(listInv); String invstr= "";
if (listInv.size() > 0) {
invstr = Items.listItemStackSerelize(listInv);
}
debug(main, "saving..."); debug(main, "saving...");
String storage = sto.getConfig().getString("storage"); String storage = sto.getConfig().getString("storage");
saveUsingMongoDB(player, attributes, invstr, reverse); saveUsingMongoDB(player, attributes, invstr, reverse);

View file

@ -1,7 +1,7 @@
package gq.unurled.raxen.listener.player; package gq.unurled.raxen.listener.player;
import com.destroystokyo.paper.event.player.PlayerArmorChangeEvent; import com.destroystokyo.paper.event.player.PlayerArmorChangeEvent;
import de.tr7zw.changeme.nbtapi.NBTItem; import de.tr7zw.nbtapi.NBTItem;
import gq.unurled.raxen.Raxen; import gq.unurled.raxen.Raxen;
import gq.unurled.raxen.components.player.Attributes.Attributes; import gq.unurled.raxen.components.player.Attributes.Attributes;
import org.bukkit.Material; import org.bukkit.Material;

View file

@ -1,2 +1,37 @@
package gq.unurled.raxen.listener.player;public class ClickBlockEvent { package gq.unurled.raxen.listener.player;
import gq.unurled.raxen.Raxen;
import gq.unurled.raxen.components.lootchest.GUI;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.Inventory;
public class ClickBlockEvent implements Listener {
private Raxen main;
private GUI gui;
public ClickBlockEvent(Raxen main) {
this.main = main;
this.gui = new GUI(main);
}
@EventHandler
public void ClickEvent(PlayerInteractEvent e) {
Player player = e.getPlayer();
Block block = e.getClickedBlock();
Action action = e.getAction();
if (action.isRightClick()) {
if (block.getType() == Material.CHEST) {
player.closeInventory();
Inventory inv = gui.addItems(player);
player.openInventory(inv);
}
}
}
} }

View file

@ -1,6 +1,6 @@
package gq.unurled.raxen.listener.player; package gq.unurled.raxen.listener.player;
import de.tr7zw.changeme.nbtapi.NBTItem; import de.tr7zw.nbtapi.NBTItem;
import gq.unurled.raxen.Raxen; import gq.unurled.raxen.Raxen;
import gq.unurled.raxen.components.player.Attributes.Attributes; import gq.unurled.raxen.components.player.Attributes.Attributes;
import org.bukkit.Material; import org.bukkit.Material;

View file

@ -26,6 +26,6 @@ public class LeaveEvent implements Listener {
Player player = e.getPlayer(); Player player = e.getPlayer();
playerConfig.savePlayerConfig(player); playerConfig.savePlayerConfig(player);
playerManager.getRaxenPlayer(player).isRaxenPlayer(false); playerManager.getRaxenPlayer(player).isRaxenPlayer(false);
playerManager.unregisterActionBar(player); playerManager.unRegisterActionBar(player);
} }
} }

View file

@ -1,6 +1,6 @@
package gq.unurled.raxen.manager; package gq.unurled.raxen.manager;
import de.tr7zw.changeme.nbtapi.NBTItem; import de.tr7zw.nbtapi.NBTItem;
import gq.unurled.raxen.Raxen; import gq.unurled.raxen.Raxen;
import gq.unurled.raxen.components.items.NBT; import gq.unurled.raxen.components.items.NBT;
import lombok.Getter; import lombok.Getter;
@ -15,6 +15,7 @@ import org.bukkit.inventory.meta.ItemMeta;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
@ -25,7 +26,7 @@ public class ItemManager {
private final Raxen main; private final Raxen main;
@Getter @Getter
private List<ItemStack> list = new ArrayList<>(); private HashMap<String, ItemStack> list = new HashMap<>();
private NBT nbt = new NBT(); private NBT nbt = new NBT();
public ItemManager(Raxen main) { public ItemManager(Raxen main) {
@ -126,8 +127,9 @@ public class ItemManager {
nbti.setInteger(NBT.STRENGTH, file.getInt("strength")); nbti.setInteger(NBT.STRENGTH, file.getInt("strength"));
nbti.setString(NBT.ID, file.getString("customId")); nbti.setString(NBT.ID, file.getString("customId"));
nbti.setString(NBT.CUSTOM_ABILITY, file.getString("custom_ability")); nbti.setString(NBT.CUSTOM_ABILITY, file.getString("custom_ability"));
nbti.setDouble(NBT.DROP_RATE, file.getDouble("drop_rate"));
it = nbti.getItem(); it = nbti.getItem();
it = setLoreFromNBT(it); it = setLoreFromNBT(it);
list.add(it); list.put(file.getString("customId"), it);
} }
} }

View file

@ -27,5 +27,6 @@ public class ListenerManager {
this.pm.registerEvents(main.getCommandManager().getItemListCommand().getItemListGui(), main); this.pm.registerEvents(main.getCommandManager().getItemListCommand().getItemListGui(), main);
this.pm.registerEvents(new DamageEntity(main), main); this.pm.registerEvents(new DamageEntity(main), main);
this.pm.registerEvents(new SpawnEvent(main), main); this.pm.registerEvents(new SpawnEvent(main), main);
this.pm.registerEvents(new ClickBlockEvent(main), main);
} }
} }

View file

@ -1,2 +1,20 @@
package gq.unurled.raxen.manager;public class LootManager { package gq.unurled.raxen.manager;
import gq.unurled.raxen.Raxen;
import gq.unurled.raxen.components.lootchest.loots.LootItem;
import lombok.Getter;
import java.util.List;
public class LootManager {
private Raxen main;
@Getter
private List<LootItem> lootTable;
public LootManager(Raxen main) {
this.main = main;
}
} }

View file

@ -40,11 +40,14 @@ public class PlayerManager {
} }
} }
public void unregisterActionBar(Player player) { public void unRegisterActionBar(Player player) {
if(actionBar.containsKey(player.getUniqueId())) { if(actionBar.containsKey(player.getUniqueId())) {
BukkitTask task = actionBar.get(player.getUniqueId()); BukkitTask task = actionBar.get(player.getUniqueId());
task.cancel(); task.cancel();
actionBar.remove(player.getUniqueId()); actionBar.remove(player.getUniqueId());
} }
} }
public void unEegisterRaxenPlayer(Player player) {
}
} }

View file

@ -2,11 +2,12 @@ package gq.unurled.raxen.utils;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken; import com.google.gson.reflect.TypeToken;
import de.tr7zw.changeme.nbtapi.NBTItem; import de.tr7zw.nbtapi.NBTItem;
import gq.unurled.raxen.components.items.Attributes; import gq.unurled.raxen.components.items.Attributes;
import gq.unurled.raxen.components.items.NBT; import gq.unurled.raxen.components.items.NBT;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.Component;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.craftbukkit.v1_18_R1.inventory.CraftItemStack;
import org.bukkit.enchantments.Enchantment; import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.LivingEntity; import org.bukkit.entity.LivingEntity;
import org.bukkit.inventory.*; import org.bukkit.inventory.*;
@ -67,8 +68,9 @@ public class Items {
public static String itemStackSerilize(ItemStack it, Integer slot) { public static String itemStackSerilize(ItemStack it, Integer slot) {
Gson gson = new Gson(); Gson gson = new Gson();
//String str = gson.toJson(it.serialize()); String str = gson.toJson(it.serialize());
String str = gson.toJson(it.serialize(), new TypeToken<Map>(){}.getType()); net.minecraft.world.item.ItemStack itm = CraftItemStack.asNMSCopy(it);
//String str = gson.toJson(it.serialize(), new TypeToken<Map>(){}.getType());
NBTItem nbti = new NBTItem(it); NBTItem nbti = new NBTItem(it);
str = str + "@#NBT#" + nbti.toString(); str = str + "@#NBT#" + nbti.toString();
str = str + "@#SLOT#" + slot.toString(); str = str + "@#SLOT#" + slot.toString();
@ -216,6 +218,10 @@ public class Items {
nbti.setInteger(NBT.HEALTH, nb); nbti.setInteger(NBT.HEALTH, nb);
case "DEFENSE": case "DEFENSE":
nbti.setInteger(NBT.DEFENSE, nb); nbti.setInteger(NBT.DEFENSE, nb);
case "LUCK":
nbti.setInteger(NBT.LUCK, nb);
case "MANA":
nbti.setInteger(NBT.MANA, nb);
default: default:
error("Cant set Attributes with an unknown attribute."); error("Cant set Attributes with an unknown attribute.");
} }
@ -250,6 +256,20 @@ public class Items {
} }
return 0; return 0;
} }
public static Integer getLuck(ItemStack it) {
NBTItem nbti = new NBTItem(it);
if (nbti.hasKey(NBT.LUCK)){
return nbti.getInteger(NBT.LUCK);
}
return 0;
}
public static Integer getMana(ItemStack it) {
NBTItem nbti = new NBTItem(it);
if (nbti.hasKey(NBT.MANA)){
return nbti.getInteger(NBT.MANA);
}
return 0;
}
public static ItemStack setLoreFromNBT(ItemStack it) { public static ItemStack setLoreFromNBT(ItemStack it) {
ItemMeta itm = it.getItemMeta(); ItemMeta itm = it.getItemMeta();
@ -286,6 +306,20 @@ public class Items {
lore.add(Component.text(color(attributes("STRENGTH")) + nbti.getInteger(NBT.STRENGTH))); lore.add(Component.text(color(attributes("STRENGTH")) + nbti.getInteger(NBT.STRENGTH)));
} }
} }
if(nbti.hasKey(NBT.MANA)) {
if(lore.size() > 3) {
lore.add(3, Component.text(color(attributes("MANA")) + nbti.getInteger(NBT.MANA)));
} else {
lore.add(Component.text(color(attributes("MANA")) + nbti.getInteger(NBT.MANA)));
}
}
if(nbti.hasKey(NBT.LUCK)) {
if(lore.size() > 3) {
lore.add(3, Component.text(color(attributes("LUCK")) + nbti.getInteger(NBT.LUCK)));
} else {
lore.add(Component.text(color(attributes("LUCK")) + nbti.getInteger(NBT.LUCK)));
}
}
itm.lore(lore); itm.lore(lore);
it.setItemMeta(itm); it.setItemMeta(itm);
return it; return it;
@ -297,6 +331,8 @@ public class Items {
Integer defense = 0; Integer defense = 0;
Integer speed = 0; Integer speed = 0;
Integer strength = 0; Integer strength = 0;
Integer mana = 0;
Integer luck = 0;
if (equi != null) { if (equi != null) {
if (equi.getItemInMainHand().getType() != Material.AIR && equi.getHelmet() != null) { if (equi.getItemInMainHand().getType() != Material.AIR && equi.getHelmet() != null) {
ItemStack item = equi.getItemInMainHand(); ItemStack item = equi.getItemInMainHand();
@ -304,6 +340,8 @@ public class Items {
defense = defense + getDefense(item); defense = defense + getDefense(item);
speed = speed + getSpeed(item); speed = speed + getSpeed(item);
strength = strength + getStrength(item); strength = strength + getStrength(item);
mana = mana + getMana(item);
luck = luck + getLuck(item);
} }
if (equi.getHelmet().getType() != Material.AIR && equi.getHelmet() != null) { if (equi.getHelmet().getType() != Material.AIR && equi.getHelmet() != null) {
ItemStack item = equi.getHelmet(); ItemStack item = equi.getHelmet();
@ -311,6 +349,8 @@ public class Items {
defense = defense + getDefense(item); defense = defense + getDefense(item);
speed = speed + getSpeed(item); speed = speed + getSpeed(item);
strength = strength + getStrength(item); strength = strength + getStrength(item);
mana = mana + getMana(item);
luck = luck + getLuck(item);
} }
if (equi.getChestplate().getType() != Material.AIR && equi.getChestplate() != null) { if (equi.getChestplate().getType() != Material.AIR && equi.getChestplate() != null) {
ItemStack item = equi.getChestplate(); ItemStack item = equi.getChestplate();
@ -318,6 +358,8 @@ public class Items {
defense = defense + getDefense(item); defense = defense + getDefense(item);
speed = speed + getSpeed(item); speed = speed + getSpeed(item);
strength = strength + getStrength(item); strength = strength + getStrength(item);
mana = mana + getMana(item);
luck = luck + getLuck(item);
} }
if (equi.getChestplate().getType() != Material.AIR && equi.getChestplate() != null) { if (equi.getChestplate().getType() != Material.AIR && equi.getChestplate() != null) {
ItemStack item = equi.getChestplate(); ItemStack item = equi.getChestplate();
@ -325,6 +367,8 @@ public class Items {
defense = defense + getDefense(item); defense = defense + getDefense(item);
speed = speed + getSpeed(item); speed = speed + getSpeed(item);
strength = strength + getStrength(item); strength = strength + getStrength(item);
mana = mana + getMana(item);
luck = luck + getLuck(item);
} }
if (equi.getLeggings().getType() != Material.AIR && equi.getLeggings() != null) { if (equi.getLeggings().getType() != Material.AIR && equi.getLeggings() != null) {
ItemStack item = equi.getLeggings(); ItemStack item = equi.getLeggings();
@ -332,6 +376,8 @@ public class Items {
defense = defense + getDefense(item); defense = defense + getDefense(item);
speed = speed + getSpeed(item); speed = speed + getSpeed(item);
strength = strength + getStrength(item); strength = strength + getStrength(item);
mana = mana + getMana(item);
luck = luck + getLuck(item);
} }
if (equi.getBoots().getType() != Material.AIR && equi.getBoots() != null) { if (equi.getBoots().getType() != Material.AIR && equi.getBoots() != null) {
ItemStack item = equi.getBoots(); ItemStack item = equi.getBoots();
@ -339,9 +385,11 @@ public class Items {
defense = defense + getDefense(item); defense = defense + getDefense(item);
speed = speed + getSpeed(item); speed = speed + getSpeed(item);
strength = strength + getStrength(item); strength = strength + getStrength(item);
mana = mana + getMana(item);
luck = luck + getLuck(item);
} }
} }
Attributes attributes = new Attributes(health, defense, speed, strength); Attributes attributes = new Attributes(health, defense, speed, strength, mana, luck);
return attributes; return attributes;
} }

View file

@ -17,12 +17,15 @@ public class MongoDB {
private MongoDatabase mongoDatabase; private MongoDatabase mongoDatabase;
@Getter @Getter
private MongoCollection<Document> mongoCollection; private MongoCollection<Document> mongoCollection;
@Getter
private MongoCollection<Document> mongoConfigs;
public void connect() { public void connect() {
ConnectionString connectionString = new ConnectionString("mongodb://localhost:27017"); ConnectionString connectionString = new ConnectionString("mongodb://localhost:27017");
mongoClient = MongoClients.create(connectionString); mongoClient = MongoClients.create(connectionString);
mongoDatabase = mongoClient.getDatabase("Raxen"); mongoDatabase = mongoClient.getDatabase("Raxen");
mongoCollection = mongoDatabase.getCollection("player"); mongoCollection = mongoDatabase.getCollection("player");
mongoConfigs = mongoDatabase.getCollection("config");
Bukkit.getConsoleSender().sendMessage(ChatColor.GREEN + "MongoDB connected!"); Bukkit.getConsoleSender().sendMessage(ChatColor.GREEN + "MongoDB connected!");
} }

View file

@ -1,4 +1,7 @@
package gq.unurled.raxen.utils; package gq.unurled.raxen.utils;
import com.fastasyncworldedit.core.FaweAPI;
public class WorldEdit { public class WorldEdit {
} }

View file

@ -1,4 +1,4 @@
version: "${project.version}" version: "${version}"
motd: "YAY, Super server!" motd: "YAY, Super server!"
motd-reload: "Server reloading!" motd-reload: "Server reloading!"

View file

@ -12,5 +12,6 @@ Pack:
parent: "item/generated" parent: "item/generated"
custom_model_data: 123 custom_model_data: 123
model: "red_wool" model: "red_wool"
drop_rate: 100.0
lore: lore:
- '&cSuper lore' - '&cSuper lore'

View file

@ -0,0 +1,15 @@
gates:
1:
id: 1
world_source: "world"
x1: 100
y1: 100
z1: 100
x2: 103
y2: 103
z2: 103
name: "hallo"
world_dest: "world"
dest_x: 110
dest_y: 110
dest_z: 110

View file

@ -1,6 +1,7 @@
name: Raxen name: Raxen
version: '${project.version}' version: '${version}'
main: gq.unurled.raxen.Raxen main: gq.unurled.raxen.Raxen
author: unurled
api-version: 1.18 api-version: 1.18
depend: [ProtocolLib] depend: [ProtocolLib]
softdepend: [AureliumSkills, LuckPerms] softdepend: [AureliumSkills, LuckPerms]