package me.km.jobsystem; import me.km.api.Module; import me.km.databank.SimpleDataBank; import java.sql.Connection; import java.util.ArrayList; import net.minecraft.entity.player.EntityPlayer; public class JobBank extends SimpleDataBank { public JobBank(Module m, Connection c) { super(m, c); } @Override protected void init() { // Speicher für den aktuellen Beruf if(!this.doesTableExist("currentjob")) { this.getModule().sendToConsole("Der Speicher für die aktuellen Beruf wurde nicht gefunden, erstelle ..."); if(this.update("CREATE TABLE IF NOT EXISTS currentjob (" + "id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, " + "player_id INT NOT NULL, " + "job TINYINT NOT NULL, " + "INDEX (player_id), " + "UNIQUE INDEX (player_id,job), " + "FOREIGN KEY (player_id) REFERENCES minecraft.players(id) ON DELETE RESTRICT);", false)) { this.getModule().sendToConsole("Der Speicher für die aktuellen Beruf wurde erstellt."); } } else { this.getModule().sendToConsole("Der Speicher für die aktuellen Beruf wurde gefunden."); } // Jobdatenbank if(!this.doesTableExist("jobs")) { this.getModule().sendToConsole("Die Jobdatenbank wurde nicht gefunden, erstelle ..."); if(this.update("CREATE TABLE IF NOT EXISTS jobs (" + "id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, " + "player_id INT NOT NULL, " + "job TINYINT NOT NULL, " + "xp INT NOT NULL DEFAULT 0, " + "level TINYINT NOT NULL DEFAULT 1, " + "UNIQUE INDEX (player_id,job), " + "FOREIGN KEY (player_id) REFERENCES minecraft.players(id) ON DELETE RESTRICT);", false)) { this.getModule().sendToConsole("Die Jobdatenbank wurde erstellt."); } } else { this.getModule().sendToConsole("Die Jobdatenbank wurde gefunden."); } } // ------------------------------------------------------------------------- // Job-Level // ------------------------------------------------------------------------- public Byte getLevel(EntityPlayer p, byte job) { return this.getFirstByte("SELECT level from jobs " + "LEFT JOIN players ON players.id = jobs.player_id " + "WHERE players.uuid = '" + p.getUniqueID() + "' AND " + "jobs.job=" + job + ";"); } public void setLevel(EntityPlayer p, byte job, byte level) { this.update("INSERT INTO jobs (player_id,job,level) " + "SELECT id, " + job + ", " + level + " " + "FROM players WHERE uuid='" + p.getUniqueID() + "' " + "ON DUPLICATE KEY UPDATE level=" + level + ";", false); } // ------------------------------------------------------------------------- // Jobs // ------------------------------------------------------------------------- public boolean hasJob(EntityPlayer p, byte job) { return this.getFirstByte("SELECT job from currentjob " + "LEFT JOIN players ON players.id = currentjob.player_id " + "WHERE players.uuid = '" + p.getUniqueID() + "' AND " + "currentjob.job=" + job + ";") != null; } public ArrayList getJobs(EntityPlayer p) { return this.getFirstByteColumn("SELECT job from currentjob " + "LEFT JOIN players ON players.id = currentjob.player_id " + "WHERE players.uuid = '" + p.getUniqueID() + "';"); } public void setJob(EntityPlayer p, byte job, boolean b) { if(b) { this.update("INSERT INTO currentjob (player_id,job) " + "SELECT id, " + job + " " + "FROM players WHERE uuid='" + p.getUniqueID() + "' " + "ON DUPLICATE KEY UPDATE job=" + job + ";", false); return; } this.update("DELETE currentjob FROM currentjob " + "LEFT JOIN players ON players.id = currentjob.player_id " + "WHERE players.uuid = '" + p.getUniqueID() + "' AND job=" + job + ";", false); } // ------------------------------------------------------------------------- // Job-XP // ------------------------------------------------------------------------- public Integer getXp(EntityPlayer p, byte job) { return this.getFirst("SELECT xp from jobs " + "LEFT JOIN players ON players.id = jobs.player_id " + "WHERE players.uuid = '" + p.getUniqueID() + "' AND " + "jobs.job=" + job + ";", Integer.class); } public void setXp(EntityPlayer p, byte job, int xp) { this.update("INSERT INTO jobs (player_id,job,xp) " + "SELECT id, " + job + ", " + xp + " " + "FROM players WHERE uuid='" + p.getUniqueID() + "' " + "ON DUPLICATE KEY UPDATE xp=" + xp + ";", false); } }