Skip to content

Commit

Permalink
Start working on database & stats system.
Browse files Browse the repository at this point in the history
Signed-off-by: sqlongithub <[email protected]>
  • Loading branch information
sqlongithub committed May 9, 2021
1 parent 220fa52 commit 6b06436
Show file tree
Hide file tree
Showing 15 changed files with 530 additions and 40 deletions.
6 changes: 6 additions & 0 deletions .idea/discord.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

124 changes: 124 additions & 0 deletions .idea/uiDesigner.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,11 @@
<version>1.16.5-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc11</artifactId>
<version>21.1.0.0</version>
</dependency>
</dependencies>

<build>
Expand Down
13 changes: 12 additions & 1 deletion src/main/java/me/sql/exonrpg/ExonRPG.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package me.sql.exonrpg;

import co.aikar.commands.PaperCommandManager;
import me.sql.exonrpg.damage.EntityDamage;
import me.sql.exonrpg.mob.command.SpawnMobCommand;
import org.bukkit.Bukkit;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.java.JavaPlugin;
Expand All @@ -12,14 +15,22 @@ public class ExonRPG extends JavaPlugin {

public static Plugin plugin = Bukkit.getPluginManager().getPlugin("ExonRPG");
public static void info(String msg) {
Bukkit.getLogger().info("[ExonRPG Main] "+msg);
Bukkit.getLogger().info("[ExonRPG] "+msg);
}
public static void error(String msg) {
Bukkit.getLogger().severe("[ExonRPG] "+msg);
}

@Override
public void onEnable() {
info("ExonRPG is an open-source MMORPG created by imSQL");
info("and the projects contributors on github.com/sqlongithub/ExonRPG.");
info("You are currently running version "+VERSION+" ("+RELEASE_DATE+")");

PaperCommandManager manager = new PaperCommandManager(this);
manager.registerCommand(new SpawnMobCommand());
Bukkit.getPluginManager().registerEvents(new EntityDamage(), this);

}

@Override
Expand Down
13 changes: 7 additions & 6 deletions src/main/java/me/sql/exonrpg/damage/EntityDamage.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package me.sql.exonrpg.damage;

import me.sql.exonrpg.ExonRPG;
import me.sql.exonrpg.mob.Mob;
import me.sql.exonrpg.mob.MobMetadata;
import me.sql.exonrpg.mob.MobType;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
Expand All @@ -19,16 +19,17 @@ private void dealFallDamage(LivingEntity entity, int blocksFallen) {
entity.setMetadata(MobMetadata.MOB_HEALTH.toString(), new FixedMetadataValue(ExonRPG.plugin, mobHealth-(blocksFallen/2-1.5)*4));
}

private void dealDamage(LivingEntity entity, LivingEntity damager) {
int mobHealth = entity.getMetadata(MobMetadata.MOB_HEALTH.toString()).get(0).asInt();
private void dealDamage(Mob mob, LivingEntity damager) {
int mobHealth = mob.getHealth();
if(damager instanceof Player) {
// TODO: Calculate player damage
Player ply = (Player) damager;
int damage = 5;
entity.setMetadata(MobMetadata.MOB_HEALTH.toString(), new FixedMetadataValue(ExonRPG.plugin, mobHealth-damage));
mob.setHealth(mob.getHealth()-damage);
} else {
// TODO: Calculate mob Damage
int damage = 5;
entity.setMetadata(MobMetadata.MOB_HEALTH.toString(), new FixedMetadataValue(ExonRPG.plugin, mobHealth-damage));
mob.setHealth(mob.getHealth()-damage);
}
}

Expand All @@ -45,7 +46,7 @@ public void onMobHitByPlayer(EntityDamageByEntityEvent e) {
if(!(vic.getMetadata(MobMetadata.IS_CUSTOM_MOB.toString()).get(0).asBoolean()))
return;

dealDamage(vic, damager);
dealDamage(MobMetadata.getMob(vic), damager);

}

Expand Down
83 changes: 62 additions & 21 deletions src/main/java/me/sql/exonrpg/mob/Mob.java
Original file line number Diff line number Diff line change
@@ -1,47 +1,88 @@
package me.sql.exonrpg.mob;

import me.sql.exonrpg.ExonRPG;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.entity.ArmorStand;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.LivingEntity;
import org.bukkit.inventory.ItemStack;
import org.bukkit.metadata.FixedMetadataValue;
import org.bukkit.metadata.LazyMetadataValue;
import org.bukkit.metadata.MetadataValue;
import org.bukkit.plugin.Plugin;

import java.util.List;

public class Mob {

private String mobName;
private EntityType type;
private EntityType entityType;
private MobType mobType;
private int mobHealth;
private int mobLevel;
private List<ItemStack> armor;
private LivingEntity entity;
private Location location;

public Mob(String mobName, EntityType type, int mobHealth, int mobLevel, List<ItemStack> armor ) {
this.mobName = mobName;
this.type = type;
this.mobHealth = mobHealth;
this.mobLevel = mobLevel;
this.armor = armor;
public Mob(MobType mobType, Location loc) {
this.mobName = mobType.getName();
this.entityType = mobType.getEntityType();
this.mobHealth = mobType.getMaxHealth();
this.mobLevel = mobType.getLevel();
this.armor = mobType.getArmor();
this.mobType = mobType;
Entity e = loc.getWorld().spawnEntity(loc, entityType);
if(!(e instanceof LivingEntity)) {
ExonRPG.info("Mob of type "+entityType.toString()+" is not a LivingEntity!");
return;
}
entity = (LivingEntity) e;
MobMetadata.setDefaults(entity, this);
this.location = entity.getLocation();
this.entity.setCustomName("§7[Lvl. "+mobLevel+"] §c"+mobName+" §6"+mobHealth+"§b/"+mobType.getMaxHealth());
}

public static Mob fromType(MobType type) {
return new Mob(type.getName(), type.getType(), type.getHealth(), type.getLevel(), type.getArmor());

public String getName() {
return this.mobName;
}

public void spawnAtLocation(Location loc) {
Entity e = loc.getWorld().spawnEntity(loc, type);
if(!(e instanceof LivingEntity)) {
ExonRPG.info("Mob of type "+type.toString()+" is not a LivingEntity!");
return;
public EntityType getEntityType() {
return this.entityType;
}

public MobType getMobType() {
return this.mobType;
}

public int getHealth() {
return this.mobHealth;
}

public int getLevel() {
return this.mobLevel;
}

public List<ItemStack> getArmor() {
return this.armor;
}

public Location getLocation() { return this.location; }

public void updateNametag() {
entity.setCustomName("§7[Lvl. "+mobLevel+"] §c"+mobName+" §6"+mobHealth+"§b/"+mobType.getMaxHealth());
}

public void setHealth(int health) {
if(health<=0) {
entity.damage(entity.getHealth());
}
LivingEntity entity = (LivingEntity) e;
entity.setMetadata(MobMetadata.IS_CUSTOM_MOB.toString(), new FixedMetadataValue(ExonRPG.plugin, true));
this.mobHealth = health;
updateNametag();
MobMetadata.setMobHealth(entity, health);
}

public void setArmor(List<ItemStack> armor) {
this.armor = armor;
MobMetadata.setMobArmor(entity, armor);

}

}
49 changes: 48 additions & 1 deletion src/main/java/me/sql/exonrpg/mob/MobMetadata.java
Original file line number Diff line number Diff line change
@@ -1,11 +1,58 @@
package me.sql.exonrpg.mob;

import me.sql.exonrpg.ExonRPG;
import org.bukkit.entity.LivingEntity;
import org.bukkit.inventory.ItemStack;
import org.bukkit.metadata.FixedMetadataValue;

import java.util.List;

public enum MobMetadata {

// TODO: Optimize this by removing all the stats metadata and just having the mob

IS_CUSTOM_MOB,
MOB_NAME,
MOB_HEALTH,
MOB_ARMOR,
MOB_LEVEL,
MOB_TYPE
MOB_TYPE,
MOB;

public static void setMobHealth(LivingEntity entity, int health) {
entity.setMetadata(MOB_HEALTH.toString(), new FixedMetadataValue(ExonRPG.plugin, health));
}

public static void setMobName(LivingEntity entity, String name) {
entity.setMetadata(MOB_NAME.toString(), new FixedMetadataValue(ExonRPG.plugin, name));
}

public static void setMobArmor(LivingEntity entity, List<ItemStack> armor) {
entity.setMetadata(MOB_ARMOR.toString(), new FixedMetadataValue(ExonRPG.plugin, armor));
}

public static void setMobLevel(LivingEntity entity, int level) {
entity.setMetadata(MOB_LEVEL.toString(), new FixedMetadataValue(ExonRPG.plugin, level));
}

public static void setMobType(LivingEntity entity, MobType type) {
entity.setMetadata(MOB_TYPE.toString(), new FixedMetadataValue(ExonRPG.plugin, type));
}

public static void setDefaults(LivingEntity entity, Mob mob) {
MobType type = mob.getMobType();
entity.setMetadata(MobMetadata.IS_CUSTOM_MOB.toString(), new FixedMetadataValue(ExonRPG.plugin, true));
entity.setMetadata(MobMetadata.MOB.toString(), new FixedMetadataValue(ExonRPG.plugin, mob));
setMobHealth(entity, type.getMaxHealth());
setMobLevel(entity, type.getLevel());
setMobName(entity, type.getName());
setMobType(entity, type);
setMobArmor(entity, type.getArmor());
}

public static Mob getMob(LivingEntity entity) {
return (Mob) entity.getMetadata(MOB.toString()).get(0);
}

}

Loading

0 comments on commit 6b06436

Please sign in to comment.