[Util] FreezeFactory from Hell v1.1 - make that players cannot walk and jump! (UUID ready)

Discussion in 'Resources' started by ArthurMaker, Jun 20, 2014.

Thread Status:
Not open for further replies.
  1. Offline

    ArthurMaker

    Hello, gentlemen!
    I'm bringing you today a new resource: a complete FreezeFactory!

    Here we go:
    Code:java
    1. import java.util.ArrayList;
    2. import java.util.List;
    3. import java.util.UUID;
    4.  
    5. import org.bukkit.Location;
    6. import org.bukkit.block.Block;
    7. import org.bukkit.block.BlockFace;
    8. import org.bukkit.entity.Player;
    9. import org.bukkit.event.EventHandler;
    10. import org.bukkit.event.Listener;
    11. import org.bukkit.event.player.PlayerToggleSprintEvent;
    12. import org.bukkit.plugin.Plugin;
    13. import org.bukkit.potion.PotionEffect;
    14. import org.bukkit.potion.PotionEffectType;
    15. import org.bukkit.scheduler.BukkitRunnable;
    16.  
    17. /**
    18. * FreezeFactory from Hell - v1.1
    19. * @author ArthurMaker
    20. * Greetings from Brazil, gentlemen!
    21. */
    22. public class FreezeFactory implements Listener {
    23.  
    24. private Plugin plugin;
    25. private static List<UUID> players = new ArrayList<UUID>();
    26.  
    27. public FreezeFactory (Plugin plugin){
    28. this.plugin = plugin;
    29. this.plugin.getServer().getPluginManager().registerEvents(this, this.plugin);
    30. }
    31.  
    32. /**
    33.   * Freezes a player.
    34.   */
    35. public void freezePlayer(Player p){
    36. if(isFrozen(p)) return;
    37. p.setWalkSpeed(0F);
    38. p.setFallDistance(0F);
    39. p.teleport(this.getGround(p));
    40. p.addPotionEffect(new PotionEffect(PotionEffectType.JUMP, Integer.MAX_VALUE, -127));
    41. players.add(p.getUniqueId());
    42. }
    43.  
    44. /**
    45.   * Unfreezes a player.
    46.   */
    47. public void unfreezePlayer(Player p){
    48. if(!isFrozen(p)) return;
    49. p.removePotionEffect(PotionEffectType.JUMP);
    50. p.setWalkSpeed(0.2F); // normal speed
    51. players.remove(p.getUniqueId());
    52. }
    53.  
    54. private Location getGround(Player p){
    55. Block relative = p.getLocation().getBlock().getRelative(BlockFace.DOWN);
    56. for(int i = 0; i < 256; i++){
    57. if(relative.getType().isOccluding()){
    58. Location b = relative.getRelative(BlockFace.UP).getLocation();
    59. return new Location(b.getWorld(), b.getX(), b.getY(), b.getZ(), p.getEyeLocation().getYaw(), p.getEyeLocation().getPitch()).add(0.5, 0, 0.5);
    60. }else{
    61. relative = relative.getRelative(BlockFace.DOWN);
    62. }
    63. }
    64. return p.getLocation();
    65. }
    66.  
    67. /**
    68.   * Check if a player is frozen.
    69.   */
    70. public boolean isFrozen(Player p){
    71. return players.contains(p.getUniqueId());
    72. }
    73.  
    74. @EventHandler
    75. public void onSprint(PlayerToggleSprintEvent event){
    76. final Player p = event.getPlayer();
    77. if(isFrozen(p)){
    78. new BukkitRunnable(){
    79. @Override
    80. public void run() {
    81. if(p.isSprinting()){
    82. p.teleport(p);
    83. }else{
    84. this.cancel();
    85. }
    86. }
    87. }.runTaskTimer(this.plugin, 0L, 1L);
    88. }
    89. }
    90.  
    91. }

    Click here for PasteBin.com!

    See ya o/
     
    Phasesaber likes this.
  2. Offline

    axeldu18

    Just a little problem Run and Jump ;) you walk a little
     
  3. Offline

    ArthurMaker


    Thanks, I didn't notice that. I'll find a fix ;)


    Updated! ;)

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 9, 2016
  4. Offline

    axeldu18

    Ok i will test tonight
     
  5. Offline

    Skyost

  6. Offline

    ArthurMaker

    Skyost likes this.
  7. Offline

    Aqua

    ArthurMaker
    You can remove the use of a list by changing the isFrozen method to:
    Code:java
    1.  
    2. public boolean isFrozen(Player p) {
    3. return p.hasPotionEffect(PotionEffectType.JUMP);
    4. }
    5.  
     
  8. Offline

    viper_monster

    Aqua what if they drink milk or use /heal?
     
    Ultimate_n00b likes this.
Thread Status:
Not open for further replies.

Share This Page