A feature-rich Minecraft plugin which enhances gaming experience
git clone git://soophie.de/poppy
19
import poppy.modules.AutoBreakerModule;20
import poppy.modules.AutoPlacerModule;21
import poppy.modules.AutoWorkbenchModule;22
import poppy.modules.BlockDetectorModule;23
import poppy.modules.CauldronModule;24
import poppy.modules.ChairModule;25
import poppy.modules.DoubleDoorModule;
47
private AutoPlacerModule autoPlacerModule;48
private AutoBreakerModule autoBreakerModule;49
private PlayerMountModule playerMountModule;50
private BlockDetectorModule blockDetectorModule;52
@Override53
public void onEnable()
90
playerMountModule = new PlayerMountModule();91
pluginManager.registerEvents(playerMountModule, this);93
blockDetectorModule = new BlockDetectorModule();94
pluginManager.registerEvents(blockDetectorModule, this);95
}97
@Override
1
package poppy.modules;3
import java.util.HashSet;4
import java.util.Iterator;6
import org.bukkit.Bukkit;7
import org.bukkit.Material;
11
import org.bukkit.block.BlockState;12
import org.bukkit.block.Chest;13
import org.bukkit.block.Dispenser;14
import org.bukkit.block.data.Ageable;15
import org.bukkit.block.data.Directional;16
import org.bukkit.enchantments.Enchantment;17
import org.bukkit.event.EventHandler;
57
final HashSet<ItemStack> drops = new HashSet<ItemStack>(faceBlock.getDrops(item));59
if(Tag.CROPS.isTagged(faceBlock.getType()) || Tag.MINEABLE_AXE.isTagged(faceBlock.getType()))60
{61
if(faceBlock.getBlockData() instanceof Ageable)62
{63
final Ageable ageable = (Ageable) faceBlock.getBlockData();65
if(ageable.getAge() == ageable.getMaximumAge())66
{67
if(!addItemToChest(direction, dispenser, drops))68
{69
faceBlock.breakNaturally(item);70
}71
else72
{73
faceBlock.setType(Material.AIR);74
}75
}76
else if(!Tag.CROPS.isTagged(faceBlock.getType()))77
{78
if(!addItemToChest(direction, dispenser, drops))79
{80
faceBlock.breakNaturally(item);81
}82
else83
{84
faceBlock.setType(Material.AIR);85
}86
}87
}88
}90
if(item.getType().toString().endsWith("_PICKAXE"))91
{92
if(Tag.MINEABLE_PICKAXE.isTagged(faceBlock.getType()))
172
public boolean isInventoryFullList(Inventory inventory, HashSet<ItemStack> items)173
{174
final HashSet<ItemStack> itemsCopy = new HashSet<ItemStack>(items);175
final Iterator<ItemStack> it = itemsCopy.iterator();143
for(ItemStack item : itemsCopy)177
while(it.hasNext())178
{179
ItemStack item = it.next();181
if(!Utils.isInventoryFull(inventory, item))182
{147
itemsCopy.remove(item);183
it.remove();184
}185
}186
return itemsCopy.size() != 0;
1
package poppy.modules;3
import java.util.HashSet;5
import org.bukkit.Location;6
import org.bukkit.Material;7
import org.bukkit.block.Block;8
import org.bukkit.block.data.Directional;9
import org.bukkit.block.data.type.Observer;10
import org.bukkit.entity.ItemFrame;11
import org.bukkit.event.EventHandler;12
import org.bukkit.event.Listener;13
import org.bukkit.event.block.BlockRedstoneEvent;14
import org.bukkit.inventory.ItemStack;17
public class BlockDetectorModule implements Listener18
{19
@EventHandler20
public void onBlockRedstone(BlockRedstoneEvent event)21
{22
final Block block = event.getBlock();24
if(block.getType() != Material.OBSERVER) return;26
final ItemFrame[] itemframes = HopperSorterModule.getBlockItemFrames(block);27
final ItemStack[] itemstacks = getItemsFromItemframes(itemframes);29
if(itemstacks.length <= 0) return;31
final Observer observer = (Observer) block.getBlockData();33
if(block.getBlockData() instanceof Directional)34
{35
final Location location = observer.getFacing().getDirection().toLocation(block.getWorld());36
final Block faceblock = block.getLocation().add(location.toVector()).getBlock();38
boolean check = false;40
for(ItemStack item : itemstacks)41
{42
if(item.getType() == faceblock.getType())43
{44
observer.setPowered(true);45
check = true;46
}47
}49
if(!check) event.setNewCurrent(0);50
}51
}53
public static ItemStack[] getItemsFromItemframes(ItemFrame[] itemframes)54
{55
final HashSet<ItemStack> itemstacks = new HashSet <ItemStack>();57
for(ItemFrame itemframe : itemframes)58
{59
itemstacks.add(itemframe.getItem());60
}61
return itemstacks.toArray(new ItemStack[itemstacks.size()]);62
}63
}