package be.isach.ultracosmetics.tempchests; import be.isach.ultracosmetics.UltraCosmetics; import be.isach.ultracosmetics.config.TreasureManager; import be.isach.ultracosmetics.player.UltraPlayer; import be.isach.ultracosmetics.tempchests.reward.*; import org.bukkit.*; import java.util.ArrayList; import java.util.Collections; import java.util.List; /** * Treasure Chest Randomizer * * @author RadBuilder * @since 01-14-2017 */ public class TreasureRandomizer { private List<Reward> chance; private List<PermissionReward> customRewards; private UltraPlayer owner; private UltraCosmetics ultraCosmetics; private List<Reward> rewards; private Reward reward; public TreasureRandomizer(UltraPlayer owner, Location location, UltraCosmetics ultraCosmetics) { chance = new ArrayList<Reward>(); customRewards = new ArrayList<PermissionReward>(); for(String key : TreasureManager.getRewardFile().getConfigurationSection("CustomRewards").getKeys(false)) if(TreasureManager.getRewardFile().getBoolean("CustomRewards." + key + ".enabled")) customRewards.add(new PermissionReward(key, owner, ultraCosmetics)); this.owner = owner; this.ultraCosmetics = ultraCosmetics; this.rewards = new ArrayList<Reward>(); rewards.add(new AmmoReward(owner, ultraCosmetics)); rewards.add(new BootReward(owner, ultraCosmetics)); rewards.add(new ChestplateReward(owner, ultraCosmetics)); rewards.add(new EmoteReward(owner, ultraCosmetics)); rewards.add(new GadgetReward(owner, ultraCosmetics)); rewards.add(new HatReward(owner, ultraCosmetics)); rewards.add(new HelmetReward(owner, ultraCosmetics)); rewards.add(new LeggingReward(owner, ultraCosmetics)); rewards.add(new MoneyReward(owner, ultraCosmetics)); rewards.add(new MorphReward(owner, ultraCosmetics)); rewards.add(new MountReward(owner, ultraCosmetics)); rewards.add(new ParticleEffectReward(owner, ultraCosmetics)); rewards.add(new PetReward(owner, ultraCosmetics)); calculateChances(); } private void calculateChances() { for(Reward r : rewards) { if(r.canEarn()) { int c = r.getType().getChance(); for(int i = 0; i < c; i++) { chance.add(r); } } } if(!customRewards.isEmpty()) { for(PermissionReward r : customRewards) { if(r.canEarn()) { int c = r.getChance(); for(int i = 0; i < c; i++) { chance.add(r); } } } } } public Reward getRandomThing() { Reward reward = null; if(chance.isEmpty()) { if(!rewards.get(9).canEarn()) return new NothingReward(owner, ultraCosmetics); else reward = rewards.get(9); } else { List<Reward> random = new ArrayList<Reward>(chance); Collections.shuffle(random); reward = random.get(0); } this.reward = reward; return reward; } public Reward getReward() { return reward; } public void clear() { for(Reward r : rewards) { r.clear(); } chance.clear(); } public String getName() { return reward.getName(); } }