Skip to content

Instantly share code, notes, and snippets.

@Cewlt
Created November 25, 2015 23:46
Show Gist options
  • Save Cewlt/5cff072a95565b8833f2 to your computer and use it in GitHub Desktop.
Save Cewlt/5cff072a95565b8833f2 to your computer and use it in GitHub Desktop.
package com.colt.togglefall;
import java.util.ArrayList;
import java.util.List;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.World;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.plugin.java.JavaPlugin;
public class ToggleFall extends JavaPlugin implements Listener {
ArrayList<String> activePlayers;
List<String> worlds;
@Override
public void onEnable() {
Bukkit.getServer().getPluginManager().registerEvents(this, this);
activePlayers = new ArrayList<String>();
worlds = getConfig().getStringList("worlds");
saveDefaultConfig();
}
@Override
public void onDisable() {
activePlayers.clear();
}
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if (cmd.getName().equalsIgnoreCase("togglefall") || (cmd.getName().equalsIgnoreCase("tf"))) {
if(sender instanceof Player) {
Player player = (Player)sender;
if(player.hasPermission("nofall.use")) {
if(activePlayers.contains(player.getName())) {
activePlayers.remove(player.getName());
player.sendMessage(ChatColor.GOLD + "Fall Damage now enabled" + ChatColor.RED + "(You will take fall damage)");
} else {
activePlayers.add(player.getName());
player.sendMessage(ChatColor.GOLD + "Fall Damage now disabled" + ChatColor.GREEN + "(You will not take fall damage)");
}
return true;
}
}
}
return false;
}
@EventHandler
public void playerQuit(PlayerQuitEvent event) {
if(activePlayers.contains(event.getPlayer().getName())) {
activePlayers.remove(event.getPlayer().getName());
}
}
@EventHandler
public void onEntityDamage(EntityDamageEvent event) {
if (event.getEntity() instanceof Player) {
Player player = (Player)event.getEntity();
if(activePlayers.contains(player.getName()) && event.getCause() == EntityDamageEvent.DamageCause.FALL && player.hasPermission("nofall.use")) {
for(String w : worlds) {
World world = Bukkit.getWorld(w);
if(player.getWorld() == world) {
event.setCancelled(true);
break;
}
}
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment