Spigot-Funzies/src/de/leafbla/meinkraft/roleplay/wizard/WizardRole.java
2020-10-03 17:44:04 +02:00

139 lines
4.5 KiB
Java

package de.leafbla.meinkraft.roleplay.wizard;
import de.leafbla.meinkraft.Main;
import de.leafbla.meinkraft.roleplay.ManaAble;
import de.leafbla.meinkraft.roleplay.PlayerRole;
import de.leafbla.meinkraft.roleplay.Role;
import de.leafbla.meinkraft.roleplay.Utils;
import de.leafbla.meinkraft.util.Pair;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.Particle;
import org.bukkit.craftbukkit.v1_16_R2.entity.CraftSnowball;
import org.bukkit.craftbukkit.v1_16_R2.inventory.CraftItemStack;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.entity.Projectile;
import org.bukkit.entity.Snowball;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.ProjectileHitEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerItemHeldEvent;
import org.bukkit.inventory.EquipmentSlot;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.projectiles.ProjectileSource;
import org.bukkit.scheduler.BukkitRunnable;
import java.util.*;
public class WizardRole extends PlayerRole implements ManaAble, EventListener {
BukkitRunnable refillMana;
Set<Player> transmorphedPlayers = new HashSet<>();
private int mana;
public WizardRole(Main plugin, Player player) {
super(plugin, player, Role.WIZARD);
}
private WizardSpell currentSpell;
@Override
public int getMana() {
return this.mana;
}
@Override
public void setManaRaw(int mana) {
this.mana = mana;
}
@Override
public void onUpdateMana() {
player.setExp((this.mana * 1.0f) / 100f);
}
@Override
public void onStart() {
for (WizardSpell wizardSpell : WizardSpell.values())
this.registerRightClickAction(wizardSpell.getIcon(), wizardSpell.displayName(), () -> wizardSpell.cast(this));
this.currentSpell = WizardSpell.values()[0];
this.mana = 33;
refillMana = new BukkitRunnable() {
@Override
public void run() {
addMana(1);
}
};
refillMana.runTaskTimer(plugin, 0, 5);
}
private void setupInventory() {
ItemStack wand = new ItemStack(Material.STICK);
player.getInventory().clear();
player.getInventory().setHeldItemSlot(0);
player.getInventory().addItem(Utils.namedItem(Material.STICK, "Wand"));
for (WizardSpell wizardSpell : WizardSpell.values()) {
player.getInventory().addItem(Utils.namedItem(wizardSpell.getIcon(), wizardSpell.displayName()));
}
}
@Override
public void onEnd() {
refillMana.cancel();
}
@Override
public Role getRole() {
return Role.WIZARD;
}
public void onInteractOldTestStuffs(PlayerInteractEvent event) {
Player player = event.getPlayer();
if (event.getAction().name().contains("RIGHT")) {
ItemStack knife = event.getPlayer().getInventory().getItemInMainHand();
if (knife.getType() == Material.IRON_INGOT) {
ItemStack oneknife = knife.clone();
oneknife.setAmount(1);
Snowball ball = player.launchProjectile(Snowball.class);
ball.setVelocity(ball.getVelocity().multiply(1.2));
ball.setBounce(false);
((CraftSnowball) ball).getHandle().setItem(CraftItemStack.asNMSCopy(oneknife));
int amt = knife.getAmount();
knife.setAmount(amt - 1);
player.setItemInHand(knife);
} else if (knife.getType() == Material.STICK) {
ItemStack oneknife = new ItemStack(Material.FEATHER, 1);
Snowball ball = player.launchProjectile(Snowball.class);
ball.setVelocity(ball.getVelocity().multiply(3));
((CraftSnowball) ball).getHandle().setItem(CraftItemStack.asNMSCopy(oneknife));
int amt = knife.getAmount();
flying = true;
new BukkitRunnable() {
int i = 0;
@Override
public void run() {
if (flying)
ball.getWorld().spawnParticle(Particle.FLAME, ball.getLocation(), 0);
else
this.cancel();
}
}.runTaskTimerAsynchronously(this.plugin, 0, 1);
//knife.setAmount(amt - 1);
//player.setItemInHand(knife);
}
}
}
private boolean flying = false;
}