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