package net.scapeemulator.game.model.player.skills.farming.plant; import net.scapeemulator.game.model.player.requirement.ItemRequirement; import net.scapeemulator.game.model.player.requirement.Requirements; import net.scapeemulator.game.model.player.requirement.SkillRequirement; import net.scapeemulator.game.model.player.skills.Skill; import net.scapeemulator.game.model.player.skills.farming.CureType; import net.scapeemulator.game.model.player.skills.farming.Farming; import net.scapeemulator.game.model.player.skills.farming.FarmingCycle; import net.scapeemulator.game.model.player.skills.farming.PlantState; public enum HopsPlant implements IPlant { BARLEY(3, 8.5, 5305, 4, 0x31), HAMMERSTONE(4, 9.0, 5307, 4, 0x4), ASGARNIAN(8, 10.9, 5308, 5, 0xB), JUTE(13, 13.0, 5306, 5, 0x38), YANILLIAN(16, 14.5, 5309, 6, 0x13), KRANDORIAN(21, 17.5, 5310, 7, 0x1C), WILDBLOOD(28, 23.0, 5311, 8, 0x26); private final int seedId; private final int baseBit; private final int stages; private final Requirements requirements; private HopsPlant(int level, double plantXp, int seedId, int stages, int baseBit) { this.seedId = seedId; this.stages = stages; this.baseBit = baseBit; requirements = new Requirements(); requirements.addRequirement(new SkillRequirement(Skill.FARMING, level, true, "plant that", plantXp)); requirements.addRequirement(Farming.DIBBER_REQ); requirements.addRequirement(new ItemRequirement(seedId, 4, true, "You do not have enough seeds to plant that.")); } @Override public int getSeedId() { return seedId; } @Override public int getStageCount() { return stages; } @Override public FarmingCycle getCycle() { return FarmingCycle.TEN; } @Override public int getVarbit(int stage, PlantState state) { int value = baseBit + stage; switch (state) { case GROWING: case GROWN: return value; case WATERED: return (0x01 << 6) | value; case DISEASED: return (0x02 << 6) | value; case DEAD: return (0x03 << 6) | value; default: throw new IllegalStateException("Bad hops plant state"); } } @Override public Requirements getRequirements() { return requirements; } @Override public boolean canWater() { return true; } @Override public CureType getCureType() { return CureType.PLANT_CURE; } }