mirror of
https://github.com/songoda/EpicBosses.git
synced 2024-09-27 13:03:01 +02:00
3.0.0c - Updated
This commit is contained in:
parent
79ebecdd77
commit
83ad2edf00
3
TODO
3
TODO
@ -15,4 +15,5 @@ TODO: Setup API
|
|||||||
TODO: Setup GUI aspect to allow for in-game boss setup
|
TODO: Setup GUI aspect to allow for in-game boss setup
|
||||||
TODO: Write a documentation up about how to use the plugin
|
TODO: Write a documentation up about how to use the plugin
|
||||||
TODO: Make the 2.x.x - 3.x.x converter (an executable jar, NOT a plugin)
|
TODO: Make the 2.x.x - 3.x.x converter (an executable jar, NOT a plugin)
|
||||||
|
TODO: Write particle system so u can make bosses change particles when they get hit, or use skills, etc.
|
||||||
|
TODO: Make a (sorted) drop table viewer
|
153
plugin-modules/Core/resources/editor.yml
Normal file
153
plugin-modules/Core/resources/editor.yml
Normal file
@ -0,0 +1,153 @@
|
|||||||
|
MainPanel:
|
||||||
|
name: '&b&l{name} Editor'
|
||||||
|
slots: 45
|
||||||
|
EmptySpaceFiller:
|
||||||
|
enabled: true
|
||||||
|
Item:
|
||||||
|
type: '160:0'
|
||||||
|
name: '&7'
|
||||||
|
Items:
|
||||||
|
'12':
|
||||||
|
type: DIAMOND
|
||||||
|
name: '&c&lDrops Manager'
|
||||||
|
lore:
|
||||||
|
- '&7Click here to manage the drop table'
|
||||||
|
- '&7that is attached to this boss.'
|
||||||
|
Button: Drops
|
||||||
|
'14':
|
||||||
|
type: DIAMOND_HELMET
|
||||||
|
name: '&c&lEquipment Manager'
|
||||||
|
lore:
|
||||||
|
- '&7Click here to manage the equipment'
|
||||||
|
- '&7that the boss has equipped.'
|
||||||
|
Button: Equipment
|
||||||
|
'16':
|
||||||
|
type: BONE
|
||||||
|
name: '&a&lTargeting Manager'
|
||||||
|
lore:
|
||||||
|
- '&7Click here to edit how the boss handles'
|
||||||
|
- '&7targeting of players and mobs.'
|
||||||
|
Button: Targeting
|
||||||
|
'22':
|
||||||
|
type: BOW
|
||||||
|
name: '&c&lWeapon Manager'
|
||||||
|
lore:
|
||||||
|
- '&7Click here to manage the weapon(s)'
|
||||||
|
- '&7that the boss has equipped.'
|
||||||
|
Button: Weapon
|
||||||
|
'23':
|
||||||
|
type: BARRIER
|
||||||
|
name: '&c&l!&4&l!&c&l! &4&lWARNING &c&l!&4&l!&c&l!'
|
||||||
|
lore:
|
||||||
|
- '&7While editing is enabled for this boss'
|
||||||
|
- '&7no one will be able to spawn it, nor'
|
||||||
|
- '&7will it spawn naturally.'
|
||||||
|
'24':
|
||||||
|
type: BLAZE_POWDER
|
||||||
|
name: '&c&lSkill Manager'
|
||||||
|
lore:
|
||||||
|
- '&7Click here to manage the assigned'
|
||||||
|
- '&7skill(s) the boss has and their occurrence'
|
||||||
|
- '&7chances.'
|
||||||
|
Button: Skill
|
||||||
|
'32':
|
||||||
|
type: '351:4'
|
||||||
|
name: '&a&lStatistics Manager'
|
||||||
|
lore:
|
||||||
|
- '&7Click here to edit the statistics of the'
|
||||||
|
- '&7boss, including things like: health,'
|
||||||
|
- '&7potion effects, commands on spawn, etc.'
|
||||||
|
Button: Stats
|
||||||
|
'39':
|
||||||
|
type: REDSTONE
|
||||||
|
name: '&a&lParticle Manager'
|
||||||
|
lore:
|
||||||
|
- '&7Click here to manage the particles the'
|
||||||
|
- '&7boss has equipped during certain events.'
|
||||||
|
Button: Particle
|
||||||
|
'41':
|
||||||
|
type: GRASS
|
||||||
|
name: '&a&lSpawning Manager'
|
||||||
|
lore:
|
||||||
|
- '&7Click here to edit how the boss handles'
|
||||||
|
- '&7spawning.'
|
||||||
|
Button: Spawning
|
||||||
|
'43':
|
||||||
|
type: BOOK
|
||||||
|
name: '&a&lText Manager'
|
||||||
|
lore:
|
||||||
|
- '&7Click here to edit the taunts, sayings,'
|
||||||
|
- '&7etc. for this boss.'
|
||||||
|
Button: Text
|
||||||
|
DropsPanel:
|
||||||
|
name: '&b&l{name} Editor'
|
||||||
|
slots: 54
|
||||||
|
Settings:
|
||||||
|
fillTo: 45
|
||||||
|
Items:
|
||||||
|
'46':
|
||||||
|
type: DIAMOND
|
||||||
|
name: '&b&lSelected Drop Table'
|
||||||
|
lore:
|
||||||
|
- '&7The current selected drop'
|
||||||
|
- '&7table is: &b{dropTable}&7.'
|
||||||
|
- '&7'
|
||||||
|
- '&b&lHints'
|
||||||
|
- '&b&l* &7If this shows N/A it means'
|
||||||
|
- '&7 there was an issue loading the'
|
||||||
|
- '&7 previous table, or it doesn''t'
|
||||||
|
- '&7 have one selected.'
|
||||||
|
- '&b&l* &7Click here to go straight to the'
|
||||||
|
- '&7 editing screen of the drop table.'
|
||||||
|
'47':
|
||||||
|
type: STAINED_GLASS_PANE
|
||||||
|
name: '&7'
|
||||||
|
'48':
|
||||||
|
type: STAINED_GLASS_PANE
|
||||||
|
name: '&7'
|
||||||
|
'49':
|
||||||
|
type: PAPER
|
||||||
|
name: '&e&l&m<-&e&l Previous Page'
|
||||||
|
lore:
|
||||||
|
- '&7Click here to go to the previous'
|
||||||
|
- '&7page of drop tables.'
|
||||||
|
- '&7'
|
||||||
|
- '&7Currently viewing page &e{currentPage}/{maxPages}&7.'
|
||||||
|
PreviousPage: true
|
||||||
|
'50':
|
||||||
|
type: DIAMOND_BLOCK
|
||||||
|
name: '&a&lCreate a new Drop Table'
|
||||||
|
lore:
|
||||||
|
- '&7Click here to create a new drop'
|
||||||
|
- '&7table. It will automatically be'
|
||||||
|
- '&7assigned to this boss when created.'
|
||||||
|
Button: CreateDropTable
|
||||||
|
'51':
|
||||||
|
type: PAPER
|
||||||
|
name: '&e&lNext Page &e&l&m->'
|
||||||
|
lore:
|
||||||
|
- '&7Click here to go to the next'
|
||||||
|
- '&7page of drop tables.'
|
||||||
|
- '&7'
|
||||||
|
- '&7Currently viewing page &e{currentPage}/{maxPages}&7.'
|
||||||
|
NextPage: true
|
||||||
|
'52':
|
||||||
|
type: STAINED_GLASS_PANE
|
||||||
|
name: '&7'
|
||||||
|
'53':
|
||||||
|
type: STAINED_GLASS_PANE
|
||||||
|
name: '&7'
|
||||||
|
'54':
|
||||||
|
type: BOOK
|
||||||
|
name: '&c&lDrops Guide'
|
||||||
|
lore:
|
||||||
|
- '&7When selecting the drop table for this custom boss'
|
||||||
|
- '&7you can either choose from one of the above listed'
|
||||||
|
- '&7pre-configured drop tables or you can make a'
|
||||||
|
- '&7new one for this boss.'
|
||||||
|
- '&7'
|
||||||
|
- '&c&lHints'
|
||||||
|
- '&c&l* &7The currently selected drop table will be shown'
|
||||||
|
- '&7 with an emerald which states so.'
|
||||||
|
- '&c&l* &7Every d rop table from every boss will be listed'
|
||||||
|
- '&7 here as an available drop table.'
|
@ -0,0 +1,33 @@
|
|||||||
|
package net.aminecraftdev.custombosses.builders;
|
||||||
|
|
||||||
|
import net.aminecraftdev.custombosses.builders.base.CustomEntityBuilder;
|
||||||
|
import net.aminecraftdev.custombosses.builders.entity.ISpawnItemBuilderComponent;
|
||||||
|
import net.aminecraftdev.custombosses.entities.CustomBoss;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Charles Cullen
|
||||||
|
* @version 1.0.0
|
||||||
|
* @since 30-Mar-18
|
||||||
|
*/
|
||||||
|
public class CustomBossBuilder extends CustomEntityBuilder<CustomBoss> implements ISpawnItemBuilderComponent {
|
||||||
|
|
||||||
|
private ItemStack spawnItem = null;
|
||||||
|
|
||||||
|
public CustomBossBuilder(String identifier) {
|
||||||
|
super(identifier);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setSpawnItem(ItemStack itemStack) {
|
||||||
|
this.spawnItem = itemStack;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CustomBoss build() {
|
||||||
|
if(this.health <= 0) return null;
|
||||||
|
|
||||||
|
return new CustomBoss(this.identifier, this.potionEffects, this.equipment, this.customSkills, this.canDropHand, this.canDropEquipment, this.description, this.mainHand, this.offHand, this.entityType, this.displayName, this.health, this.spawnItem);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,110 @@
|
|||||||
|
package net.aminecraftdev.custombosses.builders.base;
|
||||||
|
|
||||||
|
import net.aminecraftdev.custombosses.builders.entity.*;
|
||||||
|
import net.aminecraftdev.custombosses.utils.IBuilder;
|
||||||
|
import net.aminecraftdev.custombosses.utils.identifier.IIdentifier;
|
||||||
|
import net.aminecraftdev.custombosses.utils.identifier.Identifier;
|
||||||
|
import org.bukkit.entity.EntityType;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.potion.PotionEffect;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Charles Cullen
|
||||||
|
* @version 1.0.0
|
||||||
|
* @since 25-Mar-18
|
||||||
|
*/
|
||||||
|
public abstract class CustomEntityBuilder<T> implements IIdentifier, IBuilder<T>, IStatsBuilderComponent, IEquipmentBuilderComponent, IHandBuilderComponent, IPotionBuilderComponent, ISkillBuilderComponent {
|
||||||
|
|
||||||
|
protected final List<PotionEffect> potionEffects = new ArrayList<>();
|
||||||
|
protected final Map<Integer, ItemStack> equipment = new HashMap<>();
|
||||||
|
protected final List<Object> customSkills = new ArrayList<>();
|
||||||
|
protected final Identifier<String> identifier;
|
||||||
|
|
||||||
|
protected boolean canDropHand = true, canDropEquipment = true;
|
||||||
|
protected List<String> description = new ArrayList<>();
|
||||||
|
protected ItemStack mainHand = null, offHand = null;
|
||||||
|
protected EntityType entityType = null;
|
||||||
|
protected String displayName = null;
|
||||||
|
protected double health = 0;
|
||||||
|
|
||||||
|
public CustomEntityBuilder(String identifier) {
|
||||||
|
this.identifier = new Identifier<>(identifier);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Identifier<String> getIdentifier() {
|
||||||
|
return this.identifier;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setArmor(int slot, ItemStack itemStack) {
|
||||||
|
if(slot > 4 || slot < 1) return;
|
||||||
|
|
||||||
|
this.equipment.put(slot, itemStack);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setCanDropEquipment(boolean bool) {
|
||||||
|
this.canDropEquipment = bool;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setMainHand(ItemStack itemStack) {
|
||||||
|
this.mainHand = itemStack;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setOffHand(ItemStack itemStack) {
|
||||||
|
this.offHand = itemStack;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setCanDropHands(boolean bool) {
|
||||||
|
this.canDropHand = bool;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addPotionEffect(PotionEffect potionEffect) {
|
||||||
|
this.potionEffects.add(potionEffect);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void removePotionEffect(PotionEffect potionEffect) {
|
||||||
|
this.potionEffects.remove(potionEffect);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addSkill(Object object) {
|
||||||
|
this.customSkills.add(object);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void removeSkill(Object object) {
|
||||||
|
this.customSkills.remove(object);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setEntityType(EntityType entityType) {
|
||||||
|
this.entityType = entityType;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setMaxHealth(double health) {
|
||||||
|
this.health = health;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setDisplayName(String displayName) {
|
||||||
|
this.displayName = displayName;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setDescription(List<String> description) {
|
||||||
|
this.description = description;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,15 @@
|
|||||||
|
package net.aminecraftdev.custombosses.builders.entity;
|
||||||
|
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Charles Cullen
|
||||||
|
* @version 1.0.0
|
||||||
|
* @since 25-Mar-18
|
||||||
|
*/
|
||||||
|
public interface IEquipmentBuilderComponent {
|
||||||
|
|
||||||
|
void setArmor(int slot, ItemStack itemStack);
|
||||||
|
|
||||||
|
void setCanDropEquipment(boolean bool);
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
package net.aminecraftdev.custombosses.builders.entity;
|
||||||
|
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Charles Cullen
|
||||||
|
* @version 1.0.0
|
||||||
|
* @since 25-Mar-18
|
||||||
|
*/
|
||||||
|
public interface IHandBuilderComponent {
|
||||||
|
|
||||||
|
void setMainHand(ItemStack itemStack);
|
||||||
|
|
||||||
|
void setOffHand(ItemStack itemStack);
|
||||||
|
|
||||||
|
void setCanDropHands(boolean bool);
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,16 @@
|
|||||||
|
package net.aminecraftdev.custombosses.builders.entity;
|
||||||
|
|
||||||
|
import org.bukkit.potion.PotionEffect;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Charles Cullen
|
||||||
|
* @version 1.0.0
|
||||||
|
* @since 25-Mar-18
|
||||||
|
*/
|
||||||
|
public interface IPotionBuilderComponent {
|
||||||
|
|
||||||
|
void addPotionEffect(PotionEffect potionEffect);
|
||||||
|
|
||||||
|
void removePotionEffect(PotionEffect potionEffect);
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
package net.aminecraftdev.custombosses.builders.entity;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Charles Cullen
|
||||||
|
* @version 1.0.0
|
||||||
|
* @since 25-Mar-18
|
||||||
|
*/
|
||||||
|
public interface ISkillBuilderComponent {
|
||||||
|
|
||||||
|
void addSkill(Object object);
|
||||||
|
|
||||||
|
void removeSkill(Object object);
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
package net.aminecraftdev.custombosses.builders.entity;
|
||||||
|
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Charles Cullen
|
||||||
|
* @version 1.0.0
|
||||||
|
* @since 30-Mar-18
|
||||||
|
*/
|
||||||
|
public interface ISpawnItemBuilderComponent {
|
||||||
|
|
||||||
|
void setSpawnItem(ItemStack itemStack);
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,22 @@
|
|||||||
|
package net.aminecraftdev.custombosses.builders.entity;
|
||||||
|
|
||||||
|
import org.bukkit.entity.EntityType;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Charles Cullen
|
||||||
|
* @version 1.0.0
|
||||||
|
* @since 25-Mar-18
|
||||||
|
*/
|
||||||
|
public interface IStatsBuilderComponent {
|
||||||
|
|
||||||
|
void setEntityType(EntityType entityType);
|
||||||
|
|
||||||
|
void setMaxHealth(double health);
|
||||||
|
|
||||||
|
void setDisplayName(String displayName);
|
||||||
|
|
||||||
|
void setDescription(List<String> description);
|
||||||
|
|
||||||
|
}
|
@ -1,27 +0,0 @@
|
|||||||
package net.aminecraftdev.custombosses.entities;
|
|
||||||
|
|
||||||
import net.aminecraftdev.custombosses.entities.base.CustomEntity;
|
|
||||||
import net.aminecraftdev.custombosses.handlers.EntityHandler;
|
|
||||||
import net.aminecraftdev.custombosses.models.CustomEntityModel;
|
|
||||||
import org.bukkit.Location;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author AMinecraftDev
|
|
||||||
* @version 1.0.0
|
|
||||||
* @since 06-Sep-17
|
|
||||||
*/
|
|
||||||
public class BossEntity extends CustomEntity {
|
|
||||||
|
|
||||||
private List<Location> possibleSpawns = new ArrayList<>();
|
|
||||||
private List<EntityHandler> minions = new ArrayList<>();
|
|
||||||
private boolean randomWorldSpawns = false;
|
|
||||||
|
|
||||||
public BossEntity(String identifier, CustomEntityModel customEntityModel) {
|
|
||||||
super(identifier, customEntityModel);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
@ -0,0 +1,38 @@
|
|||||||
|
package net.aminecraftdev.custombosses.entities;
|
||||||
|
|
||||||
|
import net.aminecraftdev.custombosses.entities.base.CustomEntity;
|
||||||
|
import net.aminecraftdev.custombosses.utils.identifier.Identifier;
|
||||||
|
import org.bukkit.entity.EntityType;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.potion.PotionEffect;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Charles Cullen
|
||||||
|
* @version 1.0.0
|
||||||
|
* @since 30-Mar-18
|
||||||
|
*/
|
||||||
|
public class CustomBoss extends CustomEntity {
|
||||||
|
|
||||||
|
private ItemStack spawnItemStack;
|
||||||
|
private boolean isEditing;
|
||||||
|
|
||||||
|
public CustomBoss(Identifier<String> identifier, List<PotionEffect> potionEffects, Map<Integer, ItemStack> equipment, List<Object> customSkills, boolean canDropHand, boolean canDropEquipment, List<String> description, ItemStack mainHand, ItemStack offHand, EntityType entityType, String displayName, double health, ItemStack spawnItem) {
|
||||||
|
super(identifier, potionEffects, equipment, customSkills, canDropHand, canDropEquipment, description, mainHand, offHand, entityType, displayName, health);
|
||||||
|
|
||||||
|
this.isEditing = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void toggleEditing(boolean bool) {
|
||||||
|
this.isEditing = bool;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void openEditor(Player player) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,9 @@
|
|||||||
|
package net.aminecraftdev.custombosses.entities;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Charles Cullen
|
||||||
|
* @version 1.0.0
|
||||||
|
* @since 30-Mar-18
|
||||||
|
*/
|
||||||
|
public class CustomMinion {
|
||||||
|
}
|
@ -1,109 +1,51 @@
|
|||||||
package net.aminecraftdev.custombosses.entities.base;
|
package net.aminecraftdev.custombosses.entities.base;
|
||||||
|
|
||||||
import net.aminecraftdev.custombosses.handlers.EntityHandler;
|
import net.aminecraftdev.custombosses.utils.IEditor;
|
||||||
import net.aminecraftdev.custombosses.utils.IIdentifier;
|
import net.aminecraftdev.custombosses.utils.identifier.IIdentifier;
|
||||||
import net.aminecraftdev.custombosses.models.CustomEntityModel;
|
import net.aminecraftdev.custombosses.utils.identifier.Identifier;
|
||||||
import net.aminecraftdev.custombosses.skills.CustomSkill;
|
import org.bukkit.entity.EntityType;
|
||||||
import org.bukkit.Location;
|
|
||||||
import org.bukkit.entity.LivingEntity;
|
|
||||||
import org.bukkit.inventory.EntityEquipment;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.potion.PotionEffect;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Charles Cullen
|
* @author Charles Cullen
|
||||||
* @version 1.0.0
|
* @version 1.0.0
|
||||||
* @since 08-Mar-18
|
* @since 25-Mar-18
|
||||||
*/
|
*/
|
||||||
public class CustomEntity implements IIdentifier {
|
public abstract class CustomEntity implements IIdentifier, IEditor {
|
||||||
|
|
||||||
private List<CustomSkill> customSkills = new ArrayList<>();
|
private final boolean canDropHand, canDropEquipment;
|
||||||
private CustomEntityModel customEntityModel;
|
private final Map<Integer, ItemStack> equipment;
|
||||||
private String identifier;
|
private final List<PotionEffect> potionEffects;
|
||||||
|
private final List<Object> customSkills;
|
||||||
|
private final List<String> description;
|
||||||
|
private final Identifier<String> identifier;
|
||||||
|
private final ItemStack mainHand, offHand;
|
||||||
|
private final EntityType entityType;
|
||||||
|
private final String displayName;
|
||||||
|
private final double health;
|
||||||
|
|
||||||
public CustomEntity(String identifier, CustomEntityModel customEntityModel) {
|
public CustomEntity(Identifier<String> identifier, List<PotionEffect> potionEffects, Map<Integer, ItemStack> equipment, List<Object> customSkills, boolean canDropHand, boolean canDropEquipment, List<String> description, ItemStack mainHand, ItemStack offHand, EntityType entityType, String displayName, double health) {
|
||||||
this.identifier = identifier;
|
this.identifier = identifier;
|
||||||
this.customEntityModel = customEntityModel;
|
|
||||||
|
this.entityType = entityType;
|
||||||
|
this.health = health;
|
||||||
|
this.displayName = displayName;
|
||||||
|
this.mainHand = mainHand;
|
||||||
|
this.offHand = offHand;
|
||||||
|
this.description = description;
|
||||||
|
this.customSkills = customSkills;
|
||||||
|
this.potionEffects = potionEffects;
|
||||||
|
this.equipment = equipment;
|
||||||
|
this.canDropHand = canDropHand;
|
||||||
|
this.canDropEquipment = canDropEquipment;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getIdentifier() {
|
public Identifier<String> getIdentifier() {
|
||||||
return this.identifier;
|
return this.identifier;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<CustomSkill> getCustomSkills() {
|
|
||||||
return this.customSkills;
|
|
||||||
}
|
|
||||||
|
|
||||||
public EntityHandler spawn(Location location) {
|
|
||||||
LivingEntity livingEntity = (LivingEntity) location.getWorld().spawn(location, this.customEntityModel.getEntityType().getEntityClass());
|
|
||||||
EntityEquipment entityEquipment = livingEntity.getEquipment();
|
|
||||||
|
|
||||||
/* SETTING HEALTH */
|
|
||||||
livingEntity.setMaxHealth(this.customEntityModel.getMaxHealth());
|
|
||||||
livingEntity.setHealth(this.customEntityModel.getMaxHealth());
|
|
||||||
|
|
||||||
/* SETTING DISPLAY NAME */
|
|
||||||
if(this.customEntityModel.getDisplayName() != null) {
|
|
||||||
livingEntity.setCustomName(this.customEntityModel.getDisplayName());
|
|
||||||
livingEntity.setCustomNameVisible(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* SETTING MAIN HAND */
|
|
||||||
if(this.customEntityModel.getMainHand() != null) {
|
|
||||||
entityEquipment.setItemInMainHand(this.customEntityModel.getMainHand());
|
|
||||||
|
|
||||||
if(cannotDrop()) entityEquipment.setItemInMainHandDropChance(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* SETTING OFF HAND */
|
|
||||||
if(this.customEntityModel.getOffHand() != null) {
|
|
||||||
entityEquipment.setItemInOffHand(this.customEntityModel.getOffHand());
|
|
||||||
|
|
||||||
if(cannotDrop()) entityEquipment.setItemInOffHandDropChance(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* SETTING ARMOUR */
|
|
||||||
if(!this.customEntityModel.getArmor().isEmpty()) {
|
|
||||||
Map<Integer, ItemStack> equipment = this.customEntityModel.getArmor();
|
|
||||||
|
|
||||||
if(equipment.getOrDefault(0, null) != null) {
|
|
||||||
entityEquipment.setHelmet(equipment.get(0));
|
|
||||||
|
|
||||||
if(cannotDrop()) entityEquipment.setHelmetDropChance(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(equipment.getOrDefault(1, null) != null) {
|
|
||||||
entityEquipment.setChestplate(equipment.get(1));
|
|
||||||
|
|
||||||
if(cannotDrop()) entityEquipment.setChestplateDropChance(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(equipment.getOrDefault(2, null) != null) {
|
|
||||||
entityEquipment.setLeggings(equipment.get(2));
|
|
||||||
|
|
||||||
if(cannotDrop()) entityEquipment.setLeggingsDropChance(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(equipment.getOrDefault(3, null) != null) {
|
|
||||||
entityEquipment.setBoots(equipment.get(3));
|
|
||||||
|
|
||||||
if(cannotDrop()) entityEquipment.setBootsDropChance(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* SETTINGS POTIONS */
|
|
||||||
if(!this.customEntityModel.getPotionEffects().isEmpty()) {
|
|
||||||
livingEntity.addPotionEffects(this.customEntityModel.getPotionEffects());
|
|
||||||
}
|
|
||||||
|
|
||||||
return new EntityHandler(livingEntity, this);
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean cannotDrop() {
|
|
||||||
return !this.customEntityModel.canDropEquipment();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,45 +0,0 @@
|
|||||||
package net.aminecraftdev.custombosses.entities.components;
|
|
||||||
|
|
||||||
import com.google.gson.annotations.Expose;
|
|
||||||
import org.bukkit.potion.PotionEffectType;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Charles Cullen
|
|
||||||
* @version 1.0.0
|
|
||||||
* @since 11-Mar-18
|
|
||||||
*/
|
|
||||||
public class PotionEffectComponent {
|
|
||||||
|
|
||||||
@Expose private PotionEffectType potionEffectType;
|
|
||||||
@Expose private int duration, level;
|
|
||||||
|
|
||||||
public PotionEffectComponent(PotionEffectType potionEffectType, int duration, int level) {
|
|
||||||
this.potionEffectType = potionEffectType;
|
|
||||||
this.duration = duration;
|
|
||||||
this.level = level;
|
|
||||||
}
|
|
||||||
|
|
||||||
public PotionEffectType getPotionEffectType() {
|
|
||||||
return potionEffectType;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setPotionEffectType(PotionEffectType potionEffectType) {
|
|
||||||
this.potionEffectType = potionEffectType;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getDuration() {
|
|
||||||
return duration;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setDuration(int duration) {
|
|
||||||
this.duration = duration;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getLevel() {
|
|
||||||
return level;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setLevel(int level) {
|
|
||||||
this.level = level;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,52 +0,0 @@
|
|||||||
package net.aminecraftdev.custombosses.entities.components.entity;
|
|
||||||
|
|
||||||
import com.google.gson.annotations.Expose;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Charles Cullen
|
|
||||||
* @version 1.0.0
|
|
||||||
* @since 11-Mar-18
|
|
||||||
*/
|
|
||||||
public class ArmorComponent {
|
|
||||||
|
|
||||||
@Expose private String helmet, chestplate, leggings, boots;
|
|
||||||
|
|
||||||
public ArmorComponent(String helmet, String chestplate, String leggings, String boots, String mainHand, String offHand) {
|
|
||||||
this.helmet = helmet;
|
|
||||||
this.chestplate = chestplate;
|
|
||||||
this.leggings = leggings;
|
|
||||||
this.boots = boots;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getHelmet() {
|
|
||||||
return helmet;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHelmet(String helmet) {
|
|
||||||
this.helmet = helmet;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getChestplate() {
|
|
||||||
return chestplate;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setChestplate(String chestplate) {
|
|
||||||
this.chestplate = chestplate;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getLeggings() {
|
|
||||||
return leggings;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setLeggings(String leggings) {
|
|
||||||
this.leggings = leggings;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getBoots() {
|
|
||||||
return boots;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setBoots(String boots) {
|
|
||||||
this.boots = boots;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,35 +0,0 @@
|
|||||||
package net.aminecraftdev.custombosses.entities.components.entity;
|
|
||||||
|
|
||||||
import com.google.gson.annotations.Expose;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Charles Cullen
|
|
||||||
* @version 1.0.0
|
|
||||||
* @since 11-Mar-18
|
|
||||||
*/
|
|
||||||
public class HandComponent {
|
|
||||||
|
|
||||||
@Expose private String mainHand, offHand;
|
|
||||||
|
|
||||||
public HandComponent(String mainHand, String offHand) {
|
|
||||||
this.mainHand = mainHand;
|
|
||||||
this.offHand = offHand;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getMainHand() {
|
|
||||||
return mainHand;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setMainHand(String mainHand) {
|
|
||||||
this.mainHand = mainHand;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getOffHand() {
|
|
||||||
return offHand;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setOffHand(String offHand) {
|
|
||||||
this.offHand = offHand;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,87 +0,0 @@
|
|||||||
package net.aminecraftdev.custombosses.entities.components.skills;
|
|
||||||
|
|
||||||
import com.google.gson.annotations.Expose;
|
|
||||||
import net.aminecraftdev.custombosses.utils.base.BaseSkillData;
|
|
||||||
import net.aminecraftdev.custombosses.skills.enums.SkillTarget;
|
|
||||||
import net.aminecraftdev.custombosses.skills.enums.SkillType;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Charles Cullen
|
|
||||||
* @version 1.0.0
|
|
||||||
* @since 11-Mar-18
|
|
||||||
*/
|
|
||||||
public class SkillComponent {
|
|
||||||
|
|
||||||
@Expose private String name;
|
|
||||||
@Expose private int radius;
|
|
||||||
@Expose private SkillTarget skillTarget;
|
|
||||||
@Expose private SkillType skillType;
|
|
||||||
@Expose private String showName, customMessage;
|
|
||||||
@Expose private BaseSkillData skillData;
|
|
||||||
@Expose private SkillGroupComponent skillGroupComponent;
|
|
||||||
|
|
||||||
public SkillComponent(String name, int radius, SkillTarget skillTarget, SkillType skillType, String showName, String customMessage, BaseSkillData skillData, SkillGroupComponent skillGroupComponent) {
|
|
||||||
this.name = name;
|
|
||||||
|
|
||||||
setRadius(radius);
|
|
||||||
setSkillTarget(skillTarget);
|
|
||||||
setSkillType(skillType, skillData);
|
|
||||||
setShowName(showName);
|
|
||||||
setCustomMessage(customMessage);
|
|
||||||
|
|
||||||
this.skillGroupComponent = skillGroupComponent;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getName() {
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public SkillTarget getSkillTarget() {
|
|
||||||
return skillTarget;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSkillTarget(SkillTarget skillTarget) {
|
|
||||||
this.skillTarget = skillTarget;
|
|
||||||
}
|
|
||||||
|
|
||||||
public SkillType getSkillType() {
|
|
||||||
return skillType;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSkillType(SkillType skillType, BaseSkillData baseSkillData) {
|
|
||||||
this.skillType = skillType;
|
|
||||||
this.skillData = baseSkillData;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getRadius() {
|
|
||||||
return radius;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRadius(int radius) {
|
|
||||||
this.radius = radius;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getShowName() {
|
|
||||||
return showName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setShowName(String showName) {
|
|
||||||
this.showName = showName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getCustomMessage() {
|
|
||||||
return customMessage;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setCustomMessage(String customMessage) {
|
|
||||||
this.customMessage = customMessage;
|
|
||||||
}
|
|
||||||
|
|
||||||
public BaseSkillData getSkillData() {
|
|
||||||
return skillData;
|
|
||||||
}
|
|
||||||
|
|
||||||
public SkillGroupComponent getSkillGroupComponent() {
|
|
||||||
return skillGroupComponent;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,37 +0,0 @@
|
|||||||
package net.aminecraftdev.custombosses.entities.components.skills;
|
|
||||||
|
|
||||||
import com.google.gson.annotations.Expose;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Charles Cullen
|
|
||||||
* @version 1.0.0
|
|
||||||
* @since 11-Mar-18
|
|
||||||
*/
|
|
||||||
public class SkillGroupComponent {
|
|
||||||
|
|
||||||
@Expose private boolean isGroup;
|
|
||||||
@Expose private List<String> connectedSkills;
|
|
||||||
|
|
||||||
public SkillGroupComponent(boolean isGroup, List<String> connectedSkills) {
|
|
||||||
this.isGroup = isGroup;
|
|
||||||
this.connectedSkills = connectedSkills;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isGroup() {
|
|
||||||
return this.isGroup;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setGroup(boolean group) {
|
|
||||||
isGroup = group;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<String> getConnectedSkills() {
|
|
||||||
return connectedSkills;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setConnectedSkills(List<String> connectedSkills) {
|
|
||||||
this.connectedSkills = connectedSkills;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,25 +0,0 @@
|
|||||||
package net.aminecraftdev.custombosses.entities.components.skills.data;
|
|
||||||
|
|
||||||
import com.google.gson.annotations.Expose;
|
|
||||||
import net.aminecraftdev.custombosses.utils.base.BaseSkillData;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Charles Cullen
|
|
||||||
* @version 1.0.0
|
|
||||||
* @since 11-Mar-18
|
|
||||||
*/
|
|
||||||
public class CommandSkillData extends BaseSkillData {
|
|
||||||
|
|
||||||
@Expose private List<String> commands;
|
|
||||||
|
|
||||||
public CommandSkillData(List<String> commands) {
|
|
||||||
this.commands = commands;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<String> getCommands() {
|
|
||||||
return commands;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,22 +0,0 @@
|
|||||||
package net.aminecraftdev.custombosses.entities.components.skills.data;
|
|
||||||
|
|
||||||
import com.google.gson.annotations.Expose;
|
|
||||||
import net.aminecraftdev.custombosses.utils.base.BaseSkillData;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Charles Cullen
|
|
||||||
* @version 1.0.0
|
|
||||||
* @since 11-Mar-18
|
|
||||||
*/
|
|
||||||
public class CustomSkillData extends BaseSkillData {
|
|
||||||
|
|
||||||
@Expose private Object customData;
|
|
||||||
|
|
||||||
public CustomSkillData(Object object) {
|
|
||||||
this.customData = object;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Object getCustomData() {
|
|
||||||
return customData;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,26 +0,0 @@
|
|||||||
package net.aminecraftdev.custombosses.entities.components.skills.data;
|
|
||||||
|
|
||||||
import com.google.gson.annotations.Expose;
|
|
||||||
import net.aminecraftdev.custombosses.entities.components.PotionEffectComponent;
|
|
||||||
import net.aminecraftdev.custombosses.utils.base.BaseSkillData;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Charles Cullen
|
|
||||||
* @version 1.0.0
|
|
||||||
* @since 11-Mar-18
|
|
||||||
*/
|
|
||||||
public class PotionSkillData extends BaseSkillData {
|
|
||||||
|
|
||||||
@Expose private List<PotionEffectComponent> potionEffects;
|
|
||||||
|
|
||||||
public PotionSkillData(List<PotionEffectComponent> potionEffectComponents) {
|
|
||||||
this.potionEffects = potionEffectComponents;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<PotionEffectComponent> getPotionEffects() {
|
|
||||||
return potionEffects;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,28 +0,0 @@
|
|||||||
package net.aminecraftdev.custombosses.handlers;
|
|
||||||
|
|
||||||
import net.aminecraftdev.custombosses.entities.base.CustomEntity;
|
|
||||||
import org.bukkit.entity.LivingEntity;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Charles Cullen
|
|
||||||
* @version 1.0.0
|
|
||||||
* @since 08-Mar-18
|
|
||||||
*/
|
|
||||||
public class EntityHandler {
|
|
||||||
|
|
||||||
private CustomEntity customEntity;
|
|
||||||
private LivingEntity livingEntity;
|
|
||||||
|
|
||||||
public EntityHandler(LivingEntity livingEntity, CustomEntity customEntity) {
|
|
||||||
this.customEntity = customEntity;
|
|
||||||
this.livingEntity = livingEntity;
|
|
||||||
}
|
|
||||||
|
|
||||||
public CustomEntity getCustomEntity() {
|
|
||||||
return this.customEntity;
|
|
||||||
}
|
|
||||||
|
|
||||||
public LivingEntity getLivingEntity() {
|
|
||||||
return this.livingEntity;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,6 +1,6 @@
|
|||||||
package net.aminecraftdev.custombosses.models;
|
package net.aminecraftdev.custombosses.models;
|
||||||
|
|
||||||
import net.aminecraftdev.custombosses.utils.IIdentifier;
|
import net.aminecraftdev.custombosses.utils.identifier.IIdentifier;
|
||||||
import net.aminecraftdev.custombosses.handlers.ValidationHandler;
|
import net.aminecraftdev.custombosses.handlers.ValidationHandler;
|
||||||
import net.aminecraftdev.custombosses.utils.models.IEquipmentHandler;
|
import net.aminecraftdev.custombosses.utils.models.IEquipmentHandler;
|
||||||
import net.aminecraftdev.custombosses.utils.models.IPotionHandler;
|
import net.aminecraftdev.custombosses.utils.models.IPotionHandler;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package net.aminecraftdev.custombosses.skills;
|
package net.aminecraftdev.custombosses.skills;
|
||||||
|
|
||||||
import net.aminecraftdev.custombosses.entities.components.skills.SkillComponent;
|
import net.aminecraftdev.custombosses.entities.components.skills.SkillComponent;
|
||||||
import net.aminecraftdev.custombosses.utils.IIdentifier;
|
import net.aminecraftdev.custombosses.utils.identifier.IIdentifier;
|
||||||
import net.aminecraftdev.custombosses.skills.enums.SkillTarget;
|
import net.aminecraftdev.custombosses.skills.enums.SkillTarget;
|
||||||
import net.aminecraftdev.custombosses.skills.enums.SkillType;
|
import net.aminecraftdev.custombosses.skills.enums.SkillType;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
@ -3,10 +3,10 @@ package net.aminecraftdev.custombosses.utils;
|
|||||||
/**
|
/**
|
||||||
* @author Charles Cullen
|
* @author Charles Cullen
|
||||||
* @version 1.0.0
|
* @version 1.0.0
|
||||||
* @since 08-Mar-18
|
* @since 25-Mar-18
|
||||||
*/
|
*/
|
||||||
public interface IIdentifier {
|
public interface IBuilder<T> {
|
||||||
|
|
||||||
String getIdentifier();
|
T build();
|
||||||
|
|
||||||
}
|
}
|
@ -0,0 +1,16 @@
|
|||||||
|
package net.aminecraftdev.custombosses.utils;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Charles Cullen
|
||||||
|
* @version 1.0.0
|
||||||
|
* @since 30-Mar-18
|
||||||
|
*/
|
||||||
|
public interface IEditor {
|
||||||
|
|
||||||
|
void toggleEditing(boolean bool);
|
||||||
|
|
||||||
|
void openEditor(Player player);
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,12 @@
|
|||||||
|
package net.aminecraftdev.custombosses.utils.identifier;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Charles Cullen
|
||||||
|
* @version 1.0.0
|
||||||
|
* @since 08-Mar-18
|
||||||
|
*/
|
||||||
|
public interface IIdentifier {
|
||||||
|
|
||||||
|
Identifier<String> getIdentifier();
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
package net.aminecraftdev.custombosses.utils.identifier;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Charles Cullen
|
||||||
|
* @version 1.0.0
|
||||||
|
* @since 30-Mar-18
|
||||||
|
*/
|
||||||
|
public class Identifier<T> {
|
||||||
|
|
||||||
|
private T identifier;
|
||||||
|
|
||||||
|
public Identifier(T newIdentity) {
|
||||||
|
this.identifier = newIdentity;
|
||||||
|
}
|
||||||
|
|
||||||
|
public T getIdentifier() {
|
||||||
|
return this.identifier;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user