Skip to content

Instantly share code, notes, and snippets.

@RaiTaki
Created May 20, 2022 06:35
Show Gist options
  • Save RaiTaki/294bb10a9299c7919821ba3a0d078b14 to your computer and use it in GitHub Desktop.
Save RaiTaki/294bb10a9299c7919821ba3a0d078b14 to your computer and use it in GitHub Desktop.
Main Class and Skill classes
package xyz.raitaki.CandyHunters.Class.Classes;
import org.bukkit.entity.Player;
import xyz.raitaki.CandyHunters.Class.ClassMain;
import xyz.raitaki.CandyHunters.Skill.Skills.TestSkill;
public class TestClass extends ClassMain {
public TestClass(Player p){
super(p);
addSkill(0, new TestSkill(this));
}
@Override
public String getName() {
return "TestClass";
}
@Override
public TYPE getType() {
return TYPE.WILDLING;
}
}
package xyz.raitaki.CandyHunters.Class;
import lombok.Getter;
import org.bukkit.entity.Player;
import xyz.raitaki.CandyHunters.Skill.SkillMain;
import java.util.ArrayList;
import java.util.List;
public abstract class ClassMain {
public ClassMain(Player p){
player = p;
}
@Getter public Player player;
@Getter public List<SkillMain> skills = new ArrayList<>();
public abstract String getName();
public abstract TYPE getType();
public void useSkill(Integer slot){
skills.get(slot).useSkill();
}
public void addSkill(Integer slot, SkillMain skill){
skills.add(slot, skill);
}
public enum TYPE{WILDLING, CYBERLING, SUBCLASS}
}
package xyz.raitaki.CandyHunters.Skill.Skills;
import org.bukkit.Bukkit;
import xyz.raitaki.CandyHunters.Class.ClassMain;
import xyz.raitaki.CandyHunters.Skill.SkillMain;
public class TestSkill extends SkillMain {
public TestSkill(ClassMain cClass) {
super(cClass);
}
@Override
public void skill() {
Bukkit.broadcastMessage("You used your skill");
startCooldown();
}
@Override
public String getSkillName() {
return null;
}
@Override
public int getCooldown() {
return 3;
}
@Override
public boolean canUse() {
return isCanuse();
}
}
package xyz.raitaki.CandyHunters.Skill;
import lombok.Getter;
import lombok.Setter;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;
import xyz.raitaki.CandyHunters.Class.ClassMain;
import xyz.raitaki.CandyHunters.Main;
public abstract class SkillMain {
public SkillMain(ClassMain cClass){
this.cClass = cClass;
}
@Getter public ClassMain cClass;
@Getter @Setter public boolean canuse = true;
public abstract void skill();
public abstract String getSkillName();
public abstract int getCooldown();
public abstract boolean canUse();
public void useSkill(){
skill();
}
public void startCooldown(){
canuse = false;
new BukkitRunnable() {
@Override
public void run() {
canuse = true;
}
}.runTaskLater(Main.getInstance(), getCooldown() * 20L);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment