mirror of
https://github.com/StarWishsama/Slimefun4.git
synced 2024-09-19 19:25:48 +00:00
Refactored Talismans a bit
This commit is contained in:
parent
71d13869a1
commit
eacbd2c5c1
@ -26,6 +26,7 @@
|
||||
#### Changes
|
||||
* Little performance improvements
|
||||
* Bandages, Rags and Splints will no longer be consumed if your health is full and you are not on fire
|
||||
* Player Profiles (researches and stuff) are now loaded completely asynchronously
|
||||
|
||||
#### Fixes
|
||||
* Fixed #1824
|
||||
@ -36,6 +37,7 @@
|
||||
* Fixed Electric Smeltery not prioritisting recipes
|
||||
* Fixed #1851
|
||||
* Fixed #1891
|
||||
* Fixed #1893
|
||||
|
||||
## Release Candidate 11 (25 Apr 2020)
|
||||
|
||||
|
@ -21,13 +21,8 @@ class EnderTalisman extends Talisman {
|
||||
|
||||
private static final LockedCategory ENDER_TALISMANS_CATEGORY = new LockedCategory(new NamespacedKey(SlimefunPlugin.instance, "ender_talismans"), new CustomItem(SlimefunItems.ENDER_TALISMAN, "&7Talismans - &aTier II"), 3, Talisman.TALISMANS_CATEGORY.getKey());
|
||||
|
||||
public EnderTalisman(Talisman parent) {
|
||||
super(ENDER_TALISMANS_CATEGORY, parent.upgrade(), new ItemStack[] { SlimefunItems.ENDER_LUMP_3, null, SlimefunItems.ENDER_LUMP_3, null, parent.getItem(), null, SlimefunItems.ENDER_LUMP_3, null, SlimefunItems.ENDER_LUMP_3 }, parent.isConsumable(), parent.isEventCancelled(), parent.getSuffix(), parent.getChance(), parent.getEffects());
|
||||
}
|
||||
|
||||
@Override
|
||||
public SlimefunItemStack upgrade() {
|
||||
throw new UnsupportedOperationException();
|
||||
public EnderTalisman(Talisman parent, SlimefunItemStack item) {
|
||||
super(ENDER_TALISMANS_CATEGORY, item, new ItemStack[] { SlimefunItems.ENDER_LUMP_3, null, SlimefunItems.ENDER_LUMP_3, null, parent.getItem(), null, SlimefunItems.ENDER_LUMP_3, null, SlimefunItems.ENDER_LUMP_3 }, parent.isConsumable(), parent.isEventCancelled(), parent.getMessageSuffix(), parent.getChance(), parent.getEffects());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -2,6 +2,7 @@ package io.github.thebusybiscuit.slimefun4.implementation.items.magical.talisman
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.concurrent.ThreadLocalRandom;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
@ -32,6 +33,8 @@ public class Talisman extends SlimefunItem {
|
||||
|
||||
protected static final Category TALISMANS_CATEGORY = new Category(new NamespacedKey(SlimefunPlugin.instance, "talismans"), new CustomItem(SlimefunItems.TALISMAN, "&7Talismans - &aTier I"), 2);
|
||||
|
||||
private final SlimefunItemStack enderTalisman;
|
||||
|
||||
protected final String suffix;
|
||||
protected final boolean consumable;
|
||||
protected final boolean cancel;
|
||||
@ -58,43 +61,51 @@ public class Talisman extends SlimefunItem {
|
||||
this.suffix = messageSuffix;
|
||||
this.effects = effects;
|
||||
this.chance = chance;
|
||||
}
|
||||
|
||||
public String getSuffix() {
|
||||
return suffix;
|
||||
if (!(this instanceof EnderTalisman)) {
|
||||
String name = "&5Ender " + ChatColor.stripColor(getItem().getItemMeta().getDisplayName());
|
||||
List<String> lore = new ArrayList<>();
|
||||
lore.add("&7&oEnder Infused");
|
||||
lore.add("");
|
||||
|
||||
for (String line : getItem().getItemMeta().getLore()) {
|
||||
lore.add(line);
|
||||
}
|
||||
|
||||
enderTalisman = new SlimefunItemStack("ENDER_" + getID(), getItem().getType(), name, lore.toArray(new String[0]));
|
||||
}
|
||||
else {
|
||||
enderTalisman = null;
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isConsumable() {
|
||||
return consumable;
|
||||
}
|
||||
|
||||
public boolean isEventCancelled() {
|
||||
return cancel;
|
||||
public int getChance() {
|
||||
return chance;
|
||||
}
|
||||
|
||||
public PotionEffect[] getEffects() {
|
||||
return effects;
|
||||
}
|
||||
|
||||
public int getChance() {
|
||||
return chance;
|
||||
protected String getMessageSuffix() {
|
||||
return suffix;
|
||||
}
|
||||
|
||||
public SlimefunItemStack upgrade() {
|
||||
List<String> lore = new ArrayList<>();
|
||||
lore.add("&7&oEnder Infused");
|
||||
lore.add("");
|
||||
protected boolean isEventCancelled() {
|
||||
return cancel;
|
||||
}
|
||||
|
||||
for (String line : getItem().getItemMeta().getLore()) {
|
||||
lore.add(line);
|
||||
}
|
||||
|
||||
return new SlimefunItemStack("ENDER_" + getID(), getItem().getType(), "&5Ender " + ChatColor.stripColor(getItem().getItemMeta().getDisplayName()), lore.toArray(new String[lore.size()]));
|
||||
private SlimefunItemStack getEnderVariant() {
|
||||
return enderTalisman;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void postRegister() {
|
||||
EnderTalisman talisman = new EnderTalisman(this);
|
||||
EnderTalisman talisman = new EnderTalisman(this, getEnderVariant());
|
||||
talisman.register(addon);
|
||||
}
|
||||
|
||||
@ -105,16 +116,16 @@ public class Talisman extends SlimefunItem {
|
||||
}
|
||||
|
||||
protected void createEnderTalisman() {
|
||||
EnderTalisman talisman = (EnderTalisman) SlimefunItem.getByItem(upgrade());
|
||||
Research research = Research.getByID(112);
|
||||
EnderTalisman talisman = (EnderTalisman) SlimefunItem.getByItem(getEnderVariant());
|
||||
Optional<Research> research = Research.getResearch(new NamespacedKey(SlimefunPlugin.instance, "ender_talismans"));
|
||||
|
||||
if (talisman != null && research != null) {
|
||||
talisman.setResearch(research);
|
||||
if (talisman != null && research.isPresent()) {
|
||||
talisman.setResearch(research.get());
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean hasMessage(Talisman talisman) {
|
||||
return !("").equalsIgnoreCase(talisman.getSuffix());
|
||||
return !("").equalsIgnoreCase(talisman.getMessageSuffix());
|
||||
}
|
||||
|
||||
public static boolean checkFor(Event e, SlimefunItemStack stack) {
|
||||
@ -137,25 +148,37 @@ public class Talisman extends SlimefunItem {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (p.getInventory().containsAtLeast(talisman.getItem(), 1)) {
|
||||
if (Slimefun.hasUnlocked(p, talisman.getItem(), true)) {
|
||||
activateTalisman(e, p, p.getInventory(), talisman);
|
||||
ItemStack talismanItem = talisman.getItem();
|
||||
|
||||
if (p.getInventory().containsAtLeast(talismanItem, 1)) {
|
||||
if (Slimefun.hasUnlocked(p, talismanItem, true)) {
|
||||
activateTalisman(e, p, p.getInventory(), talisman, talismanItem);
|
||||
return true;
|
||||
}
|
||||
else return false;
|
||||
}
|
||||
else if (p.getEnderChest().containsAtLeast(talisman.upgrade(), 1)) {
|
||||
if (Slimefun.hasUnlocked(p, talisman.upgrade(), true)) {
|
||||
activateTalisman(e, p, p.getEnderChest(), talisman);
|
||||
return true;
|
||||
else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else {
|
||||
ItemStack enderTalisman = talisman.getEnderVariant();
|
||||
|
||||
if (p.getEnderChest().containsAtLeast(enderTalisman, 1)) {
|
||||
if (Slimefun.hasUnlocked(p, enderTalisman, true)) {
|
||||
activateTalisman(e, p, p.getEnderChest(), talisman, enderTalisman);
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else {
|
||||
return false;
|
||||
}
|
||||
else return false;
|
||||
}
|
||||
else return false;
|
||||
}
|
||||
|
||||
private static void activateTalisman(Event e, Player p, Inventory inv, Talisman talisman) {
|
||||
consumeItem(inv, talisman);
|
||||
private static void activateTalisman(Event e, Player p, Inventory inv, Talisman talisman, ItemStack talismanItem) {
|
||||
consumeItem(inv, talisman, talismanItem);
|
||||
applyTalismanEffects(p, talisman);
|
||||
cancelEvent(e, talisman);
|
||||
sendMessage(p, talisman);
|
||||
@ -175,22 +198,32 @@ public class Talisman extends SlimefunItem {
|
||||
|
||||
private static void sendMessage(Player p, Talisman talisman) {
|
||||
if (hasMessage(talisman)) {
|
||||
SlimefunPlugin.getLocal().sendMessage(p, "messages.talisman." + talisman.getSuffix(), true);
|
||||
SlimefunPlugin.getLocal().sendMessage(p, "messages.talisman." + talisman.getMessageSuffix(), true);
|
||||
}
|
||||
}
|
||||
|
||||
private static void consumeItem(Inventory inv, Talisman talisman) {
|
||||
private static void consumeItem(Inventory inv, Talisman talisman, ItemStack talismanItem) {
|
||||
if (talisman.isConsumable()) {
|
||||
inv.removeItem(talisman.getItem());
|
||||
inv.removeItem(talismanItem);
|
||||
}
|
||||
}
|
||||
|
||||
private static Player getPlayerByEventType(Event e) {
|
||||
if (e instanceof EntityDeathEvent) return ((EntityDeathEvent) e).getEntity().getKiller();
|
||||
else if (e instanceof BlockBreakEvent) return ((BlockBreakEvent) e).getPlayer();
|
||||
else if (e instanceof PlayerEvent) return ((PlayerEvent) e).getPlayer();
|
||||
else if (e instanceof EntityEvent) return (Player) ((EntityEvent) e).getEntity();
|
||||
else if (e instanceof EnchantItemEvent) return ((EnchantItemEvent) e).getEnchanter();
|
||||
if (e instanceof EntityDeathEvent) {
|
||||
return ((EntityDeathEvent) e).getEntity().getKiller();
|
||||
}
|
||||
else if (e instanceof BlockBreakEvent) {
|
||||
return ((BlockBreakEvent) e).getPlayer();
|
||||
}
|
||||
else if (e instanceof PlayerEvent) {
|
||||
return ((PlayerEvent) e).getPlayer();
|
||||
}
|
||||
else if (e instanceof EntityEvent) {
|
||||
return (Player) ((EntityEvent) e).getEntity();
|
||||
}
|
||||
else if (e instanceof EnchantItemEvent) {
|
||||
return ((EnchantItemEvent) e).getEnchanter();
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user