mirror of
https://github.com/songoda/EpicBosses.git
synced 2024-09-28 21:37:33 +02:00
3.0.0-SNAPSHOT-U12
Finished setting up all mechanics, and finished the manager. Added HealthMechanic, NameMechanic, PotionMechanic, WeaponMechanic and fixed SettingsMechanic as well as adding a PotionEffectConverter
This commit is contained in:
parent
bebb0ba00c
commit
be824fe0c1
@ -1,7 +1,8 @@
|
||||
package net.aminecraftdev.custombosses;
|
||||
|
||||
import lombok.Getter;
|
||||
import net.aminecraftdev.custombosses.managers.ItemStackManager;
|
||||
import net.aminecraftdev.custombosses.managers.BossItemFileManager;
|
||||
import net.aminecraftdev.custombosses.managers.BossMechanicManager;
|
||||
import net.aminecraftdev.custombosses.utils.IReloadable;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
@ -12,13 +13,16 @@ import org.bukkit.plugin.java.JavaPlugin;
|
||||
*/
|
||||
public class CustomBosses extends JavaPlugin implements IReloadable {
|
||||
|
||||
@Getter private ItemStackManager itemStackManager;
|
||||
@Getter private BossMechanicManager bossMechanicManager;
|
||||
@Getter private BossItemFileManager itemStackManager;
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
this.itemStackManager = new ItemStackManager(this);
|
||||
this.itemStackManager = new BossItemFileManager(this);
|
||||
|
||||
reload();
|
||||
|
||||
this.bossMechanicManager.load();
|
||||
}
|
||||
|
||||
|
||||
|
@ -4,6 +4,7 @@ import com.google.gson.annotations.Expose;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import net.aminecraftdev.custombosses.entity.elements.*;
|
||||
import net.aminecraftdev.custombosses.utils.potion.holder.PotionEffectHolder;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@ -14,19 +15,19 @@ import java.util.List;
|
||||
*/
|
||||
public class BossEntity {
|
||||
|
||||
@Expose private final List<PotionElement> potions;
|
||||
@Expose private final MainStatsElement mainStats;
|
||||
@Expose private final EquipmentElement equipment;
|
||||
@Expose private final MessagesElement messages;
|
||||
@Expose private final CommandsElement commands;
|
||||
@Expose private final SkillsElement skills;
|
||||
@Expose private final HandsElement hands;
|
||||
@Expose private final DropsElement drops;
|
||||
@Expose @Getter private final List<PotionEffectHolder> potions;
|
||||
@Expose @Getter private final MainStatsElement mainStats;
|
||||
@Expose @Getter private final EquipmentElement equipment;
|
||||
@Expose @Getter private final MessagesElement messages;
|
||||
@Expose @Getter private final CommandsElement commands;
|
||||
@Expose @Getter private final SkillsElement skills;
|
||||
@Expose @Getter private final HandsElement hands;
|
||||
@Expose @Getter private final DropsElement drops;
|
||||
|
||||
@Expose @Getter @Setter private String spawnItem;
|
||||
@Expose @Getter @Setter private boolean editing;
|
||||
|
||||
public BossEntity(boolean editing, MainStatsElement mainStats, String spawnItem, EquipmentElement equipment, HandsElement hands, List<PotionElement> potions,
|
||||
public BossEntity(boolean editing, MainStatsElement mainStats, String spawnItem, EquipmentElement equipment, HandsElement hands, List<PotionEffectHolder> potions,
|
||||
SkillsElement skills, DropsElement drops, MessagesElement messages, CommandsElement commands) {
|
||||
this.editing = editing;
|
||||
this.mainStats = mainStats;
|
||||
@ -39,36 +40,4 @@ public class BossEntity {
|
||||
this.messages = messages;
|
||||
this.commands = commands;
|
||||
}
|
||||
|
||||
public MainStatsElement getMainStats() {
|
||||
return mainStats;
|
||||
}
|
||||
|
||||
public EquipmentElement getEquipment() {
|
||||
return equipment;
|
||||
}
|
||||
|
||||
public HandsElement getHands() {
|
||||
return hands;
|
||||
}
|
||||
|
||||
public List<PotionElement> getPotions() {
|
||||
return potions;
|
||||
}
|
||||
|
||||
public SkillsElement getSkills() {
|
||||
return skills;
|
||||
}
|
||||
|
||||
public DropsElement getDrops() {
|
||||
return drops;
|
||||
}
|
||||
|
||||
public MessagesElement getMessages() {
|
||||
return messages;
|
||||
}
|
||||
|
||||
public CommandsElement getCommands() {
|
||||
return commands;
|
||||
}
|
||||
}
|
||||
|
@ -1,18 +0,0 @@
|
||||
package net.aminecraftdev.custombosses.entity.elements;
|
||||
|
||||
import com.google.gson.annotations.Expose;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
/**
|
||||
* @author Charles Cullen
|
||||
* @version 1.0.0
|
||||
* @since 14-May-18
|
||||
*/
|
||||
public class PotionElement {
|
||||
|
||||
@Expose @Getter @Setter private String type;
|
||||
@Expose @Getter @Setter private int leve;
|
||||
@Expose @Getter @Setter private long duration;
|
||||
|
||||
}
|
@ -5,7 +5,7 @@ import net.aminecraftdev.custombosses.utils.ILoadable;
|
||||
import net.aminecraftdev.custombosses.utils.IReloadable;
|
||||
import net.aminecraftdev.custombosses.utils.ISavable;
|
||||
import net.aminecraftdev.custombosses.utils.itemstack.ItemStackConverter;
|
||||
import net.aminecraftdev.custombosses.utils.itemstack.ItemStackFileHandler;
|
||||
import net.aminecraftdev.custombosses.utils.itemstack.handlers.ItemStackFileHandler;
|
||||
import net.aminecraftdev.custombosses.utils.itemstack.holder.ItemStackHolder;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
@ -18,14 +18,14 @@ import java.util.Map;
|
||||
* @version 1.0.0
|
||||
* @since 03-Jun-18
|
||||
*/
|
||||
public class ItemStackManager implements ILoadable, ISavable, IReloadable {
|
||||
public class BossItemFileManager implements ILoadable, ISavable, IReloadable {
|
||||
|
||||
@Getter private final ItemStackConverter itemStackConverter = new ItemStackConverter();
|
||||
|
||||
private Map<String, ItemStackHolder> itemStackHolders = new HashMap<>();
|
||||
private ItemStackFileHandler itemStackFileHandler;
|
||||
|
||||
public ItemStackManager(JavaPlugin javaPlugin) {
|
||||
public BossItemFileManager(JavaPlugin javaPlugin) {
|
||||
File file = new File(javaPlugin.getDataFolder(), "items.json");
|
||||
|
||||
this.itemStackFileHandler = new ItemStackFileHandler(javaPlugin, file, true);
|
@ -0,0 +1,59 @@
|
||||
package net.aminecraftdev.custombosses.managers;
|
||||
|
||||
import net.aminecraftdev.custombosses.CustomBosses;
|
||||
import net.aminecraftdev.custombosses.entity.BossEntity;
|
||||
import net.aminecraftdev.custombosses.holder.ActiveBossHolder;
|
||||
import net.aminecraftdev.custombosses.mechanics.*;
|
||||
import net.aminecraftdev.custombosses.utils.Debug;
|
||||
import net.aminecraftdev.custombosses.utils.ILoadable;
|
||||
import net.aminecraftdev.custombosses.utils.IMechanic;
|
||||
|
||||
import java.util.LinkedList;
|
||||
import java.util.Queue;
|
||||
|
||||
/**
|
||||
* @author Charles Cullen
|
||||
* @version 1.0.0
|
||||
* @since 27-Jun-18
|
||||
*/
|
||||
public class BossMechanicManager implements ILoadable {
|
||||
|
||||
private final CustomBosses customBosses;
|
||||
private Queue<IMechanic> mechanicQueue;
|
||||
|
||||
public BossMechanicManager(CustomBosses customBosses) {
|
||||
this.customBosses = customBosses;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void load() {
|
||||
this.mechanicQueue = new LinkedList<>();
|
||||
|
||||
this.mechanicQueue.add(new EntityTypeMechanic());
|
||||
this.mechanicQueue.add(new NameMechanic());
|
||||
this.mechanicQueue.add(new HealthMechanic());
|
||||
this.mechanicQueue.add(new EquipmentMechanic(this.customBosses.getItemStackManager()));
|
||||
this.mechanicQueue.add(new WeaponMechanic(this.customBosses.getItemStackManager()));
|
||||
this.mechanicQueue.add(new PotionMechanic());
|
||||
this.mechanicQueue.add(new SettingsMechanic());
|
||||
}
|
||||
|
||||
public boolean handleMechanicApplication(BossEntity bossEntity, ActiveBossHolder activeBossHolder) {
|
||||
if(this.mechanicQueue != null && bossEntity != null && activeBossHolder != null) {
|
||||
Queue<IMechanic> queue = new LinkedList<>(this.mechanicQueue);
|
||||
|
||||
while(!queue.isEmpty()) {
|
||||
IMechanic mechanic = queue.poll();
|
||||
|
||||
if(mechanic == null) continue;
|
||||
|
||||
if(!mechanic.applyMechanic(bossEntity, activeBossHolder)) {
|
||||
Debug.MECHANIC_APPLICATION_FAILED.debug(mechanic.getClass().getSimpleName());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
@ -3,7 +3,7 @@ package net.aminecraftdev.custombosses.mechanics;
|
||||
import net.aminecraftdev.custombosses.entity.BossEntity;
|
||||
import net.aminecraftdev.custombosses.entity.elements.EquipmentElement;
|
||||
import net.aminecraftdev.custombosses.holder.ActiveBossHolder;
|
||||
import net.aminecraftdev.custombosses.managers.ItemStackManager;
|
||||
import net.aminecraftdev.custombosses.managers.BossItemFileManager;
|
||||
import net.aminecraftdev.custombosses.utils.IMechanic;
|
||||
import net.aminecraftdev.custombosses.utils.itemstack.holder.ItemStackHolder;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
@ -17,14 +17,16 @@ import org.bukkit.inventory.ItemStack;
|
||||
*/
|
||||
public class EquipmentMechanic implements IMechanic {
|
||||
|
||||
private ItemStackManager itemStackManager;
|
||||
private BossItemFileManager itemStackManager;
|
||||
|
||||
public EquipmentMechanic(ItemStackManager itemStackManager) {
|
||||
public EquipmentMechanic(BossItemFileManager itemStackManager) {
|
||||
this.itemStackManager = itemStackManager;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean applyMechanic(BossEntity bossEntity, ActiveBossHolder activeBossHolder) {
|
||||
if(activeBossHolder.getLivingEntity() == null) return false;
|
||||
|
||||
LivingEntity livingEntity = activeBossHolder.getLivingEntity();
|
||||
EquipmentElement equipmentElement = bossEntity.getEquipment();
|
||||
EntityEquipment entityEquipment = livingEntity.getEquipment();
|
||||
@ -40,7 +42,6 @@ public class EquipmentMechanic implements IMechanic {
|
||||
ItemStack itemStack = this.itemStackManager.getItemStackConverter().from(itemStackHolder);
|
||||
|
||||
entityEquipment.setHelmet(itemStack);
|
||||
entityEquipment.setHelmetDropChance(0);
|
||||
}
|
||||
}
|
||||
|
||||
@ -51,7 +52,6 @@ public class EquipmentMechanic implements IMechanic {
|
||||
ItemStack itemStack = this.itemStackManager.getItemStackConverter().from(itemStackHolder);
|
||||
|
||||
entityEquipment.setChestplate(itemStack);
|
||||
entityEquipment.setChestplateDropChance(0);
|
||||
}
|
||||
}
|
||||
|
||||
@ -62,7 +62,6 @@ public class EquipmentMechanic implements IMechanic {
|
||||
ItemStack itemStack = this.itemStackManager.getItemStackConverter().from(itemStackHolder);
|
||||
|
||||
entityEquipment.setLeggings(itemStack);
|
||||
entityEquipment.setLeggingsDropChance(0);
|
||||
}
|
||||
}
|
||||
|
||||
@ -73,7 +72,6 @@ public class EquipmentMechanic implements IMechanic {
|
||||
ItemStack itemStack = this.itemStackManager.getItemStackConverter().from(itemStackHolder);
|
||||
|
||||
entityEquipment.setBoots(itemStack);
|
||||
entityEquipment.setBootsDropChance(0);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -4,16 +4,15 @@ import net.aminecraftdev.custombosses.entity.BossEntity;
|
||||
import net.aminecraftdev.custombosses.holder.ActiveBossHolder;
|
||||
import net.aminecraftdev.custombosses.utils.Debug;
|
||||
import net.aminecraftdev.custombosses.utils.IMechanic;
|
||||
import net.aminecraftdev.custombosses.utils.StringUtils;
|
||||
import net.aminecraftdev.custombosses.utils.reader.SpigotYmlReader;
|
||||
import net.aminecraftdev.custombosses.utils.file.reader.SpigotYmlReader;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
|
||||
/**
|
||||
* @author Charles Cullen
|
||||
* @version 1.0.0
|
||||
* @since 02-Jun-18
|
||||
* @since 27-Jun-18
|
||||
*/
|
||||
public class StatsMechanic implements IMechanic {
|
||||
public class HealthMechanic implements IMechanic {
|
||||
|
||||
@Override
|
||||
public boolean applyMechanic(BossEntity bossEntity, ActiveBossHolder activeBossHolder) {
|
||||
@ -30,17 +29,6 @@ public class StatsMechanic implements IMechanic {
|
||||
|
||||
livingEntity.setMaxHealth(maxHealth);
|
||||
livingEntity.setHealth(maxHealth);
|
||||
|
||||
String customName = bossEntity.getMainStats().getDisplayName();
|
||||
|
||||
if(customName != null) {
|
||||
livingEntity.setCustomName(StringUtils.get().translateColor(customName));
|
||||
livingEntity.setCustomNameVisible(true);
|
||||
}
|
||||
|
||||
livingEntity.setRemoveWhenFarAway(false);
|
||||
livingEntity.setCanPickupItems(false);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
@ -0,0 +1,31 @@
|
||||
package net.aminecraftdev.custombosses.mechanics;
|
||||
|
||||
import net.aminecraftdev.custombosses.entity.BossEntity;
|
||||
import net.aminecraftdev.custombosses.holder.ActiveBossHolder;
|
||||
import net.aminecraftdev.custombosses.utils.IMechanic;
|
||||
import net.aminecraftdev.custombosses.utils.StringUtils;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
|
||||
/**
|
||||
* @author Charles Cullen
|
||||
* @version 1.0.0
|
||||
* @since 27-Jun-18
|
||||
*/
|
||||
public class NameMechanic implements IMechanic {
|
||||
|
||||
@Override
|
||||
public boolean applyMechanic(BossEntity bossEntity, ActiveBossHolder activeBossHolder) {
|
||||
if(activeBossHolder.getLivingEntity() == null) return false;
|
||||
|
||||
LivingEntity livingEntity = activeBossHolder.getLivingEntity();
|
||||
|
||||
String customName = bossEntity.getMainStats().getDisplayName();
|
||||
|
||||
if(customName != null) {
|
||||
livingEntity.setCustomName(StringUtils.get().translateColor(customName));
|
||||
livingEntity.setCustomNameVisible(true);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
@ -0,0 +1,38 @@
|
||||
package net.aminecraftdev.custombosses.mechanics;
|
||||
|
||||
import net.aminecraftdev.custombosses.entity.BossEntity;
|
||||
import net.aminecraftdev.custombosses.holder.ActiveBossHolder;
|
||||
import net.aminecraftdev.custombosses.utils.IMechanic;
|
||||
import net.aminecraftdev.custombosses.utils.potion.PotionEffectConverter;
|
||||
import net.aminecraftdev.custombosses.utils.potion.holder.PotionEffectHolder;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Charles Cullen
|
||||
* @version 1.0.0
|
||||
* @since 27-Jun-18
|
||||
*/
|
||||
public class PotionMechanic implements IMechanic {
|
||||
|
||||
private PotionEffectConverter potionEffectConverter;
|
||||
|
||||
public PotionMechanic() {
|
||||
this.potionEffectConverter = new PotionEffectConverter();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean applyMechanic(BossEntity bossEntity, ActiveBossHolder activeBossHolder) {
|
||||
if(activeBossHolder.getLivingEntity() == null) return false;
|
||||
|
||||
LivingEntity livingEntity = activeBossHolder.getLivingEntity();
|
||||
List<PotionEffectHolder> potionElements = bossEntity.getPotions();
|
||||
|
||||
if(potionElements != null && !potionElements.isEmpty()) {
|
||||
potionElements.forEach(potionElement -> livingEntity.addPotionEffect(this.potionEffectConverter.from(potionElement)));
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
@ -0,0 +1,49 @@
|
||||
package net.aminecraftdev.custombosses.mechanics;
|
||||
|
||||
import net.aminecraftdev.custombosses.entity.BossEntity;
|
||||
import net.aminecraftdev.custombosses.holder.ActiveBossHolder;
|
||||
import net.aminecraftdev.custombosses.utils.Debug;
|
||||
import net.aminecraftdev.custombosses.utils.IMechanic;
|
||||
import net.aminecraftdev.custombosses.utils.StringUtils;
|
||||
import net.aminecraftdev.custombosses.utils.file.reader.SpigotYmlReader;
|
||||
import net.aminecraftdev.custombosses.utils.version.VersionHandler;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.inventory.EntityEquipment;
|
||||
|
||||
/**
|
||||
* @author Charles Cullen
|
||||
* @version 1.0.0
|
||||
* @since 02-Jun-18
|
||||
*/
|
||||
public class SettingsMechanic implements IMechanic {
|
||||
|
||||
private VersionHandler versionHandler;
|
||||
|
||||
public SettingsMechanic() {
|
||||
this.versionHandler = new VersionHandler();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean applyMechanic(BossEntity bossEntity, ActiveBossHolder activeBossHolder) {
|
||||
if(activeBossHolder.getLivingEntity() == null) return false;
|
||||
|
||||
LivingEntity livingEntity = activeBossHolder.getLivingEntity();
|
||||
EntityEquipment entityEquipment = livingEntity.getEquipment();
|
||||
|
||||
livingEntity.setRemoveWhenFarAway(false);
|
||||
livingEntity.setCanPickupItems(false);
|
||||
entityEquipment.setHelmetDropChance(0.0F);
|
||||
entityEquipment.setChestplateDropChance(0.0F);
|
||||
entityEquipment.setLeggingsDropChance(0.0F);
|
||||
entityEquipment.setBootsDropChance(0.0F);
|
||||
|
||||
if(this.versionHandler.canUseOffHand()) {
|
||||
entityEquipment.setItemInMainHandDropChance(0.0F);
|
||||
entityEquipment.setItemInOffHandDropChance(0.0F);
|
||||
} else {
|
||||
entityEquipment.setItemInHandDropChance(0.0F);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
@ -0,0 +1,65 @@
|
||||
package net.aminecraftdev.custombosses.mechanics;
|
||||
|
||||
import net.aminecraftdev.custombosses.entity.BossEntity;
|
||||
import net.aminecraftdev.custombosses.entity.elements.HandsElement;
|
||||
import net.aminecraftdev.custombosses.holder.ActiveBossHolder;
|
||||
import net.aminecraftdev.custombosses.managers.BossItemFileManager;
|
||||
import net.aminecraftdev.custombosses.utils.IMechanic;
|
||||
import net.aminecraftdev.custombosses.utils.version.VersionHandler;
|
||||
import net.aminecraftdev.custombosses.utils.itemstack.holder.ItemStackHolder;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.inventory.EntityEquipment;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
/**
|
||||
* @author Charles Cullen
|
||||
* @version 1.0.0
|
||||
* @since 27-Jun-18
|
||||
*/
|
||||
public class WeaponMechanic implements IMechanic {
|
||||
|
||||
private BossItemFileManager itemStackManager;
|
||||
private VersionHandler versionHandler;
|
||||
|
||||
public WeaponMechanic(BossItemFileManager itemStackManager) {
|
||||
this.itemStackManager = itemStackManager;
|
||||
this.versionHandler = new VersionHandler();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean applyMechanic(BossEntity bossEntity, ActiveBossHolder activeBossHolder) {
|
||||
if(activeBossHolder.getLivingEntity() == null) return false;
|
||||
|
||||
LivingEntity livingEntity = activeBossHolder.getLivingEntity();
|
||||
EntityEquipment entityEquipment = livingEntity.getEquipment();
|
||||
HandsElement handsElement = bossEntity.getHands();
|
||||
String mainHand = handsElement.getMainHand();
|
||||
String offHand = handsElement.getOffHand();
|
||||
|
||||
if(mainHand != null) {
|
||||
ItemStackHolder itemStackHolder = this.itemStackManager.getItemStackHolder(mainHand);
|
||||
|
||||
if(itemStackHolder != null) {
|
||||
ItemStack itemStack = this.itemStackManager.getItemStackConverter().from(itemStackHolder);
|
||||
|
||||
if(this.versionHandler.canUseOffHand()) {
|
||||
entityEquipment.setItemInMainHand(itemStack);
|
||||
} else {
|
||||
entityEquipment.setItemInHand(itemStack);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(offHand != null && this.versionHandler.canUseOffHand()) {
|
||||
ItemStackHolder itemStackHolder = this.itemStackManager.getItemStackHolder(offHand);
|
||||
|
||||
if(itemStackHolder != null) {
|
||||
ItemStack itemStack = this.itemStackManager.getItemStackConverter().from(itemStackHolder);
|
||||
|
||||
entityEquipment.setItemInOffHand(itemStack);
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
@ -11,6 +11,7 @@ public enum Debug {
|
||||
NULL_ENTITY_TYPE("The {0} boss or minion has got an invalid entity type."),
|
||||
|
||||
MAX_HEALTH("You cannot set the max health higher than {0}. You can adjust your max health in the spigot.yml file and restart your server to increase this."),
|
||||
MECHANIC_APPLICATION_FAILED("Some mechanics have failed to be applied. It got stuck at {0} mechanic."),
|
||||
|
||||
ATTEMPTED_TO_SPAWN_WHILE_DISABLED("The {0} boss/minion attempted to spawn while editing is enabled.");
|
||||
|
||||
|
@ -0,0 +1,46 @@
|
||||
package net.aminecraftdev.custombosses.utils;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* @author Charles Cullen
|
||||
* @version 1.0.0
|
||||
* @since 27-Jun-18
|
||||
*/
|
||||
public enum Versions {
|
||||
|
||||
v1_7_R3(1, "1.7.9"),
|
||||
v1_7_R4(2, "1.7.10"),
|
||||
v1_8_R1(3, "1.8"),
|
||||
v1_8_R2(4, "1.8.3"),
|
||||
v1_8_R3(5, "1.8.9"),
|
||||
v1_9_R1(6, "1.9"),
|
||||
v1_9_R2(7, "1.9.4"),
|
||||
v1_10_R1(8, "1.10"),
|
||||
v1_11_R1(9, "1.11.2"),
|
||||
v1_12_R1(10, "1.12.1");
|
||||
|
||||
@Getter private String displayVersion, bukkitVersion;
|
||||
private int weight;
|
||||
|
||||
Versions(int weight, String displayVersion) {
|
||||
this.weight = weight;
|
||||
this.displayVersion = displayVersion;
|
||||
this.bukkitVersion = name();
|
||||
}
|
||||
|
||||
public boolean isHigherThan(Versions input) {
|
||||
return this.weight >= input.weight;
|
||||
}
|
||||
|
||||
public static Versions getVersion(String input) {
|
||||
for(Versions versions : values()) {
|
||||
if(versions.getBukkitVersion().equalsIgnoreCase(input)) {
|
||||
return versions;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package net.aminecraftdev.custombosses.utils.reader;
|
||||
package net.aminecraftdev.custombosses.utils.file.reader;
|
||||
|
||||
import net.aminecraftdev.custombosses.utils.IYmlReader;
|
||||
import net.aminecraftdev.custombosses.utils.file.FileUtils;
|
@ -1,4 +1,4 @@
|
||||
package net.aminecraftdev.custombosses.utils.itemstack;
|
||||
package net.aminecraftdev.custombosses.utils.itemstack.handlers;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
@ -0,0 +1,41 @@
|
||||
package net.aminecraftdev.custombosses.utils.potion;
|
||||
|
||||
import net.aminecraftdev.custombosses.utils.IConverter;
|
||||
import net.aminecraftdev.custombosses.utils.potion.converters.PotionEffectTypeConverter;
|
||||
import net.aminecraftdev.custombosses.utils.potion.holder.PotionEffectHolder;
|
||||
import org.bukkit.potion.PotionEffect;
|
||||
import org.bukkit.potion.PotionEffectType;
|
||||
|
||||
/**
|
||||
* @author Charles Cullen
|
||||
* @version 1.0.0
|
||||
* @since 27-Jun-18
|
||||
*/
|
||||
public class PotionEffectConverter implements IConverter<PotionEffectHolder, PotionEffect> {
|
||||
|
||||
private PotionEffectTypeConverter potionEffectTypeConverter;
|
||||
|
||||
public PotionEffectConverter() {
|
||||
this.potionEffectTypeConverter = new PotionEffectTypeConverter();
|
||||
}
|
||||
|
||||
@Override
|
||||
public PotionEffectHolder to(PotionEffect potionEffect) {
|
||||
PotionEffectType potionEffectType = potionEffect.getType();
|
||||
int duration = potionEffect.getDuration();
|
||||
int level = potionEffect.getAmplifier();
|
||||
|
||||
return new PotionEffectHolder(this.potionEffectTypeConverter.to(potionEffectType), level+1, duration/20);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PotionEffect from(PotionEffectHolder potionHolder) {
|
||||
String potionEffectType = potionHolder.getType();
|
||||
Integer duration = potionHolder.getDuration();
|
||||
Integer level = potionHolder.getLevel();
|
||||
|
||||
if(potionEffectType != null && duration != null && level != null) return new PotionEffect(this.potionEffectTypeConverter.from(potionEffectType), level-1, (duration*20));
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
@ -0,0 +1,22 @@
|
||||
package net.aminecraftdev.custombosses.utils.potion.converters;
|
||||
|
||||
import net.aminecraftdev.custombosses.utils.IConverter;
|
||||
import org.bukkit.potion.PotionEffectType;
|
||||
|
||||
/**
|
||||
* @author Charles Cullen
|
||||
* @version 1.0.0
|
||||
* @since 27-Jun-18
|
||||
*/
|
||||
public class PotionEffectTypeConverter implements IConverter<String, PotionEffectType> {
|
||||
|
||||
@Override
|
||||
public String to(PotionEffectType potionEffectType) {
|
||||
return potionEffectType.getName().toUpperCase();
|
||||
}
|
||||
|
||||
@Override
|
||||
public PotionEffectType from(String s) {
|
||||
return PotionEffectType.getByName(s);
|
||||
}
|
||||
}
|
@ -0,0 +1,22 @@
|
||||
package net.aminecraftdev.custombosses.utils.potion.holder;
|
||||
|
||||
import com.google.gson.annotations.Expose;
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* @author Charles Cullen
|
||||
* @version 1.0.0
|
||||
* @since 27-Jun-18
|
||||
*/
|
||||
public class PotionEffectHolder {
|
||||
|
||||
@Expose @Getter private String type;
|
||||
@Expose @Getter private Integer level, duration;
|
||||
|
||||
public PotionEffectHolder(String type, Integer level, Integer duration) {
|
||||
this.type = type;
|
||||
this.level = level;
|
||||
this.duration = duration;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,27 @@
|
||||
package net.aminecraftdev.custombosses.utils.version;
|
||||
|
||||
import net.aminecraftdev.custombosses.utils.Versions;
|
||||
import org.bukkit.Bukkit;
|
||||
|
||||
/**
|
||||
* @author Charles Cullen
|
||||
* @version 1.0.0
|
||||
* @since 27-Jun-18
|
||||
*/
|
||||
public class VersionHandler {
|
||||
|
||||
private Versions version;
|
||||
|
||||
public VersionHandler() {
|
||||
String v = Bukkit.getServer().getClass().getPackage().getName();
|
||||
|
||||
v = v.substring(v.lastIndexOf(".") + 1);
|
||||
|
||||
this.version = Versions.getVersion(v);
|
||||
}
|
||||
|
||||
public boolean canUseOffHand() {
|
||||
return this.version.isHigherThan(Versions.v1_9_R1);
|
||||
}
|
||||
|
||||
}
|
2
pom.xml
2
pom.xml
@ -19,7 +19,7 @@
|
||||
</modules>
|
||||
|
||||
<properties>
|
||||
<plugin.version>3.0.0-SNAPSHOT-U11</plugin.version>
|
||||
<plugin.version>3.0.0-SNAPSHOT-U12</plugin.version>
|
||||
<plugin.name>CustomBosses</plugin.name>
|
||||
<plugin.main>net.aminecraftdev.custombosses.CustomBosses</plugin.main>
|
||||
<plugin.author>AMinecraftDev</plugin.author>
|
||||
|
Loading…
Reference in New Issue
Block a user