Added head drops.

This commit is contained in:
Brianna 2019-05-13 16:13:27 -04:00
parent a18de0fe43
commit 7c8125e6e5
4 changed files with 163 additions and 0 deletions

View File

@ -8,6 +8,7 @@ import com.songoda.epicheads.economy.VaultEconomy;
import com.songoda.epicheads.head.Category;
import com.songoda.epicheads.head.Head;
import com.songoda.epicheads.head.HeadManager;
import com.songoda.epicheads.listeners.DeathListeners;
import com.songoda.epicheads.listeners.ItemListeners;
import com.songoda.epicheads.listeners.LoginListeners;
import com.songoda.epicheads.players.EPlayer;
@ -91,6 +92,7 @@ public class EpicHeads extends JavaPlugin {
// Register Listeners
AbstractGUI.initializeListeners(this);
Bukkit.getPluginManager().registerEvents(new DeathListeners(this), this);
Bukkit.getPluginManager().registerEvents(new ItemListeners(this), this);
Bukkit.getPluginManager().registerEvents(new LoginListeners(this), this);

View File

@ -0,0 +1,72 @@
package com.songoda.epicheads.listeners;
import com.songoda.epicheads.EpicHeads;
import com.songoda.epicheads.head.Head;
import com.songoda.epicheads.utils.HeadType;
import com.songoda.epicheads.utils.Methods;
import com.songoda.epicheads.utils.ServerVersion;
import com.songoda.epicheads.utils.SettingsManager;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDeathEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import java.util.ArrayList;
import java.util.Optional;
public class DeathListeners implements Listener {
private final EpicHeads plugin;
public DeathListeners(EpicHeads plugin) {
this.plugin = plugin;
}
@EventHandler
public void onDeath(EntityDeathEvent event) {
int ch = Integer.parseInt(SettingsManager.Setting.DROP_CHANCE.getString().replace("%", ""));
double rand = Math.random() * 100;
if (rand - ch < 0 || ch == 100) {
ItemStack itemNew;
if (event.getEntity() instanceof Player) {
if (!SettingsManager.Setting.DROP_PLAYER_HEADS.getBoolean()) return;
String encodededStr = Methods.getEncodedTexture((Player) event.getEntity());
if (encodededStr == null) {
itemNew = new ItemStack(plugin.isServerVersionAtLeast(ServerVersion.V1_13)
? Material.PLAYER_HEAD : Material.valueOf("SKULL_ITEM"), 1, (byte) 3);
ItemMeta meta = itemNew.getItemMeta();
meta.setDisplayName(Methods.formatText("&9" + ((Player) event.getEntity()).getDisplayName()));
itemNew.setItemMeta(meta);
} else {
String url = Methods.getDecodedTexture(encodededStr);
Optional<Head> optional = plugin.getHeadManager().getHeads().stream()
.filter(head -> url.equals(head.getURL())).findFirst();
itemNew = optional.get().asItemStack();
}
} else {
if (!SettingsManager.Setting.DROP_MOB_HEADS.getBoolean()) return;
Head head = new Head(-1, null, HeadType.valueOf(event.getEntity().getType().name()).getUrl(), null, null, (byte) 0);
itemNew = head.asItemStack();
}
ItemMeta meta = itemNew.getItemMeta();
meta.setLore(new ArrayList<>());
itemNew.setItemMeta(meta);
event.getEntity().getWorld().dropItemNaturally(event.getEntity().getLocation(), itemNew);
}
}
}

View File

@ -0,0 +1,85 @@
package com.songoda.epicheads.utils;
/**
* Created by songoda on 3/20/2017.
*/
public enum HeadType {
BAT("978862a56119227aaad4b7c246c8b2256db985db0951f55b0a1f8616c191f"),
BLAZE("b78ef2e4cf2c41a2d14bfde9caff10219f5b1bf5b35a49eb51c6467882cb5f0"),
CHICKEN("1638469a599ceef7207537603248a9ab11ff591fd378bea4735b346a7fae893"),
COW("5d6c6eda942f7f5f71c3161c7306f4aed307d82895f9d2b07ab4525718edc5"),
CREEPER("295ef836389af993158aba27ff37b6567185f7a721ca90fdfeb937a7cb5747"),
CAVE_SPIDER("41645dfd77d09923107b3496e94eeb5c30329f97efc96ed76e226e98224"),
DONKEY("9ffca9f0859834da81af524c2865fa3186b5bf58bd1c4e3742837c4fd6853887"),
ELDER_GUARDIAN("dbb9491b7a1768e3291959796232eb6f61b9c39aa2f81e13d287a3ab5d16dec"),
ENDERMAN("7a59bb0a7a32965b3d90d8eafa899d1835f424509eadd4e6b709ada50b9cf"),
ENDERMITE("e8c6cb8ceaad5a2ad5cc9a67bce6d5bdbf5cbb7e312955ccf9f162509355b1"),
ENDER_DRAGON("74ecc040785e54663e855ef0486da72154d69bb4b7424b7381ccf95b095a"),
EVOKER("bb48ed634196b7ded7455fdde56f3fa9f51b28f7b73839f0c6783b3961d"),
GHAST("8b6a72138d69fbbd2fea3fa251cabd87152e4f1c97e5f986bf685571db3cc0"),
GIANT("56fc854bb84cf4b7697297973e02b79bc10698460b51a639c60e5e417734e11"),
GUARDIAN("932c24524c82ab3b3e57c2052c533f13dd8c0beb8bdd06369bb2554da86c123"),
HORSE("61902898308730c4747299cb5a5da9c25838b1d059fe46fc36896fee662729"),
HUSK("6ae3a5bfcaa943d126988ed17ce8e4a7fb4231b05a5c5c947e5cc9752a199962"),
ILLUSIONER("c269a9dabe4f9fd6b4d74b7cd9c7ee6b24d87549b5acabbeb36cd756cc373"),
IRON_GOLEM("89091d79ea0f59ef7ef94d7bba6e5f17f2f7d4572c44f90f76c4819a714"),
LLAMA("6bc438fc1fbbaea2289aabecedd3fdf269ddc979bf8b5c6a8fc4bb8dcd4e1fe"),
MAGMA_CUBE("38957d5023c937c4c41aa2412d43410bda23cf79a9f6ab36b76fef2d7c429"),
MULE("36fcd3ec3bc84bafb4123ea479471f9d2f42d8fb9c5f11cf5f4e0d93226"),
MUSHROOM_COW("d0bc61b9757a7b83e03cd2507a2157913c2cf016e7c096a4d6cf1fe1b8db"),
OCELOT("5657cd5c2989ff97570fec4ddcdc6926a68a3393250c1be1f0b114a1db1"),
OMNI("afe097f7f7a6568884198b562cb58cfb84a3936fbf72828954aaa1f58cba32"),
PARROT("fd7cca30a1dc2fb25d3b7fb16318330ac79742d97deeeabe5393fb8a2cb878"),
PIG("621668ef7cb79dd9c22ce3d1f3f4cb6e2559893b6df4a469514e667c16aa4"),
PIG_ZOMBIE("74e9c6e98582ffd8ff8feb3322cd1849c43fb16b158abb11ca7b42eda7743eb"),
POLAR_BEAR("d46d23f04846369fa2a3702c10f759101af7bfe8419966429533cd81a11d2b"),
RABBIT("dc7a317ec5c1ed7788f89e7f1a6af3d2eeb92d1e9879c05343c57f9d863de130"),
SHEEP("f31f9ccc6b3e32ecf13b8a11ac29cd33d18c95fc73db8a66c5d657ccb8be70"),
SHULKER("1433a4b73273a64c8ab2830b0fff777a61a488c92f60f83bfb3e421f428a44"),
SILVERFISH("453a6aedbc9e4a22266cd70d2d4a2850a7e4b5864fbcbddf952b748fbabdb2"),
SKELETON("2e5be6a3c0159d2c1f3b1e4e1d8384b6f7ebac993d58b10b9f8989c78a232"),
SKELETON_HORSE("39be68887f5cf8c8044ebcdc5e768a172b2ef3e99545acd75b5ff74a263a"),
SLIME("16ad20fc2d579be250d3db659c832da2b478a73a698b7ea10d18c9162e4d9b5"),
SNOWMAN("a528df1653962e4e995dfd064a72b2cbff9b7197912880143f941a37db46c"),
SPIDER("cd541541daaff50896cd258bdbdd4cf80c3ba816735726078bfe393927e57f1"),
SQUID("01433be242366af126da434b8735df1eb5b3cb2cede39145974e9c483607bac"),
STRAY("96e58aeeaf75e9695813aeaabd3973c83d5ff8c285fe6b944550bc41b953"),
VEX("6dc4b59be077f7f2f6b488666afb85e45d96cc57b57934ae11ba9734bb4811"),
VILLAGER("822d8e751c8f2fd4c8942c44bdb2f5ca4d8ae8e575ed3eb34c18a86e93b"),
VINDICATOR("7a5b31aeab7f728cd7e90f81e2ffad4cd198c1907574f57be2b7c42f49ddd"),
WITCH("2e139130d7efd41fbad53735f64f8aff265bd7c54977189c02babbec4b0d07b"),
WITHER("cdf74e323ed41436965f5c57ddf2815d5332fe999e68fbb9d6cf5c8bd4139f"),
WITHER_SKELETON("233b41fa79cd53a230e2db942863843183a70404533bbc01fab744769bcb"),
WOLF("e95cbb4f75ea87617f2f713c6d49dac3209ba1bd4b9369654b1459ea15317"),
ZOMBIE("56fc854bb84cf4b7697297973e02b79bc10698460b51a639c60e5e417734e11"),
ZOMBIE_HORSE("d898e3eacff9949a9de9777ddfada8a7f62a4102de47b54db35f9f843e1ce4"),
ZOMBIE_VILLAGER("1a207a2b872fe8dd22ce5e27fc3263622621635efd8ea6abbdf317f99c5843"),
TURTLE("8df85c60a2e6061a5b4100e224422d19373badae2c0a1ca13e4d94897f7cbcf3"),
PHANTOM("fc060c4c1565f337a1b399ccf247cf300d3c3843efaaa610e5d894a79d9957fe"),
DOLPHIN("546fd34b06c61f68e94f357f38e62d334e339edf2b930d26951971921bbb5268"),
PUFFERFISH("13bc144030373790ca5a03bf111ca4127d31729bf0788d1e05a019206e62da92"),
SALMON("c1102e3a82c44ad4180e5be1cedda386158f5b8b20a52a8bd941104f7b695b9f"),
COD("a5eef52a468f681fab6a56bf5cc9986c1868ff0795d115c6ab0009d8faf972a4"),
TROPICAL_FISH("b80f5955825e822eff416182925c7d650a7e0947ec9f855a75450e03175e8338"),
DROWNED("71f2469f9b4bd92aa6a8ba3415f1ab76fd746041400062dc40fe13b646c0cc5d"),
DROPPED_ITEM("452fe4ce1f1d53a12ed443eeba7297e81da581e0c7a39954d9d7bba7de59c46"),
WANDERING_TRADER("4e8882cb316875e867b8d90c197f3ab57ff809fe8dd4a88368354afada48cdb4"),
PANDA("3cddc208575aadfdc47c1c707f8230b4775f70cec7531a9a355774f59e6bffa7"),
CAT("ff1b549341ad53b2bcd851b224ec56dbadb54887eaa0f771ba8eb39f58cf1d59"),
FOX("1528ee714d3fca31655feae1cd3c14d346f9bcae3e457b7658c9f915e21"),
PILLAGER("63550f89aea88665804c2fd1b6682930c23233184fdc060991305718ed660597"),
RAVAGER("d91a9d864e36fbec19b584bcb71292530755b10c4e60784fec92b51f8189363c"),
TRADER_LLAMA("6bc438fc1fbbaea2289aabecedd3fdf269ddc979bf8b5c6a8fc4bb8dcd4e1fe");
private final String url;
private HeadType(String url) {
this.url = url;
}
public String getUrl() {
return url;
}
}

View File

@ -174,6 +174,10 @@ public class SettingsManager implements Listener {
DISCORD("Main.Show Discord Button", true),
FREE_IN_CREATIVE("Main.Heads Free In Creative Mode", false),
DROP_MOB_HEADS("Main.Drop Mob Heads", true),
DROP_PLAYER_HEADS("Main.Drop Player Heads", true),
DROP_CHANCE("Main.Head Drop Chance", "25%"),
GLASS_TYPE_1("Interfaces.Glass Type 1", 7),
GLASS_TYPE_2("Interfaces.Glass Type 2", 11),
GLASS_TYPE_3("Interfaces.Glass Type 3", 3),