weapons/src/main/java/pw/kaboom/weapons/Main.java

134 lines
4.9 KiB
Java
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package pw.kaboom.weapons;
import java.util.Set;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.World;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.entity.Projectile;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.material.MaterialData;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
public class Main extends JavaPlugin implements Listener {
public void onEnable() {
this.getCommand("weapons").setExecutor(new CommandWeapons());
this.getServer().getPluginManager().registerEvents(this, this);
}
@EventHandler
public void onInventoryClick(InventoryClickEvent event) {
Player player = (Player) event.getWhoClicked();
ItemStack clickedItem = event.getCurrentItem();
String name = clickedItem.getItemMeta().getDisplayName().toLowerCase();
if (event.getInventory().getName() == "Weapons") {
if (clickedItem != null) {
player.getInventory().addItem(clickedItem);
player.closeInventory();
player.sendMessage("You have received the " + name + "!");
}
}
}
@EventHandler
void onPlayerInteract(PlayerInteractEvent event) {
Action action = event.getAction();
Player player = event.getPlayer();
boolean hasName = event.getItem().getItemMeta().hasDisplayName();
Material item = event.getMaterial();
String name = event.getItem().getItemMeta().getDisplayName();
Location lookPos = player.getTargetBlock((Set<Material>) null, 100).getLocation();
Location playerPos = player.getLocation();
World world = player.getLocation().getWorld();
if (hasName == true) {
if (action == Action.LEFT_CLICK_AIR || action == Action.LEFT_CLICK_BLOCK) {
if (item == Material.ANVIL && name == "Anvil Dropper") {
for (int x = -2; x <= 2; x += 1) {
for (int z = -2; z <= 2; z += 1) {
Location blockPos = new Location(world, playerPos.getX() - x, playerPos.getY(), playerPos.getZ() - z);
MaterialData blockMaterial = new MaterialData(Material.ANVIL);
world.spawnFallingBlock(blockPos, blockMaterial);
}
}
event.setCancelled(true);
} else if (item == Material.STICK && name == "Lightning Stick") {
world.strikeLightning(lookPos);
event.setCancelled(true);
} else if (item == Material.BLAZE_ROD && name == "Nuker") {
Projectile projectile = (Projectile) world.spawnEntity(playerPos, EntityType.FIREBALL);
projectile.setShooter(player);
projectile.setVelocity(playerPos.getDirection().multiply(6));
world.createExplosion(lookPos, 6);
world.playSound(playerPos, Sound.ENTITY_GHAST_SHOOT, 0.9F, 1.5F);
world.playSound(playerPos, Sound.ENTITY_BAT_TAKEOFF, 0.8F, 2.0F);
event.setCancelled(true);
} else if (item == Material.IRON_BARDING && name == "Sniper") {
Location projectilePos = new Location(world, playerPos.getX(), playerPos.getY() + 1.5, playerPos.getZ());
Projectile projectile = (Projectile) world.spawnEntity(projectilePos, EntityType.SNOWBALL);
projectile.setShooter(player);
projectile.setVelocity(playerPos.getDirection().multiply(6));
world.playSound(playerPos, Sound.BLOCK_PISTON_CONTRACT, 1.0F, 63.0F);
event.setCancelled(true);
}
} else if (action == Action.RIGHT_CLICK_AIR || action == Action.RIGHT_CLICK_BLOCK) {
if (item == Material.IRON_BARDING && name == "Sniper") {
if (player.hasPotionEffect(PotionEffectType.SLOW)) {
player.removePotionEffect(PotionEffectType.SLOW);
} else {
PotionEffect effect = new PotionEffect(PotionEffectType.SLOW, 90000, 7);
player.addPotionEffect(effect);
}
event.setCancelled(true);
}
}
}
}
}
class CommandWeapons implements CommandExecutor {
private void addWeapon(Inventory inventory, Material material, String name) {
ItemStack item = new ItemStack(material, 1);
ItemMeta itemMeta = item.getItemMeta();
itemMeta.setDisplayName(name);
item.setItemMeta(itemMeta);
inventory.addItem(item);
}
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
Player player = (Player)sender;
Inventory inventory = Bukkit.createInventory(null, 9, "Weapons");
addWeapon(inventory, Material.ANVIL, "Anvil Dropper");
addWeapon(inventory, Material.STICK, "Lightning Stick");
addWeapon(inventory, Material.BLAZE_ROD, "Nuker");
addWeapon(inventory, Material.IRON_BARDING, "Sniper");
player.openInventory(inventory);
return true;
}
}