11package me .poma123 .spawners ;
22
3+ import java .util .ArrayList ;
4+ import java .util .List ;
35import java .util .Map ;
46import java .util .TreeMap ;
7+ import java .util .regex .Pattern ;
58
9+ import org .apache .commons .lang .RandomStringUtils ;
610import org .apache .commons .lang .StringUtils ;
711import org .bukkit .ChatColor ;
812import org .bukkit .Material ;
913import org .bukkit .block .Block ;
1014import org .bukkit .block .CreatureSpawner ;
11- import org .bukkit .enchantments .Enchantment ;
1215import org .bukkit .entity .EntityType ;
1316import org .bukkit .entity .Player ;
1417import org .bukkit .event .EventHandler ;
@@ -44,6 +47,14 @@ public static TextComponent getHoverClick(String message, String hover, String c
4447 new ComponentBuilder (hover ).create ()));
4548 return text ;
4649 }
50+ public static TextComponent getHoverClickcmd (String message , String hover , String click ) {
51+ TextComponent text = new TextComponent (message );
52+ text .setClickEvent (
53+ new net .md_5 .bungee .api .chat .ClickEvent (net .md_5 .bungee .api .chat .ClickEvent .Action .RUN_COMMAND , click ));
54+ text .setHoverEvent (new net .md_5 .bungee .api .chat .HoverEvent (HoverEvent .Action .SHOW_TEXT ,
55+ new ComponentBuilder (hover ).create ()));
56+ return text ;
57+ }
4758
4859 @ EventHandler
4960 public void onOpJoin (PlayerJoinEvent e ) {
@@ -69,13 +80,15 @@ public void onOpJoin(PlayerJoinEvent e) {
6980 }
7081 }
7182 }
83+
84+
7285
7386 @ EventHandler (ignoreCancelled = true , priority = EventPriority .HIGH )
7487 public void onSpawnerBreak (BlockBreakEvent e ) {
7588 Block s = e .getBlock ();
7689 String lang = getLang (e .getPlayer ());
7790 Object limitcount1 = sett .getConfig ().get ("daily-broke-limit" );
78-
91+ ItemStack item = e . getPlayer (). getInventory (). getItemInMainHand ();
7992 try {
8093 int limitcount = (int ) limitcount1 ;
8194 if (limitcount > 0 ) {
@@ -100,8 +113,55 @@ public void onSpawnerBreak(BlockBreakEvent e) {
100113 "§c[PickupSpawners-ERROR] The daily limit is not an integer in the config.yml. Please fix it. Daily limit skipped." );
101114 }
102115
103- if (e .getPlayer ().getInventory ().getItemInMainHand ().getType ().equals (Material .DIAMOND_PICKAXE ) && e .getPlayer ()
104- .getInventory ().getItemInMainHand ().getEnchantments ().containsKey (Enchantment .SILK_TOUCH )) {
116+ boolean isGoodItem = false ;
117+
118+ for (String string : sett .getConfig ().getConfigurationSection ("item" ).getKeys (false )) {
119+ Material mat = Material
120+ .matchMaterial (sett .getConfig ().getString ("item." + string + ".material" ).toUpperCase ());
121+ List <String > enchants = new ArrayList <String >();
122+ if (sett .getConfig ().getStringList ("item." + string + ".enchants" ) != null ) {
123+ enchants = sett .getConfig ().getStringList ("item." + string + ".enchants" );
124+ }
125+
126+ if (enchants .isEmpty ()) {
127+ if (item .getType ().equals (mat )) {
128+ isGoodItem = true ;
129+ }
130+ } else {
131+
132+ boolean containsAllEnchants = false ;
133+
134+ String enchantments = "" ;
135+
136+ for (String ench : sett .getConfig ().getStringList ("item." + string + ".enchants" )) {
137+
138+ if (ench .contains (":" )) {
139+ enchantments = enchantments + "(?=.*" + ench .split (":" )[0 ].toUpperCase () + "]=" + ench .split (":" )[1 ] + ")" ;
140+ } else {
141+ enchantments = enchantments + "(?=.*" + ench .toUpperCase () + "]=1" + ")" ;
142+ }
143+ }
144+
145+ Pattern pattern = Pattern .compile (enchantments );
146+ if (pattern .matcher (item .getEnchantments ().toString ()).find ()) {
147+ containsAllEnchants = true ;
148+ }
149+
150+ if (item .getType ().equals (mat ) && containsAllEnchants ) {
151+ isGoodItem = true ;
152+ }
153+
154+ }
155+
156+ if (isGoodItem == true ) {
157+ break ;
158+
159+ }
160+ }
161+
162+ // if (item.getType().equals(Material.DIAMOND_PICKAXE)&&
163+ // item.getEnchantments().containsKey(Enchantment.SILK_TOUCH)) {
164+ if (isGoodItem ) {
105165 if (s .getType ().equals (material )) {
106166
107167 CreatureSpawner cs = (CreatureSpawner ) s .getState ();
0 commit comments