package org.bukkit; /** * Represents a countable statistic, which is tracked by the server. */ public enum Statistic { DAMAGE_DEALT, DAMAGE_TAKEN, DEATHS, MOB_KILLS, PLAYER_KILLS, FISH_CAUGHT, ANIMALS_BRED, LEAVE_GAME, JUMP, DROP_COUNT, DROP(Type.ITEM), PICKUP(Type.ITEM), /** * Name is misleading, actually records ticks played. */ PLAY_ONE_MINUTE, WALK_ONE_CM, WALK_ON_WATER_ONE_CM, FALL_ONE_CM, SNEAK_TIME, CLIMB_ONE_CM, FLY_ONE_CM, WALK_UNDER_WATER_ONE_CM, MINECART_ONE_CM, BOAT_ONE_CM, PIG_ONE_CM, HORSE_ONE_CM, SPRINT_ONE_CM, CROUCH_ONE_CM, AVIATE_ONE_CM, MINE_BLOCK(Type.BLOCK), USE_ITEM(Type.ITEM), BREAK_ITEM(Type.ITEM), CRAFT_ITEM(Type.ITEM), KILL_ENTITY(Type.ENTITY), ENTITY_KILLED_BY(Type.ENTITY), TIME_SINCE_DEATH, TALKED_TO_VILLAGER, TRADED_WITH_VILLAGER, CAKE_SLICES_EATEN, CAULDRON_FILLED, CAULDRON_USED, ARMOR_CLEANED, BANNER_CLEANED, BREWINGSTAND_INTERACTION, BEACON_INTERACTION, DROPPER_INSPECTED, HOPPER_INSPECTED, DISPENSER_INSPECTED, NOTEBLOCK_PLAYED, NOTEBLOCK_TUNED, FLOWER_POTTED, TRAPPED_CHEST_TRIGGERED, ENDERCHEST_OPENED, ITEM_ENCHANTED, RECORD_PLAYED, FURNACE_INTERACTION, CRAFTING_TABLE_INTERACTION, CHEST_OPENED, SLEEP_IN_BED, SHULKER_BOX_OPENED, TIME_SINCE_REST, SWIM_ONE_CM, DAMAGE_DEALT_ABSORBED, DAMAGE_DEALT_RESISTED, DAMAGE_BLOCKED_BY_SHIELD, DAMAGE_ABSORBED, DAMAGE_RESISTED, CLEAN_SHULKER_BOX; private final Type type; private Statistic() { this(Type.UNTYPED); } private Statistic(Type type) { this.type = type; } /** * Gets the type of this statistic. * * @return the type of this statistic */ public Type getType() { return type; } /** * Checks if this is a substatistic. *

* A substatistic exists en masse for each block, item, or entitytype, depending on * {@link #getType()}. *

* This is a redundant method and equivalent to checking * getType() != Type.UNTYPED * * @return true if this is a substatistic */ public boolean isSubstatistic() { return type != Type.UNTYPED; } /** * Checks if this is a substatistic dealing with blocks. *

* This is a redundant method and equivalent to checking * getType() == Type.BLOCK * * @return true if this deals with blocks */ public boolean isBlock() { return type == Type.BLOCK; } /** * The type of statistic. * */ public enum Type { /** * Statistics of this type do not require a qualifier. */ UNTYPED, /** * Statistics of this type require an Item Material qualifier. */ ITEM, /** * Statistics of this type require a Block Material qualifier. */ BLOCK, /** * Statistics of this type require an EntityType qualifier. */ ENTITY; } }