Working on
This commit is contained in:
@@ -64,6 +64,11 @@ public class BeastMasterClass extends MineClassImpl {
|
|||||||
return "beast_master";
|
return "beast_master";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return "Beast master";
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void giveItems(Player player) {
|
public void giveItems(Player player) {
|
||||||
if (!player.getInventory().contains(Material.BONE)) {
|
if (!player.getInventory().contains(Material.BONE)) {
|
||||||
|
|||||||
@@ -93,6 +93,11 @@ public class DwarfClass extends MineClassImpl {
|
|||||||
return "dwarf";
|
return "dwarf";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return "Dwarf";
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void giveItems(Player player) {}
|
public void giveItems(Player player) {}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -72,6 +72,11 @@ public class ElfClass extends MineClassImpl {
|
|||||||
return "elf";
|
return "elf";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return "Elf";
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void giveItems(Player player) {}
|
public void giveItems(Player player) {}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -78,6 +78,11 @@ public class EnderElfClass extends MineClassImpl {
|
|||||||
return "ender_elf";
|
return "ender_elf";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return "Ender elf";
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void reapplyEffects(Player player) {
|
public void reapplyEffects(Player player) {
|
||||||
super.reapplyEffects(player);
|
super.reapplyEffects(player);
|
||||||
|
|||||||
@@ -108,6 +108,11 @@ public class FireDwarfClass extends MineClassImpl {
|
|||||||
return "fire_dwarf";
|
return "fire_dwarf";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return "Fire dwarf";
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void giveItems(Player player) {}
|
public void giveItems(Player player) {}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,5 +29,7 @@ public interface MineClass {
|
|||||||
|
|
||||||
String getCode();
|
String getCode();
|
||||||
|
|
||||||
|
String getName();
|
||||||
|
|
||||||
void dropForbiddenItems(Player player);
|
void dropForbiddenItems(Player player);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -55,6 +55,8 @@ public class MineClassFactory {
|
|||||||
List<String> loreList = new ArrayList<>();
|
List<String> loreList = new ArrayList<>();
|
||||||
loreList.add("Soulbound");
|
loreList.add("Soulbound");
|
||||||
loreList.add(player.getName());
|
loreList.add(player.getName());
|
||||||
|
Optional<MineClass> mineClass = MineClassFactory.getInstance().getRightClass(player);
|
||||||
|
mineClass.ifPresent(aClass -> loreList.add(aClass.getName()));
|
||||||
itemMeta.setLore(loreList);
|
itemMeta.setLore(loreList);
|
||||||
itemStack.setItemMeta(itemMeta);
|
itemStack.setItemMeta(itemMeta);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ import org.bukkit.event.entity.*;
|
|||||||
import org.bukkit.event.inventory.CraftItemEvent;
|
import org.bukkit.event.inventory.CraftItemEvent;
|
||||||
import org.bukkit.event.player.*;
|
import org.bukkit.event.player.*;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
import org.bukkit.metadata.FixedMetadataValue;
|
import org.bukkit.metadata.FixedMetadataValue;
|
||||||
import org.bukkit.metadata.MetadataValue;
|
import org.bukkit.metadata.MetadataValue;
|
||||||
import org.bukkit.potion.PotionEffect;
|
import org.bukkit.potion.PotionEffect;
|
||||||
@@ -75,16 +76,25 @@ public class MineClassListeners implements Listener {
|
|||||||
applyBadEffects(player, itemInHand);
|
applyBadEffects(player, itemInHand);
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
private boolean isItemforbidden(Player player, ItemStack itemStack) {
|
||||||
public void on(PlayerItemDamageEvent event) {
|
Optional<MineClass> mineClass = MineClassFactory.getInstance().getRightClass(player);
|
||||||
Player player = event.getPlayer();
|
return mineClass
|
||||||
ItemStack itemInHand = event.getItem();
|
.map(
|
||||||
applyBadEffects(player, itemInHand);
|
aClass ->
|
||||||
|
Optional.ofNullable(itemStack.getItemMeta())
|
||||||
|
.map(ItemMeta::getLore)
|
||||||
|
.map(it -> it.contains(player.getName()) && !it.contains(aClass.getName()))
|
||||||
|
.orElse(false))
|
||||||
|
.orElse(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void applyBadEffects(Player player, ItemStack itemInHand) {
|
private void applyBadEffects(Player player, ItemStack itemInHand) {
|
||||||
|
if (itemInHand == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
Optional<MineClass> mineClass = MineClassFactory.getInstance().getRightClass(player);
|
Optional<MineClass> mineClass = MineClassFactory.getInstance().getRightClass(player);
|
||||||
if (mineClass.isPresent() && mineClass.get().isItemForbidden(itemInHand.getType())) {
|
if (mineClass.isPresent() && mineClass.get().isItemForbidden(itemInHand.getType())
|
||||||
|
|| isItemforbidden(player, itemInHand)) {
|
||||||
player.addPotionEffect(new PotionEffect(PotionEffectType.WEAKNESS, 200, 0));
|
player.addPotionEffect(new PotionEffect(PotionEffectType.WEAKNESS, 200, 0));
|
||||||
if (MineClassFactory.getInstance().getClassCode(player).equals("elf")) {
|
if (MineClassFactory.getInstance().getClassCode(player).equals("elf")) {
|
||||||
player.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 200, 3));
|
player.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 200, 3));
|
||||||
@@ -101,11 +111,10 @@ public class MineClassListeners implements Listener {
|
|||||||
public void on(PlayerItemHeldEvent event) {
|
public void on(PlayerItemHeldEvent event) {
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
ItemStack itemStack = player.getInventory().getItem(event.getNewSlot());
|
ItemStack itemStack = player.getInventory().getItem(event.getNewSlot());
|
||||||
player.sendMessage(String.valueOf(itemStack));
|
|
||||||
Optional<MineClass> mineClass = MineClassFactory.getInstance().getRightClass(player);
|
Optional<MineClass> mineClass = MineClassFactory.getInstance().getRightClass(player);
|
||||||
if (itemStack != null
|
if (itemStack != null
|
||||||
&& mineClass.isPresent()
|
&& (mineClass.isPresent() && mineClass.get().isItemForbidden(itemStack.getType())
|
||||||
&& mineClass.get().isItemForbidden(itemStack.getType())) {
|
|| isItemforbidden(player, itemStack))) {
|
||||||
player.sendMessage("Warning : You are unable to use this item efficiently.");
|
player.sendMessage("Warning : You are unable to use this item efficiently.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -285,6 +294,8 @@ public class MineClassListeners implements Listener {
|
|||||||
@EventHandler
|
@EventHandler
|
||||||
public void on(PlayerInteractEvent event) {
|
public void on(PlayerInteractEvent event) {
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
|
ItemStack itemInHand = event.getItem();
|
||||||
|
applyBadEffects(player, itemInHand);
|
||||||
if (player.isSneaking()
|
if (player.isSneaking()
|
||||||
&& event.getAction().equals(Action.RIGHT_CLICK_BLOCK)
|
&& event.getAction().equals(Action.RIGHT_CLICK_BLOCK)
|
||||||
&& event.useInteractedBlock().equals(Event.Result.ALLOW)
|
&& event.useInteractedBlock().equals(Event.Result.ALLOW)
|
||||||
@@ -320,6 +331,17 @@ public class MineClassListeners implements Listener {
|
|||||||
player.openInventory(player.getEnderChest());
|
player.openInventory(player.getEnderChest());
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
|
if (player.isSneaking()
|
||||||
|
&& (event.getAction().equals(Action.RIGHT_CLICK_BLOCK)
|
||||||
|
|| event.getAction().equals(Action.RIGHT_CLICK_AIR))
|
||||||
|
&& event.getItem() != null) {
|
||||||
|
Optional<MineClass> mineClass = MineClassFactory.getInstance().getRightClass(player);
|
||||||
|
mineClass.ifPresent(
|
||||||
|
it -> {
|
||||||
|
it.enchantItem(event.getItem(), player);
|
||||||
|
event.setCancelled(true);
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void invokeCat(PlayerInteractEvent event, Player player, ItemStack itemStack) {
|
private void invokeCat(PlayerInteractEvent event, Player player, ItemStack itemStack) {
|
||||||
|
|||||||
Reference in New Issue
Block a user