package me.km.playerbank; import com.mojang.authlib.GameProfile; import me.km.KajetansMod; import me.km.api.Module; import me.km.databank.DataBank; import me.km.databank.SimpleDataBank; import net.minecraft.entity.player.EntityPlayer; public class PlayerBank extends SimpleDataBank { public PlayerBank(Module m, DataBank c) { super(m, c); } @Override protected void init() { // Player-Databank if(!this.doesTableExist("players")) { this.getModule().sendToConsole("Die Spielerdatenbank wurde nicht gefunden, erstelle ..."); if(this.update("CREATE TABLE IF NOT EXISTS players (" + "id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, " + "uuid VARCHAR(40) NOT NULL, " + "name VARCHAR(20) NOT NULL, " + "quest INT NOT NULL, " + "UNIQUE INDEX (uuid));", false)) { this.getModule().sendToConsole("Die Spielerdatenbank wurde erstellt."); } } else { this.getModule().sendToConsole("Die Spielerdatenbank wurde gefunden."); } // Player-Tags-Databank if(!this.doesTableExist("playertags")) { this.getModule().sendToConsole("Die Player-Tags-Datenbank wurde nicht gefunden, erstelle ..."); if(this.update("CREATE TABLE IF NOT EXISTS playertags (" + "id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, " + "player_id INT NOT NULL, " + "tag VARCHAR(10) NOT NULL, " + "amount INT NOT NULL, " + "INDEX (player_id), " + "UNIQUE INDEX (player_id,tag), " + "FOREIGN KEY (player_id) REFERENCES minecraft.players(id) ON DELETE RESTRICT);", false)) { this.getModule().sendToConsole("Die Player-Tags-Datenbank wurde erstellt."); } } else { this.getModule().sendToConsole("Die Player-Tags-Datenbank wurde gefunden."); } } public boolean add(GameProfile p) { return this.update("INSERT INTO players (uuid,name,quest) VALUES ('" + p.getId()+ "','" + p.getName() + "',0);", false); } public void changeName(EntityPlayer p) { this.update("UPDATE players SET name='" + p.getName() + "' WHERE uuid='" + p.getUniqueID()+ "';", false); } public void setTag(String uuid, String tag, int amount) { this.update("INSERT INTO playertags (player_id,tag,amount) " + "SELECT id, '" + tag + "', " + amount + " " + "FROM players WHERE uuid='" + uuid + "' " + "ON DUPLICATE KEY UPDATE amount=" + amount + ";", false); } public void setTag(EntityPlayer p, String tag, int amount) { setTag(p.getUniqueID().toString(), tag, amount); } public int getTag(String uuid, String tag) { Integer level = this.getFirst("SELECT amount from playertags " + "LEFT JOIN players ON players.id = playertags.player_id " + "WHERE players.uuid = '" + uuid + "' AND " + "playertags.tag='" + tag + "';", Integer.class); return level == null ? 0 : level; } public int getTag(EntityPlayer p, String tag) { return getTag(p.getUniqueID().toString(), tag); } public boolean contains(EntityPlayer p) { return this.getFirst("SELECT uuid FROM players WHERE uuid='" + p.getUniqueID() + "';", String.class) != null; } public String getName(String uuid) { return this.getFirst("SELECT name FROM players WHERE uuid='" + uuid + "';", String.class); } public GameProfile getOfflinePlayer(String name) { return KajetansMod.server.getPlayerProfileCache().getGameProfileForUsername(name); } public String getUUID(String name) { return this.getFirst("SELECT uuid FROM players WHERE name='" + name + "';", String.class); } public Integer getIdByUUID(String uuid) { return this.getFirst("SELECT id FROM players WHERE uuid='" + uuid + "';", Integer.class); } public Integer getIdByName(String name) { return this.getFirst("SELECT id FROM players WHERE name='" + name + "';", Integer.class); } public String getNameById(Integer id) { if(id == null) { return null; } return this.getFirst("SELECT name FROM players WHERE id=" + id + ";", String.class); } }