PlayerInteractEvent.java
unknown
java
3 years ago
2.8 kB
4
Indexable
@SubscribeEvent public void onPlayerInteract(PlayerInteractEvent.RightClickBlock event) { EntityPlayer player = event.getEntityPlayer(); World world = event.getWorld(); ItemStack item = player.getHeldItem(event.getHand()); if (item == ItemStack.EMPTY || item.getItem() == Items.AIR) return; List<String> blocks = config.getStringList("blocks", "index"); if (blocks.isEmpty()) return; ResourceLocation itemResource = Item.REGISTRY.getNameForObject(item.getItem()); if (itemResource == null || !blocks.contains(itemResource.toString())) return; Chunk chunk = world.getChunk(player.getPosition()); List<Block> check = Lists.newArrayList(); for (int x = 0; x < 16; x++) { for (int z = 0; z < 16; z++) { for (int y = 0; y < 257; y++) { IBlockState blockState = chunk.getBlockState(chunk.getPos().getBlock(x, y, z)); Block block = blockState.getBlock(); if (blockState.getMaterial() == Material.AIR) continue; String name = ""; Item itemBlock = ItemRedstone.getItemFromBlock(block); player.sendMessage(new TextComponentString("itemBlock: " + (itemBlock == Items.AIR ? "Air" : "No air"))); if (itemBlock == Items.AIR) name = Block.REGISTRY.getNameForObject(block).toString(); else { ResourceLocation resource = itemBlock.getRegistryName(); if (resource != null) name = resource.toString(); } player.sendMessage(new TextComponentString("Name: " + (name.isEmpty() ? "Null" : name))); if (name.isEmpty()) continue; if (blocks.contains(name) && itemResource.toString().equalsIgnoreCase(name)) check.add(block); } } } player.sendMessage(new TextComponentString("Collected blocks: " + check.size())); if (check.isEmpty()) return; int amount = config.getInt("blocks", "amount"); player.sendMessage(new TextComponentString("Amount: " + amount)); if (check.size() < amount) return; event.setCanceled(true); } }
Editor is loading...