Merge branch 'master' of ssh://184.154.0.242:7999/min/Mineplex
This commit is contained in:
commit
d5313540d7
@ -10,9 +10,11 @@ import org.bukkit.Effect;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftPlayer;
|
||||
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.NautHashMap;
|
||||
import mineplex.core.common.util.UtilParticle;
|
||||
@ -22,6 +24,7 @@ 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.TreasureRemoveAnimation;
|
||||
import mineplex.core.treasure.reward.ITreasureReward;
|
||||
import mineplex.core.treasure.reward.RewardRarity;
|
||||
|
||||
@ -220,14 +223,21 @@ public class Treasure
|
||||
return _centerBlock.getRelative(BlockFace.UP);
|
||||
}
|
||||
|
||||
public void setBlock(Block block, Material material, byte data)
|
||||
public void setBlock(Block block, Material material, byte data, boolean addToBlockRestoreMap)
|
||||
{
|
||||
_blockRestoreMap.put(block, new BlockInfo(block.getTypeId(), block.getData()));
|
||||
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,11 +267,33 @@ public class Treasure
|
||||
|
||||
if (isFinished())
|
||||
{
|
||||
TreasureRemoveAnimation animation = new TreasureRemoveAnimation(this, _blockRestoreMap);
|
||||
_animations.add(animation);
|
||||
_finished = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void sendChestOpenPackets(Player... players)
|
||||
{
|
||||
for (ChestData data : _chestData)
|
||||
{
|
||||
if (data.isOpened())
|
||||
{
|
||||
Block block = data.getBlock();
|
||||
PacketPlayOutBlockAction packet = new PacketPlayOutBlockAction(block.getX(), block.getY(), block.getZ(), CraftMagicNumbers.getBlock(block), 1, 1);
|
||||
|
||||
for (Player player : players)
|
||||
{
|
||||
((CraftPlayer) player).getHandle().playerConnection.sendPacket(packet);
|
||||
System.out.println("sending chest open packet");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public ChestData getChestData(Block block)
|
||||
{
|
||||
for (ChestData data : _chestData)
|
||||
@ -310,9 +342,14 @@ public class Treasure
|
||||
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());
|
||||
block.getLocation().getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getTypeId());
|
||||
}
|
||||
|
||||
for (Animation animation : _animations)
|
||||
|
@ -14,6 +14,7 @@ import org.bukkit.event.EventHandler;
|
||||
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.inventory.ItemStack;
|
||||
@ -29,7 +30,6 @@ import mineplex.core.common.util.UtilBlock;
|
||||
import mineplex.core.common.util.UtilEnt;
|
||||
import mineplex.core.common.util.UtilMath;
|
||||
import mineplex.core.common.util.UtilPlayer;
|
||||
import mineplex.core.common.util.UtilServer;
|
||||
import mineplex.core.donation.DonationManager;
|
||||
import mineplex.core.inventory.InventoryManager;
|
||||
import mineplex.core.treasure.event.TreasureFinishEvent;
|
||||
@ -341,6 +341,27 @@ public class TreasureManager extends MiniPlugin
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void join(PlayerJoinEvent event)
|
||||
{
|
||||
final Player player = event.getPlayer();
|
||||
|
||||
_plugin.getServer().getScheduler().runTaskLater(_plugin, new Runnable()
|
||||
{
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
if (!player.isOnline())
|
||||
return;
|
||||
|
||||
for (Treasure treasure : _playerTreasureMap.values())
|
||||
{
|
||||
treasure.sendChestOpenPackets(player);
|
||||
}
|
||||
}
|
||||
}, 10L);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void quit(PlayerQuitEvent event)
|
||||
{
|
||||
|
@ -0,0 +1,62 @@
|
||||
package mineplex.core.treasure.animation;
|
||||
|
||||
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;
|
||||
|
||||
/**
|
||||
* Created by shaun on 14-09-15.
|
||||
*/
|
||||
public class TreasureRemoveAnimation extends Animation
|
||||
{
|
||||
private Random _random = new Random();
|
||||
|
||||
private NautHashMap<Block, BlockInfo> _blockRestoreMap;
|
||||
|
||||
public TreasureRemoveAnimation(Treasure treasure, NautHashMap<Block, BlockInfo> blockRestoreMap)
|
||||
{
|
||||
super(treasure);
|
||||
_blockRestoreMap = blockRestoreMap;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void tick()
|
||||
{
|
||||
// first wait for 1 second
|
||||
if (getTicks() <= 20)
|
||||
return;
|
||||
|
||||
if (getTicks() % 2 == 0)
|
||||
{
|
||||
if (_blockRestoreMap.size() > 4)
|
||||
{
|
||||
Block block;
|
||||
do
|
||||
{
|
||||
Block[] keyArray = _blockRestoreMap.keySet().toArray(new Block[0]);
|
||||
|
||||
block = keyArray[_random.nextInt(keyArray.length)];
|
||||
}
|
||||
while (block.getType() == Material.CHEST);
|
||||
|
||||
BlockInfo blockInfo = _blockRestoreMap.remove(block);
|
||||
getTreasure().setBlock(block, Material.getMaterial(blockInfo.getId()), blockInfo.getData(), false);
|
||||
}
|
||||
else
|
||||
{
|
||||
finish();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onFinish()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user