From 918a8172831e8f4956d34fe8367c8134fbbb1482 Mon Sep 17 00:00:00 2001 From: Shaun Bennett Date: Tue, 16 Sep 2014 15:04:42 -0500 Subject: [PATCH 01/15] More treasure bug fixes and animation touches --- .../src/mineplex/core/treasure/BlockInfo.java | 22 ++++- .../src/mineplex/core/treasure/Treasure.java | 89 +++++++++++-------- .../core/treasure/TreasureManager.java | 53 +++++++++-- .../animation/ChestSpawnAnimation.java | 11 ++- .../animation/TreasureRemoveAnimation.java | 40 ++++++--- .../treasure/reward/rewards/CoinReward.java | 4 +- .../reward/rewards/UnknownPackageReward.java | 3 +- 7 files changed, 158 insertions(+), 64 deletions(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/BlockInfo.java b/Plugins/Mineplex.Core/src/mineplex/core/treasure/BlockInfo.java index 13e40df3b..09c46f93d 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/BlockInfo.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/BlockInfo.java @@ -1,17 +1,27 @@ package mineplex.core.treasure; +import org.bukkit.block.Block; + /** * Created by Shaun on 8/28/2014. */ public class BlockInfo { + private Block _block; + private int _id; private byte _data; - public BlockInfo(int id, byte data) + public BlockInfo(Block block) { - _id = id; - _data = data; + _block = block; + _id = block.getTypeId(); + _data = block.getData(); + } + + public Block getBlock() + { + return _block; } public int getId() @@ -23,4 +33,10 @@ public class BlockInfo { return _data; } + + @Override + public int hashCode() + { + return _block.hashCode(); + } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/Treasure.java b/Plugins/Mineplex.Core/src/mineplex/core/treasure/Treasure.java index 90fead2df..c1d0fb1a4 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/Treasure.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/Treasure.java @@ -1,9 +1,10 @@ package mineplex.core.treasure; +import java.util.HashSet; import java.util.Iterator; import java.util.LinkedList; -import java.util.Map; import java.util.Random; +import java.util.Set; import org.bukkit.Bukkit; import org.bukkit.Effect; @@ -16,7 +17,6 @@ import org.bukkit.entity.Player; import net.minecraft.server.v1_7_R4.PacketPlayOutBlockAction; import mineplex.core.common.util.F; -import mineplex.core.common.util.NautHashMap; import mineplex.core.common.util.UtilParticle; import mineplex.core.treasure.animation.Animation; import mineplex.core.treasure.animation.ChestExplodeAnimation; @@ -33,7 +33,13 @@ import mineplex.core.treasure.reward.RewardRarity; */ public class Treasure { - private NautHashMap _blockRestoreMap = new NautHashMap(); + + // Decay Sets + private HashSet _wallsBlockInfo = new HashSet<>(); + private HashSet _outerRingBlockInfo = new HashSet<>(); + private HashSet _centerBlockInfo = new HashSet<>(); + private HashSet _chestBlockInfo = new HashSet<>(); + private Player _player; private Random _random; private Block _centerBlock; @@ -80,6 +86,7 @@ public class Treasure if (Math.abs(x) == 1 || Math.abs(z) == 1) { Block block = _centerBlock.getRelative(x, 0, z); + _centerBlockInfo.add(new BlockInfo(block)); setBlock(block, _style.getPrimaryMaterial(), _style.getPrimaryData()); } } @@ -92,11 +99,13 @@ public class Treasure { { Block block = _centerBlock.getRelative(x, 0, -2); + _outerRingBlockInfo.add(new BlockInfo(block)); setBlock(block, _style.getSecondaryMaterial(), _style.getSecondaryData()); } { Block block = _centerBlock.getRelative(x, 0, 2); + _outerRingBlockInfo.add(new BlockInfo(block)); setBlock(block, _style.getSecondaryMaterial(), _style.getSecondaryData()); } } @@ -105,17 +114,19 @@ public class Treasure { { Block block = _centerBlock.getRelative(-2, 0, z); + _outerRingBlockInfo.add(new BlockInfo(block)); setBlock(block, _style.getSecondaryMaterial(), _style.getSecondaryData()); } { Block block = _centerBlock.getRelative(2, 0, z); + _outerRingBlockInfo.add(new BlockInfo(block)); setBlock(block, _style.getSecondaryMaterial(), _style.getSecondaryData()); } } } - private void createGlass() + private void createWalls() { for (int z = -2; z <= 2; z++) { @@ -125,6 +136,7 @@ public class Treasure { Block playerBlock = getPlayerBlock(); Block block = playerBlock.getRelative(x, 0, z); + _wallsBlockInfo.add(new BlockInfo(block)); setBlock(block, _style.getWallMaterial(), _style.getWallData()); } } @@ -146,7 +158,10 @@ public class Treasure if (_tickCount == 5) { Block block = _centerBlock; - setBlock(block, _style.getPrimaryMaterial(), _style.getPrimaryData()); + _centerBlockInfo.add(new BlockInfo(block)); + _centerBlockInfo.add(new BlockInfo(block.getRelative(BlockFace.DOWN))); + setBlock(block, Material.REDSTONE_LAMP_ON, (byte) 0); + setBlock(block.getRelative(BlockFace.DOWN), Material.REDSTONE_TORCH_ON, (byte) 0); } else if (_tickCount == 10) { @@ -158,30 +173,30 @@ public class Treasure } else if (_tickCount == 30) { - createGlass(); + createWalls(); } else if (_tickCount == 50) { Block block = getPlayerBlock().getRelative(2, 0, 0); - ChestSpawnAnimation task = new ChestSpawnAnimation(this, block, (byte)4); + ChestSpawnAnimation task = new ChestSpawnAnimation(this, block, (byte)4, _chestBlockInfo); _animations.add(task); } else if (_tickCount == 80) { Block block = getPlayerBlock().getRelative(-2, 0, 0); - ChestSpawnAnimation task = new ChestSpawnAnimation(this, block, (byte)5); + ChestSpawnAnimation task = new ChestSpawnAnimation(this, block, (byte)5, _chestBlockInfo); _animations.add(task); } else if (_tickCount == 110) { Block block = getPlayerBlock().getRelative(0, 0, 2); - ChestSpawnAnimation task = new ChestSpawnAnimation(this, block, (byte)2); + ChestSpawnAnimation task = new ChestSpawnAnimation(this, block, (byte)2, _chestBlockInfo); _animations.add(task); } else if (_tickCount == 140) { Block block = getPlayerBlock().getRelative(0, 0, -2); - ChestSpawnAnimation task = new ChestSpawnAnimation(this, block, (byte)3); + ChestSpawnAnimation task = new ChestSpawnAnimation(this, block, (byte)3, _chestBlockInfo); _animations.add(task); } @@ -223,21 +238,13 @@ public class Treasure return _centerBlock.getRelative(BlockFace.UP); } - public void setBlock(Block block, Material material, byte data, boolean addToBlockRestoreMap) + public void setBlock(Block block, Material material, byte data) { - if (addToBlockRestoreMap) - _blockRestoreMap.put(block, new BlockInfo(block.getTypeId(), block.getData())); - block.setType(material); block.setData(data); block.getLocation().getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getTypeId()); } - public void setBlock(Block block, Material material, byte data) - { - setBlock(block, material, data, true); - } - public void openChest(Block block) { ChestData data = getChestData(block); @@ -257,17 +264,17 @@ public class Treasure else if (data.getReward().getRarity() == RewardRarity.RARE) { _animations.add(new CircleAnimation(this, data.getBlock().getLocation().add(0.5, 1.5, 0.5))); - Bukkit.broadcastMessage(F.main("Treasure", F.name(_player.getName()) + " opened a Rare treasure!")); + Bukkit.broadcastMessage(F.main("Treasure", F.name(_player.getName()) + " opened the Rare treasure " + text)); } else if (data.getReward().getRarity() == RewardRarity.VERY_RARE) { _animations.add(new ChestExplodeAnimation(this, data.getBlock())); - Bukkit.broadcastMessage(F.main("Treasure", F.name(_player.getName()) + " opened a Legendary treasure!")); + Bukkit.broadcastMessage(F.main("Treasure", F.name(_player.getName()) + " opened the Legendary treasure " + text)); } if (isFinished()) { - TreasureRemoveAnimation animation = new TreasureRemoveAnimation(this, _blockRestoreMap); + TreasureRemoveAnimation animation = new TreasureRemoveAnimation(this, _centerBlockInfo, _outerRingBlockInfo, _wallsBlockInfo); _animations.add(animation); _finished = true; } @@ -337,20 +344,11 @@ public class Treasure } } - for (Map.Entry entry : _blockRestoreMap.entrySet()) - { - Block block = entry.getKey(); - BlockInfo data = entry.getValue(); - - if (block.getType().equals(Material.CHEST)) - { - block.getLocation().getWorld().createExplosion(block.getLocation().add(0.5, 0.5, 0.5), 0F); - } - block.getLocation().getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getTypeId()); - - block.setTypeId(data.getId()); - block.setData(data.getData()); - } + // Remove any extra blocks + resetBlockInfo(_wallsBlockInfo); + resetBlockInfo(_centerBlockInfo); + resetBlockInfo(_outerRingBlockInfo); + resetBlockInfo(_chestBlockInfo); for (Animation animation : _animations) { @@ -359,6 +357,25 @@ public class Treasure _animations.clear(); } + public void resetBlockInfo(Set blockInfoSet) + { + for (BlockInfo blockInfo : blockInfoSet) + { + Block block = blockInfo.getBlock(); + + if (block.getType().equals(Material.CHEST)) + { + block.getLocation().getWorld().createExplosion(block.getLocation().add(0.5, 0.5, 0.5), 0F); + } + block.getLocation().getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getTypeId()); + + block.setTypeId(blockInfo.getId()); + block.setData(blockInfo.getData()); + } + + blockInfoSet.clear(); + } + public TreasureStyle getStyle() { return _style; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureManager.java b/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureManager.java index 3978b60b6..1f4e16978 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureManager.java @@ -11,12 +11,14 @@ import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; import org.bukkit.event.block.Action; import org.bukkit.event.player.PlayerCommandPreprocessEvent; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerMoveEvent; import org.bukkit.event.player.PlayerQuitEvent; +import org.bukkit.event.player.PlayerVelocityEvent; import org.bukkit.inventory.ItemStack; import org.bukkit.plugin.java.JavaPlugin; @@ -31,6 +33,7 @@ import mineplex.core.common.util.UtilEnt; import mineplex.core.common.util.UtilMath; import mineplex.core.common.util.UtilPlayer; import mineplex.core.donation.DonationManager; +import mineplex.core.event.StackerEvent; import mineplex.core.inventory.InventoryManager; import mineplex.core.treasure.event.TreasureFinishEvent; import mineplex.core.treasure.event.TreasureStartEvent; @@ -66,7 +69,7 @@ public class TreasureManager extends MiniPlugin { // Coins { - _rewardManager.addReward(new CoinReward(donationManager, 2000, 5000, 25, RewardRarity.VERY_RARE)); + _rewardManager.addReward(new CoinReward(donationManager, 10000, 20000, 25, RewardRarity.VERY_RARE)); } // Mounts { @@ -330,7 +333,7 @@ public class TreasureManager extends MiniPlugin treasure.update(); - if (treasure.isFinished() && treasure.getFinishedTickCount() >= 100) + if (treasure.isFinished() && treasure.getFinishedTickCount() >= 80) { treasure.cleanup(); iterator.remove(); @@ -391,17 +394,52 @@ public class TreasureManager extends MiniPlugin { for (Treasure treasure : _playerTreasureMap.values()) { + Location fromLocation = event.getFrom(); + Location toLocation = event.getTo(); Location centerLocation = treasure.getCenterBlock().getLocation().add(0.5, 1.5, 0.5); - if (centerLocation.distanceSquared(event.getTo()) <= 9) + + double toDistanceFromCenter = centerLocation.distanceSquared(toLocation); + + if (toDistanceFromCenter <= 9) { - UtilAction.velocity(player, UtilAlg.getTrajectory(player.getLocation(), centerLocation).multiply(-1), 1.5, true, 0.8, 0, 1.0, true); - event.setTo(event.getFrom()); + // Only cancel movement if they are moving towards the center + double fromDistanceFromCenter = centerLocation.distanceSquared(fromLocation); + if (toDistanceFromCenter < fromDistanceFromCenter) + { + UtilAction.velocity(player, UtilAlg.getTrajectory(player.getLocation(), centerLocation).multiply(-1), 1.5, true, 0.8, 0, 1.0, true); + event.setTo(event.getFrom()); + } } } } } @EventHandler + public void cancelVelocity(PlayerVelocityEvent event) + { + // Need to prevent players + + Player player = event.getPlayer(); + if (_playerTreasureMap.containsKey(player)) + { + event.setCancelled(true); + } + } + + @EventHandler + public void cancelStacker(StackerEvent event) + { + if (event.getEntity() instanceof Player) + { + Player player = ((Player) event.getEntity()); + if (_playerTreasureMap.containsKey(player)) + { + event.setCancelled(true); + } + } + } + + @EventHandler(priority = EventPriority.HIGH) public void interact(PlayerInteractEvent event) { Player player = event.getPlayer(); @@ -409,11 +447,12 @@ public class TreasureManager extends MiniPlugin { if (event.getAction() == Action.RIGHT_CLICK_BLOCK && event.getClickedBlock().getType() == Material.CHEST) { - event.setCancelled(true); - Treasure treasure = _playerTreasureMap.get(player); treasure.openChest(event.getClickedBlock()); } + + // Always cancel interact for treasure players, prevents players from being able to open up cosmetic menu and other menus + event.setCancelled(true); } else if (event.getAction() == Action.RIGHT_CLICK_BLOCK && event.getClickedBlock().getType() == Material.CHEST) { diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/ChestSpawnAnimation.java b/Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/ChestSpawnAnimation.java index 28aa01e07..434460ab0 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/ChestSpawnAnimation.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/ChestSpawnAnimation.java @@ -1,15 +1,16 @@ package mineplex.core.treasure.animation; +import java.util.HashSet; + import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.Sound; import org.bukkit.block.Block; import org.bukkit.craftbukkit.v1_7_R4.CraftWorld; - import net.minecraft.server.v1_7_R4.MathHelper; -import net.minecraft.server.v1_7_R4.PacketPlayOutWorldEvent; import mineplex.core.common.util.UtilParticle; +import mineplex.core.treasure.BlockInfo; import mineplex.core.treasure.Treasure; /** @@ -23,13 +24,16 @@ public class ChestSpawnAnimation extends Animation private byte _direction; private Location _centerLocation; - public ChestSpawnAnimation(Treasure tresure, Block block, byte direction) + private HashSet _chestBlockInfo; + + public ChestSpawnAnimation(Treasure tresure, Block block, byte direction, HashSet chestBlockInfo) { super(tresure); _block = block; _direction = direction; _centerLocation = block.getLocation().clone().add(0.5, 0.5, 0.5); _centerLocation.getWorld().playSound(_centerLocation, Sound.LAVA, 1, 1); + _chestBlockInfo = chestBlockInfo; } @Override @@ -50,6 +54,7 @@ public class ChestSpawnAnimation extends Animation if (getTicks() >= ANIMATION_DURATION) { + _chestBlockInfo.add(new BlockInfo(_block)); getTreasure().setBlock(_block, Material.CHEST, _direction); _block.getLocation().getWorld().playSound(_centerLocation, Sound.ANVIL_LAND, 0.5f, 1f); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/TreasureRemoveAnimation.java b/Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/TreasureRemoveAnimation.java index be05e6f04..74da014dd 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/TreasureRemoveAnimation.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/TreasureRemoveAnimation.java @@ -1,11 +1,8 @@ package mineplex.core.treasure.animation; +import java.util.HashSet; import java.util.Random; -import org.bukkit.Material; -import org.bukkit.block.Block; - -import mineplex.core.common.util.NautHashMap; import mineplex.core.treasure.BlockInfo; import mineplex.core.treasure.Treasure; @@ -16,21 +13,43 @@ public class TreasureRemoveAnimation extends Animation { private Random _random = new Random(); - private NautHashMap _blockRestoreMap; + private HashSet _wallsBlockInfo; + private HashSet _outerRingBlockInfo; + private HashSet _centerBlockInfo; - public TreasureRemoveAnimation(Treasure treasure, NautHashMap blockRestoreMap) + public TreasureRemoveAnimation(Treasure treasure, HashSet centerBlockInfo, HashSet outerRingBlockInfo, HashSet wallsBlockInfo) { super(treasure); - _blockRestoreMap = blockRestoreMap; + _wallsBlockInfo = wallsBlockInfo; + _centerBlockInfo = centerBlockInfo; + _outerRingBlockInfo = outerRingBlockInfo; } @Override protected void tick() { - // first wait for 1 second - if (getTicks() <= 20) - return; + // Chests go away at 100 ticks + HashSet blockInfoSet = null; + if (getTicks() == 40) + { + blockInfoSet = _wallsBlockInfo; + } + else if (getTicks() == 50) + { + blockInfoSet = _outerRingBlockInfo; + } + else if (getTicks() == 60) + { + blockInfoSet = _centerBlockInfo; + } + + if (blockInfoSet != null) + { + getTreasure().resetBlockInfo(blockInfoSet); + } + + /* if (getTicks() % 2 == 0) { if (_blockRestoreMap.size() > 4) @@ -52,6 +71,7 @@ public class TreasureRemoveAnimation extends Animation finish(); } } + */ } @Override diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/reward/rewards/CoinReward.java b/Plugins/Mineplex.Core/src/mineplex/core/treasure/reward/rewards/CoinReward.java index e5b3a6b2f..9f52c1474 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/reward/rewards/CoinReward.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/reward/rewards/CoinReward.java @@ -6,11 +6,9 @@ package mineplex.core.treasure.reward.rewards; import java.util.Random; -import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; -import mineplex.core.common.util.C; import mineplex.core.common.util.Callback; import mineplex.core.donation.DonationManager; import mineplex.core.treasure.reward.RewardRarity; @@ -32,7 +30,7 @@ public class CoinReward extends AbstractReward public CoinReward(DonationManager donationManager, int minCoinCount, int maxCoinCount, int weight, RewardRarity rarity, Random random) { - super(new ItemStack(Material.GOLD_INGOT), rarity, weight); + super(new ItemStack(175), rarity, weight); _donationManager = donationManager; _minCoinCount = minCoinCount; _maxCoinCount = maxCoinCount; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/reward/rewards/UnknownPackageReward.java b/Plugins/Mineplex.Core/src/mineplex/core/treasure/reward/rewards/UnknownPackageReward.java index 0968e71d0..6fae49898 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/reward/rewards/UnknownPackageReward.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/reward/rewards/UnknownPackageReward.java @@ -1,6 +1,5 @@ package mineplex.core.treasure.reward.rewards; -import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; @@ -35,7 +34,7 @@ public class UnknownPackageReward extends AbstractReward @Override public boolean canGiveReward(Player player) { - return _donationManager.Get(player.getName()).OwnsUnknownPackage(_packageName); + return !_donationManager.Get(player.getName()).OwnsUnknownPackage(_packageName); } protected String getPackageName() From 50fa8b02f1c4458f01e0c419ac78e179a7947aa2 Mon Sep 17 00:00:00 2001 From: Shaun Bennett Date: Tue, 16 Sep 2014 17:57:34 -0500 Subject: [PATCH 02/15] Use explosion particles instead of createExplosion --- Plugins/Mineplex.Core/src/mineplex/core/treasure/Treasure.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/Treasure.java b/Plugins/Mineplex.Core/src/mineplex/core/treasure/Treasure.java index c1d0fb1a4..e6ca1372a 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/Treasure.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/Treasure.java @@ -365,7 +365,8 @@ public class Treasure if (block.getType().equals(Material.CHEST)) { - block.getLocation().getWorld().createExplosion(block.getLocation().add(0.5, 0.5, 0.5), 0F); + UtilParticle.PlayParticle(UtilParticle.ParticleType.EXPLODE, block.getLocation().add(0.5, 0.5, 0.5), 0F, 0F, 0F, 0F, 1); +// block.getLocation().getWorld().createExplosion(block.getLocation().add(0.5, 0.5, 0.5), 0F); } block.getLocation().getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getTypeId()); From e6797582f9ebe6dd5381f35cdc5df4f0b005e072 Mon Sep 17 00:00:00 2001 From: Chiss Date: Wed, 17 Sep 2014 08:59:09 +1000 Subject: [PATCH 03/15] Minor fixes --- .../src/mineplex/core/join/JoinQuit.java | 22 ------------------- .../reward/rewards/UnknownPackageReward.java | 2 +- .../game/games/castlesiege/CastleSiege.java | 2 +- .../arcade/stats/DamageTakenStatTracker.java | 9 +++++++- 4 files changed, 10 insertions(+), 25 deletions(-) delete mode 100644 Plugins/Mineplex.Core/src/mineplex/core/join/JoinQuit.java diff --git a/Plugins/Mineplex.Core/src/mineplex/core/join/JoinQuit.java b/Plugins/Mineplex.Core/src/mineplex/core/join/JoinQuit.java deleted file mode 100644 index eb6ba04f7..000000000 --- a/Plugins/Mineplex.Core/src/mineplex/core/join/JoinQuit.java +++ /dev/null @@ -1,22 +0,0 @@ -package mineplex.core.join; - -import org.bukkit.event.EventHandler; -import org.bukkit.event.player.PlayerJoinEvent; -import org.bukkit.event.player.PlayerQuitEvent; - -import mineplex.core.common.util.F; - -public class JoinQuit -{ - @EventHandler - public void Join(PlayerJoinEvent event) - { - event.setJoinMessage(F.sys("Join", event.getPlayer().getName())); - } - - @EventHandler - public void Quit(PlayerQuitEvent event) - { - event.setQuitMessage(F.sys("Quit", event.getPlayer().getName())); - } -} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/reward/rewards/UnknownPackageReward.java b/Plugins/Mineplex.Core/src/mineplex/core/treasure/reward/rewards/UnknownPackageReward.java index 0968e71d0..a0195fa42 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/reward/rewards/UnknownPackageReward.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/reward/rewards/UnknownPackageReward.java @@ -35,7 +35,7 @@ public class UnknownPackageReward extends AbstractReward @Override public boolean canGiveReward(Player player) { - return _donationManager.Get(player.getName()).OwnsUnknownPackage(_packageName); + return !_donationManager.Get(player.getName()).OwnsUnknownPackage(_packageName); } protected String getPackageName() diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/castlesiege/CastleSiege.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/castlesiege/CastleSiege.java index 666ec9202..1c1207d49 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/castlesiege/CastleSiege.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/castlesiege/CastleSiege.java @@ -539,7 +539,7 @@ public class CastleSiege extends TeamGame if (this.WorldTimeSet > 24100) { - SetCustomWinLine(_kingName + ChatColor.RESET + " has survived the seige!"); + SetCustomWinLine(_kingName + ChatColor.RESET + " has survived the siege!"); AnnounceEnd(GetTeam(ChatColor.AQUA)); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/stats/DamageTakenStatTracker.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/stats/DamageTakenStatTracker.java index 1f584cbb5..fa957c108 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/stats/DamageTakenStatTracker.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/stats/DamageTakenStatTracker.java @@ -21,10 +21,17 @@ public class DamageTakenStatTracker extends StatTracker Player damagee = event.GetDamageePlayer(); if (damagee == null) return; - + addStat(damagee, "Damage Taken", (int) Math.round(event.GetDamage()), false, false); + if (event.GetDamagerPlayer(true) != null) + addStat(damagee, "Damage Taken PvP ", (int) Math.round(event.GetDamage()), false, false); if (getGame().GetKit(damagee) != null) + { addStat(damagee, getGame().GetKit(damagee).GetName() + " Damage Taken", (int) Math.round(event.GetDamage()), false, false); + + if (event.GetDamagerPlayer(true) != null) + addStat(damagee, getGame().GetKit(damagee).GetName() + " Damage Taken PvP ", (int) Math.round(event.GetDamage()), false, false); + } } } From 8780d5e4eecfa340238843cb0b1e260ceee28a01 Mon Sep 17 00:00:00 2001 From: Chiss Date: Wed, 17 Sep 2014 11:18:59 +1000 Subject: [PATCH 04/15] MS fixes --- .../mineplex/core/antistack/AntiStack.java | 23 +++++++----- .../arcade/game/games/hideseek/HideSeek.java | 3 +- .../game/games/minestrike/MineStrike.java | 36 ++++++++++++++----- .../game/games/minestrike/items/guns/Gun.java | 4 +-- .../arcade/game/games/smash/kits/KitPig.java | 2 +- .../arcade/kit/perks/PerkPigBaconBomb.java | 2 +- .../arcade/kit/perks/PerkPigBaconBounce.java | 2 +- .../game/arcade/kit/perks/PerkPigZombie.java | 16 ++++----- 8 files changed, 57 insertions(+), 31 deletions(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/antistack/AntiStack.java b/Plugins/Mineplex.Core/src/mineplex/core/antistack/AntiStack.java index f22790ffe..adfd31e2b 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/antistack/AntiStack.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/antistack/AntiStack.java @@ -93,15 +93,7 @@ public class AntiStack extends MiniPlugin Item item = event.getItem(); - //Get Name - String name = ((CraftItemStack)item.getItemStack()).getHandle().getName(); - - //Remove UID - if (name.contains(":")) - name = name.substring(0, name.indexOf(":" + item.getUniqueId())); - - //Set Name - ((CraftItemStack)item.getItemStack()).getHandle().c(name); + removeUID(item); } @EventHandler @@ -130,4 +122,17 @@ public class AntiStack extends MiniPlugin { _enabled = var; } + + public static void removeUID(Item item) + { + //Get Name + String name = ((CraftItemStack)item.getItemStack()).getHandle().getName(); + + //Remove UID + if (name.contains(":")) + name = name.substring(0, name.indexOf(":" + item.getUniqueId())); + + //Set Name + ((CraftItemStack)item.getItemStack()).getHandle().c(name); + } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/hideseek/HideSeek.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/hideseek/HideSeek.java index b6bf3b054..00e26bd93 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/hideseek/HideSeek.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/hideseek/HideSeek.java @@ -188,7 +188,8 @@ public class HideSeek extends TeamGame { new KitHiderSwapper(manager), new KitHiderQuick(manager), - new KitHiderShocker(manager), + //new KitHiderShocker(manager), + new NullKit(manager), new NullKit(manager), new KitSeekerLeaper(manager), new KitSeekerTNT(manager), diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/MineStrike.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/MineStrike.java index ee9b5504f..3835fa0d0 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/MineStrike.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/MineStrike.java @@ -49,6 +49,7 @@ import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.LeatherArmorMeta; import org.bukkit.util.Vector; +import mineplex.core.antistack.AntiStack; import mineplex.core.common.util.C; import mineplex.core.common.util.F; import mineplex.core.common.util.UtilAction; @@ -88,16 +89,13 @@ import nautilus.game.arcade.game.games.minestrike.data.Bomb; import nautilus.game.arcade.game.games.minestrike.data.Bullet; import nautilus.game.arcade.game.games.minestrike.items.StrikeItem; import nautilus.game.arcade.game.games.minestrike.items.StrikeItemType; -import nautilus.game.arcade.game.games.minestrike.items.equipment.DefusalKit; import nautilus.game.arcade.game.games.minestrike.items.equipment.armor.Armor; import nautilus.game.arcade.game.games.minestrike.items.grenades.Grenade; import nautilus.game.arcade.game.games.minestrike.items.guns.Gun; import nautilus.game.arcade.game.games.minestrike.items.guns.GunType; import nautilus.game.arcade.game.games.minestrike.items.guns.pistol.Glock18; import nautilus.game.arcade.game.games.minestrike.items.guns.pistol.P2000; -import nautilus.game.arcade.game.games.minestrike.items.guns.rifle.AWP; import nautilus.game.arcade.game.games.minestrike.kits.KitPlayer; -import nautilus.game.arcade.game.games.turfforts.TurfForts.ShredBlockEvent; import nautilus.game.arcade.kit.Kit; import net.minecraft.server.v1_7_R4.EntityArrow; @@ -379,22 +377,38 @@ public class MineStrike extends TeamGame { for (Player other : team.GetPlayers(false)) if (!other.equals(player)) + { + UtilTitle.display(null, player.getName() + " has the Bomb", 10, 80, 10, other); UtilPlayer.message(other, C.cGold + C.Bold + player.getName() + " has the Bomb!"); - + } + + //Chat UtilPlayer.message(player, C.cGold + C.Bold + "You have the Bomb!"); UtilPlayer.message(player, C.cGold + C.Bold + "Hold Right-Click to place at a Bomb Site!"); + + //Title + UtilTitle.display(C.cRed + "You have the Bomb", "Hold Right-Click to place at a Bomb Site!", 10, 80, 10, player); } else { for (Player other : team.GetPlayers(false)) if (!other.equals(player)) + { UtilPlayer.message(other, C.cGold + C.Bold + player.getName() + " picked up the Bomb!"); + + //Title + UtilTitle.display(null, player.getName() + " picked up the Bomb", 10, 50, 10, other); + } + + //Chat UtilPlayer.message(player, C.cGold + C.Bold + "You picked up the Bomb!"); + + //Title + UtilTitle.display(null, "You picked up the Bomb", 10, 50, 10, player); } - player.playSound(player.getLocation(), Sound.NOTE_PLING, 1f, 2f); _bombHolder = player; @@ -762,6 +776,8 @@ public class MineStrike extends TeamGame if (UtilInv.contains(event.getPlayer(), Material.SHEARS, (byte)0, 1)) return; + AntiStack.removeUID(event.getItem()); + event.getPlayer().getInventory().setItem(8, event.getItem().getItemStack()); UtilPlayer.message(event.getPlayer(), F.main("Game", "You equipped Defusal Kit.")); @@ -1168,7 +1184,6 @@ public class MineStrike extends TeamGame while (!hitHead(damagee, loc) && !hitBody(damagee, loc) && UtilMath.offset(damagee.getLocation(), loc) < 6) { - UtilParticle.PlayParticle(ParticleType.HAPPY_VILLAGER, loc, 0, 0, 0, 0, 1); loc.add(trajectory.clone().multiply(0.1)); } @@ -1411,7 +1426,9 @@ public class MineStrike extends TeamGame _bombPlanter.setItemInHand(null); _bombPlanter = null; _bombHolder = null; - + + //Title + UtilTitle.display(null, C.cRed + C.Bold + "Bomb has been planted!", 10, 50, 10); } } @@ -1722,7 +1739,7 @@ public class MineStrike extends TeamGame for (Player player : UtilServer.getPlayers()) player.playSound(player.getLocation(), Sound.LEVEL_UP, 1f, 1f); - UtilTitle.display(winnerLine, _winText, 20, 120, 20); + UtilTitle.display(null, winnerLine, 20, 120, 20); //Check for total game win EndCheck(); @@ -2089,7 +2106,10 @@ public class MineStrike extends TeamGame ItemStack stack = _scoped.remove(player); + player.getInventory().setHelmet(stack); + UtilInv.Update(player); + Manager.GetCondition().EndCondition(player, null, "Scope"); player.getWorld().playSound(player.getEyeLocation(), Sound.GHAST_DEATH, 0.8f, 1f); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/guns/Gun.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/guns/Gun.java index d0037e250..a0ba92add 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/guns/Gun.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/guns/Gun.java @@ -163,11 +163,11 @@ public abstract class Gun extends StrikeItem loc.add(UtilAlg.getDown(player.getLocation().getDirection()).multiply(0.3)); UtilParticle.PlayParticle(ParticleType.EXPLODE, loc, 0, 0, 0, 0, 1); + game.registerBullet(fireBullet(player, game)); + //Unscope if (_gunType == GunType.SNIPER) game.removeScope(player); - - game.registerBullet(fireBullet(player, game)); } public Bullet fireBullet(Player player, MineStrike game) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/smash/kits/KitPig.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/smash/kits/KitPig.java index 190ddf9be..1612fb74b 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/smash/kits/KitPig.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/smash/kits/KitPig.java @@ -75,7 +75,7 @@ public class KitPig extends SmashKit { ChatColor.RESET + "When your health drops below 4, you morph", ChatColor.RESET + "into a Nether Pig. This gives you Speed I,", - ChatColor.RESET + "10 Armor and half Energy costs for skills.", + ChatColor.RESET + "8 Armor and reduces Energy costs by 33%.", ChatColor.RESET + "", ChatColor.RESET + "When your health returns to 8, you return", ChatColor.RESET + "back to Pig Form.", diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkPigBaconBomb.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkPigBaconBomb.java index 8ad9b6826..303c84159 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkPigBaconBomb.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkPigBaconBomb.java @@ -71,7 +71,7 @@ public class PerkPigBaconBomb extends Perk DisguiseBase disguise = Manager.GetDisguise().getDisguise(player); if (disguise != null && disguise instanceof DisguisePigZombie) - energy = 0.2f; + energy = energy * 0.7f; //Energy if (player.getExp() < energy) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkPigBaconBounce.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkPigBaconBounce.java index 45e05a7a9..2c8cd428a 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkPigBaconBounce.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkPigBaconBounce.java @@ -73,7 +73,7 @@ public class PerkPigBaconBounce extends Perk implements IThrown DisguiseBase disguise = Manager.GetDisguise().getDisguise(player); if (disguise != null && disguise instanceof DisguisePigZombie) - energy = 0.1f; + energy = energy * 0.7f; //Energy if (player.getExp() < energy) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkPigZombie.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkPigZombie.java index 19f43d510..bce527170 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkPigZombie.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkPigZombie.java @@ -60,10 +60,10 @@ public class PerkPigZombie extends Perk player.getInventory().setLeggings(ItemStackFactory.Instance.CreateStack(Material.CHAINMAIL_LEGGINGS)); player.getInventory().setBoots(ItemStackFactory.Instance.CreateStack(Material.CHAINMAIL_BOOTS)); - player.getInventory().remove(Material.DIAMOND_HELMET); - player.getInventory().remove(Material.DIAMOND_CHESTPLATE); - player.getInventory().remove(Material.DIAMOND_LEGGINGS); - player.getInventory().remove(Material.DIAMOND_BOOTS); + player.getInventory().remove(Material.IRON_HELMET); + player.getInventory().remove(Material.IRON_CHESTPLATE); + player.getInventory().remove(Material.IRON_LEGGINGS); + player.getInventory().remove(Material.IRON_BOOTS); //Disguise DisguisePig disguise = new DisguisePig(player); @@ -93,10 +93,10 @@ public class PerkPigZombie extends Perk _active.add(player); //Armor - player.getInventory().setHelmet(new ItemStack(Material.DIAMOND_HELMET)); - player.getInventory().setChestplate(new ItemStack(Material.DIAMOND_CHESTPLATE)); - player.getInventory().setLeggings(new ItemStack(Material.DIAMOND_LEGGINGS)); - player.getInventory().setBoots(new ItemStack(Material.DIAMOND_BOOTS)); + player.getInventory().setHelmet(new ItemStack(Material.IRON_HELMET)); + player.getInventory().setChestplate(new ItemStack(Material.IRON_CHESTPLATE)); + player.getInventory().setLeggings(new ItemStack(Material.IRON_LEGGINGS)); + player.getInventory().setBoots(new ItemStack(Material.IRON_BOOTS)); //Disguise DisguisePigZombie disguise = new DisguisePigZombie(player); From cc5db5939d42d6cf432d033523fae6fbeb532aad Mon Sep 17 00:00:00 2001 From: Shaun Bennett Date: Wed, 17 Sep 2014 14:34:57 -0500 Subject: [PATCH 05/15] Add Music and Costume pages to cosmetic menu --- .../core/cosmetic/ui/button/OpenCostumes.java | 25 ++++ .../core/cosmetic/ui/button/OpenMusic.java | 25 ++++ .../core/cosmetic/ui/page/CostumePage.java | 114 ++++++++++++++++++ .../mineplex/core/cosmetic/ui/page/Menu.java | 44 ++++--- .../core/cosmetic/ui/page/MusicPage.java | 56 +++++++++ .../mineplex/core/gadget/GadgetManager.java | 7 +- 6 files changed, 251 insertions(+), 20 deletions(-) create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenCostumes.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenMusic.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/CostumePage.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/MusicPage.java diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenCostumes.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenCostumes.java new file mode 100644 index 000000000..f6b6a7e5a --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenCostumes.java @@ -0,0 +1,25 @@ +package mineplex.core.cosmetic.ui.button; + +import org.bukkit.entity.Player; + +import mineplex.core.cosmetic.ui.page.Menu; +import mineplex.core.shop.item.SingleButton; + +/** + * Created by shaun on 14-09-15. + */ +public class OpenCostumes extends SingleButton +{ + private Menu _menu; + + public OpenCostumes(Menu menu) + { + _menu = menu; + } + + @Override + public void Clicked(Player player) + { + _menu.openCostumes(player); + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenMusic.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenMusic.java new file mode 100644 index 000000000..3bdefba2b --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenMusic.java @@ -0,0 +1,25 @@ +package mineplex.core.cosmetic.ui.button; + +import org.bukkit.entity.Player; + +import mineplex.core.cosmetic.ui.page.Menu; +import mineplex.core.shop.item.SingleButton; + +/** + * Created by shaun on 14-09-15. + */ +public class OpenMusic extends SingleButton +{ + private Menu _menu; + + public OpenMusic(Menu menu) + { + _menu = menu; + } + + @Override + public void Clicked(Player player) + { + _menu.openMusic(player); + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/CostumePage.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/CostumePage.java new file mode 100644 index 000000000..e9ebb9b66 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/CostumePage.java @@ -0,0 +1,114 @@ +package mineplex.core.cosmetic.ui.page; + +import java.util.ArrayList; +import java.util.List; + +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.entity.Player; + +import mineplex.core.account.CoreClientManager; +import mineplex.core.common.util.C; +import mineplex.core.cosmetic.CosmeticManager; +import mineplex.core.cosmetic.ui.CosmeticShop; +import mineplex.core.donation.DonationManager; +import mineplex.core.gadget.types.Gadget; +import mineplex.core.gadget.types.GadgetType; +import mineplex.core.gadget.types.ItemGadget; +import mineplex.core.gadget.types.OutfitGadget; +import mineplex.core.shop.item.ShopItem; +import mineplex.core.shop.item.SingleButton; + +/** + * Created by shaun on 14-09-15. + */ +public class CostumePage extends GadgetPage +{ + public CostumePage(CosmeticManager plugin, CosmeticShop shop, CoreClientManager clientManager, DonationManager donationManager, String name, Player player) + { + super(plugin, shop, clientManager, donationManager, name, player); + + BuildPage(); + } + + protected void BuildPage() + { + int slot; + + List costumeClasses = new ArrayList(); + + for (Gadget gadget : Plugin.getGadgetManager().getGadgets(GadgetType.Costume)) + { + OutfitGadget outfitGadget = ((OutfitGadget) gadget); + Class clazz = gadget.getClass(); + + if (!costumeClasses.contains(clazz)) + { + costumeClasses.add(clazz); + } + + slot = (costumeClasses.indexOf(clazz) * 2) + 3 + 18; + + if (outfitGadget.GetSlot() == OutfitGadget.ArmorSlot.Chest) + slot += 9; + else if (outfitGadget.GetSlot() == OutfitGadget.ArmorSlot.Legs) + slot += 18; + else if (outfitGadget.GetSlot() == OutfitGadget.ArmorSlot.Boots) + slot += 27; + + addGadget(gadget, slot); + + if (gadget.IsActive(Player)) + addGlow(slot); + } + + AddButton(8, new ShopItem(Material.TNT, C.cRed + C.Bold + "Remove all Clothing", new String[] { }, 1, false), new SingleButton() + { + @Override + public void Clicked(Player player) + { + boolean gadgetDisabled = false; + for (Gadget gadget : Plugin.getGadgetManager().getGadgets(GadgetType.Costume)) + { + if (gadget.IsActive(player)) + { + gadgetDisabled = true; + gadget.Disable(player); + } + } + + if (gadgetDisabled) + { + BuildPage(); + player.playSound(player.getEyeLocation(), Sound.SPLASH, 1, 1); + } + } + }); + + AddButton(4, new ShopItem(Material.BED, C.cGray + " \u21FD Go Back", new String[] { }, 1, false), new SingleButton() + { + @Override + public void Clicked(Player player) + { + Shop.OpenPageForPlayer(Player, new Menu(Plugin, Shop, ClientManager, DonationManager, player)); + } + }); + } + + public void activateGadget(Player player, Gadget gadget) + { + if (gadget instanceof ItemGadget) + { + if (Plugin.getInventoryManager().Get(player).getItemCount(gadget.GetName()) <= 0) + { + purchaseGadget(player, gadget); + return; + } + } + + PlayAcceptSound(player); + gadget.Enable(player); + + BuildPage(); + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/Menu.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/Menu.java index 23ead2fae..c6fbc0c90 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/Menu.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/Menu.java @@ -3,22 +3,21 @@ package mineplex.core.cosmetic.ui.page; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Material; -import org.bukkit.craftbukkit.v1_7_R4.inventory.CraftItemStack; import org.bukkit.entity.Player; import mineplex.core.account.CoreClientManager; import mineplex.core.common.CurrencyType; import mineplex.core.common.util.C; -import mineplex.core.common.util.F; import mineplex.core.cosmetic.CosmeticManager; import mineplex.core.cosmetic.event.ActivateGemBoosterEvent; import mineplex.core.cosmetic.ui.CosmeticShop; +import mineplex.core.cosmetic.ui.button.OpenCostumes; import mineplex.core.cosmetic.ui.button.OpenGadgets; import mineplex.core.cosmetic.ui.button.OpenMorphs; import mineplex.core.cosmetic.ui.button.OpenMounts; +import mineplex.core.cosmetic.ui.button.OpenMusic; import mineplex.core.cosmetic.ui.button.OpenParticles; import mineplex.core.cosmetic.ui.button.OpenPets; -import mineplex.core.cosmetic.ui.button.TreasureButton; import mineplex.core.donation.DonationManager; import mineplex.core.gadget.types.Gadget; import mineplex.core.gadget.types.GadgetType; @@ -42,7 +41,7 @@ public class Menu extends ShopPageBase @Override protected void BuildPage() { - AddItem(11, new ShopItem(175, DonationManager.Get(Player.getName()).getCoins() + " Coins", 1, false)); + AddItem(11 - 9, new ShopItem(175, DonationManager.Get(Player.getName()).getCoins() + " Coins", 1, false)); int treasureChestCount = Plugin.getInventoryManager().Get(Player).getItemCount("Treasure Chest"); @@ -58,13 +57,13 @@ public class Menu extends ShopPageBase // } // else // { - AddItem(13, new ShopItem(Material.CHEST, ChatColor.RESET + C.cGold + treasureChestCount + " Treasure Chests" + ChatColor.RESET, new String[] { ChatColor.RESET + "Coming soon..." }, 1, false)); + AddItem(13 - 9, new ShopItem(Material.CHEST, ChatColor.RESET + C.cGold + treasureChestCount + " Treasure Chests" + ChatColor.RESET, new String[] { ChatColor.RESET + "Coming soon..." }, 1, false)); //} final GemBooster gemBoosterItem = new GemBooster(Shop.getBoosterEnabled(), Plugin.getInventoryManager().Get(Player).getItemCount("Gem Booster")); - AddButton(15, new ShopItem( + AddButton(15 - 9, new ShopItem( gemBoosterItem.GetDisplayMaterial(), gemBoosterItem.GetDisplayName(), gemBoosterItem.GetDescription(), @@ -111,17 +110,20 @@ public class Menu extends ShopPageBase false)); } - AddButton(27, new ShopItem(Material.NETHER_STAR, "Particle Effects", 1, false), new OpenParticles(this)); - AddButton(29, new ShopItem(Material.BOW, "Gadgets", 1, false), new OpenGadgets(this)); - AddButton(31, new ShopItem(Material.LEATHER, "Morphs", 1, false), new OpenMorphs(this)); - AddButton(33, new ShopItem(Material.IRON_BARDING, "Mounts", 1, false), new OpenMounts(this)); - AddButton(35, new ShopItem(Material.BONE, "Pets", 1, false), new OpenPets(this)); + AddButton(18, new ShopItem(Material.NETHER_STAR, "Particle Effects", 1, false), new OpenParticles(this)); + AddButton(20, new ShopItem(Material.BOW, "Gadgets", 1, false), new OpenGadgets(this)); + AddButton(22, new ShopItem(Material.LEATHER, "Morphs", 1, false), new OpenMorphs(this)); + AddButton(24, new ShopItem(Material.IRON_BARDING, "Mounts", 1, false), new OpenMounts(this)); + AddButton(26, new ShopItem(Material.BONE, "Pets", 1, false), new OpenPets(this)); + // + AddButton(48, new ShopItem(Material.GOLD_CHESTPLATE, "Costumes", 1, false), new OpenCostumes(this)); + AddButton(50, new ShopItem(Material.GREEN_RECORD, "Music", 1, false), new OpenMusic(this)); if (Plugin.getGadgetManager().getActive(Player, GadgetType.Particle) != null) { final Gadget gadget = Plugin.getGadgetManager().getActive(Player, GadgetType.Particle); - AddButton(36, + AddButton(18 + 9, new ShopItem(gadget.GetDisplayMaterial(), gadget.GetDisplayData(), ChatColor.RESET + C.mItem + gadget.GetName(), new String[] {}, 1, false, false), new SingleButton() { @@ -139,7 +141,7 @@ public class Menu extends ShopPageBase { final Gadget gadget = Plugin.getGadgetManager().getActive(Player, GadgetType.Item); - AddButton(38, + AddButton(20 + 9, new ShopItem(gadget.GetDisplayMaterial(), gadget.GetDisplayData(), ChatColor.RESET + C.mItem + gadget.GetName(), new String[] {}, 1, false, false), new SingleButton() { @@ -157,7 +159,7 @@ public class Menu extends ShopPageBase { final Gadget gadget = Plugin.getGadgetManager().getActive(Player, GadgetType.Morph); - AddButton(40, + AddButton(22 + 9, new ShopItem(gadget.GetDisplayMaterial(), gadget.GetDisplayData(), ChatColor.RESET + C.mItem + gadget.GetName(), new String[] {}, 1, false, false), new SingleButton() { @@ -175,7 +177,7 @@ public class Menu extends ShopPageBase { final Mount mount = Plugin.getMountManager().getActive(Player); - AddButton(42, + AddButton(24 + 9, new ShopItem(mount.GetDisplayMaterial(), mount.GetDisplayData(), ChatColor.RESET + C.mItem + mount.GetName(), new String[] {}, 1, false, false), new SingleButton() { @@ -191,7 +193,7 @@ public class Menu extends ShopPageBase if (Plugin.getPetManager().hasActivePet(Player.getName())) { - AddButton(44, new ShopItem(Material.MONSTER_EGG, (byte)Plugin.getPetManager().getActivePet(Player.getName()).getType().getTypeId(), ChatColor.RESET + C.mItem + Plugin.getPetManager().getActivePet(Player.getName()).getCustomName(), new String[] {}, 1, false, false), + AddButton(26 + 9, new ShopItem(Material.MONSTER_EGG, (byte)Plugin.getPetManager().getActivePet(Player.getName()).getType().getTypeId(), ChatColor.RESET + C.mItem + Plugin.getPetManager().getActivePet(Player.getName()).getCustomName(), new String[] {}, 1, false, false), new SingleButton() { @Override @@ -246,4 +248,14 @@ public class Menu extends ShopPageBase { Shop.OpenPageForPlayer(player, new PetPage(Plugin, Shop, ClientManager, DonationManager, "Pets", player)); } + + public void openCostumes(Player player) + { + Shop.OpenPageForPlayer(player, new CostumePage(Plugin, Shop, ClientManager, DonationManager, "Costumes", player)); + } + + public void openMusic(Player player) + { + Shop.OpenPageForPlayer(player, new MusicPage(Plugin, Shop, ClientManager, DonationManager, "Music", player)); + } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/MusicPage.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/MusicPage.java new file mode 100644 index 000000000..64377c8f7 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/MusicPage.java @@ -0,0 +1,56 @@ +package mineplex.core.cosmetic.ui.page; + +import org.bukkit.Material; +import org.bukkit.entity.Player; + +import mineplex.core.account.CoreClientManager; +import mineplex.core.common.util.C; +import mineplex.core.cosmetic.CosmeticManager; +import mineplex.core.cosmetic.ui.CosmeticShop; +import mineplex.core.donation.DonationManager; +import mineplex.core.gadget.types.Gadget; +import mineplex.core.gadget.types.GadgetType; +import mineplex.core.shop.item.ShopItem; +import mineplex.core.shop.item.SingleButton; + +/** + * Created by shaun on 14-09-15. + */ +public class MusicPage extends GadgetPage +{ + public MusicPage(CosmeticManager plugin, CosmeticShop shop, CoreClientManager clientManager, DonationManager donationManager, String name, Player player) + { + super(plugin, shop, clientManager, donationManager, name, player); + } + + protected void BuildPage() + { + int slot = 19; + + for (Gadget gadget : Plugin.getGadgetManager().getGadgets(GadgetType.MusicDisc)) + { + addGadget(gadget, slot); + + slot++; + + if (slot == 26) + slot = 28; + } + + AddButton(4, new ShopItem(Material.BED, C.cGray + " \u21FD Go Back", new String[] { }, 1, false), new SingleButton() + { + @Override + public void Clicked(Player player) + { + Shop.OpenPageForPlayer(Player, new Menu(Plugin, Shop, ClientManager, DonationManager, player)); + } + }); + } + + @Override + public void activateGadget(Player player, Gadget gadget) + { + super.activateGadget(player, gadget); + player.closeInventory(); + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java index 32bac07fd..c11392343 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java @@ -5,7 +5,6 @@ import java.util.List; import org.bukkit.Bukkit; import org.bukkit.Material; -import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.entity.PlayerDeathEvent; @@ -26,13 +25,13 @@ import mineplex.core.disguise.DisguiseManager; import mineplex.core.donation.DonationManager; import mineplex.core.gadget.event.GadgetCollideEntityEvent; import mineplex.core.gadget.gadgets.*; -import mineplex.core.gadget.types.OutfitGadget.ArmorSlot; import mineplex.core.gadget.types.Gadget; import mineplex.core.gadget.types.GadgetType; import mineplex.core.gadget.types.ItemGadget; import mineplex.core.gadget.types.MorphGadget; -import mineplex.core.gadget.types.OutfitGadget; import mineplex.core.gadget.types.MusicGadget; +import mineplex.core.gadget.types.OutfitGadget; +import mineplex.core.gadget.types.OutfitGadget.ArmorSlot; import mineplex.core.gadget.types.ParticleGadget; import mineplex.core.inventory.InventoryManager; import mineplex.core.mount.MountManager; @@ -178,7 +177,7 @@ public class GadgetManager extends MiniPlugin { for (Gadget gadget : _gadgets.get(gadgetType)) { - if (gadget instanceof MorphGadget) + if (gadget instanceof OutfitGadget) { OutfitGadget armor = (OutfitGadget) gadget; From 0139e4095799533b76fc49566d2104cb40be94aa Mon Sep 17 00:00:00 2001 From: Shaun Bennett Date: Wed, 17 Sep 2014 14:35:43 -0500 Subject: [PATCH 06/15] Re-enable Coin Party Bomb reward for rare treasures --- .../src/mineplex/core/treasure/TreasureManager.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureManager.java b/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureManager.java index 1f4e16978..4e65e156c 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureManager.java @@ -120,8 +120,8 @@ public class TreasureManager extends MiniPlugin // new ItemStack(Material.IRON_BARDING), RewardRarity.RARE, 100)); // _rewardManager.addReward(new InventoryReward(inventoryManager, "TNT", "TNT", 40, 80, // new ItemStack(Material.TNT), RewardRarity.RARE, 100)); -// _rewardManager.addReward(new InventoryReward(inventoryManager, "Coin Party Bomb", "Coin Party Bomb", 1, 1, -// new ItemStack(Material.getMaterial(175)), RewardRarity.RARE, 100)); + _rewardManager.addReward(new InventoryReward(inventoryManager, "Coin Party Bomb", "Coin Party Bomb", 1, 1, + new ItemStack(Material.getMaterial(175)), RewardRarity.RARE, 100)); } // Pets { From 90e402bf695622593379eca7c3c4d0e50e0466c0 Mon Sep 17 00:00:00 2001 From: Shaun Bennett Date: Wed, 17 Sep 2014 14:43:58 -0500 Subject: [PATCH 07/15] Fix menu slots --- .../cosmetic/ui/button/TreasureButton.java | 5 +--- .../mineplex/core/cosmetic/ui/page/Menu.java | 28 ++++++++----------- 2 files changed, 13 insertions(+), 20 deletions(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/TreasureButton.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/TreasureButton.java index 19c8101e3..5e52cd8ab 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/TreasureButton.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/TreasureButton.java @@ -3,12 +3,10 @@ package mineplex.core.cosmetic.ui.button; import org.bukkit.entity.Player; import mineplex.core.cosmetic.ui.page.Menu; -import mineplex.core.shop.item.IButton; import mineplex.core.shop.item.SingleButton; public class TreasureButton extends SingleButton { - private Menu _menu; public TreasureButton(Menu menu) @@ -16,11 +14,10 @@ public class TreasureButton extends SingleButton _menu = menu; } - @Override public void Clicked(Player player) { - _menu.openTreasure(player); + } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/Menu.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/Menu.java index c6fbc0c90..e1a75935d 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/Menu.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/Menu.java @@ -18,6 +18,7 @@ import mineplex.core.cosmetic.ui.button.OpenMounts; import mineplex.core.cosmetic.ui.button.OpenMusic; import mineplex.core.cosmetic.ui.button.OpenParticles; import mineplex.core.cosmetic.ui.button.OpenPets; +import mineplex.core.cosmetic.ui.button.TreasureButton; import mineplex.core.donation.DonationManager; import mineplex.core.gadget.types.Gadget; import mineplex.core.gadget.types.GadgetType; @@ -41,29 +42,29 @@ public class Menu extends ShopPageBase @Override protected void BuildPage() { - AddItem(11 - 9, new ShopItem(175, DonationManager.Get(Player.getName()).getCoins() + " Coins", 1, false)); + AddItem(2, new ShopItem(175, DonationManager.Get(Player.getName()).getCoins() + " Coins", 1, false)); int treasureChestCount = Plugin.getInventoryManager().Get(Player).getItemCount("Treasure Chest"); - if (treasureChestCount <= 0 && Player.getName().equals("Chiss")) + if (treasureChestCount <= 0 && Player.getName().equals("Phinary")) { Plugin.getInventoryManager().addItemToInventory(Player, "Utility", "Treasure Chest", 1); treasureChestCount = Plugin.getInventoryManager().Get(Player).getItemCount("Treasure Chest"); } -// if (treasureChestCount > 0) -// { -// AddButton(13, new ShopItem(Material.CHEST, C.cGold + treasureChestCount + " Treasure Chests", new String[] { ChatColor.RESET + "Click to Open Treasure Chest" }, 1, false), new TreasureButton(this)); -// } -// else -// { - AddItem(13 - 9, new ShopItem(Material.CHEST, ChatColor.RESET + C.cGold + treasureChestCount + " Treasure Chests" + ChatColor.RESET, new String[] { ChatColor.RESET + "Coming soon..." }, 1, false)); - //} + if (treasureChestCount > 0) + { + AddButton(4, new ShopItem(Material.CHEST, C.cGold + treasureChestCount + " Treasure Chests", new String[] { ChatColor.RESET + "Click to Open Treasure Chest" }, 1, false), new TreasureButton(this)); + } + else + { + AddItem(4, new ShopItem(Material.CHEST, ChatColor.RESET + C.cGold + treasureChestCount + " Treasure Chests" + ChatColor.RESET, new String[] { ChatColor.RESET + "Coming soon..." }, 1, false)); + } final GemBooster gemBoosterItem = new GemBooster(Shop.getBoosterEnabled(), Plugin.getInventoryManager().Get(Player).getItemCount("Gem Booster")); - AddButton(15 - 9, new ShopItem( + AddButton(6, new ShopItem( gemBoosterItem.GetDisplayMaterial(), gemBoosterItem.GetDisplayName(), gemBoosterItem.GetDescription(), @@ -224,11 +225,6 @@ public class Menu extends ShopPageBase Shop.OpenPageForPlayer(player, new ParticlePage(Plugin, Shop, ClientManager, DonationManager, "Particles", player)); } - public void openTreasure(Player player) - { - Shop.OpenPageForPlayer(player, new TreasurePage(Plugin, Shop, ClientManager, DonationManager, "Open Treasure Chest", player)); - } - public void openGadgets(Player player) { Shop.OpenPageForPlayer(player, new GadgetPage(Plugin, Shop, ClientManager, DonationManager, "Gadgets", player)); From da680359d0253081ddb0d9a460cacd35db847778 Mon Sep 17 00:00:00 2001 From: Shaun Bennett Date: Wed, 17 Sep 2014 14:50:34 -0500 Subject: [PATCH 08/15] Change formatting of treasure announcements --- .../Mineplex.Core/src/mineplex/core/treasure/Treasure.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/Treasure.java b/Plugins/Mineplex.Core/src/mineplex/core/treasure/Treasure.java index e6ca1372a..430a97ba5 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/Treasure.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/Treasure.java @@ -16,6 +16,7 @@ import org.bukkit.craftbukkit.v1_7_R4.util.CraftMagicNumbers; import org.bukkit.entity.Player; import net.minecraft.server.v1_7_R4.PacketPlayOutBlockAction; +import mineplex.core.common.util.C; import mineplex.core.common.util.F; import mineplex.core.common.util.UtilParticle; import mineplex.core.treasure.animation.Animation; @@ -264,12 +265,12 @@ public class Treasure else if (data.getReward().getRarity() == RewardRarity.RARE) { _animations.add(new CircleAnimation(this, data.getBlock().getLocation().add(0.5, 1.5, 0.5))); - Bukkit.broadcastMessage(F.main("Treasure", F.name(_player.getName()) + " opened the Rare treasure " + text)); + Bukkit.broadcastMessage(F.main("Treasure", F.name(_player.getName()) + " opened the " + F.item(C.cGold + "Rare") + " treasure " + text)); } else if (data.getReward().getRarity() == RewardRarity.VERY_RARE) { _animations.add(new ChestExplodeAnimation(this, data.getBlock())); - Bukkit.broadcastMessage(F.main("Treasure", F.name(_player.getName()) + " opened the Legendary treasure " + text)); + Bukkit.broadcastMessage(F.main("Treasure", F.name(_player.getName()) + " opened the " + F.item(C.cRed + "Legendary") + " treasure " + text)); } if (isFinished()) From 33d33f84b4ad4522785e1715052676c7397a0c19 Mon Sep 17 00:00:00 2001 From: Shaun Bennett Date: Wed, 17 Sep 2014 15:22:54 -0500 Subject: [PATCH 09/15] More treasure animation touches + fixes --- .../src/mineplex/core/treasure/Treasure.java | 8 +++--- .../treasure/animation/CircleAnimation.java | 27 +++++++++++++------ .../animation/FireworksAnimation.java | 19 +++++-------- 3 files changed, 29 insertions(+), 25 deletions(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/Treasure.java b/Plugins/Mineplex.Core/src/mineplex/core/treasure/Treasure.java index 430a97ba5..5de0deded 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/Treasure.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/Treasure.java @@ -34,7 +34,6 @@ import mineplex.core.treasure.reward.RewardRarity; */ public class Treasure { - // Decay Sets private HashSet _wallsBlockInfo = new HashSet<>(); private HashSet _outerRingBlockInfo = new HashSet<>(); @@ -265,12 +264,12 @@ public class Treasure else if (data.getReward().getRarity() == RewardRarity.RARE) { _animations.add(new CircleAnimation(this, data.getBlock().getLocation().add(0.5, 1.5, 0.5))); - Bukkit.broadcastMessage(F.main("Treasure", F.name(_player.getName()) + " opened the " + F.item(C.cGold + "Rare") + " treasure " + text)); + Bukkit.broadcastMessage(F.main("Treasure", F.name(_player.getName()) + " found " + C.cGold + "Rare " + text)); } else if (data.getReward().getRarity() == RewardRarity.VERY_RARE) { _animations.add(new ChestExplodeAnimation(this, data.getBlock())); - Bukkit.broadcastMessage(F.main("Treasure", F.name(_player.getName()) + " opened the " + F.item(C.cRed + "Legendary") + " treasure " + text)); + Bukkit.broadcastMessage(F.main("Treasure", F.name(_player.getName()) + " found " + C.cRed + "Legendary " + text)); } if (isFinished()) @@ -294,7 +293,6 @@ public class Treasure for (Player player : players) { ((CraftPlayer) player).getHandle().playerConnection.sendPacket(packet); - System.out.println("sending chest open packet"); } } @@ -366,7 +364,7 @@ public class Treasure if (block.getType().equals(Material.CHEST)) { - UtilParticle.PlayParticle(UtilParticle.ParticleType.EXPLODE, block.getLocation().add(0.5, 0.5, 0.5), 0F, 0F, 0F, 0F, 1); + UtilParticle.PlayParticle(UtilParticle.ParticleType.LARGE_SMOKE, block.getLocation().add(0.5, 0.5, 0.5), 0.5F, 0.5F, 0.5F, 0.1F, 10); // block.getLocation().getWorld().createExplosion(block.getLocation().add(0.5, 0.5, 0.5), 0F); } block.getLocation().getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getTypeId()); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/CircleAnimation.java b/Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/CircleAnimation.java index cb884dc1a..557b513cc 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/CircleAnimation.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/CircleAnimation.java @@ -4,7 +4,6 @@ import org.bukkit.Color; import org.bukkit.FireworkEffect; import org.bukkit.Location; import org.bukkit.Sound; -import org.bukkit.block.Block; import mineplex.core.common.util.UtilFirework; import mineplex.core.common.util.UtilParticle; @@ -41,15 +40,27 @@ public class CircleAnimation extends Animation finish(); } - double currentRotation = getTicks() / 20D; - double radius = currentRotation; - double yDiff = currentRotation; - double xDiff = Math.sin(currentRotation * 2 * Math.PI) * radius; - double zDiff = Math.cos(currentRotation * 2 * Math.PI) * radius; + { + double currentRotation = getTicks() / 20D; + double radius = currentRotation; + double yDiff = currentRotation; + double xDiff = Math.sin(currentRotation * 2 * Math.PI) * radius; + double zDiff = Math.cos(currentRotation * 2 * Math.PI) * radius; - Location location = _centerLocation.clone().add(xDiff, yDiff, zDiff); + Location location = _centerLocation.clone().add(xDiff, yDiff, zDiff); - UtilParticle.PlayParticle(UtilParticle.ParticleType.FLAME, location, 0, 0, 0, 0, 1); + UtilParticle.PlayParticle(UtilParticle.ParticleType.FLAME, location, 0, 0, 0, 0, 1); + } + + double radius = getTicks() / 20D; + for (int i = 0; i < 20; i++) + { + double xDiff = Math.sin(i/20D * 2 * Math.PI) * radius; + double zDiff = Math.cos(i/20D * 2 * Math.PI) * radius; + + Location location = _centerLocation.clone().add(xDiff, -1.3, zDiff); + UtilParticle.PlayParticle(UtilParticle.ParticleType.FLAME, location, 0, 0, 0, 0, 1); + } } @Override diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/FireworksAnimation.java b/Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/FireworksAnimation.java index 8d559e2eb..043788535 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/FireworksAnimation.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/FireworksAnimation.java @@ -2,21 +2,12 @@ package mineplex.core.treasure.animation; import java.util.Random; -import org.bukkit.Bukkit; import org.bukkit.Color; import org.bukkit.FireworkEffect; import org.bukkit.block.Block; -import org.bukkit.craftbukkit.v1_7_R4.entity.CraftFirework; -import org.bukkit.craftbukkit.v1_7_R4.entity.CraftPlayer; -import org.bukkit.entity.Firework; -import org.bukkit.entity.Player; -import net.minecraft.server.v1_7_R4.PacketPlayOutEntityStatus; - -import mineplex.core.common.util.FireworkUtil; import mineplex.core.common.util.UtilFirework; -import mineplex.core.common.util.UtilPlayer; -import mineplex.core.common.util.UtilServer; +import mineplex.core.common.util.UtilParticle; import mineplex.core.treasure.Treasure; /** @@ -41,10 +32,10 @@ public class FireworksAnimation extends Animation @Override protected void tick() { - if (getTicks() >= 1) + if (getTicks() >= 10) finish(); - if (getTicks() % 10 == 0) + if (getTicks() == 10) { double xDif = 0;//_random.nextGaussian() * 1; double zDif = 0;//_random.nextGaussian() * 1; @@ -57,6 +48,10 @@ public class FireworksAnimation extends Animation UtilFirework.playFirework(_block.getLocation().add(0.5, 0.5, 0.5).add(xDif, yDif, zDif), effect); } + else if (getTicks() % 2 == 0) + { + UtilParticle.PlayParticle(UtilParticle.ParticleType.HEART, _block.getLocation().add(0.5, 1.2, 0.5), 0.5F, 0.2F, 0.5F, 0, 1); + } } From c625fb4121234b4ef6fa8596fc8108e136e2327c Mon Sep 17 00:00:00 2001 From: Chiss Date: Thu, 18 Sep 2014 13:21:30 +1000 Subject: [PATCH 10/15] Restructured rewards for Post-Game rewards --- .../IReward.java} | 4 +- .../mineplex/core/reward/RewardManager.java | 278 ++++++++++++++++++ .../{treasure => }/reward/RewardRarity.java | 4 +- .../reward/rewards/AbstractReward.java | 8 +- .../reward/rewards/CoinReward.java | 4 +- .../reward/rewards/GadgetReward.java | 4 +- .../reward/rewards/GemReward.java | 4 +- .../reward/rewards/InventoryReward.java | 4 +- .../reward/rewards/UnknownPackageReward.java | 4 +- .../src/mineplex/core/treasure/ChestData.java | 8 +- .../src/mineplex/core/treasure/Treasure.java | 10 +- .../core/treasure/TreasureManager.java | 203 +++---------- .../core/treasure/reward/RewardManager.java | 149 ---------- 13 files changed, 342 insertions(+), 342 deletions(-) rename Plugins/Mineplex.Core/src/mineplex/core/{treasure/reward/ITreasureReward.java => reward/IReward.java} (88%) create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/reward/RewardManager.java rename Plugins/Mineplex.Core/src/mineplex/core/{treasure => }/reward/RewardRarity.java (80%) rename Plugins/Mineplex.Core/src/mineplex/core/{treasure => }/reward/rewards/AbstractReward.java (73%) rename Plugins/Mineplex.Core/src/mineplex/core/{treasure => }/reward/rewards/CoinReward.java (94%) rename Plugins/Mineplex.Core/src/mineplex/core/{treasure => }/reward/rewards/GadgetReward.java (92%) rename Plugins/Mineplex.Core/src/mineplex/core/{treasure => }/reward/rewards/GemReward.java (94%) rename Plugins/Mineplex.Core/src/mineplex/core/{treasure => }/reward/rewards/InventoryReward.java (95%) rename Plugins/Mineplex.Core/src/mineplex/core/{treasure => }/reward/rewards/UnknownPackageReward.java (92%) delete mode 100644 Plugins/Mineplex.Core/src/mineplex/core/treasure/reward/RewardManager.java diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/reward/ITreasureReward.java b/Plugins/Mineplex.Core/src/mineplex/core/reward/IReward.java similarity index 88% rename from Plugins/Mineplex.Core/src/mineplex/core/treasure/reward/ITreasureReward.java rename to Plugins/Mineplex.Core/src/mineplex/core/reward/IReward.java index 1b04c4039..150e3bcda 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/reward/ITreasureReward.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/reward/IReward.java @@ -1,4 +1,4 @@ -package mineplex.core.treasure.reward; +package mineplex.core.reward; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; @@ -6,7 +6,7 @@ import org.bukkit.inventory.ItemStack; /** * Created by Shaun on 9/2/2014. */ -public interface ITreasureReward +public interface IReward { public ItemStack getItem(); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardManager.java b/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardManager.java new file mode 100644 index 000000000..c008ba404 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardManager.java @@ -0,0 +1,278 @@ +package mineplex.core.reward; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Random; + +import mineplex.core.donation.DonationManager; +import mineplex.core.inventory.InventoryManager; +import mineplex.core.reward.rewards.CoinReward; +import mineplex.core.reward.rewards.InventoryReward; +import mineplex.core.reward.rewards.UnknownPackageReward; + +import org.bukkit.Material; +import org.bukkit.entity.EntityType; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; + +/** + * Created by shaun on 2014-09-04. + */ +public class RewardManager +{ + private HashMap> _treasureMap; + private Random _random; + + public RewardManager(DonationManager donationManager, InventoryManager inventoryManager) + { + _treasureMap = new HashMap>(); + _random = new Random(); + + for (RewardRarity rarity : RewardRarity.values()) + { + _treasureMap.put(rarity, new ArrayList()); + } + + addCommon(donationManager, inventoryManager); + addUncommon(donationManager, inventoryManager); + addRare(donationManager, inventoryManager); + addLegendary(donationManager, inventoryManager); + } + + public void addCommon(DonationManager donationManager, InventoryManager inventoryManager) + { + // Coins + addReward(new CoinReward(donationManager, 250, 500, 1, RewardRarity.COMMON)); + + // Gadgets + addReward(new InventoryReward(inventoryManager, "Paintball Gun Ammo", "Paintball Gun", 50, 100, + new ItemStack(Material.GOLD_BARDING), RewardRarity.COMMON, 1)); + addReward(new InventoryReward(inventoryManager, "Fireworks", "Fireworks", 25, 50, + new ItemStack(Material.FIREWORK), RewardRarity.COMMON, 1)); + addReward(new InventoryReward(inventoryManager, "Melon Launcher Ammo", "Melon Launcher", 25, 50, + new ItemStack(Material.MELON_BLOCK), RewardRarity.COMMON, 1)); + addReward(new InventoryReward(inventoryManager, "Flesh Hook Ammo", "Flesh Hook", 20, 40, + new ItemStack(Material.getMaterial(131)), RewardRarity.COMMON, 1)); + addReward(new InventoryReward(inventoryManager, "Ethereal Pearls", "Ethereal Pearl", 15, 30, + new ItemStack(Material.ENDER_PEARL), RewardRarity.COMMON, 1)); + addReward(new InventoryReward(inventoryManager, "Bat Blaster Ammo", "Bat Blaster", 10, 20, + new ItemStack(Material.IRON_BARDING), RewardRarity.COMMON, 1)); + addReward(new InventoryReward(inventoryManager, "TNT", "TNT", 10, 20, + new ItemStack(Material.TNT), RewardRarity.COMMON, 1)); + } + + public void addUncommon(DonationManager donationManager, InventoryManager inventoryManager) + { + // Coins + addReward(new CoinReward(donationManager, 500, 1000, 250, RewardRarity.UNCOMMON)); + + // Gadgets + addReward(new InventoryReward(inventoryManager, "Paintball Gun Ammo", "Paintball Gun", 100, 200, + new ItemStack(Material.GOLD_BARDING), RewardRarity.UNCOMMON, 250)); + addReward(new InventoryReward(inventoryManager, "Fireworks", "Fireworks", 50, 100, + new ItemStack(Material.FIREWORK), RewardRarity.UNCOMMON, 250)); + addReward(new InventoryReward(inventoryManager, "Melon Launcher Ammo", "Melon Launcher", 50, 100, + new ItemStack(Material.MELON_BLOCK), RewardRarity.UNCOMMON, 250)); + addReward(new InventoryReward(inventoryManager, "Flesh Hook Ammo", "Flesh Hook", 40, 80, + new ItemStack(Material.getMaterial(131)), RewardRarity.UNCOMMON, 250)); + addReward(new InventoryReward(inventoryManager, "Ethereal Pearls", "Ethereal Pearl", 30, 60, + new ItemStack(Material.ENDER_PEARL), RewardRarity.UNCOMMON, 250)); + addReward(new InventoryReward(inventoryManager, "Bat Blaster Ammo", "Bat Blaster", 20, 40, + new ItemStack(Material.IRON_BARDING), RewardRarity.UNCOMMON, 250)); + addReward(new InventoryReward(inventoryManager, "TNT", "TNT", 20, 40, + new ItemStack(Material.TNT), RewardRarity.UNCOMMON, 250)); + + // Pets + addReward(new UnknownPackageReward(donationManager, "Cow Pet", "Cow", + new ItemStack(Material.MONSTER_EGG, 1, EntityType.COW.getTypeId()), RewardRarity.UNCOMMON, 500)); + addReward(new UnknownPackageReward(donationManager, "Sheep Pet", "Sheep", + new ItemStack(Material.MONSTER_EGG, 1, EntityType.SHEEP.getTypeId()), RewardRarity.UNCOMMON, 333)); + addReward(new UnknownPackageReward(donationManager, "Mooshroom Pet", "Mooshroom", + new ItemStack(Material.MONSTER_EGG, 1, EntityType.MUSHROOM_COW.getTypeId()), RewardRarity.UNCOMMON, 200)); + addReward(new UnknownPackageReward(donationManager, "Pig Pet", "Pig", + new ItemStack(Material.MONSTER_EGG, 1, EntityType.PIG.getTypeId()), RewardRarity.UNCOMMON, 200)); + addReward(new UnknownPackageReward(donationManager, "Ocelot Pet", "Ocelot", + new ItemStack(Material.MONSTER_EGG, 1, EntityType.OCELOT.getTypeId()), RewardRarity.UNCOMMON, 167)); + addReward(new UnknownPackageReward(donationManager, "Chicken Pet", "Chicken", + new ItemStack(Material.MONSTER_EGG, 1, EntityType.CHICKEN.getTypeId()), RewardRarity.RARE, 143)); + addReward(new UnknownPackageReward(donationManager, "Wolf Pet", "Wolf", + new ItemStack(Material.MONSTER_EGG, 1, EntityType.WOLF.getTypeId()), RewardRarity.RARE, 125)); + } + + public void addRare(DonationManager donationManager, InventoryManager inventoryManager) + { + // Coins + addReward(new CoinReward(donationManager, 1000, 2000, 100, RewardRarity.RARE)); + + // Mounts + addReward(new UnknownPackageReward(donationManager, "Mount Mule", "Mount Mule", + new ItemStack(Material.HAY_BLOCK), RewardRarity.RARE, 200)); + addReward(new UnknownPackageReward(donationManager, "Minecart Mount", "Minecart", + new ItemStack(Material.MINECART), RewardRarity.RARE, 100)); + addReward(new UnknownPackageReward(donationManager, "Slime Mount", "Slime Mount", + new ItemStack(Material.SLIME_BALL), RewardRarity.RARE, 67)); + addReward(new UnknownPackageReward(donationManager, "Glacial Steed", "Glacial Steed", + new ItemStack(Material.SNOW_BALL), RewardRarity.RARE, 50)); + + // Morphs + addReward(new UnknownPackageReward(donationManager, "Cow Morph", "Cow Morph", + new ItemStack(Material.LEATHER), RewardRarity.RARE, 167)); + addReward(new UnknownPackageReward(donationManager, "Villager Morph", "Villager Morph", + new ItemStack(Material.EMERALD), RewardRarity.RARE, 83)); + addReward(new UnknownPackageReward(donationManager, "Chicken Morph", "Chicken Morph", + new ItemStack(Material.FEATHER), RewardRarity.RARE, 50)); + addReward(new UnknownPackageReward(donationManager, "Enderman Morph", "Enderman Morph", + new ItemStack(Material.ENDER_PEARL), RewardRarity.RARE, 33)); + addReward(new UnknownPackageReward(donationManager, "Bat Morph", "Bat Morph", + new ItemStack(Material.SKULL_ITEM, 1, (short) 0, (byte) 1), RewardRarity.RARE, 25)); + } + + public void addLegendary(DonationManager donationManager, InventoryManager inventoryManager) + { + // Coins + addReward(new CoinReward(donationManager, 10000, 20000, 25, RewardRarity.LEGENDARY)); + + // Mounts + addReward(new UnknownPackageReward(donationManager, "Infernal Horror", "Infernal Horror", + new ItemStack(Material.BONE), RewardRarity.LEGENDARY, 33)); + + // Morphs + addReward(new UnknownPackageReward(donationManager, "Block Morph", "Block Morph", + new ItemStack(Material.EMERALD_BLOCK), RewardRarity.LEGENDARY, 20)); + + // Particles + addReward(new UnknownPackageReward(donationManager, "Shadow Walk Particles", "Shadow Walk", + new ItemStack(Material.LEATHER_BOOTS), RewardRarity.LEGENDARY, 33)); + addReward(new UnknownPackageReward(donationManager, "Enchanted Particles", "Enchanted", + new ItemStack(Material.BOOK), RewardRarity.LEGENDARY, 25)); + addReward(new UnknownPackageReward(donationManager, "Flame Rings Particles", "Flame Rings", + new ItemStack(Material.BLAZE_POWDER), RewardRarity.LEGENDARY, 17)); + addReward(new UnknownPackageReward(donationManager, "Rain Cloud Particles", "Rain Cloud", + new ItemStack(Material.INK_SACK, 1, (short) 0, (byte) 4), RewardRarity.LEGENDARY, 13)); + addReward(new UnknownPackageReward(donationManager, "Blood Helix Particles", "Blood Helix", + new ItemStack(Material.REDSTONE), RewardRarity.LEGENDARY, 10)); + addReward(new UnknownPackageReward(donationManager, "Emerald Twirl Particles", "Green Ring", + new ItemStack(Material.EMERALD), RewardRarity.LEGENDARY, 8)); + } + + public void addReward(IReward reward) + { + RewardRarity rarity = reward.getRarity(); + + List treasureList = _treasureMap.get(rarity); + + treasureList.add(reward); + } + + public IReward[] getRewards(Player player, boolean isChestOpening) + { + int currentReward = 0; + IReward[] rewards = new IReward[4]; + boolean hasUncommon = false; + + while (currentReward < 4) + { + IReward reward = nextReward(player, rewards, currentReward == 3 && !hasUncommon, isChestOpening); + + if (reward == null) + { + continue; + } + + if (reward.getRarity().ordinal() >= RewardRarity.UNCOMMON.ordinal()) + { + hasUncommon = true; + } + rewards[currentReward] = reward; + currentReward++; + } + + // Swap the last reward with another one, this makes the uncommon added at the end of some chests seem more random + int slotToSwitch = _random.nextInt(4); + if (slotToSwitch != 3) + { + IReward thirdReward = rewards[3]; + IReward otherReward = rewards[slotToSwitch]; + + rewards[3] = otherReward; + rewards[slotToSwitch] = thirdReward; + } + + return rewards; + } + +// private IReward nextReward(Player player, IReward[] excludedRewards) +// { +// return nextReward(player, excludedRewards, false, isChestOpening); +// } + + public IReward nextReward(Player player, IReward[] excludedRewards, boolean requiresUncommon, boolean isChestOpening) + { + double rand = _random.nextDouble(); + RewardRarity rarity; + + if (isChestOpening ? rand <= 0.01 : rand <= 0.0001) + { + // 1% or 0.01% + rarity = RewardRarity.LEGENDARY; + } + else if (isChestOpening ? rand <= 0.05 : rand <= 0.001) + { + // 4% or 0.09% + rarity = RewardRarity.RARE; + } + else if ((isChestOpening ? rand <= 0.3 : rand <= 0.03) || requiresUncommon) + { + // 25% or 2.9% + rarity = RewardRarity.UNCOMMON; + } + else + { + // 70% or 97% + rarity = RewardRarity.COMMON; + } + + List treasureList = _treasureMap.get(rarity); + + int totalWeight = 0; + ArrayList possibleRewards = new ArrayList(); + for (IReward treasure : treasureList) + { + boolean isExcluded = false; + + if (excludedRewards != null) + { + for (int i = 0; i < excludedRewards.length && !isExcluded; i++) + { + if (excludedRewards[i] != null && excludedRewards[i].equals(treasure)) + { + isExcluded = true; + } + } + } + + if ((player == null || treasure.canGiveReward(player)) && !isExcluded) + { + possibleRewards.add(treasure); + totalWeight += treasure.getWeight(); + } + } + + if (totalWeight > 0) + { + int weight = _random.nextInt(totalWeight); + int currentWeight = 0; + + for (IReward reward : possibleRewards) + { + currentWeight += reward.getWeight(); + + if (weight <= currentWeight) + return reward; + } + } + + return null; + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/reward/RewardRarity.java b/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardRarity.java similarity index 80% rename from Plugins/Mineplex.Core/src/mineplex/core/treasure/reward/RewardRarity.java rename to Plugins/Mineplex.Core/src/mineplex/core/reward/RewardRarity.java index c36222979..7ebd8b040 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/reward/RewardRarity.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardRarity.java @@ -1,4 +1,4 @@ -package mineplex.core.treasure.reward; +package mineplex.core.reward; import mineplex.core.common.util.C; import static mineplex.core.common.util.C.*; @@ -14,7 +14,7 @@ public enum RewardRarity * (Fireworks, sounds, etc) */ - COMMON(cAqua), UNCOMMON(cGreen), RARE(cGold), VERY_RARE(cRed); + COMMON(cAqua), UNCOMMON(cGreen), RARE(cGold), LEGENDARY(cRed); private String _color; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/reward/rewards/AbstractReward.java b/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/AbstractReward.java similarity index 73% rename from Plugins/Mineplex.Core/src/mineplex/core/treasure/reward/rewards/AbstractReward.java rename to Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/AbstractReward.java index 733593983..e91b6b428 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/reward/rewards/AbstractReward.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/AbstractReward.java @@ -1,16 +1,16 @@ -package mineplex.core.treasure.reward.rewards; +package mineplex.core.reward.rewards; import java.util.Random; import org.bukkit.inventory.ItemStack; -import mineplex.core.treasure.reward.ITreasureReward; -import mineplex.core.treasure.reward.RewardRarity; +import mineplex.core.reward.IReward; +import mineplex.core.reward.RewardRarity; /** * Created by shaun on 2014-09-08. */ -public abstract class AbstractReward implements ITreasureReward +public abstract class AbstractReward implements IReward { protected static final Random RANDOM = new Random(); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/reward/rewards/CoinReward.java b/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/CoinReward.java similarity index 94% rename from Plugins/Mineplex.Core/src/mineplex/core/treasure/reward/rewards/CoinReward.java rename to Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/CoinReward.java index 9f52c1474..fde499f8e 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/reward/rewards/CoinReward.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/CoinReward.java @@ -1,4 +1,4 @@ -package mineplex.core.treasure.reward.rewards; +package mineplex.core.reward.rewards; /** * Created by shaun on 2014-09-08. @@ -11,7 +11,7 @@ import org.bukkit.inventory.ItemStack; import mineplex.core.common.util.Callback; import mineplex.core.donation.DonationManager; -import mineplex.core.treasure.reward.RewardRarity; +import mineplex.core.reward.RewardRarity; /** * Created by shaun on 2014-09-08. diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/reward/rewards/GadgetReward.java b/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/GadgetReward.java similarity index 92% rename from Plugins/Mineplex.Core/src/mineplex/core/treasure/reward/rewards/GadgetReward.java rename to Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/GadgetReward.java index 304891611..1e021d43e 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/reward/rewards/GadgetReward.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/GadgetReward.java @@ -1,11 +1,11 @@ -package mineplex.core.treasure.reward.rewards; +package mineplex.core.reward.rewards; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import mineplex.core.donation.DonationManager; import mineplex.core.gadget.types.Gadget; -import mineplex.core.treasure.reward.RewardRarity; +import mineplex.core.reward.RewardRarity; /** * Created by shaun on 2014-09-04. diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/reward/rewards/GemReward.java b/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/GemReward.java similarity index 94% rename from Plugins/Mineplex.Core/src/mineplex/core/treasure/reward/rewards/GemReward.java rename to Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/GemReward.java index e3d082446..8bc099e5f 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/reward/rewards/GemReward.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/GemReward.java @@ -1,4 +1,4 @@ -package mineplex.core.treasure.reward.rewards; +package mineplex.core.reward.rewards; import java.util.Random; @@ -9,7 +9,7 @@ import org.bukkit.inventory.ItemStack; import mineplex.core.common.util.C; import mineplex.core.common.util.Callback; import mineplex.core.donation.DonationManager; -import mineplex.core.treasure.reward.RewardRarity; +import mineplex.core.reward.RewardRarity; /** * Created by shaun on 2014-09-04. diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/reward/rewards/InventoryReward.java b/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/InventoryReward.java similarity index 95% rename from Plugins/Mineplex.Core/src/mineplex/core/treasure/reward/rewards/InventoryReward.java rename to Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/InventoryReward.java index b10e0e272..2bf922c9a 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/reward/rewards/InventoryReward.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/InventoryReward.java @@ -1,4 +1,4 @@ -package mineplex.core.treasure.reward.rewards; +package mineplex.core.reward.rewards; import java.util.Random; @@ -8,7 +8,7 @@ import org.bukkit.inventory.ItemStack; import mineplex.core.common.util.C; import mineplex.core.inventory.InventoryManager; -import mineplex.core.treasure.reward.RewardRarity; +import mineplex.core.reward.RewardRarity; /** * Created by shaun on 14-09-12. diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/reward/rewards/UnknownPackageReward.java b/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/UnknownPackageReward.java similarity index 92% rename from Plugins/Mineplex.Core/src/mineplex/core/treasure/reward/rewards/UnknownPackageReward.java rename to Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/UnknownPackageReward.java index 6fae49898..b67013ebd 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/reward/rewards/UnknownPackageReward.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/UnknownPackageReward.java @@ -1,10 +1,10 @@ -package mineplex.core.treasure.reward.rewards; +package mineplex.core.reward.rewards; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import mineplex.core.donation.DonationManager; -import mineplex.core.treasure.reward.RewardRarity; +import mineplex.core.reward.RewardRarity; /** * Created by shaun on 14-09-12. diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/ChestData.java b/Plugins/Mineplex.Core/src/mineplex/core/treasure/ChestData.java index d17ac8d6a..f1c4a70b7 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/ChestData.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/ChestData.java @@ -8,7 +8,7 @@ import org.bukkit.entity.Player; import net.minecraft.server.v1_7_R4.PacketPlayOutBlockAction; import mineplex.core.common.util.UtilServer; -import mineplex.core.treasure.reward.ITreasureReward; +import mineplex.core.reward.IReward; /** * Created by Shaun on 8/29/2014. @@ -16,10 +16,10 @@ import mineplex.core.treasure.reward.ITreasureReward; public class ChestData { private Block _block; - private ITreasureReward _reward; + private IReward _reward; private boolean _opened; - public ChestData(Block block, ITreasureReward reward) + public ChestData(Block block, IReward reward) { _block = block; _opened = false; @@ -41,7 +41,7 @@ public class ChestData return _block; } - public ITreasureReward getReward() + public IReward getReward() { return _reward; } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/Treasure.java b/Plugins/Mineplex.Core/src/mineplex/core/treasure/Treasure.java index e6ca1372a..657fdd31a 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/Treasure.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/Treasure.java @@ -18,6 +18,8 @@ import net.minecraft.server.v1_7_R4.PacketPlayOutBlockAction; import mineplex.core.common.util.F; import mineplex.core.common.util.UtilParticle; +import mineplex.core.reward.IReward; +import mineplex.core.reward.RewardRarity; import mineplex.core.treasure.animation.Animation; import mineplex.core.treasure.animation.ChestExplodeAnimation; import mineplex.core.treasure.animation.ChestOpenAnimation; @@ -25,8 +27,6 @@ import mineplex.core.treasure.animation.ChestSpawnAnimation; import mineplex.core.treasure.animation.CircleAnimation; import mineplex.core.treasure.animation.FireworksAnimation; import mineplex.core.treasure.animation.TreasureRemoveAnimation; -import mineplex.core.treasure.reward.ITreasureReward; -import mineplex.core.treasure.reward.RewardRarity; /** * Created by Shaun on 8/27/2014. @@ -53,12 +53,12 @@ public class Treasure private TreasureStyle _style; - public Treasure(Player player, ITreasureReward[] rewards) + public Treasure(Player player, IReward[] rewards) { this(player, new Random(), rewards); } - public Treasure(Player player, Random seed, ITreasureReward[] rewards) + public Treasure(Player player, Random seed, IReward[] rewards) { _player = player; _random = seed; @@ -266,7 +266,7 @@ public class Treasure _animations.add(new CircleAnimation(this, data.getBlock().getLocation().add(0.5, 1.5, 0.5))); Bukkit.broadcastMessage(F.main("Treasure", F.name(_player.getName()) + " opened the Rare treasure " + text)); } - else if (data.getReward().getRarity() == RewardRarity.VERY_RARE) + else if (data.getReward().getRarity() == RewardRarity.LEGENDARY) { _animations.add(new ChestExplodeAnimation(this, data.getBlock())); Bukkit.broadcastMessage(F.main("Treasure", F.name(_player.getName()) + " opened the Legendary treasure " + text)); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureManager.java b/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureManager.java index 1f4e16978..89302117f 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureManager.java @@ -35,14 +35,14 @@ import mineplex.core.common.util.UtilPlayer; import mineplex.core.donation.DonationManager; import mineplex.core.event.StackerEvent; import mineplex.core.inventory.InventoryManager; +import mineplex.core.reward.IReward; +import mineplex.core.reward.RewardManager; +import mineplex.core.reward.RewardRarity; +import mineplex.core.reward.rewards.CoinReward; +import mineplex.core.reward.rewards.InventoryReward; +import mineplex.core.reward.rewards.UnknownPackageReward; import mineplex.core.treasure.event.TreasureFinishEvent; import mineplex.core.treasure.event.TreasureStartEvent; -import mineplex.core.treasure.reward.ITreasureReward; -import mineplex.core.treasure.reward.RewardManager; -import mineplex.core.treasure.reward.RewardRarity; -import mineplex.core.treasure.reward.rewards.CoinReward; -import mineplex.core.treasure.reward.rewards.InventoryReward; -import mineplex.core.treasure.reward.rewards.UnknownPackageReward; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; @@ -53,171 +53,13 @@ public class TreasureManager extends MiniPlugin { private NautHashMap _playerTreasureMap; private RewardManager _rewardManager; - private DonationManager _donationManager; - private InventoryManager _inventoryManager; public TreasureManager(JavaPlugin plugin, DonationManager donationManager, InventoryManager inventoryManager) { super("Treasure", plugin); - _donationManager = donationManager; _playerTreasureMap = new NautHashMap(); - _rewardManager = new RewardManager(); - _inventoryManager = inventoryManager; - - // Very Rare - { - // Coins - { - _rewardManager.addReward(new CoinReward(donationManager, 10000, 20000, 25, RewardRarity.VERY_RARE)); - } - // Mounts - { - _rewardManager.addReward(new UnknownPackageReward(donationManager, "Infernal Horror", "Infernal Horror", - new ItemStack(Material.BONE), RewardRarity.VERY_RARE, 33)); - } - // Morphs - { - _rewardManager.addReward(new UnknownPackageReward(donationManager, "Block Morph", "Block Morph", - new ItemStack(Material.EMERALD_BLOCK), RewardRarity.VERY_RARE, 20)); - } - // Particles - { - _rewardManager.addReward(new UnknownPackageReward(donationManager, "Shadow Walk Particles", "Shadow Walk", - new ItemStack(Material.LEATHER_BOOTS), RewardRarity.VERY_RARE, 33)); - _rewardManager.addReward(new UnknownPackageReward(donationManager, "Enchanted Particles", "Enchanted", - new ItemStack(Material.BOOK), RewardRarity.VERY_RARE, 25)); - _rewardManager.addReward(new UnknownPackageReward(donationManager, "Flame Rings Particles", "Flame Rings", - new ItemStack(Material.BLAZE_POWDER), RewardRarity.VERY_RARE, 17)); - _rewardManager.addReward(new UnknownPackageReward(donationManager, "Rain Cloud Particles", "Rain Cloud", - new ItemStack(Material.INK_SACK, 1, (short) 0, (byte) 4), RewardRarity.VERY_RARE, 13)); - _rewardManager.addReward(new UnknownPackageReward(donationManager, "Blood Helix Particles", "Blood Helix", - new ItemStack(Material.REDSTONE), RewardRarity.VERY_RARE, 10)); - _rewardManager.addReward(new UnknownPackageReward(donationManager, "Emerald Twirl Particles", "Green Ring", - new ItemStack(Material.EMERALD), RewardRarity.VERY_RARE, 8)); - } - } - - // Rare - { - // Coins - { - _rewardManager.addReward(new CoinReward(donationManager, 1000, 2000, 100, RewardRarity.RARE)); - } - // Gadgets - { -// _rewardManager.addReward(new InventoryReward(inventoryManager, "Paintball Gun Ammo", "Paintball Gun", 200, 400, -// new ItemStack(Material.GOLD_BARDING), RewardRarity.RARE, 100)); -// _rewardManager.addReward(new InventoryReward(inventoryManager, "Fireworks", "Fireworks",100, 200, -// new ItemStack(Material.FIREWORK), RewardRarity.RARE, 100)); -// _rewardManager.addReward(new InventoryReward(inventoryManager, "Melon Launcher Ammo", "Melon Launcher", 100, 200, -// new ItemStack(Material.MELON_BLOCK), RewardRarity.RARE, 100)); -// _rewardManager.addReward(new InventoryReward(inventoryManager, "Flesh Hook Ammo", "Flesh Hook", 80, 160, -// new ItemStack(Material.getMaterial(131)), RewardRarity.RARE, 100)); -// _rewardManager.addReward(new InventoryReward(inventoryManager, "Ethereal Pearls", "Ethereal Pearl", 60, 120, -// new ItemStack(Material.ENDER_PEARL), RewardRarity.RARE, 100)); -// _rewardManager.addReward(new InventoryReward(inventoryManager, "Bat Blaster Ammo", "Bat Blaster", 40, 80, -// new ItemStack(Material.IRON_BARDING), RewardRarity.RARE, 100)); -// _rewardManager.addReward(new InventoryReward(inventoryManager, "TNT", "TNT", 40, 80, -// new ItemStack(Material.TNT), RewardRarity.RARE, 100)); -// _rewardManager.addReward(new InventoryReward(inventoryManager, "Coin Party Bomb", "Coin Party Bomb", 1, 1, -// new ItemStack(Material.getMaterial(175)), RewardRarity.RARE, 100)); - } - // Pets - { - _rewardManager.addReward(new UnknownPackageReward(donationManager, "Chicken Pet", "Chicken", - new ItemStack(Material.MONSTER_EGG, 1, EntityType.CHICKEN.getTypeId()), RewardRarity.RARE, 143)); - _rewardManager.addReward(new UnknownPackageReward(donationManager, "Wolf Pet", "Wolf", - new ItemStack(Material.MONSTER_EGG, 1, EntityType.WOLF.getTypeId()), RewardRarity.RARE, 125)); - } - // Mounts - { - _rewardManager.addReward(new UnknownPackageReward(donationManager, "Mount Mule", "Mount Mule", - new ItemStack(Material.HAY_BLOCK), RewardRarity.RARE, 200)); - _rewardManager.addReward(new UnknownPackageReward(donationManager, "Minecart Mount", "Minecart", - new ItemStack(Material.MINECART), RewardRarity.RARE, 100)); - _rewardManager.addReward(new UnknownPackageReward(donationManager, "Slime Mount", "Slime Mount", - new ItemStack(Material.SLIME_BALL), RewardRarity.RARE, 67)); - _rewardManager.addReward(new UnknownPackageReward(donationManager, "Glacial Steed", "Glacial Steed", - new ItemStack(Material.SNOW_BALL), RewardRarity.RARE, 50)); - } - // Morphs - { - _rewardManager.addReward(new UnknownPackageReward(donationManager, "Cow Morph", "Cow Morph", - new ItemStack(Material.LEATHER), RewardRarity.RARE, 167)); - _rewardManager.addReward(new UnknownPackageReward(donationManager, "Villager Morph", "Villager Morph", - new ItemStack(Material.EMERALD), RewardRarity.RARE, 83)); - _rewardManager.addReward(new UnknownPackageReward(donationManager, "Chicken Morph", "Chicken Morph", - new ItemStack(Material.FEATHER), RewardRarity.RARE, 50)); - _rewardManager.addReward(new UnknownPackageReward(donationManager, "Enderman Morph", "Enderman Morph", - new ItemStack(Material.ENDER_PEARL), RewardRarity.RARE, 33)); - _rewardManager.addReward(new UnknownPackageReward(donationManager, "Bat Morph", "Bat Morph", - new ItemStack(Material.SKULL_ITEM, 1, (short) 0, (byte) 1), RewardRarity.RARE, 25)); - } - } - - // Uncommon - { - // Coins - { - _rewardManager.addReward(new CoinReward(donationManager, 500, 1000, 250, RewardRarity.UNCOMMON)); - } - // Gadgets - { - _rewardManager.addReward(new InventoryReward(inventoryManager, "Paintball Gun Ammo", "Paintball Gun", 100, 200, - new ItemStack(Material.GOLD_BARDING), RewardRarity.UNCOMMON, 250)); - _rewardManager.addReward(new InventoryReward(inventoryManager, "Fireworks", "Fireworks", 50, 100, - new ItemStack(Material.FIREWORK), RewardRarity.UNCOMMON, 250)); - _rewardManager.addReward(new InventoryReward(inventoryManager, "Melon Launcher Ammo", "Melon Launcher", 50, 100, - new ItemStack(Material.MELON_BLOCK), RewardRarity.UNCOMMON, 250)); - _rewardManager.addReward(new InventoryReward(inventoryManager, "Flesh Hook Ammo", "Flesh Hook", 40, 80, - new ItemStack(Material.getMaterial(131)), RewardRarity.UNCOMMON, 250)); - _rewardManager.addReward(new InventoryReward(inventoryManager, "Ethereal Pearls", "Ethereal Pearl", 30, 60, - new ItemStack(Material.ENDER_PEARL), RewardRarity.UNCOMMON, 250)); - _rewardManager.addReward(new InventoryReward(inventoryManager, "Bat Blaster Ammo", "Bat Blaster", 20, 40, - new ItemStack(Material.IRON_BARDING), RewardRarity.UNCOMMON, 250)); - _rewardManager.addReward(new InventoryReward(inventoryManager, "TNT", "TNT", 20, 40, - new ItemStack(Material.TNT), RewardRarity.UNCOMMON, 250)); - } - // Pets - { - _rewardManager.addReward(new UnknownPackageReward(donationManager, "Cow Pet", "Cow", - new ItemStack(Material.MONSTER_EGG, 1, EntityType.COW.getTypeId()), RewardRarity.UNCOMMON, 500)); - _rewardManager.addReward(new UnknownPackageReward(donationManager, "Sheep Pet", "Sheep", - new ItemStack(Material.MONSTER_EGG, 1, EntityType.SHEEP.getTypeId()), RewardRarity.UNCOMMON, 333)); - _rewardManager.addReward(new UnknownPackageReward(donationManager, "Mooshroom Pet", "Mooshroom", - new ItemStack(Material.MONSTER_EGG, 1, EntityType.MUSHROOM_COW.getTypeId()), RewardRarity.UNCOMMON, 200)); - _rewardManager.addReward(new UnknownPackageReward(donationManager, "Pig Pet", "Pig", - new ItemStack(Material.MONSTER_EGG, 1, EntityType.PIG.getTypeId()), RewardRarity.UNCOMMON, 200)); - _rewardManager.addReward(new UnknownPackageReward(donationManager, "Ocelot Pet", "Ocelot", - new ItemStack(Material.MONSTER_EGG, 1, EntityType.OCELOT.getTypeId()), RewardRarity.UNCOMMON, 167)); - } - } - - // Common - { - // Coins - { - _rewardManager.addReward(new CoinReward(donationManager, 250, 500, 1, RewardRarity.COMMON)); - } - // Gadgets - { - _rewardManager.addReward(new InventoryReward(inventoryManager, "Paintball Gun Ammo", "Paintball Gun", 50, 100, - new ItemStack(Material.GOLD_BARDING), RewardRarity.COMMON, 1)); - _rewardManager.addReward(new InventoryReward(inventoryManager, "Fireworks", "Fireworks", 25, 50, - new ItemStack(Material.FIREWORK), RewardRarity.COMMON, 1)); - _rewardManager.addReward(new InventoryReward(inventoryManager, "Melon Launcher Ammo", "Melon Launcher", 25, 50, - new ItemStack(Material.MELON_BLOCK), RewardRarity.COMMON, 1)); - _rewardManager.addReward(new InventoryReward(inventoryManager, "Flesh Hook Ammo", "Flesh Hook", 20, 40, - new ItemStack(Material.getMaterial(131)), RewardRarity.COMMON, 1)); - _rewardManager.addReward(new InventoryReward(inventoryManager, "Ethereal Pearls", "Ethereal Pearl", 15, 30, - new ItemStack(Material.ENDER_PEARL), RewardRarity.COMMON, 1)); - _rewardManager.addReward(new InventoryReward(inventoryManager, "Bat Blaster Ammo", "Bat Blaster", 10, 20, - new ItemStack(Material.IRON_BARDING), RewardRarity.COMMON, 1)); - _rewardManager.addReward(new InventoryReward(inventoryManager, "TNT", "TNT", 10, 20, - new ItemStack(Material.TNT), RewardRarity.COMMON, 1)); - } - } + _rewardManager = new RewardManager(donationManager, inventoryManager); } @Override @@ -244,7 +86,7 @@ public class TreasureManager extends MiniPlugin Bukkit.broadcastMessage(F.main("Treasure", F.name(player.getName()) + " is opening a " + C.cGreen + "Treasure Chest")); - ITreasureReward[] rewards = _rewardManager.getRewards(player); + IReward[] rewards = _rewardManager.getRewards(player, true); Treasure treasure = new Treasure(player, rewards); _playerTreasureMap.put(player, treasure); @@ -486,6 +328,35 @@ public class TreasureManager extends MiniPlugin attemptOpenTreasure(event.getPlayer()); event.setCancelled(true); } + + if (event.getMessage().startsWith("/rewardchest") || event.getMessage().startsWith("/rewardgame")) + { + int common = 0; + int uncommon = 0; + int rare = 0; + int legend = 0; + + int toTest = 10000000; + + for (int i=0 ; i> _treasureMap; - private Random _random; - - public RewardManager() - { - _treasureMap = new HashMap>(); - _random = new Random(); - - for (RewardRarity rarity : RewardRarity.values()) - { - _treasureMap.put(rarity, new ArrayList()); - } - } - - public void addReward(ITreasureReward reward) - { - RewardRarity rarity = reward.getRarity(); - - List treasureList = _treasureMap.get(rarity); - - treasureList.add(reward); - } - - public ITreasureReward[] getRewards(Player player) - { - int currentReward = 0; - ITreasureReward[] rewards = new ITreasureReward[4]; - boolean hasUncommon = false; - - while (currentReward < 4) - { - ITreasureReward reward = nextReward(player, rewards, currentReward == 3 && !hasUncommon); - - if (reward == null) - { - continue; - } - - if (reward.getRarity().ordinal() >= RewardRarity.UNCOMMON.ordinal()) - { - hasUncommon = true; - } - rewards[currentReward] = reward; - currentReward++; - } - - // Swap the last reward with another one, this makes the uncommon added at the end of some chests seem more random - int slotToSwitch = _random.nextInt(4); - if (slotToSwitch != 3) - { - ITreasureReward thirdReward = rewards[3]; - ITreasureReward otherReward = rewards[slotToSwitch]; - - rewards[3] = otherReward; - rewards[slotToSwitch] = thirdReward; - } - - return rewards; - } - - private ITreasureReward nextReward(Player player, ITreasureReward[] excludedRewards) - { - return nextReward(player, excludedRewards, false); - } - - private ITreasureReward nextReward(Player player, ITreasureReward[] excludedRewards, boolean requiresUncommon) - { - double rand = _random.nextDouble(); - RewardRarity rarity; - - if (rand <= 0.01) - { - // 1% - rarity = RewardRarity.VERY_RARE; - } - else if (rand <= 0.05) - { - // 4% - rarity = RewardRarity.RARE; - } - else if (rand <= 0.30 || requiresUncommon) - { - // 25% - rarity = RewardRarity.UNCOMMON; - } - else - { - // 70% - rarity = RewardRarity.COMMON; - } - - List treasureList = _treasureMap.get(rarity); - - int totalWeight = 0; - ArrayList possibleRewards = new ArrayList(); - for (ITreasureReward treasure : treasureList) - { - boolean isExcluded = false; - - if (excludedRewards != null) - { - for (int i = 0; i < excludedRewards.length && !isExcluded; i++) - { - if (excludedRewards[i] != null && excludedRewards[i].equals(treasure)) - { - isExcluded = true; - } - } - } - - if (treasure.canGiveReward(player) && !isExcluded) - { - possibleRewards.add(treasure); - totalWeight += treasure.getWeight(); - } - } - - if (totalWeight > 0) - { - int weight = _random.nextInt(totalWeight); - int currentWeight = 0; - - for (ITreasureReward reward : possibleRewards) - { - currentWeight += reward.getWeight(); - - if (weight <= currentWeight) - return reward; - } - } - - return null; - } - -} From bb8e481c7fc7dec90c2d0e42d962bd1207ebf7d2 Mon Sep 17 00:00:00 2001 From: Chiss Date: Thu, 18 Sep 2014 14:25:39 +1000 Subject: [PATCH 11/15] More Reward stuff --- .../mineplex/core/reward/RewardManager.java | 56 +++--- .../mineplex/core/reward/RewardRarity.java | 11 +- .../core/reward/rewards/CoinReward.java | 1 - .../core/reward/rewards/InventoryReward.java | 10 +- .../src/mineplex/core/treasure/Treasure.java | 12 +- .../core/treasure/TreasureManager.java | 4 +- ...Animation.java => LegendaryAnimation.java} | 4 +- ...ircleAnimation.java => RareAnimation.java} | 4 +- ...sAnimation.java => UncommonAnimation.java} | 4 +- .../nautilus/game/arcade/ArcadeManager.java | 2 + .../game/arcade/managers/GameLootManager.java | 167 ++++++++++++++++++ 11 files changed, 227 insertions(+), 48 deletions(-) rename Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/{ChestExplodeAnimation.java => LegendaryAnimation.java} (93%) rename Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/{CircleAnimation.java => RareAnimation.java} (92%) rename Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/{FireworksAnimation.java => UncommonAnimation.java} (93%) create mode 100644 Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameLootManager.java diff --git a/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardManager.java b/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardManager.java index c008ba404..6bd57d941 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardManager.java @@ -24,7 +24,9 @@ public class RewardManager private HashMap> _treasureMap; private Random _random; - public RewardManager(DonationManager donationManager, InventoryManager inventoryManager) + private boolean _doubleGadgetValue; + + public RewardManager(DonationManager donationManager, InventoryManager inventoryManager, boolean doubleGadgetValue) { _treasureMap = new HashMap>(); _random = new Random(); @@ -33,55 +35,57 @@ public class RewardManager { _treasureMap.put(rarity, new ArrayList()); } + + _doubleGadgetValue = doubleGadgetValue; - addCommon(donationManager, inventoryManager); + addCommon(donationManager, inventoryManager, 250, 500); addUncommon(donationManager, inventoryManager); addRare(donationManager, inventoryManager); addLegendary(donationManager, inventoryManager); } - public void addCommon(DonationManager donationManager, InventoryManager inventoryManager) + public void addCommon(DonationManager donationManager, InventoryManager inventoryManager, int minValue, int maxValue) { // Coins - addReward(new CoinReward(donationManager, 250, 500, 1, RewardRarity.COMMON)); + addReward(new CoinReward(donationManager, minValue, maxValue, 1, RewardRarity.COMMON)); // Gadgets - addReward(new InventoryReward(inventoryManager, "Paintball Gun Ammo", "Paintball Gun", 50, 100, - new ItemStack(Material.GOLD_BARDING), RewardRarity.COMMON, 1)); - addReward(new InventoryReward(inventoryManager, "Fireworks", "Fireworks", 25, 50, - new ItemStack(Material.FIREWORK), RewardRarity.COMMON, 1)); - addReward(new InventoryReward(inventoryManager, "Melon Launcher Ammo", "Melon Launcher", 25, 50, - new ItemStack(Material.MELON_BLOCK), RewardRarity.COMMON, 1)); - addReward(new InventoryReward(inventoryManager, "Flesh Hook Ammo", "Flesh Hook", 20, 40, - new ItemStack(Material.getMaterial(131)), RewardRarity.COMMON, 1)); - addReward(new InventoryReward(inventoryManager, "Ethereal Pearls", "Ethereal Pearl", 15, 30, - new ItemStack(Material.ENDER_PEARL), RewardRarity.COMMON, 1)); - addReward(new InventoryReward(inventoryManager, "Bat Blaster Ammo", "Bat Blaster", 10, 20, - new ItemStack(Material.IRON_BARDING), RewardRarity.COMMON, 1)); - addReward(new InventoryReward(inventoryManager, "TNT", "TNT", 10, 20, - new ItemStack(Material.TNT), RewardRarity.COMMON, 1)); + addReward(new InventoryReward(inventoryManager, "Paintball Gun Ammo", "Paintball Gun", 100*(minValue/500), 100*(maxValue/500), + new ItemStack(Material.GOLD_BARDING), RewardRarity.COMMON, 1, _doubleGadgetValue)); + addReward(new InventoryReward(inventoryManager, "Fireworks", "Fireworks", 50*(minValue/500), 50*(maxValue/500), + new ItemStack(Material.FIREWORK), RewardRarity.COMMON, 1, _doubleGadgetValue)); + addReward(new InventoryReward(inventoryManager, "Melon Launcher Ammo", "Melon Launcher", 50*(minValue/500), 50*(maxValue/500), + new ItemStack(Material.MELON_BLOCK), RewardRarity.COMMON, 1, _doubleGadgetValue)); + addReward(new InventoryReward(inventoryManager, "Flesh Hooks", "Flesh Hook", 40*(minValue/500), 40*(maxValue/500), + new ItemStack(Material.getMaterial(131)), RewardRarity.COMMON, 1, _doubleGadgetValue)); + addReward(new InventoryReward(inventoryManager, "Ethereal Pearls", "Ethereal Pearl", 30*(minValue/500), 30*(maxValue/500), + new ItemStack(Material.ENDER_PEARL), RewardRarity.COMMON, 1, _doubleGadgetValue)); + addReward(new InventoryReward(inventoryManager, "Bat Blaster Ammo", "Bat Blaster", 20*(minValue/500), 20*(maxValue/500), + new ItemStack(Material.IRON_BARDING), RewardRarity.COMMON, 1, _doubleGadgetValue)); + addReward(new InventoryReward(inventoryManager, "TNT", "TNT", 20*(minValue/500), 20*(maxValue/500), + new ItemStack(Material.TNT), RewardRarity.COMMON, 1, _doubleGadgetValue)); } public void addUncommon(DonationManager donationManager, InventoryManager inventoryManager) { // Coins - addReward(new CoinReward(donationManager, 500, 1000, 250, RewardRarity.UNCOMMON)); + addReward(new CoinReward(donationManager, 750, 1500, 250, RewardRarity.UNCOMMON)); // Gadgets addReward(new InventoryReward(inventoryManager, "Paintball Gun Ammo", "Paintball Gun", 100, 200, - new ItemStack(Material.GOLD_BARDING), RewardRarity.UNCOMMON, 250)); + new ItemStack(Material.GOLD_BARDING), RewardRarity.UNCOMMON, 250, _doubleGadgetValue)); addReward(new InventoryReward(inventoryManager, "Fireworks", "Fireworks", 50, 100, - new ItemStack(Material.FIREWORK), RewardRarity.UNCOMMON, 250)); + new ItemStack(Material.FIREWORK), RewardRarity.UNCOMMON, 250, _doubleGadgetValue)); addReward(new InventoryReward(inventoryManager, "Melon Launcher Ammo", "Melon Launcher", 50, 100, - new ItemStack(Material.MELON_BLOCK), RewardRarity.UNCOMMON, 250)); + new ItemStack(Material.MELON_BLOCK), RewardRarity.UNCOMMON, 250, _doubleGadgetValue)); addReward(new InventoryReward(inventoryManager, "Flesh Hook Ammo", "Flesh Hook", 40, 80, - new ItemStack(Material.getMaterial(131)), RewardRarity.UNCOMMON, 250)); + new ItemStack(Material.getMaterial(131)), RewardRarity.UNCOMMON, 250, _doubleGadgetValue)); addReward(new InventoryReward(inventoryManager, "Ethereal Pearls", "Ethereal Pearl", 30, 60, - new ItemStack(Material.ENDER_PEARL), RewardRarity.UNCOMMON, 250)); + new ItemStack(Material.ENDER_PEARL), RewardRarity.UNCOMMON, 250, _doubleGadgetValue)); addReward(new InventoryReward(inventoryManager, "Bat Blaster Ammo", "Bat Blaster", 20, 40, - new ItemStack(Material.IRON_BARDING), RewardRarity.UNCOMMON, 250)); + new ItemStack(Material.IRON_BARDING), RewardRarity.UNCOMMON, 250, _doubleGadgetValue)); addReward(new InventoryReward(inventoryManager, "TNT", "TNT", 20, 40, - new ItemStack(Material.TNT), RewardRarity.UNCOMMON, 250)); + new ItemStack(Material.TNT), RewardRarity.UNCOMMON, 250, _doubleGadgetValue)); // Pets addReward(new UnknownPackageReward(donationManager, "Cow Pet", "Cow", diff --git a/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardRarity.java b/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardRarity.java index 7ebd8b040..3b6d6fbc7 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardRarity.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardRarity.java @@ -14,12 +14,14 @@ public enum RewardRarity * (Fireworks, sounds, etc) */ - COMMON(cAqua), UNCOMMON(cGreen), RARE(cGold), LEGENDARY(cRed); + COMMON("Common", cAqua), UNCOMMON("Uncommon", cGreen), RARE("Rare", cGold), LEGENDARY("Legendary", cRed); + private String _name; private String _color; - RewardRarity(String color) + RewardRarity(String name, String color) { + _name = name; _color = color; } @@ -28,4 +30,9 @@ public enum RewardRarity return _color; } + public String getName() + { + return _name; + } + } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/CoinReward.java b/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/CoinReward.java index fde499f8e..2eaf8a9d9 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/CoinReward.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/CoinReward.java @@ -69,5 +69,4 @@ public class CoinReward extends AbstractReward return false; } - } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/InventoryReward.java b/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/InventoryReward.java index 2bf922c9a..68d86ff6b 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/InventoryReward.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/InventoryReward.java @@ -23,20 +23,20 @@ public class InventoryReward extends AbstractReward private int _minAmount; private int _maxAmount; - public InventoryReward(InventoryManager inventoryManager, String name, String packageName, int minAmount, int maxAmount, ItemStack itemStack, RewardRarity rarity, int weight) + public InventoryReward(InventoryManager inventoryManager, String name, String packageName, int minAmount, int maxAmount, ItemStack itemStack, RewardRarity rarity, int weight, boolean doubleAmount) { - this(RANDOM, inventoryManager, name, packageName, minAmount, maxAmount, itemStack, rarity, weight); + this(RANDOM, inventoryManager, name, packageName, minAmount, maxAmount, itemStack, rarity, weight, doubleAmount); } - public InventoryReward(Random random, InventoryManager inventoryManager, String name, String packageName, int minAmount, int maxAmount, ItemStack itemStack, RewardRarity rarity, int weight) + public InventoryReward(Random random, InventoryManager inventoryManager, String name, String packageName, int minAmount, int maxAmount, ItemStack itemStack, RewardRarity rarity, int weight, boolean doubleAmount) { super(itemStack, rarity, weight); _random = random; _name = name; _packageName = packageName; - _minAmount = minAmount; - _maxAmount = maxAmount; + _minAmount = doubleAmount ? minAmount * 2 : minAmount; + _maxAmount = doubleAmount ? maxAmount * 2 : maxAmount; _inventoryManager = inventoryManager; } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/Treasure.java b/Plugins/Mineplex.Core/src/mineplex/core/treasure/Treasure.java index 657fdd31a..935df2100 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/Treasure.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/Treasure.java @@ -21,12 +21,12 @@ import mineplex.core.common.util.UtilParticle; import mineplex.core.reward.IReward; import mineplex.core.reward.RewardRarity; import mineplex.core.treasure.animation.Animation; -import mineplex.core.treasure.animation.ChestExplodeAnimation; import mineplex.core.treasure.animation.ChestOpenAnimation; import mineplex.core.treasure.animation.ChestSpawnAnimation; -import mineplex.core.treasure.animation.CircleAnimation; -import mineplex.core.treasure.animation.FireworksAnimation; +import mineplex.core.treasure.animation.LegendaryAnimation; +import mineplex.core.treasure.animation.RareAnimation; import mineplex.core.treasure.animation.TreasureRemoveAnimation; +import mineplex.core.treasure.animation.UncommonAnimation; /** * Created by Shaun on 8/27/2014. @@ -259,16 +259,16 @@ public class Treasure // Extra effects based off the rarity of the treasure if (data.getReward().getRarity() == RewardRarity.UNCOMMON) { - _animations.add(new FireworksAnimation(this, data.getBlock())); + _animations.add(new UncommonAnimation(this, data.getBlock())); } else if (data.getReward().getRarity() == RewardRarity.RARE) { - _animations.add(new CircleAnimation(this, data.getBlock().getLocation().add(0.5, 1.5, 0.5))); + _animations.add(new RareAnimation(this, data.getBlock().getLocation().add(0.5, 1.5, 0.5))); Bukkit.broadcastMessage(F.main("Treasure", F.name(_player.getName()) + " opened the Rare treasure " + text)); } else if (data.getReward().getRarity() == RewardRarity.LEGENDARY) { - _animations.add(new ChestExplodeAnimation(this, data.getBlock())); + _animations.add(new LegendaryAnimation(this, data.getBlock())); Bukkit.broadcastMessage(F.main("Treasure", F.name(_player.getName()) + " opened the Legendary treasure " + text)); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureManager.java b/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureManager.java index 89302117f..557e1c50f 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureManager.java @@ -59,7 +59,7 @@ public class TreasureManager extends MiniPlugin super("Treasure", plugin); _playerTreasureMap = new NautHashMap(); - _rewardManager = new RewardManager(donationManager, inventoryManager); + _rewardManager = new RewardManager(donationManager, inventoryManager, true); } @Override @@ -324,7 +324,7 @@ public class TreasureManager extends MiniPlugin //TODO Remove if (event.getMessage().startsWith("/treasuredebug")) { - event.getPlayer().sendMessage("Attempting to open treasure..."); + event.getPlayer().sendMessage(C.cGreen + C.Bold + "Treasure Debug..."); attemptOpenTreasure(event.getPlayer()); event.setCancelled(true); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/ChestExplodeAnimation.java b/Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/LegendaryAnimation.java similarity index 93% rename from Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/ChestExplodeAnimation.java rename to Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/LegendaryAnimation.java index 3c85df6fe..77f4e628a 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/ChestExplodeAnimation.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/LegendaryAnimation.java @@ -14,7 +14,7 @@ import mineplex.core.treasure.Treasure; /** * Created by shaun on 14-09-12. */ -public class ChestExplodeAnimation extends Animation +public class LegendaryAnimation extends Animation { /** * Played when a "Very Rare" chest is opened @@ -23,7 +23,7 @@ public class ChestExplodeAnimation extends Animation private Random _random = new Random(); private Block _chestBlock; - public ChestExplodeAnimation(Treasure treasure, Block chestBlock) + public LegendaryAnimation(Treasure treasure, Block chestBlock) { super(treasure); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/CircleAnimation.java b/Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/RareAnimation.java similarity index 92% rename from Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/CircleAnimation.java rename to Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/RareAnimation.java index cb884dc1a..5976fabf5 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/CircleAnimation.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/RareAnimation.java @@ -13,7 +13,7 @@ import mineplex.core.treasure.Treasure; /** * Created by shaun on 2014-09-09. */ -public class CircleAnimation extends Animation +public class RareAnimation extends Animation { /** * Played when a "Rare" chest is opened @@ -21,7 +21,7 @@ public class CircleAnimation extends Animation private Location _centerLocation; - public CircleAnimation(Treasure treasure, Location centerLocation) + public RareAnimation(Treasure treasure, Location centerLocation) { super(treasure); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/FireworksAnimation.java b/Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/UncommonAnimation.java similarity index 93% rename from Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/FireworksAnimation.java rename to Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/UncommonAnimation.java index 8d559e2eb..c4eb35cf7 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/FireworksAnimation.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/UncommonAnimation.java @@ -22,7 +22,7 @@ import mineplex.core.treasure.Treasure; /** * Created by shaun on 2014-09-09. */ -public class FireworksAnimation extends Animation +public class UncommonAnimation extends Animation { /** * Played when an "Uncommon" chest is opened @@ -31,7 +31,7 @@ public class FireworksAnimation extends Animation private Random _random = new Random(); private Block _block; - public FireworksAnimation(Treasure treasure, Block block) + public UncommonAnimation(Treasure treasure, Block block) { super(treasure); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/ArcadeManager.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/ArcadeManager.java index c7f960d32..9e41ff20b 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/ArcadeManager.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/ArcadeManager.java @@ -92,6 +92,7 @@ import nautilus.game.arcade.managers.GameGemManager; import nautilus.game.arcade.managers.GameLobbyManager; import nautilus.game.arcade.managers.GameManager; import nautilus.game.arcade.managers.GamePlayerManager; +import nautilus.game.arcade.managers.GameLootManager; import nautilus.game.arcade.managers.GameWorldManager; import nautilus.game.arcade.managers.IdleManager; import nautilus.game.arcade.managers.MiscManager; @@ -243,6 +244,7 @@ public class ArcadeManager extends MiniPlugin implements IRelation new GameFlagManager(this); _gamePlayerManager = new GamePlayerManager(this); new GameAchievementManager(this); + new GameLootManager(this); _gameWorldManager = new GameWorldManager(this); new MiscManager(this); new IdleManager(this); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameLootManager.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameLootManager.java new file mode 100644 index 000000000..03b9c643c --- /dev/null +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameLootManager.java @@ -0,0 +1,167 @@ +package nautilus.game.arcade.managers; + +import java.util.HashSet; +import java.util.LinkedList; +import java.util.Random; + +import mineplex.core.common.util.C; +import mineplex.core.common.util.F; +import mineplex.core.common.util.UtilFirework; +import mineplex.core.common.util.UtilServer; +import mineplex.core.common.util.UtilTitle; +import mineplex.core.reward.IReward; +import mineplex.core.reward.RewardManager; +import mineplex.core.reward.RewardRarity; +import mineplex.core.reward.rewards.InventoryReward; +import mineplex.core.treasure.animation.Animation; +import mineplex.core.updater.UpdateType; +import mineplex.core.updater.event.UpdateEvent; +import nautilus.game.arcade.ArcadeManager; +import nautilus.game.arcade.events.GameStateChangeEvent; +import nautilus.game.arcade.game.Game.GameState; + +import org.bukkit.Bukkit; +import org.bukkit.Color; +import org.bukkit.FireworkEffect; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerCommandPreprocessEvent; +import org.bukkit.event.player.PlayerQuitEvent; +import org.bukkit.inventory.ItemStack; + +public class GameLootManager implements Listener +{ + private ArcadeManager Manager; + + private RewardManager _rewardManager; + + private HashSet _players = new HashSet(); + + private long _startTime = 0; + + public GameLootManager(ArcadeManager manager) + { + Manager = manager; + + Manager.GetPluginManager().registerEvents(this, Manager.GetPlugin()); + + _rewardManager = new RewardManager(Manager.GetDonation(), Manager.getInventoryManager(), false); + + //Chest + _rewardManager.addReward(new InventoryReward(Manager.getInventoryManager(), "Treasure Chest", "Treasure Chest", 1, 1, + new ItemStack(Material.CHEST), RewardRarity.COMMON, 3, false)); + + //Key + _rewardManager.addReward(new InventoryReward(Manager.getInventoryManager(), "Treasure Key", "Treasure Key", 1, 1, + new ItemStack(Material.DIAMOND), RewardRarity.UNCOMMON, 500, false)); + } + + @EventHandler + public void registerPlayers(GameStateChangeEvent event) + { + if (!Manager.IsRewardAchievements()) + return; + + if (event.GetState() != GameState.Live) + return; + + for (Player player : event.GetGame().GetPlayers(true)) + _players.add(player); + + _startTime = System.currentTimeMillis(); + } + + @EventHandler + public void unregisterPlayer(PlayerQuitEvent event) + { + _players.remove(event.getPlayer()); + } + + @EventHandler(priority = EventPriority.MONITOR) + public void giveLoot(final GameStateChangeEvent event) + { + if (!Manager.IsRewardAchievements()) + return; + + if (event.GetState() != GameState.Dead) + return; + + UtilServer.getServer().getScheduler().scheduleSyncDelayedTask(Manager.GetPlugin(), new Runnable() + { + public void run() + { + for (Player player : _players) + { + giveReward(player); + } + } + }, 240); + //Delay after Achievements + + _players.clear(); + } + + public void giveReward(Player player) + { + double chance = (System.currentTimeMillis() - _startTime)/3600000d; + + if (Math.random() > chance) + return; + + IReward reward = _rewardManager.nextReward(player, null, false, false); + + String name = reward.giveReward(player); + + String outputName = reward.getRarity().getColor() + name; + + //Self Display + UtilTitle.display(C.cDGreen + C.Bold + "Loot", "You found " + outputName, 20, 120, 20, player); + + Random _random = new Random(); + + //Announce + if (reward.getRarity() != RewardRarity.COMMON) + { + Bukkit.broadcastMessage(F.main("Loot", F.name(player.getName()) + " found the " + reward.getRarity().getName() + " treasure " + outputName)); + } + + //Effect + if (reward.getRarity() == RewardRarity.UNCOMMON) + { + FireworkEffect effect = FireworkEffect.builder().withColor(Color.fromRGB(_random.nextInt(255), _random.nextInt(255), _random.nextInt(255))) + .withFade(Color.fromRGB(_random.nextInt(255), _random.nextInt(255), _random.nextInt(255))) + .with(FireworkEffect.Type.STAR) + .build(); + + UtilFirework.playFirework(player.getEyeLocation(), effect); + } + else if (reward.getRarity() == RewardRarity.RARE) + { + FireworkEffect effect = FireworkEffect.builder().with(FireworkEffect.Type.BALL).withColor(Color.YELLOW).withFade(Color.WHITE).build(); + UtilFirework.playFirework(player.getEyeLocation(), effect); + } + else if (reward.getRarity() == RewardRarity.LEGENDARY) + { + FireworkEffect effect = FireworkEffect.builder().with(FireworkEffect.Type.BALL_LARGE).withColor(Color.RED).withFade(Color.BLACK).build(); + UtilFirework.playFirework(player.getEyeLocation(), effect); + } + } + + @EventHandler + public void command(PlayerCommandPreprocessEvent event) + { + if (!event.getPlayer().isOp()) + return; + + //TODO Remove + if (event.getMessage().startsWith("/lootdebug")) + { + event.getPlayer().sendMessage(C.cGreen + C.Bold + "Loot Debug..."); + giveReward(event.getPlayer()); + event.setCancelled(true); + } + } +} From 09a3cc16b07e7bfc3fc172844738f41dd6d729f0 Mon Sep 17 00:00:00 2001 From: Chiss Date: Thu, 18 Sep 2014 14:36:22 +1000 Subject: [PATCH 12/15] Reward stuffs --- .../mineplex/core/reward/RewardManager.java | 127 ++++++++++++------ .../core/reward/rewards/InventoryReward.java | 10 +- .../core/treasure/TreasureManager.java | 7 +- .../game/arcade/managers/GameLootManager.java | 11 +- 4 files changed, 105 insertions(+), 50 deletions(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardManager.java b/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardManager.java index 6bd57d941..0f102433b 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardManager.java @@ -26,7 +26,12 @@ public class RewardManager private boolean _doubleGadgetValue; - public RewardManager(DonationManager donationManager, InventoryManager inventoryManager, boolean doubleGadgetValue) + public RewardManager(DonationManager donationManager, InventoryManager inventoryManager, + int commonValueMin, int commonValueMax, + int uncommonValueMin, int uncommonValueMax, + int rareValueMin, int rareValueMax, + int legendValueMin, int legendValueMax, + boolean doubleGadgetValue) { _treasureMap = new HashMap>(); _random = new Random(); @@ -38,54 +43,94 @@ public class RewardManager _doubleGadgetValue = doubleGadgetValue; - addCommon(donationManager, inventoryManager, 250, 500); - addUncommon(donationManager, inventoryManager); - addRare(donationManager, inventoryManager); - addLegendary(donationManager, inventoryManager); + addCommon(donationManager, inventoryManager, commonValueMin, commonValueMax); + addUncommon(donationManager, inventoryManager, commonValueMin, commonValueMax); + addRare(donationManager, inventoryManager, commonValueMin, commonValueMax); + addLegendary(donationManager, inventoryManager, commonValueMin, commonValueMax); } - public void addCommon(DonationManager donationManager, InventoryManager inventoryManager, int minValue, int maxValue) + public void addCommon(DonationManager donationManager, InventoryManager inventoryManager, double minValue, double maxValue) { // Coins - addReward(new CoinReward(donationManager, minValue, maxValue, 1, RewardRarity.COMMON)); + addReward(new CoinReward(donationManager, (int)minValue, (int)maxValue, 1, RewardRarity.COMMON)); + //Increase Value + if (_doubleGadgetValue) + { + minValue *= 2; + maxValue *= 2; + } + // Gadgets - addReward(new InventoryReward(inventoryManager, "Paintball Gun Ammo", "Paintball Gun", 100*(minValue/500), 100*(maxValue/500), - new ItemStack(Material.GOLD_BARDING), RewardRarity.COMMON, 1, _doubleGadgetValue)); - addReward(new InventoryReward(inventoryManager, "Fireworks", "Fireworks", 50*(minValue/500), 50*(maxValue/500), - new ItemStack(Material.FIREWORK), RewardRarity.COMMON, 1, _doubleGadgetValue)); - addReward(new InventoryReward(inventoryManager, "Melon Launcher Ammo", "Melon Launcher", 50*(minValue/500), 50*(maxValue/500), - new ItemStack(Material.MELON_BLOCK), RewardRarity.COMMON, 1, _doubleGadgetValue)); - addReward(new InventoryReward(inventoryManager, "Flesh Hooks", "Flesh Hook", 40*(minValue/500), 40*(maxValue/500), - new ItemStack(Material.getMaterial(131)), RewardRarity.COMMON, 1, _doubleGadgetValue)); - addReward(new InventoryReward(inventoryManager, "Ethereal Pearls", "Ethereal Pearl", 30*(minValue/500), 30*(maxValue/500), - new ItemStack(Material.ENDER_PEARL), RewardRarity.COMMON, 1, _doubleGadgetValue)); - addReward(new InventoryReward(inventoryManager, "Bat Blaster Ammo", "Bat Blaster", 20*(minValue/500), 20*(maxValue/500), - new ItemStack(Material.IRON_BARDING), RewardRarity.COMMON, 1, _doubleGadgetValue)); - addReward(new InventoryReward(inventoryManager, "TNT", "TNT", 20*(minValue/500), 20*(maxValue/500), - new ItemStack(Material.TNT), RewardRarity.COMMON, 1, _doubleGadgetValue)); + addReward(new InventoryReward(inventoryManager, "Paintball Gun Ammo", "Paintball Gun", + (int)(100*(minValue/500)), (int)(100*(maxValue/500)), + new ItemStack(Material.GOLD_BARDING), RewardRarity.COMMON, 1)); + + addReward(new InventoryReward(inventoryManager, "Fireworks", "Fireworks", + (int)(50*(minValue/500)), (int)(50*(maxValue/500)), + new ItemStack(Material.FIREWORK), RewardRarity.COMMON, 1)); + + addReward(new InventoryReward(inventoryManager, "Melon Launcher Ammo", "Melon Launcher", + (int)(50*(minValue/500)), (int)(50*(maxValue/500)), + new ItemStack(Material.MELON_BLOCK), RewardRarity.COMMON, 1)); + + addReward(new InventoryReward(inventoryManager, "Flesh Hooks", "Flesh Hook", + (int)(40*(minValue/500)), (int)(40*(maxValue/500)), + new ItemStack(Material.getMaterial(131)), RewardRarity.COMMON, 1)); + + addReward(new InventoryReward(inventoryManager, "Ethereal Pearls", "Ethereal Pearl", + (int)(30*(minValue/500)), (int)(30*(maxValue/500)), + new ItemStack(Material.ENDER_PEARL), RewardRarity.COMMON, 1)); + + addReward(new InventoryReward(inventoryManager, "Bat Blaster Ammo", "Bat Blaster", + (int)(20*(minValue/500)), (int)(20*(maxValue/500)), + new ItemStack(Material.IRON_BARDING), RewardRarity.COMMON, 1)); + + addReward(new InventoryReward(inventoryManager, "TNT", "TNT", + (int)(20*(minValue/500)), (int)(20*(maxValue/500)), + new ItemStack(Material.TNT), RewardRarity.COMMON, 1)); } - public void addUncommon(DonationManager donationManager, InventoryManager inventoryManager) + public void addUncommon(DonationManager donationManager, InventoryManager inventoryManager, double minValue, double maxValue) { // Coins - addReward(new CoinReward(donationManager, 750, 1500, 250, RewardRarity.UNCOMMON)); + addReward(new CoinReward(donationManager, (int)minValue, (int)maxValue, 250, RewardRarity.UNCOMMON)); + //Increase Value + if (_doubleGadgetValue) + { + minValue *= 2; + maxValue *= 2; + } + // Gadgets - addReward(new InventoryReward(inventoryManager, "Paintball Gun Ammo", "Paintball Gun", 100, 200, - new ItemStack(Material.GOLD_BARDING), RewardRarity.UNCOMMON, 250, _doubleGadgetValue)); - addReward(new InventoryReward(inventoryManager, "Fireworks", "Fireworks", 50, 100, - new ItemStack(Material.FIREWORK), RewardRarity.UNCOMMON, 250, _doubleGadgetValue)); - addReward(new InventoryReward(inventoryManager, "Melon Launcher Ammo", "Melon Launcher", 50, 100, - new ItemStack(Material.MELON_BLOCK), RewardRarity.UNCOMMON, 250, _doubleGadgetValue)); - addReward(new InventoryReward(inventoryManager, "Flesh Hook Ammo", "Flesh Hook", 40, 80, - new ItemStack(Material.getMaterial(131)), RewardRarity.UNCOMMON, 250, _doubleGadgetValue)); - addReward(new InventoryReward(inventoryManager, "Ethereal Pearls", "Ethereal Pearl", 30, 60, - new ItemStack(Material.ENDER_PEARL), RewardRarity.UNCOMMON, 250, _doubleGadgetValue)); - addReward(new InventoryReward(inventoryManager, "Bat Blaster Ammo", "Bat Blaster", 20, 40, - new ItemStack(Material.IRON_BARDING), RewardRarity.UNCOMMON, 250, _doubleGadgetValue)); - addReward(new InventoryReward(inventoryManager, "TNT", "TNT", 20, 40, - new ItemStack(Material.TNT), RewardRarity.UNCOMMON, 250, _doubleGadgetValue)); + addReward(new InventoryReward(inventoryManager, "Paintball Gun Ammo", "Paintball Gun", + (int)(100*(minValue/500)), (int)(100*(maxValue/500)), + new ItemStack(Material.GOLD_BARDING), RewardRarity.UNCOMMON, 250)); + + addReward(new InventoryReward(inventoryManager, "Fireworks", "Fireworks", + (int)(50*(minValue/500)), (int)(50*(maxValue/500)), + new ItemStack(Material.FIREWORK), RewardRarity.UNCOMMON, 250)); + + addReward(new InventoryReward(inventoryManager, "Melon Launcher Ammo", "Melon Launcher", + (int)(50*(minValue/500)), (int)(50*(maxValue/500)), + new ItemStack(Material.MELON_BLOCK), RewardRarity.UNCOMMON, 250)); + + addReward(new InventoryReward(inventoryManager, "Flesh Hook Ammo", "Flesh Hook", + (int)(40*(minValue/500)), (int)(40*(maxValue/500)), + new ItemStack(Material.getMaterial(131)), RewardRarity.UNCOMMON, 250)); + + addReward(new InventoryReward(inventoryManager, "Ethereal Pearls", "Ethereal Pearl", + (int)(30*(minValue/500)), (int)(30*(maxValue/500)), + new ItemStack(Material.ENDER_PEARL), RewardRarity.UNCOMMON, 250)); + + addReward(new InventoryReward(inventoryManager, "Bat Blaster Ammo", "Bat Blaster", + (int)(20*(minValue/500)), (int)(20*(maxValue/500)), + new ItemStack(Material.IRON_BARDING), RewardRarity.UNCOMMON, 250)); + + addReward(new InventoryReward(inventoryManager, "TNT", "TNT", + (int)(20*(minValue/500)), (int)(20*(maxValue/500)), + new ItemStack(Material.TNT), RewardRarity.UNCOMMON, 250)); // Pets addReward(new UnknownPackageReward(donationManager, "Cow Pet", "Cow", @@ -104,10 +149,10 @@ public class RewardManager new ItemStack(Material.MONSTER_EGG, 1, EntityType.WOLF.getTypeId()), RewardRarity.RARE, 125)); } - public void addRare(DonationManager donationManager, InventoryManager inventoryManager) + public void addRare(DonationManager donationManager, InventoryManager inventoryManager, double minValue, double maxValue) { // Coins - addReward(new CoinReward(donationManager, 1000, 2000, 100, RewardRarity.RARE)); + addReward(new CoinReward(donationManager, (int)minValue, (int)maxValue, 100, RewardRarity.RARE)); // Mounts addReward(new UnknownPackageReward(donationManager, "Mount Mule", "Mount Mule", @@ -132,10 +177,10 @@ public class RewardManager new ItemStack(Material.SKULL_ITEM, 1, (short) 0, (byte) 1), RewardRarity.RARE, 25)); } - public void addLegendary(DonationManager donationManager, InventoryManager inventoryManager) + public void addLegendary(DonationManager donationManager, InventoryManager inventoryManager, double minValue, double maxValue) { // Coins - addReward(new CoinReward(donationManager, 10000, 20000, 25, RewardRarity.LEGENDARY)); + addReward(new CoinReward(donationManager, (int)minValue, (int)maxValue, 25, RewardRarity.LEGENDARY)); // Mounts addReward(new UnknownPackageReward(donationManager, "Infernal Horror", "Infernal Horror", diff --git a/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/InventoryReward.java b/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/InventoryReward.java index 68d86ff6b..2bf922c9a 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/InventoryReward.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/InventoryReward.java @@ -23,20 +23,20 @@ public class InventoryReward extends AbstractReward private int _minAmount; private int _maxAmount; - public InventoryReward(InventoryManager inventoryManager, String name, String packageName, int minAmount, int maxAmount, ItemStack itemStack, RewardRarity rarity, int weight, boolean doubleAmount) + public InventoryReward(InventoryManager inventoryManager, String name, String packageName, int minAmount, int maxAmount, ItemStack itemStack, RewardRarity rarity, int weight) { - this(RANDOM, inventoryManager, name, packageName, minAmount, maxAmount, itemStack, rarity, weight, doubleAmount); + this(RANDOM, inventoryManager, name, packageName, minAmount, maxAmount, itemStack, rarity, weight); } - public InventoryReward(Random random, InventoryManager inventoryManager, String name, String packageName, int minAmount, int maxAmount, ItemStack itemStack, RewardRarity rarity, int weight, boolean doubleAmount) + public InventoryReward(Random random, InventoryManager inventoryManager, String name, String packageName, int minAmount, int maxAmount, ItemStack itemStack, RewardRarity rarity, int weight) { super(itemStack, rarity, weight); _random = random; _name = name; _packageName = packageName; - _minAmount = doubleAmount ? minAmount * 2 : minAmount; - _maxAmount = doubleAmount ? maxAmount * 2 : maxAmount; + _minAmount = minAmount; + _maxAmount = maxAmount; _inventoryManager = inventoryManager; } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureManager.java b/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureManager.java index 557e1c50f..e99e61ab6 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureManager.java @@ -59,7 +59,12 @@ public class TreasureManager extends MiniPlugin super("Treasure", plugin); _playerTreasureMap = new NautHashMap(); - _rewardManager = new RewardManager(donationManager, inventoryManager, true); + _rewardManager = new RewardManager(donationManager, inventoryManager, + 250, 500, + 750, 1500, + 2000, 3000, + 10000, 20000, + true); } @Override diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameLootManager.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameLootManager.java index 03b9c643c..15e185668 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameLootManager.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameLootManager.java @@ -48,15 +48,20 @@ public class GameLootManager implements Listener Manager.GetPluginManager().registerEvents(this, Manager.GetPlugin()); - _rewardManager = new RewardManager(Manager.GetDonation(), Manager.getInventoryManager(), false); + _rewardManager = new RewardManager(Manager.GetDonation(), Manager.getInventoryManager(), + 100, 250, + 750, 1500, + 2000, 3000, + 10000, 20000, + false); //Chest _rewardManager.addReward(new InventoryReward(Manager.getInventoryManager(), "Treasure Chest", "Treasure Chest", 1, 1, - new ItemStack(Material.CHEST), RewardRarity.COMMON, 3, false)); + new ItemStack(Material.CHEST), RewardRarity.COMMON, 3)); //Key _rewardManager.addReward(new InventoryReward(Manager.getInventoryManager(), "Treasure Key", "Treasure Key", 1, 1, - new ItemStack(Material.DIAMOND), RewardRarity.UNCOMMON, 500, false)); + new ItemStack(Material.DIAMOND), RewardRarity.UNCOMMON, 500)); } @EventHandler From 6c4479298d46de7b559b5d40842d75429df148c7 Mon Sep 17 00:00:00 2001 From: Shaun Bennett Date: Thu, 18 Sep 2014 00:41:56 -0500 Subject: [PATCH 13/15] Fix RewardManager bug, fooling around with animations --- .../mineplex/core/reward/RewardManager.java | 20 +++++++++---------- .../animation/LegendaryAnimation.java | 19 ++++++++++++++++-- .../treasure/animation/RareAnimation.java | 7 ++++--- .../treasure/animation/UncommonAnimation.java | 2 +- 4 files changed, 32 insertions(+), 16 deletions(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardManager.java b/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardManager.java index 0f102433b..469e2b56c 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardManager.java @@ -5,17 +5,17 @@ import java.util.HashMap; import java.util.List; import java.util.Random; +import org.bukkit.Material; +import org.bukkit.entity.EntityType; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; + import mineplex.core.donation.DonationManager; import mineplex.core.inventory.InventoryManager; import mineplex.core.reward.rewards.CoinReward; import mineplex.core.reward.rewards.InventoryReward; import mineplex.core.reward.rewards.UnknownPackageReward; -import org.bukkit.Material; -import org.bukkit.entity.EntityType; -import org.bukkit.entity.Player; -import org.bukkit.inventory.ItemStack; - /** * Created by shaun on 2014-09-04. */ @@ -44,9 +44,9 @@ public class RewardManager _doubleGadgetValue = doubleGadgetValue; addCommon(donationManager, inventoryManager, commonValueMin, commonValueMax); - addUncommon(donationManager, inventoryManager, commonValueMin, commonValueMax); - addRare(donationManager, inventoryManager, commonValueMin, commonValueMax); - addLegendary(donationManager, inventoryManager, commonValueMin, commonValueMax); + addUncommon(donationManager, inventoryManager, uncommonValueMin, uncommonValueMax); + addRare(donationManager, inventoryManager, rareValueMin, rareValueMax); + addLegendary(donationManager, inventoryManager, legendValueMin, legendValueMax); } public void addCommon(DonationManager donationManager, InventoryManager inventoryManager, double minValue, double maxValue) @@ -261,12 +261,12 @@ public class RewardManager double rand = _random.nextDouble(); RewardRarity rarity; - if (isChestOpening ? rand <= 0.01 : rand <= 0.0001) + if (isChestOpening ? rand <= 0.91 : rand <= 0.0001) { // 1% or 0.01% rarity = RewardRarity.LEGENDARY; } - else if (isChestOpening ? rand <= 0.05 : rand <= 0.001) + else if (isChestOpening ? rand <= 0.95 : rand <= 0.001) { // 4% or 0.09% rarity = RewardRarity.RARE; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/LegendaryAnimation.java b/Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/LegendaryAnimation.java index 77f4e628a..4c3a31c7e 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/LegendaryAnimation.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/LegendaryAnimation.java @@ -9,6 +9,7 @@ import org.bukkit.Sound; import org.bukkit.block.Block; import mineplex.core.common.util.UtilFirework; +import mineplex.core.common.util.UtilParticle; import mineplex.core.treasure.Treasure; /** @@ -38,13 +39,27 @@ public class LegendaryAnimation extends Animation // _chestBlock.getLocation().getWorld().playSound(_chestBlock.getLocation().add(0.5, 0.5, 0.5), Sound.WITHER_SPAWN, 10F, 1.2F); _chestBlock.getLocation().getWorld().playSound(_chestBlock.getLocation().add(0.5, 0.5, 0.5), Sound.ENDERDRAGON_DEATH, 10F, 2.0F); } - if (getTicks() == 10) + if (getTicks() == 20) { FireworkEffect effect = FireworkEffect.builder().with(FireworkEffect.Type.BALL_LARGE).withColor(Color.RED).withFade(Color.BLACK).build(); UtilFirework.playFirework(_chestBlock.getLocation().add(0.5, 0.5, 0.5), effect); // ((CraftWorld) _chestBlock.getWorld()).getHandle().triggerEffect(1005, _chestBlock.getX(), _chestBlock.getY(), _chestBlock.getZ(), 2257); } - else if (getTicks() < 10) + else if (getTicks() < 15) + { + double radius = 2 - (getTicks() / 10D * 2); + int particleAmount = 20 - (getTicks() * 2); + Location _centerLocation = _chestBlock.getLocation().add(0.5, 0.1, 0.5); + for (int i = 0; i < particleAmount; i++) + { + double xDiff = Math.sin(i/(double)particleAmount * 2 * Math.PI) * radius; + double zDiff = Math.cos(i/(double)particleAmount * 2 * Math.PI) * radius; + + Location location = _centerLocation.clone().add(xDiff, 0, zDiff); + UtilParticle.PlayParticle(UtilParticle.ParticleType.CLOUD, location, 0, 0, 0, 0, 1); + } + } + else if (getTicks() < 20) { double xDif = _random.nextGaussian() * 0.5; double zDif = _random.nextGaussian() * 0.5; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/RareAnimation.java b/Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/RareAnimation.java index f5c778dd5..c43ced09a 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/RareAnimation.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/RareAnimation.java @@ -53,10 +53,11 @@ public class RareAnimation extends Animation } double radius = getTicks() / 20D; - for (int i = 0; i < 20; i++) + int particleAmount = getTicks() / 2; + for (int i = 0; i < particleAmount; i++) { - double xDiff = Math.sin(i/20D * 2 * Math.PI) * radius; - double zDiff = Math.cos(i/20D * 2 * Math.PI) * radius; + double xDiff = Math.sin(i/(double)particleAmount * 2 * Math.PI) * radius; + double zDiff = Math.cos(i/(double)particleAmount * 2 * Math.PI) * radius; Location location = _centerLocation.clone().add(xDiff, -1.3, zDiff); UtilParticle.PlayParticle(UtilParticle.ParticleType.FLAME, location, 0, 0, 0, 0, 1); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/UncommonAnimation.java b/Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/UncommonAnimation.java index 86a5ca6f1..0fbcb55b7 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/UncommonAnimation.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/UncommonAnimation.java @@ -41,7 +41,7 @@ public class UncommonAnimation extends Animation double zDif = 0;//_random.nextGaussian() * 1; double yDif = 2;//(_random.nextInt(3) * _random.nextDouble()) + 2; - FireworkEffect effect = FireworkEffect.builder().withColor(Color.fromRGB(_random.nextInt(255), _random.nextInt(255), _random.nextInt(255))) + FireworkEffect effect = FireworkEffect.builder().withColor(Color.RED) .withFade(Color.fromRGB(_random.nextInt(255), _random.nextInt(255), _random.nextInt(255))) .with(FireworkEffect.Type.STAR) .build(); From fed3d31374d7563631a6efab08d07439f2772dce Mon Sep 17 00:00:00 2001 From: Chiss Date: Thu, 18 Sep 2014 15:44:48 +1000 Subject: [PATCH 14/15] MineStrike fixes --- .../mineplex/core/common/util/UtilTitle.java | 17 +++ .../mineplex/core/gadget/GadgetManager.java | 2 +- .../nautilus/game/arcade/ArcadeManager.java | 13 ++ .../game/games/minestrike/MineStrike.java | 118 ++++++++++-------- .../games/minestrike/items/StrikeItem.java | 2 +- .../game/games/minestrike/items/guns/Gun.java | 2 +- .../game/arcade/managers/GameManager.java | 9 ++ 7 files changed, 106 insertions(+), 57 deletions(-) diff --git a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilTitle.java b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilTitle.java index 9111afc9d..120de2e4a 100644 --- a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilTitle.java +++ b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilTitle.java @@ -113,4 +113,21 @@ public class UtilTitle } } + public static String progress(float exp) + { + String out = ""; + + for (int i=0 ; i<40 ; i++) + { + float cur = i * (1f /40f); + + if (cur < exp) + out += C.cGreen + C.Bold + "|"; + else + out += C.cGray + C.Bold + "|"; + } + + return out; + } + } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java index 32bac07fd..27ad68212 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java @@ -111,7 +111,7 @@ public class GadgetManager extends MiniPlugin addGadget(new MorphBlock(this)); addGadget(new MorphEnderman(this)); addGadget(new MorphBat(this)); - addGadget(new MorphNotch(this)); + //addGadget(new MorphNotch(this)); addGadget(new MorphPumpkinKing(this)); addGadget(new MorphPig(this)); addGadget(new MorphCreeper(this)); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/ArcadeManager.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/ArcadeManager.java index 9e41ff20b..478199cee 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/ArcadeManager.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/ArcadeManager.java @@ -42,6 +42,7 @@ import mineplex.core.common.util.F; import mineplex.core.common.util.UtilGear; import mineplex.core.common.util.UtilInv; import mineplex.core.common.util.UtilPlayer; +import mineplex.core.common.util.UtilServer; import mineplex.core.cosmetic.CosmeticManager; import mineplex.core.creature.Creature; import mineplex.core.disguise.DisguiseManager; @@ -680,6 +681,18 @@ public class ArcadeManager extends MiniPlugin implements IRelation GetDisguise().undisguise(player); } + + public void RefreshPlayers() + { + for (Player player : UtilServer.getPlayers()) + { + for (Player other : UtilServer.getPlayers()) + { + player.hidePlayer(other); + player.showPlayer(other); + } + } + } public ArrayList LoadFiles(String gameName) { diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/MineStrike.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/MineStrike.java index 3835fa0d0..25e7f3a0e 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/MineStrike.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/MineStrike.java @@ -191,7 +191,7 @@ public class MineStrike extends TeamGame //"Tap Crouch when close to an ally to Boost", "Open Inventory at spawn to buy guns", "Hold Right-Click to Plant Bomb", - "Hold Right-Click with knife to Defuse Bomb", + "Look at the Bomb to Defuse Bomb", "Moving decreases accuracy", "Sprinting heavily decreases accuracy", "Jumping massively decreases accuracy", @@ -1402,8 +1402,8 @@ public class MineStrike extends TeamGame if (!_bombPlanter.isBlocking()) { _bombPlanter.setExp(0f); + UtilTitle.clear(_bombPlanter); _bombPlanter = null; - return; } @@ -1411,7 +1411,9 @@ public class MineStrike extends TeamGame if (Math.random() > 0.90) _bombPlanter.getWorld().playSound(_bombPlanter.getLocation(), Sound.NOTE_PLING, 1f, 3f); - + + UtilTitle.display(C.cRed + C.Bold + "Planting Bomb", UtilTitle.progress(_bombPlanter.getExp()), 0, 10, 0, _bombPlanter); + if (_bombPlanter.getExp() >= 0.98f) { _bomb = new Bomb(_bombPlanter); @@ -1439,9 +1441,9 @@ public class MineStrike extends TeamGame if (UtilMath.offset(event.getFrom(), event.getTo()) > 0) event.setTo(event.getFrom()); - if (_bombDefuser != null && _bombDefuser.equals(event.getPlayer())) - if (UtilMath.offset(event.getFrom(), event.getTo()) > 0) - event.setTo(event.getFrom()); +// if (_bombDefuser != null && _bombDefuser.equals(event.getPlayer())) +// if (UtilMath.offset(event.getFrom(), event.getTo()) > 0) +// event.setTo(event.getFrom()); } @EventHandler @@ -1452,59 +1454,44 @@ public class MineStrike extends TeamGame if (!UtilGear.isMat(player.getItemInHand(), Material.SHEARS)) return; - UtilPlayer.message(player, F.main("Game", F.elem(C.cGreen + "Right-Click") + " with your " + F.elem("Knife") + " to defuse bombs.")); + UtilPlayer.message(player, F.main("Game", "Look at the Bomb to defuse it.")); } - @EventHandler - public void defuseBomb(PlayerInteractEvent event) + public void startDefuse() { - Player player = event.getPlayer(); - - if (!UtilGear.isMat(player.getItemInHand(), Material.IRON_SWORD)) - return; - - if (!UtilEvent.isAction(event, ActionType.R_BLOCK)) + for (Player player : GetTeam(ChatColor.AQUA).GetPlayers(true)) { - if (_bomb != null && event.getClickedBlock() == null && _bomb.isBlock(event.getClickedBlock())) + Block block = player.getTargetBlock(null, 5); + + if (block == null || !_bomb.isBlock(block)) + continue; + + if (UtilMath.offset(player.getLocation(), block.getLocation().add(0.5, 0, 0.5)) > 3) + continue; + + if (_bombDefuser != null) { - UtilPlayer.message(player, F.main("Game", "Hold Right-Click to defuse the Bomb!")); - return; + if (Recharge.Instance.use(player, "Defuse Message", 2000, false, false)) + UtilPlayer.message(player, F.main("Game", _bombDefuser.getName() + " is already defusing the Bomb.")); + + continue; } - return; + _bombDefuser = player; + _bombDefuser.setExp(0f); + + UtilPlayer.message(player, F.main("Game", "You are defusing the Bomb.")); + + _bombDefuser.getWorld().playSound(_bombDefuser.getLocation(), Sound.PISTON_RETRACT, 2f, 1f); } - - if (_bomb == null || event.getClickedBlock() == null || !_bomb.isBlock(event.getClickedBlock())) - { - UtilPlayer.message(player, F.main("Game", "You must be looking at the Bomb to defuse.")); - return; - } - - if (!UtilEnt.isGrounded(player)) - { - UtilPlayer.message(player, F.main("Game", "You can only defuse Bomb while on the ground!")); - return; - } - - if (_bombDefuser != null) - { - UtilPlayer.message(player, F.main("Game", _bombDefuser.getName() + " is already defusing the Bomb.")); - return; - } - - - - _bombDefuser = player; - _bombDefuser.setExp(0f); - - UtilPlayer.message(player, F.main("Game", "You are defusing the Bomb.")); - - _bombDefuser.getWorld().playSound(_bombDefuser.getLocation(), Sound.PISTON_RETRACT, 2f, 1f); } - + @EventHandler public void defuseBombUpdate(UpdateEvent event) { + if (_bomb == null) + return; + if (!IsLive()) return; @@ -1512,9 +1499,16 @@ public class MineStrike extends TeamGame return; if (_bombDefuser == null) - return; + { + startDefuse(); + } - if (!_bombDefuser.isBlocking()) + if (_bombDefuser == null) + return; + + Block block = _bombDefuser.getTargetBlock(null, 5); + + if (block == null || !_bomb.isBlock(block) || UtilMath.offset(_bombDefuser.getLocation(), block.getLocation().add(0.5, 0, 0.5)) > 3) { _bombDefuser.setExp(0f); _bombDefuser = null; @@ -1528,6 +1522,8 @@ public class MineStrike extends TeamGame _bombDefuser.setExp(Math.min(_bombDefuser.getExp() + defuseRate, 0.99999f)); + UtilTitle.display(C.cAqua + C.Bold + "Defusing Bomb", UtilTitle.progress(_bombDefuser.getExp()), 0, 10, 0, _bombDefuser); + if (_bombDefuser.getExp() >= 0.98f) { _bomb.defuse(); @@ -1798,12 +1794,10 @@ public class MineStrike extends TeamGame player.playSound(player.getLocation(), Sound.HORSE_ARMOR, 1f, 2f); Manager.GetCondition().Factory().Blind("Respawn", player, null, 2, 0, false, false, false); UtilPlayer.message(player, F.main("Game", "You have " + F.elem(C.cGreen + "$" + _shopManager.getMoney(player)) + ". Open your Inventory to spend it.")); + + UtilTitle.display(C.cGreen + "$" + _shopManager.getMoney(player), "Open your Inventory to buy new equipment", 10, 120, 10, player); } - //Give Bomb - Player player = UtilAlg.Random(GetTeam(ChatColor.RED).GetPlayers(true)); - giveBombToPlayer(player); - //Update Scoreboard Teams for (GameTeam team : GetTeamList()) for (Player teamMember : team.GetPlayers(true)) @@ -1985,6 +1979,13 @@ public class MineStrike extends TeamGame else player.playSound(player.getLocation(), Sound.NOTE_SNARE_DRUM, 1f, 1f); } + + if (_freezeTime == 0) + { + //Give Bomb + Player bombPlayer = UtilAlg.Random(GetTeam(ChatColor.RED).GetPlayers(true)); + giveBombToPlayer(bombPlayer); + } } @EventHandler @@ -1993,9 +1994,12 @@ public class MineStrike extends TeamGame if (_freezeTime <= 0) return; + if (!IsAlive(event.getPlayer())) + return; + if (UtilMath.offset2d(event.getFrom(), event.getTo()) <= 0) return; - + event.getFrom().setPitch(event.getTo().getPitch()); event.getFrom().setYaw(event.getTo().getYaw()); @@ -2465,6 +2469,12 @@ public class MineStrike extends TeamGame { return _bulletInstant; } + + @EventHandler + public void joinMessage(PlayerJoinEvent event) + { + UtilTitle.display(C.cGold + C.Bold + "MineStrike", "Make sure you accept the Resource Pack", 20, 120, 20, event.getPlayer()); + } @EventHandler public void debug(PlayerCommandPreprocessEvent event) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/StrikeItem.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/StrikeItem.java index 26e4fa26a..981355946 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/StrikeItem.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/StrikeItem.java @@ -160,7 +160,7 @@ public abstract class StrikeItem public void fixStackName() { ItemMeta meta = _stack.getItemMeta(); - meta.setDisplayName((_ownerName == null ? "" : _ownerName + "'s ") + C.Bold + getName() + ChatColor.RESET); + meta.setDisplayName(ChatColor.RESET + (_ownerName == null ? "" : _ownerName + "'s ") + C.Bold + getName() + ChatColor.RESET); _stack.setItemMeta(meta); } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/guns/Gun.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/guns/Gun.java index a0ba92add..5cff702b2 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/guns/Gun.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/guns/Gun.java @@ -297,7 +297,7 @@ public abstract class Gun extends StrikeItem public void updateWeaponName(Player player) { ItemMeta meta = getStack().getItemMeta(); - meta.setDisplayName((getOwnerName() == null ? "" : getOwnerName() + "'s ") + C.Bold + getName() + ChatColor.RESET + " " + C.cGreen + _loadedAmmo + ChatColor.RESET + " / " + C.cYellow + _reserveAmmo); + meta.setDisplayName(ChatColor.RESET + (getOwnerName() == null ? "" : getOwnerName() + "'s ") + C.Bold + getName() + ChatColor.RESET + " " + C.cGreen + _loadedAmmo + ChatColor.RESET + " / " + C.cYellow + _reserveAmmo); getStack().setItemMeta(meta); if (player != null) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameManager.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameManager.java index 40e8dd079..6b98e65f0 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameManager.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameManager.java @@ -253,6 +253,15 @@ public class GameManager implements Listener event.setCancelled(true); } + @EventHandler + public void VisibilityRefresh(GameStateChangeEvent event) + { + if (event.GetState() != GameState.Live) + return; + + Manager.RefreshPlayers(); + } + @EventHandler public void KitRegister(GameStateChangeEvent event) { From 87bd5d8f7fc8a28f4a2d0f210f5fad5d1f3322b9 Mon Sep 17 00:00:00 2001 From: Shaun Bennett Date: Thu, 18 Sep 2014 00:46:33 -0500 Subject: [PATCH 15/15] Add coin party bomb to rare rewards, fix reward values from last commit --- .../src/mineplex/core/reward/RewardManager.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardManager.java b/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardManager.java index 469e2b56c..8fa841be2 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardManager.java @@ -175,6 +175,10 @@ public class RewardManager new ItemStack(Material.ENDER_PEARL), RewardRarity.RARE, 33)); addReward(new UnknownPackageReward(donationManager, "Bat Morph", "Bat Morph", new ItemStack(Material.SKULL_ITEM, 1, (short) 0, (byte) 1), RewardRarity.RARE, 25)); + + // Gadgets + addReward(new InventoryReward(inventoryManager, "Coin Party Bomb", "Coin Party Bomb", 1, 1, + new ItemStack(Material.getMaterial(175)), RewardRarity.RARE, 100)); } public void addLegendary(DonationManager donationManager, InventoryManager inventoryManager, double minValue, double maxValue) @@ -261,12 +265,12 @@ public class RewardManager double rand = _random.nextDouble(); RewardRarity rarity; - if (isChestOpening ? rand <= 0.91 : rand <= 0.0001) + if (isChestOpening ? rand <= 0.01 : rand <= 0.0001) { // 1% or 0.01% rarity = RewardRarity.LEGENDARY; } - else if (isChestOpening ? rand <= 0.95 : rand <= 0.001) + else if (isChestOpening ? rand <= 0.05 : rand <= 0.001) { // 4% or 0.09% rarity = RewardRarity.RARE;