diff options
author | Tyler Murphy <tylermurphy534@gmail.com> | 2021-08-24 18:09:31 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-08-24 18:09:31 -0400 |
commit | e45c39faf085a1dd517b92762581d3d8c2d2bbaf (patch) | |
tree | e73e8ad0eb3bb61cd358c2f93c65d65188c2e49c /src/main/java/net/tylermurphy/hideAndSeek/util | |
parent | fixed keep inv and death messages (diff) | |
parent | refactoring, command restructure, bug fixes, glow rewrite (diff) | |
download | kenshinshideandseek-e45c39faf085a1dd517b92762581d3d8c2d2bbaf.tar.gz kenshinshideandseek-e45c39faf085a1dd517b92762581d3d8c2d2bbaf.tar.bz2 kenshinshideandseek-e45c39faf085a1dd517b92762581d3d8c2d2bbaf.zip |
Merge pull request #6 from tylermurphy534/dev
merge fix
Diffstat (limited to 'src/main/java/net/tylermurphy/hideAndSeek/util')
-rw-r--r-- | src/main/java/net/tylermurphy/hideAndSeek/util/Functions.java | 265 | ||||
-rw-r--r-- | src/main/java/net/tylermurphy/hideAndSeek/util/ICommand.java | 15 |
2 files changed, 280 insertions, 0 deletions
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/util/Functions.java b/src/main/java/net/tylermurphy/hideAndSeek/util/Functions.java new file mode 100644 index 0000000..73d6e94 --- /dev/null +++ b/src/main/java/net/tylermurphy/hideAndSeek/util/Functions.java @@ -0,0 +1,265 @@ +package net.tylermurphy.hideAndSeek.util; + +import static net.tylermurphy.hideAndSeek.Store.Hider; +import static net.tylermurphy.hideAndSeek.Store.Seeker; +import static net.tylermurphy.hideAndSeek.Store.Spectator; +import static net.tylermurphy.hideAndSeek.Store.board; +import static net.tylermurphy.hideAndSeek.Store.currentWorldborderSize; +import static net.tylermurphy.hideAndSeek.Store.decreaseBorder; +import static net.tylermurphy.hideAndSeek.Store.gameId; +import static net.tylermurphy.hideAndSeek.Store.playerList; +import static net.tylermurphy.hideAndSeek.Store.tauntPlayer; +import static net.tylermurphy.hideAndSeek.Store.worldborderDelay; +import static net.tylermurphy.hideAndSeek.Store.worldborderEnabled; +import static net.tylermurphy.hideAndSeek.Store.worldborderPosition; +import static net.tylermurphy.hideAndSeek.Store.worldborderSize; + +import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import java.util.List; + +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.World; +import org.bukkit.WorldBorder; +import org.bukkit.enchantments.Enchantment; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.inventory.meta.PotionMeta; +import org.bukkit.potion.PotionData; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionType; +import org.bukkit.scoreboard.Scoreboard; +import org.bukkit.scoreboard.ScoreboardManager; +import org.bukkit.scoreboard.Team.Option; +import org.bukkit.scoreboard.Team.OptionStatus; + +import com.comphenix.protocol.PacketType; +import com.comphenix.protocol.ProtocolLibrary; +import com.comphenix.protocol.ProtocolManager; +import com.comphenix.protocol.events.PacketContainer; +import com.comphenix.protocol.wrappers.EnumWrappers.SoundCategory; +import com.comphenix.protocol.wrappers.WrappedDataWatcher; +import com.comphenix.protocol.wrappers.WrappedDataWatcher.Registry; +import com.comphenix.protocol.wrappers.WrappedDataWatcher.Serializer; + +import net.tylermurphy.hideAndSeek.Main; + +public class Functions { + + private static ProtocolManager protocolManager = ProtocolLibrary.getProtocolManager(); + + public static void resetPlayer(Player player) { + player.getInventory().clear(); + for(PotionEffect effect : player.getActivePotionEffects()){ + player.removePotionEffect(effect.getType()); + } + if(Seeker.getEntries().contains(player.getName())){ + ItemStack diamondSword = new ItemStack(Material.DIAMOND_SWORD,1); + diamondSword.addEnchantment(Enchantment.DAMAGE_ALL, 1); + ItemMeta diamondSwordMeta = diamondSword.getItemMeta(); + diamondSwordMeta.setDisplayName("Seeker Sword"); + diamondSwordMeta.setUnbreakable(true); + diamondSword.setItemMeta(diamondSwordMeta); + player.getInventory().addItem(diamondSword); + + ItemStack wackyStick = new ItemStack(Material.STICK,1); + wackyStick.addUnsafeEnchantment(Enchantment.KNOCKBACK, 3); + ItemMeta wackyStickMeta = wackyStick.getItemMeta(); + wackyStickMeta.setDisplayName("Wacky Stick"); + wackyStick.setItemMeta(wackyStickMeta); + player.getInventory().addItem(wackyStick); + } + else if(Hider.getEntries().contains(player.getName())){ + ItemStack stoneSword = new ItemStack(Material.STONE_SWORD,1); + stoneSword.addEnchantment(Enchantment.DAMAGE_ALL, 2); + ItemMeta stoneSwordMeta = stoneSword.getItemMeta(); + stoneSwordMeta.setDisplayName("Hider Sword"); + stoneSwordMeta.setUnbreakable(true); + stoneSword.setItemMeta(stoneSwordMeta); + player.getInventory().addItem(stoneSword); + + ItemStack splashPotion = new ItemStack(Material.SPLASH_POTION,1); + PotionMeta splashPotionMeta = (PotionMeta) splashPotion.getItemMeta(); + splashPotionMeta.setBasePotionData(new PotionData(PotionType.REGEN)); + splashPotion.setItemMeta(splashPotionMeta); + player.getInventory().addItem(splashPotion); + + ItemStack potion = new ItemStack(Material.POTION,2); + PotionMeta potionMeta = (PotionMeta) potion.getItemMeta(); + potionMeta.setBasePotionData(new PotionData(PotionType.INSTANT_HEAL)); + potion.setItemMeta(potionMeta); + player.getInventory().addItem(potion); + + ItemStack snowball = new ItemStack(Material.SNOWBALL,1); + ItemMeta snowballMeta = snowball.getItemMeta(); + snowballMeta.setDisplayName("Glow Powerup"); + List<String> snowballLore = new ArrayList<String>(); + snowballLore.add("Throw to make all seekers glow"); + snowballLore.add("Last 30s, all hiders can see it"); + snowballLore.add("Time stacks on multi use"); + snowballMeta.setLore(snowballLore); + player.getInventory().addItem(snowball); + } + } + + public static void emptyOfflinePlayers() { + + for(String entry : Hider.getEntries()) { + if(!playerList.containsKey(entry)) { + Hider.removeEntry(entry); + } + } + + for(String entry : Seeker.getEntries()) { + if(!playerList.containsKey(entry)) { + Seeker.removeEntry(entry); + } + } + + for(String entry : Spectator.getEntries()) { + if(!playerList.containsKey(entry)) { + Spectator.removeEntry(entry); + } + } + } + + public static void loadScoreboard() { + + ScoreboardManager manager = Bukkit.getScoreboardManager(); + Scoreboard mainBoard = manager.getMainScoreboard(); + + try { mainBoard.registerNewTeam("Seeker");} catch(Exception e) {} + Seeker = mainBoard.getTeam("Seeker"); + Seeker.setColor(ChatColor.RED); + Seeker.setOption(Option.NAME_TAG_VISIBILITY, OptionStatus.NEVER); + Seeker.setAllowFriendlyFire(false); + + try { mainBoard.registerNewTeam("Hider");} catch(Exception e) {} + Hider = mainBoard.getTeam("Hider"); + Hider.setColor(ChatColor.GOLD); + Hider.setOption(Option.NAME_TAG_VISIBILITY, OptionStatus.NEVER); + Hider.setAllowFriendlyFire(false); + + try { mainBoard.registerNewTeam("Spectator");} catch(Exception e) {} + Spectator = mainBoard.getTeam("Spectator"); + Spectator.setColor(ChatColor.GRAY); + Spectator.setOption(Option.NAME_TAG_VISIBILITY, OptionStatus.NEVER); + Spectator.setAllowFriendlyFire(false); + + board = mainBoard; + } + + public static void playSound(Player player, Sound sound, float volume, float pitch) { + PacketContainer packet = protocolManager.createPacket(PacketType.Play.Server.NAMED_SOUND_EFFECT); + packet.getSoundCategories().write(0, SoundCategory.MASTER); + packet.getSoundEffects().write(0, sound); + packet.getIntegers().write(0, (int)(player.getLocation().getX() * 8.0)); + packet.getIntegers().write(1, (int)(player.getLocation().getY() * 8.0)); + packet.getIntegers().write(2, (int)(player.getLocation().getZ() * 8.0)); + packet.getFloat().write(0, volume); + packet.getFloat().write(1, pitch); + try { + protocolManager.sendServerPacket(player, packet); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } + } + + public static void setGlow(Player player, Player target, boolean glowing) { + PacketContainer packet = protocolManager.createPacket(PacketType.Play.Server.ENTITY_METADATA); + packet.getIntegers().write(0, target.getEntityId()); + WrappedDataWatcher watcher = new WrappedDataWatcher(); + Serializer serializer = Registry.get(Byte.class); + watcher.setEntity(target); + if(glowing) { + watcher.setObject(0, serializer, (byte) (0x40)); + } else { + watcher.setObject(0, serializer, (byte) (0x0)); + } + packet.getWatchableCollectionModifier().write(0, watcher.getWatchableObjects()); + try { + protocolManager.sendServerPacket(player, packet); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } + } + + public static void scheduleTaunt() { + Bukkit.getServer().getScheduler().runTaskAsynchronously(Main.plugin, new Runnable(){ + + public void run() { + int temp = gameId; + while(true) { + if(tauntPlayer != null && !tauntPlayer.equals("")) { + try { Thread.sleep(1000); } catch (InterruptedException e) {} + if(gameId != temp) break; + continue; + } + try { Thread.sleep(1000*60); } catch (InterruptedException e) {} + if(gameId != temp) break; + if(Math.random() > .8) { + Player taunted = null; + int rand = (int) (Math.random()*Hider.getEntries().size()); + for(Player player : playerList.values()) { + if(Hider.hasEntry(player.getName())) { + rand--; + if(rand==0) { + taunted = player; + break; + } + } + } + if(taunted != null) { + taunted.sendMessage(ChatColor.RED + "" + ChatColor.ITALIC + "Oh no! You have been chosed to be taunted."); + Bukkit.getServer().broadcastMessage(ChatColor.YELLOW + "Taunt >" + ChatColor.WHITE + " A random hider will be taunted in the next 30s"); + try { Thread.sleep(1000*30); } catch (InterruptedException e) {} + if(gameId != temp) break; + tauntPlayer = taunted.getName(); + } + } + } + } + }); + } + + public static void scheduleWorldborder() { + + Bukkit.getServer().getScheduler().runTaskAsynchronously(Main.plugin, new Runnable(){ + + public void run() { + int temp = gameId; + while(true) { + try { Thread.sleep(1000*60*worldborderDelay); } catch (InterruptedException e) {} + if(gameId != temp) break; + if(currentWorldborderSize-100 > 100) { + Bukkit.getServer().broadcastMessage(ChatColor.RED + "World Border> " + ChatColor.WHITE + "Worldborder decreacing by 100 blocks over the next 30s"); + currentWorldborderSize -= 100; + decreaseBorder = true; + } else { + break; + } + } + } + }); + } + + public static void resetWorldborder() { + if(worldborderEnabled) { + World world = Bukkit.getWorld("world"); + WorldBorder border = world.getWorldBorder(); + border.setSize(worldborderSize); + border.setCenter(worldborderPosition.getX(), worldborderPosition.getZ()); + currentWorldborderSize = worldborderSize; + } else { + World world = Bukkit.getWorld("world"); + WorldBorder border = world.getWorldBorder(); + border.setSize(30000000); + border.setCenter(0, 0); + } + } + +} diff --git a/src/main/java/net/tylermurphy/hideAndSeek/util/ICommand.java b/src/main/java/net/tylermurphy/hideAndSeek/util/ICommand.java new file mode 100644 index 0000000..373096f --- /dev/null +++ b/src/main/java/net/tylermurphy/hideAndSeek/util/ICommand.java @@ -0,0 +1,15 @@ +package net.tylermurphy.hideAndSeek.util; + +import org.bukkit.command.CommandSender; + +public interface ICommand { + + public void execute(CommandSender sender, String[] args); + + public String getLabel(); + + public String getUsage(); + + public String getDescription(); + +} |