Finished migration to player UIDs

This commit is contained in:
Ceikry
2022-09-05 13:10:52 +00:00
committed by Ryan
parent 47bd650864
commit 5c5e034db6
12 changed files with 29 additions and 28 deletions
@@ -49,7 +49,7 @@ class CulinomancerShop : LoginListener {
//Retrieve a player's shop - should generate the shop if it does not exist. //Retrieve a player's shop - should generate the shop if it does not exist.
fun getShop(player: Player, food: Boolean): Shop { fun getShop(player: Player, food: Boolean): Shop {
val uid = player.details.usernameHashcode val uid = player.details.uid
val points = player.questRepository.points val points = player.questRepository.points
val tier = (points / 18) val tier = (points / 18)
if (tier != getAttribute(player, "culino-tier", 0)) //If player tier has changed if (tier != getAttribute(player, "culino-tier", 0)) //If player tier has changed
@@ -439,7 +439,7 @@ public class ChristmasEvent extends HolidayEvent {
snowman.faceTemporary(player, 2); snowman.faceTemporary(player, 2);
snowman.setRespawn(false); snowman.setRespawn(false);
snowman.setWalks(true); snowman.setWalks(true);
snowman.setAttribute("owner", player.getDetails().getUsernameHashcode()); snowman.setAttribute("owner", player.getDetails().getUid());
if (!player.getEmoteManager().isUnlocked(Emotes.SNOWMAN_DANCE)) { if (!player.getEmoteManager().isUnlocked(Emotes.SNOWMAN_DANCE)) {
player.getEmoteManager().unlock(Emotes.SNOWMAN_DANCE); player.getEmoteManager().unlock(Emotes.SNOWMAN_DANCE);
player.sendMessage("<col=FF0000>You've unlocked the snowman dance emote!</col>"); player.sendMessage("<col=FF0000>You've unlocked the snowman dance emote!</col>");
@@ -492,7 +492,7 @@ public class ChristmasEvent extends HolidayEvent {
@Override @Override
public boolean open(Object... args) { public boolean open(Object... args) {
npc = (NPC) args[0]; npc = (NPC) args[0];
if (npc.getAttribute("owner", 0) != player.getDetails().getUsernameHashcode()) { if (npc.getAttribute("owner", 0) != player.getDetails().getUid()) {
player.sendMessage("The snowman doesn't seem interested in talking to you."); player.sendMessage("The snowman doesn't seem interested in talking to you.");
return true; return true;
} }
@@ -127,8 +127,8 @@ public class PlayerDetails {
* Gets the uid. * Gets the uid.
* @return the uid. * @return the uid.
*/ */
public int getUsernameHashcode() { //was getUid, but that was such an amazing and descriptive name for what this method actually does that I just had to change it! public int getUid() {
return this.getUsername().hashCode(); //this SHOULD return accountInfo.uid BUT Arios is an amazing codebase, and they used username hashcodes when players already had a UID assigned by the DB. Genius! return accountInfo.getUid();
} }
/** /**
@@ -104,7 +104,7 @@ public class GroundItem extends Item {
* @return {@code True} if so. * @return {@code True} if so.
*/ */
public boolean droppedBy(Player p) { public boolean droppedBy(Player p) {
if (dropper != null && p.getDetails().getUsernameHashcode() == dropper.getDetails().getUsernameHashcode()) { if (dropper != null && p.getDetails().getUid() == dropper.getDetails().getUid()) {
dropper = p; dropper = p;
return true; return true;
} }
@@ -7,6 +7,7 @@ import core.game.world.map.Location;
import core.game.world.map.Region; import core.game.world.map.Region;
import core.game.world.map.RegionManager; import core.game.world.map.RegionManager;
import core.game.world.map.RegionPlane; import core.game.world.map.RegionPlane;
import rs09.game.system.config.ObjectConfigParser;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
@@ -63,7 +63,7 @@ public class GrandExchangeTab extends ConsoleTab {
if (p == null) { if (p == null) {
continue; continue;
} }
if (p.getDetails().getUsernameHashcode() == offer.getUid()) { if (p.getDetails().getUid() == offer.getUid()) {
player = p; player = p;
break; break;
} }
@@ -97,6 +97,7 @@ public final class GameReadEvent extends IoReadEvent {
IncomingPacket packet = PacketRepository.getIncoming(opcode); IncomingPacket packet = PacketRepository.getIncoming(opcode);
session.setLastPing(System.currentTimeMillis()); session.setLastPing(System.currentTimeMillis());
if (packet == null) { if (packet == null) {
SystemLogger.logErr("Unhandled packet [opcode=" + opcode + ", previous=" + last + ", size=" + size + ", header=" + header + "]");
if (GameWorld.getSettings().isDevMode()) { if (GameWorld.getSettings().isDevMode()) {
SystemLogger.logErr("Unhandled packet [opcode=" + opcode + ", previous=" + last + ", size=" + size + ", header=" + header + "]"); SystemLogger.logErr("Unhandled packet [opcode=" + opcode + ", previous=" + last + ", size=" + size + ", header=" + header + "]");
} }
@@ -67,13 +67,13 @@ class Shop(val title: String, val stock: Array<ShopItem>, val general: Boolean =
if(!main) if(!main)
{ {
cont.listeners.remove(listenerInstances[player.username.hashCode()]) cont.listeners.remove(listenerInstances[player.details.uid])
playerStock.listeners.add(listenerInstances[player.username.hashCode()]) playerStock.listeners.add(listenerInstances[player.details.uid])
} }
else else
{ {
playerStock.listeners.remove(listenerInstances[player.username.hashCode()]) playerStock.listeners.remove(listenerInstances[player.details.uid])
cont.listeners.add(listenerInstances[player.username.hashCode()]) cont.listeners.add(listenerInstances[player.details.uid])
} }
val settings = IfaceSettingsBuilder() val settings = IfaceSettingsBuilder()
@@ -98,11 +98,11 @@ class Shop(val title: String, val stock: Array<ShopItem>, val general: Boolean =
public fun getContainer(player: Player) : Container public fun getContainer(player: Player) : Container
{ {
val container = if(getServerConfig().getBoolean(Shops.personalizedShops, false)) val container = if(getServerConfig().getBoolean(Shops.personalizedShops, false))
stockInstances[player.username.hashCode()] ?: generateStockContainer().also { stockInstances[player.username.hashCode()] = it } stockInstances[player.details.uid] ?: generateStockContainer().also { stockInstances[player.details.uid] = it }
else else
stockInstances[ServerConstants.SERVER_NAME.hashCode()]!! stockInstances[ServerConstants.SERVER_NAME.hashCode()]!!
val listener = listenerInstances[player.username.hashCode()] val listener = listenerInstances[player.details.uid]
if(listener != null && listener.player != player) if(listener != null && listener.player != player)
{ {
@@ -111,7 +111,7 @@ class Shop(val title: String, val stock: Array<ShopItem>, val general: Boolean =
if(listener == null || listener.player != player) if(listener == null || listener.player != player)
{ {
listenerInstances[player.username.hashCode()] = ShopListener(player) listenerInstances[player.details.uid] = ShopListener(player)
} }
return container return container
@@ -310,7 +310,7 @@ class Shop(val title: String, val stock: Array<ShopItem>, val general: Boolean =
addItem(player, item.id, item.amount) addItem(player, item.id, item.amount)
if(getServerConfig().getBoolean(Shops.personalizedShops, false)){ if(getServerConfig().getBoolean(Shops.personalizedShops, false)){
needsUpdate[player.username.hashCode()] = true needsUpdate[player.details.uid] = true
} else { } else {
needsUpdate[ServerConstants.SERVER_NAME.hashCode()] = true needsUpdate[ServerConstants.SERVER_NAME.hashCode()] = true
} }
@@ -385,7 +385,7 @@ class Shop(val title: String, val stock: Array<ShopItem>, val general: Boolean =
container?.add(item) container?.add(item)
container?.refresh() container?.refresh()
if(getServerConfig().getBoolean(Shops.personalizedShops, false)){ if(getServerConfig().getBoolean(Shops.personalizedShops, false)){
needsUpdate[player.username.hashCode()] = true needsUpdate[player.details.uid] = true
} else { } else {
needsUpdate[ServerConstants.SERVER_NAME.hashCode()] = true needsUpdate[ServerConstants.SERVER_NAME.hashCode()] = true
} }
@@ -196,10 +196,10 @@ class Shops : StartupListener, TickListener, InteractionListener, InterfaceListe
onClose(Components.SHOP_TEMPLATE_620) { player, _ -> onClose(Components.SHOP_TEMPLATE_620) { player, _ ->
val shop = getAttribute<Shop?>(player, "shop", null) ?: return@onClose true val shop = getAttribute<Shop?>(player, "shop", null) ?: return@onClose true
val listener = Shop.listenerInstances[player.username.hashCode()] ?: return@onClose true val listener = Shop.listenerInstances[player.details.uid] ?: return@onClose true
if(getServerConfig().getBoolean(personalizedShops, false)) if(getServerConfig().getBoolean(personalizedShops, false))
shop.stockInstances[player.username.hashCode()]?.listeners?.remove(listener) shop.stockInstances[player.details.uid]?.listeners?.remove(listener)
else else
shop.stockInstances[ServerConstants.SERVER_NAME.hashCode()]!!.listeners.remove(listener) shop.stockInstances[ServerConstants.SERVER_NAME.hashCode()]!!.listeners.remove(listener)
@@ -14,7 +14,6 @@ import rs09.game.world.GameWorld
import rs09.game.world.repository.Repository import rs09.game.world.repository.Repository
import rs09.tools.stringtools.colorize import rs09.tools.stringtools.colorize
import java.lang.Integer.max import java.lang.Integer.max
import java.sql.ResultSet
import java.util.concurrent.LinkedBlockingDeque import java.util.concurrent.LinkedBlockingDeque
/** /**
@@ -231,9 +230,9 @@ class GrandExchange : StartupListener, Commands {
} }
if ( player.isArtificial ) if ( player.isArtificial )
offer.playerUID = 0.also { offer.isBot = true } offer.playerUID = PlayerDetails.getDetails("2009scape").uid.also { offer.isBot = true }
else else
offer.playerUID = player.details.accountInfo.uid offer.playerUID = player.details.uid
offer.offerState = OfferState.REGISTERED offer.offerState = OfferState.REGISTERED
//GrandExchangeRecords.getInstance(player).update(offer) //GrandExchangeRecords.getInstance(player).update(offer)
@@ -315,10 +314,10 @@ class GrandExchange : StartupListener, Commands {
*/ */
seller.update() seller.update()
val sellerPlayer = Repository.players.firstOrNull { it.details.accountInfo.uid == seller.playerUID } val sellerPlayer = Repository.uid_map[seller.playerUID]
sellerPlayer?.let { GrandExchangeRecords.getInstance(sellerPlayer).visualizeRecords() } sellerPlayer?.let { GrandExchangeRecords.getInstance(sellerPlayer).visualizeRecords() }
buyer.update() buyer.update()
val buyerPlayer = Repository.players.firstOrNull { it.details.accountInfo.uid == buyer.playerUID } val buyerPlayer = Repository.uid_map[buyer.playerUID]
buyerPlayer?.let { GrandExchangeRecords.getInstance(buyerPlayer).visualizeRecords() } buyerPlayer?.let { GrandExchangeRecords.getInstance(buyerPlayer).visualizeRecords() }
} }
@@ -369,4 +368,4 @@ class GrandExchange : StartupListener, Commands {
GEDB.init() GEDB.init()
boot() boot()
} }
} }
@@ -55,7 +55,7 @@ class GrandExchangeRecords(private val player: Player? = null) : PersistPlayer,
GEDB.run { conn -> GEDB.run { conn ->
val stmt = conn.createStatement() val stmt = conn.createStatement()
val offer_records = stmt.executeQuery("SELECT * from player_offers where player_uid = ${player.details.accountInfo.uid} AND offer_state < 6") val offer_records = stmt.executeQuery("SELECT * from player_offers where player_uid = ${player.details.uid} AND offer_state < 6")
while (offer_records.next()) { while (offer_records.next()) {
val offer = GrandExchangeOffer.fromQuery(offer_records) val offer = GrandExchangeOffer.fromQuery(offer_records)
@@ -252,4 +252,4 @@ class GrandExchangeRecords(private val player: Player? = null) : PersistPlayer,
return player?.getAttribute("ge-records", GrandExchangeRecords()) ?: GrandExchangeRecords() return player?.getAttribute("ge-records", GrandExchangeRecords()) ?: GrandExchangeRecords()
} }
} }
} }
@@ -138,14 +138,14 @@ object Repository {
@JvmStatic @JvmStatic
fun addPlayer(player: Player){ fun addPlayer(player: Player){
players.add(player) players.add(player)
uid_map[player.details.usernameHashcode] = player uid_map[player.details.uid] = player
playerNames[player.name] = player playerNames[player.name] = player
} }
@JvmStatic @JvmStatic
fun removePlayer(player: Player){ fun removePlayer(player: Player){
players.remove(player) players.remove(player)
uid_map.remove(player.details.usernameHashcode) uid_map.remove(player.details.uid)
playerNames.remove(player.name) playerNames.remove(player.name)
UpdateSequence.renderablePlayers.remove(player) UpdateSequence.renderablePlayers.remove(player)
} }