|
6 | 6 | import org.bukkit.block.data.Ageable; |
7 | 7 | import org.bukkit.block.data.BlockData; |
8 | 8 | import org.bukkit.block.data.type.Sapling; |
| 9 | +import org.bukkit.enchantments.Enchantment; |
9 | 10 | import org.bukkit.entity.HumanEntity; |
| 11 | +import org.bukkit.entity.Player; |
| 12 | +import org.bukkit.entity.Sheep; |
10 | 13 | import org.bukkit.event.EventHandler; |
11 | 14 | import org.bukkit.event.EventPriority; |
12 | 15 | import org.bukkit.event.Listener; |
13 | 16 | import org.bukkit.event.block.Action; |
14 | 17 | import org.bukkit.event.entity.FoodLevelChangeEvent; |
15 | 18 | import org.bukkit.event.player.PlayerInteractEvent; |
| 19 | +import org.bukkit.event.player.PlayerShearEntityEvent; |
16 | 20 | import org.bukkit.inventory.ItemStack; |
17 | 21 | import org.bukkit.inventory.meta.ItemMeta; |
18 | 22 | import org.bukkit.persistence.PersistentDataType; |
|
21 | 25 | import parallelmc.parallelutils.Constants; |
22 | 26 | import parallelmc.parallelutils.Parallelutils; |
23 | 27 |
|
| 28 | +import java.util.Random; |
24 | 29 | import java.util.logging.Level; |
25 | 30 |
|
26 | 31 | /** |
@@ -165,22 +170,29 @@ public void onHumanEat(FoodLevelChangeEvent event){ |
165 | 170 | public void playerShearEvent(PlayerShearEntityEvent event) { |
166 | 171 | if (event.getEntity() instanceof Sheep) { |
167 | 172 | // check for looting level |
168 | | - Player player = event.getPlayer(); |
169 | | - if (player.getItemInHand().getType() == Material.SHEARS) { |
170 | | - if (player.getItemInHand().getItemMeta().hasEnchant(Enchantment.LOOTING)) { |
171 | | - int level = player.getItemInHand().getItemMeta().getEnchantLevel(Enchantment.LOOTING); |
172 | | - event.setCancelled(true); |
173 | | - //Generate random number of wool to drop based on looting level |
| 173 | + ItemStack shears = event.getItem(); |
| 174 | + |
| 175 | + if (shears.getType() == Material.SHEARS) { |
| 176 | + if (shears.getItemMeta().hasEnchant(Enchantment.LOOT_BONUS_MOBS)) { |
| 177 | + int level = shears.getItemMeta().getEnchantLevel(Enchantment.LOOT_BONUS_MOBS); |
| 178 | + |
| 179 | + // Generate random number of wool to drop based on looting level |
174 | 180 | Random random = new Random(); |
175 | | - int min = 1; |
176 | 181 | int max = 3 + level; |
177 | | - int numWool = random.nextInt((max-min)+1) + min; |
| 182 | + int numWool = random.nextInt((max-level)+1) + level; |
178 | 183 |
|
179 | 184 | // Make sheep drop their respective color of wool |
180 | 185 | Sheep sheep = (Sheep) event.getEntity(); |
181 | | - Dyecolor woolColor = sheep.getColor(); |
182 | | - Material wool = Material.getMaterial(woolColor.toString() + "_WOOL"); |
| 186 | + DyeColor woolColor = sheep.getColor(); |
| 187 | + if (woolColor == null) { |
| 188 | + woolColor = DyeColor.WHITE; |
| 189 | + } |
| 190 | + |
| 191 | + Material wool = Material.getMaterial(woolColor + "_" + "WOOL"); |
| 192 | + |
183 | 193 | if (wool != null) { |
| 194 | + event.setCancelled(true); |
| 195 | + sheep.setSheared(true); |
184 | 196 | event.getEntity().getWorld().dropItemNaturally(event.getEntity().getLocation(), new ItemStack(wool, numWool)); |
185 | 197 | } |
186 | 198 | } |
|
0 commit comments