Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package me.gianlucapmc.guns;
- import java.util.ArrayList;
- import org.bukkit.Bukkit;
- import org.bukkit.Material;
- import org.bukkit.entity.Fireball;
- import org.bukkit.entity.Player;
- import org.bukkit.event.EventHandler;
- import org.bukkit.event.Listener;
- import org.bukkit.event.entity.EntityDamageByEntityEvent;
- import org.bukkit.event.player.PlayerInteractEvent;
- import org.bukkit.inventory.ItemStack;
- import org.bukkit.plugin.java.JavaPlugin;
- public class Guns extends JavaPlugin implements Listener {
- /* This part is tricky: I've made multiple ArrayLists to allow each gun to have different damage */
- private ArrayList<Fireball> normalGun = new ArrayList<Fireball>();
- private ArrayList<Fireball> stoneGun = new ArrayList<Fireball>();
- private ArrayList<Fireball> ironGun = new ArrayList<Fireball>();
- private ArrayList<Fireball> goldGun = new ArrayList<Fireball>();
- private ArrayList<Fireball> diamondGun = new ArrayList<Fireball>();
- public void onEnable() {
- /* Has to register the events from the class (this) and the plugin (which is also this) */
- Bukkit.getServer().getPluginManager().registerEvents(this, this);
- }
- @EventHandler
- public void onPlayerInteract(PlayerInteractEvent e) {
- if(e.getPlayer().getItemInHand() != null) {
- /* In your old code, you forgot to check if they contain the specific item (blaze powder, clay ball etc.) */
- if(e.getPlayer().getInventory().contains(Material.FLINT)) {
- if (e.getPlayer().getItemInHand() != null && e.getPlayer().getItemInHand().getType().equals(Material.WOOD_HOE)) {
- Fireball f = e.getPlayer().launchProjectile(Fireball.class);
- f.setYield(0);
- normalGun.add(f);
- removeItem(e.getPlayer(), Material.FLINT);
- }
- } else if(e.getPlayer().getInventory().contains(Material.COAL)) {
- if (e.getPlayer().getItemInHand() != null && e.getPlayer().getItemInHand().getType().equals(Material.STONE_HOE)) {
- Fireball f = e.getPlayer().launchProjectile(Fireball.class);
- f.setYield(0);
- stoneGun.add(f);
- removeItem(e.getPlayer(), Material.COAL);
- }
- } else if(e.getPlayer().getInventory().contains(Material.BLAZE_POWDER)) {
- if (e.getPlayer().getItemInHand() != null && e.getPlayer().getItemInHand().getType().equals(Material.IRON_HOE)) {
- Fireball f = e.getPlayer().launchProjectile(Fireball.class);
- f.setYield(0);
- ironGun.add(f);
- removeItem(e.getPlayer(), Material.BLAZE_POWDER);
- }
- } else if(e.getPlayer().getInventory().contains(Material.CLAY_BALL)) {
- if (e.getPlayer().getItemInHand() != null && e.getPlayer().getItemInHand().getType().equals(Material.GOLD_HOE)) {
- Fireball f = e.getPlayer().launchProjectile(Fireball.class);
- f.setYield(0);
- goldGun.add(f);
- removeItem(e.getPlayer(), Material.CLAY_BALL);
- }
- } else if(e.getPlayer().getInventory().contains(Material.REDSTONE)) {
- if (e.getPlayer().getItemInHand() != null && e.getPlayer().getItemInHand().getType().equals(Material.DIAMOND_HOE)) {
- Fireball f = e.getPlayer().launchProjectile(Fireball.class);
- f.setYield(0);
- diamondGun.add(f);
- removeItem(e.getPlayer(), Material.REDSTONE);
- }
- }
- }
- }
- @EventHandler
- public void onEntityDamage(EntityDamageByEntityEvent e) {
- if (e.getDamager() instanceof Fireball) {
- Fireball f = (Fireball) e.getDamager();
- if (normalGun.contains(f)) {
- e.setDamage(10);
- return;
- } else if(stoneGun.contains(f)) {
- e.setDamage(20);
- return;
- } else if(ironGun.contains(f)) {
- e.setDamage(35);
- return;
- } else if(goldGun.contains(f)) {
- e.setDamage(25);
- return;
- } else if(diamondGun.contains(f)) {
- e.setDamage(50);
- return;
- }
- }
- return;
- }
- /* I'm putting this here for simplicity */
- private void removeItem(Player p, Material material) {
- int slot = p.getInventory().first(material);
- ItemStack is = p.getInventory().getItem(slot);
- if (is.getAmount() <= 1) {
- p.getInventory().setItem(slot, null);
- return;
- } else {
- is.setAmount(is.getAmount() - 1);
- return;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement