Working on

This commit is contained in:
2021-12-11 21:38:42 +01:00
parent 6a089d9f66
commit 2e9f397155
8 changed files with 60 additions and 9 deletions

View File

@@ -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)) {

View File

@@ -93,6 +93,11 @@ public class DwarfClass extends MineClassImpl {
return "dwarf";
}
@Override
public String getName() {
return "Dwarf";
}
@Override
public void giveItems(Player player) {}
}

View File

@@ -72,6 +72,11 @@ public class ElfClass extends MineClassImpl {
return "elf";
}
@Override
public String getName() {
return "Elf";
}
@Override
public void giveItems(Player player) {}
}

View File

@@ -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);

View File

@@ -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) {}
}

View File

@@ -29,5 +29,7 @@ public interface MineClass {
String getCode();
String getName();
void dropForbiddenItems(Player player);
}

View File

@@ -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);
}

View File

@@ -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) {