1
mirror of https://github.com/StarWishsama/Slimefun4.git synced 2024-09-20 03:35:51 +00:00

Merge pull request #860 from SoSeDiK/spawners

Spawners
This commit is contained in:
TheBusyBiscuit 2019-03-27 16:40:44 +01:00 committed by GitHub
commit 8c2746e775
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 35 additions and 12 deletions

View File

@ -42,6 +42,7 @@ import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
import org.bukkit.event.entity.FoodLevelChangeEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.BlockStateMeta;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
@ -1841,8 +1842,9 @@ public class SlimefunSetup {
@Override
public boolean onBlockBreak(BlockBreakEvent e, ItemStack item, int fortune, List<ItemStack> drops) {
if (SlimefunManager.isItemSimiliar(e.getPlayer().getInventory().getItemInMainHand(), SlimefunItems.PICKAXE_OF_CONTAINMENT, true)) {
if (SlimefunManager.isItemSimiliar(item, SlimefunItems.PICKAXE_OF_CONTAINMENT, true)) {
if (e.getBlock().getType() != Material.SPAWNER) return true;
BlockStorage.clearBlockInfo(e.getBlock());
ItemStack spawner = SlimefunItems.BROKEN_SPAWNER.clone();
ItemMeta im = spawner.getItemMeta();
List<String> lore = im.getLore();
@ -2924,6 +2926,19 @@ public class SlimefunSetup {
}
else return false;
}
}, new BlockBreakHandler() {
@Override
public boolean onBlockBreak(BlockBreakEvent e, ItemStack item, int fortune, List<ItemStack> drops) {
SlimefunItem spawner = BlockStorage.check(e.getBlock());
if (spawner != null && SlimefunManager.isItemSimiliar(spawner.getItem(), SlimefunItems.REPAIRED_SPAWNER, false)) {
if (SlimefunManager.isItemSimiliar(item, SlimefunItems.PICKAXE_OF_CONTAINMENT, true))
return false;
BlockStorage.clearBlockInfo(e.getBlock());
return true;
}
else return false;
}
});
new EnhancedFurnace(1, 1, 1, SlimefunItems.ENHANCED_FURNACE, "ENHANCED_FURNACE",

View File

@ -56,6 +56,10 @@ public class ToolListener implements Listener {
BlockStorage.addBlockInfo(e.getBlock(), "id", sfItem.getID(), true);
if (SlimefunItem.blockhandler.containsKey(sfItem.getID())) {
SlimefunItem.blockhandler.get(sfItem.getID()).onPlace(e.getPlayer(), e.getBlock(), sfItem);
} else {
for (ItemHandler handler : SlimefunItem.getHandlers("BlockPlaceHandler")) {
if (((BlockPlaceHandler) handler).onBlockPlace(e, item)) break;
}
}
}
else {
@ -169,11 +173,11 @@ public class ToolListener implements Listener {
public void onBlockBreak(BlockBreakEvent e) {
boolean allow = true;
List<ItemStack> drops = new ArrayList<ItemStack>();
ItemStack item = e.getPlayer().getInventory().getItemInMainHand();
ItemStack item = e.getPlayer().getEquipment().getItemInMainHand();
int fortune = 1;
Block block2 = e.getBlock().getRelative(BlockFace.UP);
if (StringUtils.equals(block2.getType().toString(), "SAPLING", "WOOD_PLATE", "STONE_PLATE", "IRON_PLATE", "GOLD_PLATE")) {
if (StringUtils.equals(block2.getType().toString(), "SAPLING", "WOOD_PLATE", "STONE_PLATE", "IRON_PLATE", "GOLD_PLATE")) { // ToDo: 1.13 Material names
SlimefunItem sfItem = BlockStorage.check(e.getBlock().getRelative(BlockFace.UP));
if (sfItem != null && !(sfItem instanceof HandledBlock)) {
if (SlimefunItem.blockhandler.containsKey(sfItem.getID())) {
@ -194,6 +198,10 @@ public class ToolListener implements Listener {
if (sfItem != null && !(sfItem instanceof HandledBlock)) {
if (SlimefunItem.blockhandler.containsKey(sfItem.getID())) {
allow = SlimefunItem.blockhandler.get(sfItem.getID()).onBreak(e.getPlayer(), e.getBlock(), sfItem, UnregisterReason.PLAYER_BREAK);
} else {
for (ItemHandler handler : SlimefunItem.getHandlers("BlockBreakHandler")) {
if (((BlockBreakHandler) handler).onBlockBreak(e, item, fortune, drops)) return;
}
}
if (allow) {
drops.add(BlockStorage.retrieve(e.getBlock()));
@ -209,7 +217,6 @@ public class ToolListener implements Listener {
if (fortune <= 0) fortune = 1;
fortune = (e.getBlock().getType() == Material.LAPIS_ORE ? 4 + SlimefunStartup.randomize(5) : 1) * (fortune + 1);
}
for (ItemHandler handler : SlimefunItem.getHandlers("BlockBreakHandler")) {
if (((BlockBreakHandler) handler).onBlockBreak(e, item, fortune, drops)) break;
}
@ -254,4 +261,5 @@ public class ToolListener implements Listener {
SlimefunItem item = BlockStorage.check(block);
if (item != null) e.setCancelled(true);
}
}