Show Scoreboard below name and top screen
This commit is contained in:
		| @ -41,7 +41,7 @@ public class DatabaseManager { | ||||
| 	private void InitVoids() throws SQLException{ | ||||
| 		String query = "CREATE TABLE IF NOT EXISTS voids (\n" | ||||
| 			+ "id integer PRIMARY KEY,\n" | ||||
| 			+ "uuid text NOT NULL,\n" | ||||
| 			+ "uuid text NOT NULL UNIQUE,\n" | ||||
| 			+ "amount INTEGER DEFAULT 0)"; | ||||
|  | ||||
| 		Statement st = con.createStatement(); | ||||
| @ -49,25 +49,34 @@ public class DatabaseManager { | ||||
| 		st.close(); | ||||
| 	} | ||||
|  | ||||
| 	public int getVoids(UUID uuid) throws SQLException{ | ||||
| 		Statement st = con.createStatement(); | ||||
| 		String query = "SELECT amount FROM voids WHERE uuid = ? LIMIT 1"; | ||||
| 		PreparedStatement p = con.prepareStatement(query); | ||||
| 		p.setString(1, uuid.toString()); | ||||
| 		ResultSet rs = p.executeQuery(); | ||||
| 		int value = rs.getInt(1); | ||||
| 		st.close(); | ||||
| 		return value; | ||||
| 	public int getVoids(UUID uuid){ | ||||
| 		try { | ||||
| 			Statement st = con.createStatement(); | ||||
| 			String query = "SELECT amount FROM voids WHERE uuid = ? LIMIT 1"; | ||||
| 			PreparedStatement p = con.prepareStatement(query); | ||||
| 			p.setString(1, uuid.toString()); | ||||
| 			ResultSet rs = p.executeQuery(); | ||||
| 			int value = rs.getInt(1); | ||||
| 			st.close(); | ||||
| 			return value; | ||||
| 		} catch(Exception e){ | ||||
| 			e.printStackTrace(); | ||||
| 		} | ||||
| 		return 0; | ||||
| 	} | ||||
|  | ||||
| 	public void setVoids(UUID uuid, int amount) throws SQLException{ | ||||
| 		Statement st = con.createStatement(); | ||||
| 		String query = "INSERT OR REPLACE INTO voids (uuid, amount) VALUES (?, ?)"; | ||||
| 		PreparedStatement p = con.prepareStatement(query); | ||||
| 		p.setString(1, uuid.toString()); | ||||
| 		p.setInt(2, amount); | ||||
| 		p.execute(); | ||||
| 		st.close(); | ||||
| 	public void setVoids(UUID uuid, int amount) { | ||||
| 		try { | ||||
| 			Statement st = con.createStatement(); | ||||
| 			String query = "INSERT OR REPLACE INTO voids (uuid, amount) VALUES (?, ?)"; | ||||
| 			PreparedStatement p = con.prepareStatement(query); | ||||
| 			p.setString(1, uuid.toString()); | ||||
| 			p.setInt(2, amount); | ||||
| 			p.execute(); | ||||
| 			st.close(); | ||||
| 		} catch(Exception e){ | ||||
| 			e.printStackTrace(); | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
|     public HashMap<UUID, Integer> getVoidsScoreboard() throws SQLException{ | ||||
|  | ||||
| @ -15,6 +15,9 @@ import org.bukkit.entity.Player; | ||||
| import org.bukkit.entity.Villager; | ||||
| import org.bukkit.event.EventHandler; | ||||
| import org.bukkit.event.Listener; | ||||
| import org.bukkit.event.inventory.InventoryAction; | ||||
| import org.bukkit.event.inventory.InventoryClickEvent; | ||||
| import org.bukkit.event.inventory.InventoryInteractEvent; | ||||
| import org.bukkit.event.player.PlayerInteractEntityEvent; | ||||
| import org.bukkit.event.player.PlayerInteractEvent; | ||||
| import org.bukkit.event.world.EntitiesLoadEvent; | ||||
| @ -25,6 +28,7 @@ import org.bukkit.persistence.PersistentDataType; | ||||
| import net.kyori.adventure.text.Component; | ||||
| import ovh.herisson.thevoidroad.DatabaseManager; | ||||
| import ovh.herisson.thevoidroad.TheVoidRoad; | ||||
| import ovh.herisson.thevoidroad.Voids; | ||||
| import ovh.herisson.thevoidroad.Event.HourEvent; | ||||
| import ovh.herisson.thevoidroad.util.Tuple; | ||||
|  | ||||
| @ -54,7 +58,8 @@ public class Merchand implements Listener{ | ||||
| 		} catch(Exception e){ | ||||
| 			e.printStackTrace(); | ||||
| 		} | ||||
| 		if(DatabaseManager.getInstance().getConfig("init").equalsIgnoreCase("true")){ | ||||
| 		if(DatabaseManager.getInstance().getConfig("init") != null && | ||||
| 				DatabaseManager.getInstance().getConfig("init").equalsIgnoreCase("true")){ | ||||
| 			regenerate(); | ||||
| 		} | ||||
| 	} | ||||
| @ -121,4 +126,26 @@ public class Merchand implements Listener{ | ||||
| 			e.getPlayer().setCompassTarget(m.getLocation()); | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	//Inventory interaction | ||||
| 	@EventHandler | ||||
| 	public void ClickInsideInventory(InventoryClickEvent e){ | ||||
| 		// Did the click the right slot in the right inventory | ||||
| 		if(!e.getInventory().equals(inv)) return; | ||||
| 		e.setCancelled(true); | ||||
| 		if(!e.getInventory().equals(inv) || e.getSlot() != 4) return; | ||||
|  | ||||
| 		if(e.getWhoClicked() instanceof Player ply){ | ||||
| 			//Do we have the item and if so remove them | ||||
| 			if(ply.getInventory().contains(current.x)){ | ||||
| 				for (ItemStack i : ply.getInventory().getContents()) { | ||||
| 					if(i.getType() == current.x){ | ||||
| 						i.subtract(1); | ||||
| 						Voids.add(ply, current.y); | ||||
| 						return; | ||||
| 					} | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|  | ||||
| @ -29,7 +29,7 @@ public class TheVoidRoad extends JavaPlugin{ | ||||
| 		//Events | ||||
| 		getServer().getPluginManager().registerEvents(new HourEvent(), this); //For HourEvent | ||||
| 		getServer().getPluginManager().registerEvents(Merchand.getInstance(), this); | ||||
|  | ||||
| 		getServer().getPluginManager().registerEvents(new Voids(), this); | ||||
| 	} | ||||
|  | ||||
| 	@Override | ||||
|  | ||||
| @ -6,46 +6,44 @@ import java.util.UUID; | ||||
|  | ||||
| import org.bukkit.Bukkit; | ||||
| import org.bukkit.entity.Player; | ||||
| import org.bukkit.event.EventHandler; | ||||
| import org.bukkit.event.Listener; | ||||
| import org.bukkit.event.player.PlayerJoinEvent; | ||||
| import org.bukkit.scoreboard.Criteria; | ||||
| import org.bukkit.scoreboard.DisplaySlot; | ||||
| import org.bukkit.scoreboard.Objective; | ||||
| import org.bukkit.scoreboard.RenderType; | ||||
| import org.bukkit.scoreboard.Score; | ||||
| import org.bukkit.scoreboard.Scoreboard; | ||||
| import org.bukkit.scoreboard.ScoreboardManager; | ||||
|  | ||||
| public final class Voids{	 | ||||
| import net.kyori.adventure.bossbar.BossBar; | ||||
| import net.kyori.adventure.text.Component; | ||||
|  | ||||
| 	private Voids(){} // Prohib the instantiation  | ||||
| public final class Voids implements Listener{ | ||||
|  | ||||
| 	private static HashMap<Player, BossBar> bossbars = new HashMap<>(); | ||||
|  | ||||
| 	public static int get(Player ply){ | ||||
| 		try { | ||||
| 			return TheVoidRoad.db.getVoids(ply.getUniqueId()); | ||||
| 		} catch(SQLException e){ | ||||
| 			e.printStackTrace(); | ||||
| 		} | ||||
| 		return 0; | ||||
| 		return TheVoidRoad.db.getVoids(ply.getUniqueId()); | ||||
| 	} | ||||
|  | ||||
| 	public static void set(Player ply, int amount){ | ||||
| 		try { | ||||
| 			TheVoidRoad.db.setVoids(ply.getUniqueId(), amount); | ||||
|  | ||||
| 		} catch(SQLException e){ | ||||
| 			e.printStackTrace(); | ||||
| 		} | ||||
| 		TheVoidRoad.db.setVoids(ply.getUniqueId(), amount); | ||||
| 		UpdateVoids(ply); | ||||
| 	} | ||||
|  | ||||
| 	public static void add(Player ply, int amount){ | ||||
| 		try { | ||||
| 			int curr = TheVoidRoad.db.getVoids(ply.getUniqueId()); | ||||
| 			TheVoidRoad.db.setVoids(ply.getUniqueId(), curr + amount); | ||||
| 		} catch(SQLException e){ | ||||
| 			e.printStackTrace(); | ||||
| 		} | ||||
| 		int curr = DatabaseManager.getInstance().getVoids(ply.getUniqueId()); | ||||
| 		DatabaseManager.getInstance().setVoids(ply.getUniqueId(), curr + amount); | ||||
| 		UpdateVoids(ply); | ||||
| 	}  | ||||
| 	 | ||||
| 	public static boolean subtract(Player ply, int amount, boolean force){ | ||||
| 		try { | ||||
| 			int curr = TheVoidRoad.db.getVoids(ply.getUniqueId()); | ||||
| 			if(curr - amount < 0 && !force) return false; | ||||
| 			TheVoidRoad.db.setVoids(ply.getUniqueId(), curr - amount); | ||||
| 		} catch(SQLException e){ | ||||
| 			e.printStackTrace(); | ||||
| 		} | ||||
| 		int curr = TheVoidRoad.db.getVoids(ply.getUniqueId()); | ||||
| 		if(curr - amount < 0 && !force) return false; | ||||
| 		TheVoidRoad.db.setVoids(ply.getUniqueId(), curr - amount); | ||||
| 		UpdateVoids(ply); | ||||
| 		return true; | ||||
| 	}  | ||||
|  | ||||
| @ -69,4 +67,28 @@ public final class Voids{ | ||||
| 		} | ||||
| 		return ret; | ||||
| 	} | ||||
|  | ||||
| 	public static void UpdateVoids(Player ply){ | ||||
| 		Integer count = get(ply); | ||||
| 		String countString = count.toString() + TheVoidRoad.CoinGlyph; | ||||
|  | ||||
| 		Scoreboard sb = Bukkit.getScoreboardManager().getMainScoreboard(); | ||||
| 		Objective o = sb.getObjective("VOIDS") != null ? sb.getObjective("VOIDS") : sb.registerNewObjective("VOIDS", Criteria.DUMMY, "voids"); | ||||
| 		o.setDisplaySlot(DisplaySlot.BELOW_NAME); | ||||
| 		o.displayName(Component.text(TheVoidRoad.CoinGlyph)); | ||||
| 		Score s = o.getScore(ply); | ||||
| 		s.setScore(count); | ||||
|  | ||||
| 		BossBar bb = bossbars.containsKey(ply) ? | ||||
| 		   	bossbars.get(ply).name(Component.text(countString)) : | ||||
| 		   	BossBar.bossBar(Component.text(countString), 1, BossBar.Color.GREEN, BossBar.Overlay.PROGRESS); | ||||
|  | ||||
| 		bossbars.put(ply, bb); | ||||
| 		ply.showBossBar(bb); | ||||
| 	} | ||||
|  | ||||
| 	@EventHandler | ||||
| 	public void UpdateVoids(PlayerJoinEvent e){ | ||||
| 		UpdateVoids(e.getPlayer()); | ||||
| 	} | ||||
| } | ||||
|  | ||||
		Reference in New Issue
	
	Block a user