mirror of
https://github.com/songoda/EpicBosses.git
synced 2024-06-26 06:35:03 +02:00
1.0.0-SNAPSHOT-U44
+ Added Disarm, Fireball, Grapple, Insidious, Knockback, Launch, Lightning and Warp skill and started minions + Updated skills.json to hold all the new skills, and give examples on setting them up.
This commit is contained in:
parent
db762912bf
commit
846244ffe6
|
@ -35,17 +35,6 @@
|
|||
}
|
||||
]
|
||||
},
|
||||
"Knockback1": {
|
||||
"mode": "ALL",
|
||||
"type": "CUSTOM",
|
||||
"radius": 10,
|
||||
"displayName": "Knockback",
|
||||
"customMessage": null,
|
||||
"custom": {
|
||||
"type": "KNOCKBACK",
|
||||
"multiplier": 2.5
|
||||
}
|
||||
},
|
||||
"Cage1": {
|
||||
"mode": "ALL",
|
||||
"type": "CUSTOM",
|
||||
|
@ -61,6 +50,111 @@
|
|||
"insideType": "WATER"
|
||||
}
|
||||
},
|
||||
"Disarm1": {
|
||||
"mode": "ONE",
|
||||
"type": "CUSTOM",
|
||||
"radius": 10,
|
||||
"displayName": "Disarm",
|
||||
"customMessage": null,
|
||||
"custom": {
|
||||
"type": "DISARM",
|
||||
"multiplier": null
|
||||
}
|
||||
},
|
||||
"Fireball1": {
|
||||
"mode": "RANDOM",
|
||||
"type": "CUSTOM",
|
||||
"radius": 10,
|
||||
"displayName": "Fireball",
|
||||
"customMessage": null,
|
||||
"custom": {
|
||||
"type": "FIREBALL",
|
||||
"multiplier": 3.0
|
||||
}
|
||||
},
|
||||
"Grapple1": {
|
||||
"mode": "RANDOM",
|
||||
"type": "CUSTOM",
|
||||
"radius": 10,
|
||||
"displayName": "Grapple",
|
||||
"customMessage": null,
|
||||
"custom": {
|
||||
"type": "GRAPPLE",
|
||||
"multiplier": 3.0
|
||||
}
|
||||
},
|
||||
"Insidious1": {
|
||||
"mode": "RANDOM",
|
||||
"type": "CUSTOM",
|
||||
"radius": 10,
|
||||
"displayName": "Insidious",
|
||||
"customMessage": null,
|
||||
"custom": {
|
||||
"type": "INSIDIOUS",
|
||||
"multiplier": 2.5
|
||||
}
|
||||
},
|
||||
"Knockback1": {
|
||||
"mode": "ALL",
|
||||
"type": "CUSTOM",
|
||||
"radius": 10,
|
||||
"displayName": "Knockback",
|
||||
"customMessage": null,
|
||||
"custom": {
|
||||
"type": "KNOCKBACK",
|
||||
"multiplier": 2.5
|
||||
}
|
||||
},
|
||||
"Launch1": {
|
||||
"mode": "ALL",
|
||||
"type": "CUSTOM",
|
||||
"radius": 10,
|
||||
"displayName": "Launch",
|
||||
"customMessage": null,
|
||||
"custom": {
|
||||
"type": "LAUNCH",
|
||||
"multiplier": 3.0
|
||||
}
|
||||
},
|
||||
"Lightning1": {
|
||||
"mode": "ALL",
|
||||
"type": "CUSTOM",
|
||||
"radius": 10,
|
||||
"displayName": "Lightning",
|
||||
"customMessage": null,
|
||||
"custom": {
|
||||
"type": "LIGHTNING",
|
||||
"multiplier": null
|
||||
}
|
||||
},
|
||||
"Minions1": {
|
||||
"mode": "ALL",
|
||||
"type": "CUSTOM",
|
||||
"radius": 10,
|
||||
"displayName": "Minions",
|
||||
"customMessage": null,
|
||||
"custom": {
|
||||
"type": "MINIONS",
|
||||
"multiplier": null
|
||||
},
|
||||
"minions": {
|
||||
"amount": 5,
|
||||
"bosses": [
|
||||
"Minion1"
|
||||
]
|
||||
}
|
||||
},
|
||||
"Warp1": {
|
||||
"mode": "ONE",
|
||||
"type": "CUSTOM",
|
||||
"radius": 10,
|
||||
"displayName": "Warp",
|
||||
"customMessage": null,
|
||||
"custom": {
|
||||
"type": "WARP",
|
||||
"multiplier": null
|
||||
}
|
||||
},
|
||||
"Shazaam1": {
|
||||
"mode": "ALL",
|
||||
"type": "GROUP",
|
||||
|
|
|
@ -43,6 +43,14 @@ public class ActiveBossHolder {
|
|||
}
|
||||
}
|
||||
|
||||
public LivingEntity getLivingEntity() {
|
||||
for(LivingEntity livingEntity : getLivingEntityMap().values()) {
|
||||
if(livingEntity != null) return livingEntity;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public boolean hasAttacked(UUID uuid) {
|
||||
return this.mapOfDamagingUsers.containsKey(uuid);
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package com.songoda.epicbosses.skills.custom;
|
||||
|
||||
import com.google.gson.annotations.Expose;
|
||||
import com.songoda.epicbosses.CustomBosses;
|
||||
import com.songoda.epicbosses.holder.ActiveBossHolder;
|
||||
import com.songoda.epicbosses.skills.custom.cage.CageLocationData;
|
||||
import com.songoda.epicbosses.skills.custom.cage.CagePlayerData;
|
||||
|
@ -32,6 +33,10 @@ public class Cage extends CustomSkill {
|
|||
|
||||
@Expose @Getter @Setter private CustomCageSkillElement cage;
|
||||
|
||||
public Cage(CustomBosses plugin) {
|
||||
super(plugin);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void castSkill(ActiveBossHolder activeBossHolder, List<LivingEntity> nearbyEntities) {
|
||||
nearbyEntities.forEach(livingEntity -> {
|
||||
|
|
|
@ -0,0 +1,69 @@
|
|||
package com.songoda.epicbosses.skills.custom;
|
||||
|
||||
import com.songoda.epicbosses.CustomBosses;
|
||||
import com.songoda.epicbosses.holder.ActiveBossHolder;
|
||||
import com.songoda.epicbosses.skills.types.CustomSkill;
|
||||
import com.songoda.epicbosses.utils.Message;
|
||||
import com.songoda.epicbosses.utils.RandomUtils;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.HumanEntity;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.inventory.EntityEquipment;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Charles Cullen
|
||||
* @version 1.0.0
|
||||
* @since 11-Nov-18
|
||||
*/
|
||||
public class Disarm extends CustomSkill {
|
||||
|
||||
public Disarm(CustomBosses plugin) {
|
||||
super(plugin);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void castSkill(ActiveBossHolder activeBossHolder, List<LivingEntity> nearbyEntities) {
|
||||
nearbyEntities.forEach(livingEntity -> {
|
||||
EntityEquipment entityEquipment = livingEntity.getEquipment();
|
||||
int itemSlot = RandomUtils.get().getRandomNumber(5);
|
||||
ItemStack replacementItemStack = new ItemStack(Material.AIR);
|
||||
ItemStack itemStack;
|
||||
|
||||
switch (itemSlot) {
|
||||
case 0:
|
||||
if(livingEntity instanceof HumanEntity) {
|
||||
HumanEntity humanEntity = (HumanEntity) livingEntity;
|
||||
|
||||
itemStack = getPlugin().getVersionHandler().getItemInHand(humanEntity);
|
||||
getPlugin().getVersionHandler().setItemInHand(humanEntity, replacementItemStack);
|
||||
break;
|
||||
}
|
||||
case 1:
|
||||
itemStack = entityEquipment.getHelmet();
|
||||
entityEquipment.setHelmet(replacementItemStack);
|
||||
break;
|
||||
case 2:
|
||||
itemStack = entityEquipment.getChestplate();
|
||||
entityEquipment.setChestplate(replacementItemStack);
|
||||
break;
|
||||
case 3:
|
||||
itemStack = entityEquipment.getLeggings();
|
||||
entityEquipment.setLeggings(replacementItemStack);
|
||||
break;
|
||||
default:
|
||||
case 4:
|
||||
itemStack = entityEquipment.getBoots();
|
||||
entityEquipment.setBoots(replacementItemStack);
|
||||
break;
|
||||
}
|
||||
|
||||
if(itemStack == null || itemStack.getType() == Material.AIR) return;
|
||||
|
||||
livingEntity.getWorld().dropItemNaturally(livingEntity.getLocation(), itemStack);
|
||||
Message.General_Disarmed.msg(livingEntity);
|
||||
});
|
||||
}
|
||||
}
|
|
@ -0,0 +1,43 @@
|
|||
package com.songoda.epicbosses.skills.custom;
|
||||
|
||||
import com.songoda.epicbosses.CustomBosses;
|
||||
import com.songoda.epicbosses.holder.ActiveBossHolder;
|
||||
import com.songoda.epicbosses.skills.types.CustomSkill;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Charles Cullen
|
||||
* @version 1.0.0
|
||||
* @since 11-Nov-18
|
||||
*/
|
||||
public class Fireball extends CustomSkill {
|
||||
|
||||
public Fireball(CustomBosses plugin) {
|
||||
super(plugin);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void castSkill(ActiveBossHolder activeBossHolder, List<LivingEntity> nearbyEntities) {
|
||||
LivingEntity boss = activeBossHolder.getLivingEntity();
|
||||
|
||||
if(boss == null) return;
|
||||
|
||||
Double multiplier = getCustom().getMultiplier();
|
||||
|
||||
if(multiplier == null) multiplier = 1.0;
|
||||
|
||||
double finalMultiplier = multiplier;
|
||||
|
||||
nearbyEntities.forEach(livingEntity -> {
|
||||
Vector vector = livingEntity.getLocation().subtract(activeBossHolder.getLocation()).toVector().normalize().multiply(finalMultiplier);
|
||||
org.bukkit.entity.Fireball fireball = livingEntity.getWorld().spawn(activeBossHolder.getLocation(), org.bukkit.entity.Fireball.class);
|
||||
|
||||
fireball.setShooter(boss);
|
||||
fireball.setDirection(vector);
|
||||
fireball.setIsIncendiary(false);
|
||||
});
|
||||
}
|
||||
}
|
|
@ -0,0 +1,39 @@
|
|||
package com.songoda.epicbosses.skills.custom;
|
||||
|
||||
import com.songoda.epicbosses.CustomBosses;
|
||||
import com.songoda.epicbosses.holder.ActiveBossHolder;
|
||||
import com.songoda.epicbosses.skills.types.CustomSkill;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Charles Cullen
|
||||
* @version 1.0.0
|
||||
* @since 11-Nov-18
|
||||
*/
|
||||
public class Grapple extends CustomSkill {
|
||||
|
||||
public Grapple(CustomBosses plugin) {
|
||||
super(plugin);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void castSkill(ActiveBossHolder activeBossHolder, List<LivingEntity> nearbyEntities) {
|
||||
Location bossLocation = activeBossHolder.getLocation();
|
||||
Double multiplier = getCustom().getMultiplier();
|
||||
|
||||
if(multiplier == null) multiplier = 1.0;
|
||||
|
||||
double finalMultiplier = multiplier;
|
||||
|
||||
nearbyEntities.forEach(livingEntity -> {
|
||||
Location location = livingEntity.getLocation();
|
||||
Vector vector = location.toVector().subtract(bossLocation.toVector()).normalize().multiply(finalMultiplier);
|
||||
|
||||
livingEntity.setVelocity(vector);
|
||||
});
|
||||
}
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
package com.songoda.epicbosses.skills.custom;
|
||||
|
||||
import com.songoda.epicbosses.CustomBosses;
|
||||
import com.songoda.epicbosses.holder.ActiveBossHolder;
|
||||
import com.songoda.epicbosses.skills.types.CustomSkill;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Charles Cullen
|
||||
* @version 1.0.0
|
||||
* @since 11-Nov-18
|
||||
*/
|
||||
public class Insidious extends CustomSkill {
|
||||
|
||||
public Insidious(CustomBosses plugin) {
|
||||
super(plugin);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void castSkill(ActiveBossHolder activeBossHolder, List<LivingEntity> nearbyEntities) {
|
||||
Double multiplier = getCustom().getMultiplier();
|
||||
|
||||
if(multiplier == null) multiplier = 2.5;
|
||||
|
||||
double finalMultiplier = multiplier;
|
||||
|
||||
nearbyEntities.forEach(livingEntity -> livingEntity.setFireTicks(((int) finalMultiplier) * 20));
|
||||
}
|
||||
}
|
|
@ -0,0 +1,39 @@
|
|||
package com.songoda.epicbosses.skills.custom;
|
||||
|
||||
import com.songoda.epicbosses.CustomBosses;
|
||||
import com.songoda.epicbosses.holder.ActiveBossHolder;
|
||||
import com.songoda.epicbosses.skills.types.CustomSkill;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Charles Cullen
|
||||
* @version 1.0.0
|
||||
* @since 11-Nov-18
|
||||
*/
|
||||
public class Knockback extends CustomSkill {
|
||||
|
||||
public Knockback(CustomBosses plugin) {
|
||||
super(plugin);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void castSkill(ActiveBossHolder activeBossHolder, List<LivingEntity> nearbyEntities) {
|
||||
Double multiplier = getCustom().getMultiplier();
|
||||
|
||||
if(multiplier == null) multiplier = 2.5;
|
||||
|
||||
double finalMultiplier = multiplier;
|
||||
Location bossLocation = activeBossHolder.getLocation();
|
||||
|
||||
nearbyEntities.forEach(livingEntity -> {
|
||||
Location throwLocation = livingEntity.getEyeLocation();
|
||||
Vector vector = throwLocation.toVector().subtract(bossLocation.toVector()).normalize().multiply(finalMultiplier);
|
||||
|
||||
livingEntity.setVelocity(vector);
|
||||
});
|
||||
}
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
package com.songoda.epicbosses.skills.custom;
|
||||
|
||||
import com.songoda.epicbosses.CustomBosses;
|
||||
import com.songoda.epicbosses.holder.ActiveBossHolder;
|
||||
import com.songoda.epicbosses.skills.types.CustomSkill;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Charles Cullen
|
||||
* @version 1.0.0
|
||||
* @since 11-Nov-18
|
||||
*/
|
||||
public class Launch extends CustomSkill {
|
||||
|
||||
public Launch(CustomBosses plugin) {
|
||||
super(plugin);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void castSkill(ActiveBossHolder activeBossHolder, List<LivingEntity> nearbyEntities) {
|
||||
Location bossLocation = activeBossHolder.getLocation();
|
||||
|
||||
nearbyEntities.forEach(livingEntity -> livingEntity.teleport(bossLocation.clone().add(0, 35, 0)));
|
||||
}
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
package com.songoda.epicbosses.skills.custom;
|
||||
|
||||
import com.songoda.epicbosses.CustomBosses;
|
||||
import com.songoda.epicbosses.holder.ActiveBossHolder;
|
||||
import com.songoda.epicbosses.skills.types.CustomSkill;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Charles Cullen
|
||||
* @version 1.0.0
|
||||
* @since 11-Nov-18
|
||||
*/
|
||||
public class Lightning extends CustomSkill {
|
||||
|
||||
public Lightning(CustomBosses plugin) {
|
||||
super(plugin);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void castSkill(ActiveBossHolder activeBossHolder, List<LivingEntity> nearbyEntities) {
|
||||
nearbyEntities.forEach(livingEntity -> livingEntity.getWorld().strikeLightningEffect(livingEntity.getEyeLocation()));
|
||||
}
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
package com.songoda.epicbosses.skills.custom;
|
||||
|
||||
import com.songoda.epicbosses.CustomBosses;
|
||||
import com.songoda.epicbosses.holder.ActiveBossHolder;
|
||||
import com.songoda.epicbosses.skills.types.CustomSkill;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Charles Cullen
|
||||
* @version 1.0.0
|
||||
* @since 11-Nov-18
|
||||
*
|
||||
* TODO
|
||||
*/
|
||||
public class Minions extends CustomSkill {
|
||||
|
||||
public Minions(CustomBosses plugin) {
|
||||
super(plugin);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void castSkill(ActiveBossHolder activeBossHolder, List<LivingEntity> nearbyEntities) {
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
package com.songoda.epicbosses.skills.custom;
|
||||
|
||||
import com.songoda.epicbosses.CustomBosses;
|
||||
import com.songoda.epicbosses.holder.ActiveBossHolder;
|
||||
import com.songoda.epicbosses.skills.types.CustomSkill;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Charles Cullen
|
||||
* @version 1.0.0
|
||||
* @since 11-Nov-18
|
||||
*/
|
||||
public class Warp extends CustomSkill {
|
||||
|
||||
public Warp(CustomBosses plugin) {
|
||||
super(plugin);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void castSkill(ActiveBossHolder activeBossHolder, List<LivingEntity> nearbyEntities) {
|
||||
LivingEntity target = nearbyEntities.get(0);
|
||||
|
||||
activeBossHolder.getLivingEntity().teleport(target);
|
||||
}
|
||||
}
|
|
@ -1,6 +1,7 @@
|
|||
package com.songoda.epicbosses.skills.types;
|
||||
|
||||
import com.google.gson.annotations.Expose;
|
||||
import com.songoda.epicbosses.CustomBosses;
|
||||
import com.songoda.epicbosses.skills.Skill;
|
||||
import com.songoda.epicbosses.skills.elements.CustomSkillElement;
|
||||
import lombok.Getter;
|
||||
|
@ -13,6 +14,12 @@ import lombok.Setter;
|
|||
*/
|
||||
public abstract class CustomSkill extends Skill {
|
||||
|
||||
@Getter private final CustomBosses plugin;
|
||||
|
||||
public CustomSkill(CustomBosses plugin) {
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
@Expose @Getter @Setter private CustomSkillElement custom;
|
||||
|
||||
}
|
||||
|
|
|
@ -18,6 +18,7 @@ public enum Message {
|
|||
General_LocationFormat("{world}, {x}, {y}, {z}"),
|
||||
General_MustBePlayer("&c&l(!) &cYou must be a player to use this command."),
|
||||
General_CannotSpawn("&c&l(!) &cYou cannot spawn a boss at this location! &c&l(!)"),
|
||||
General_Disarmed("&4&l(!) &f&lYOU HAVE BEEN DISARMED! CHECK THE GROUND AROUND YOU FOR YOUR ITEM!"),
|
||||
|
||||
Boss_Create_EntityTypeNotFound("&c&l(!) &cThe specified entity type {0} was not found. If you think this is an error please contact &fAMinecraftDev&c."),
|
||||
Boss_Create_InvalidArgs("&c&l(!) &cYou must use &n/boss create [name] [entity] &c to create a boss."),
|
||||
|
|
2
pom.xml
2
pom.xml
|
@ -19,7 +19,7 @@
|
|||
</modules>
|
||||
|
||||
<properties>
|
||||
<plugin.version>1.0.0-SNAPSHOT-U43</plugin.version>
|
||||
<plugin.version>1.0.0-SNAPSHOT-U44</plugin.version>
|
||||
<plugin.name>EpicBosses</plugin.name>
|
||||
<plugin.main>com.songoda.epicbosses.CustomBosses</plugin.main>
|
||||
<plugin.author>AMinecraftDev</plugin.author>
|
||||
|
|
Loading…
Reference in New Issue
Block a user