Skip to content

Commit d3f61d3

Browse files
committed
Merge branch 'develop'
2 parents e5ca6f4 + 5c2f3c4 commit d3f61d3

File tree

18 files changed

+3561
-3257
lines changed

18 files changed

+3561
-3257
lines changed

Diff for: Kepler-Server/src/main/java/org/alexdev/kepler/dao/mysql/PlayerDao.java

+116-4
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,38 @@ public static boolean login(PlayerDetails player, String username, String passwo
221221
return success;
222222
}
223223

224+
public static boolean login(String username, String password) {
225+
boolean success = false;
226+
227+
Connection sqlConnection = null;
228+
PreparedStatement preparedStatement = null;
229+
ResultSet resultSet = null;
230+
231+
try {
232+
sqlConnection = Storage.getStorage().getConnection();
233+
preparedStatement = Storage.getStorage().prepare("SELECT id, password FROM users WHERE username = ? LIMIT 1", sqlConnection);
234+
preparedStatement.setString(1, username);
235+
resultSet = preparedStatement.executeQuery();
236+
237+
if (resultSet.next()) {
238+
byte[] hashedPassword = (resultSet.getString("password") + '\0').getBytes(StandardCharsets.UTF_8);
239+
byte[] pass = password.getBytes(StandardCharsets.UTF_8);
240+
241+
PwHash.Native pwHash = (PwHash.Native) Kepler.getLibSodium();
242+
success = pwHash.cryptoPwHashStrVerify(hashedPassword, pass, pass.length);
243+
}
244+
245+
} catch (Exception e) {
246+
Storage.logError(e);
247+
} finally {
248+
Storage.closeSilently(resultSet);
249+
Storage.closeSilently(preparedStatement);
250+
Storage.closeSilently(sqlConnection);
251+
}
252+
253+
return success;
254+
}
255+
224256
/**
225257
* Clear SSO ticket
226258
* Protects against replay attacks
@@ -441,6 +473,86 @@ public static void saveMotto(PlayerDetails details) {
441473
}
442474
}
443475

476+
public static void saveReceiveMail(PlayerDetails details) {
477+
Connection sqlConnection = null;
478+
PreparedStatement preparedStatement = null;
479+
480+
try {
481+
sqlConnection = Storage.getStorage().getConnection();
482+
preparedStatement = Storage.getStorage().prepare("UPDATE users SET receive_email = ? WHERE id = ?", sqlConnection);
483+
preparedStatement.setBoolean(1, details.isReceiveNews());
484+
preparedStatement.setInt(2, details.getId());
485+
preparedStatement.execute();
486+
487+
} catch (Exception e) {
488+
Storage.logError(e);
489+
} finally {
490+
Storage.closeSilently(preparedStatement);
491+
Storage.closeSilently(sqlConnection);
492+
}
493+
}
494+
495+
/**
496+
* Update details.
497+
*/
498+
public static void savePassword(int userId, String password) {
499+
Connection sqlConnection = null;
500+
PreparedStatement preparedStatement = null;
501+
502+
try {
503+
sqlConnection = Storage.getStorage().getConnection();
504+
preparedStatement = Storage.getStorage().prepare("UPDATE users SET password = ? WHERE id = ?", sqlConnection);
505+
preparedStatement.setString(1, password);
506+
preparedStatement.setInt(2, userId);
507+
preparedStatement.execute();
508+
509+
} catch (Exception e) {
510+
Storage.logError(e);
511+
} finally {
512+
Storage.closeSilently(preparedStatement);
513+
Storage.closeSilently(sqlConnection);
514+
}
515+
}
516+
517+
public static void saveBirthday(int userId, String birthday) {
518+
Connection sqlConnection = null;
519+
PreparedStatement preparedStatement = null;
520+
521+
try {
522+
sqlConnection = Storage.getStorage().getConnection();
523+
preparedStatement = Storage.getStorage().prepare("UPDATE users SET birthday = ? WHERE id = ?", sqlConnection);
524+
preparedStatement.setString(1, birthday);
525+
preparedStatement.setInt(2, userId);
526+
preparedStatement.execute();
527+
528+
} catch (Exception e) {
529+
Storage.logError(e);
530+
} finally {
531+
Storage.closeSilently(preparedStatement);
532+
Storage.closeSilently(sqlConnection);
533+
}
534+
}
535+
536+
public static void saveEmail(int userId, String email) {
537+
Connection sqlConnection = null;
538+
PreparedStatement preparedStatement = null;
539+
540+
try {
541+
sqlConnection = Storage.getStorage().getConnection();
542+
preparedStatement = Storage.getStorage().prepare("UPDATE users SET email = ? WHERE id = ?", sqlConnection);
543+
preparedStatement.setString(1, email);
544+
preparedStatement.setInt(2, userId);
545+
preparedStatement.execute();
546+
547+
} catch (Exception e) {
548+
Storage.logError(e);
549+
} finally {
550+
Storage.closeSilently(preparedStatement);
551+
Storage.closeSilently(sqlConnection);
552+
}
553+
}
554+
555+
444556
/**
445557
* Update details.
446558
*
@@ -482,10 +594,10 @@ private static void fill(PlayerDetails details, ResultSet row) throws SQLExcepti
482594

483595
details.fill(row.getInt("id"), row.getString("username"), row.getString("figure"),
484596
row.getString("pool_figure"), row.getInt("credits"), row.getString("motto"),
485-
row.getString("console_motto"), row.getString("sex"), row.getInt("tickets"),
486-
row.getInt("film"), row.getInt("rank"), row.getLong("last_online"),
487-
row.getLong("club_subscribed"), row.getLong("club_expiration"), row.getLong("club_gift_due"),
488-
row.getString("badge"),
597+
row.getString("console_motto"), row.getString("sex"), row.getString("birthday"),
598+
row.getInt("tickets"), row.getInt("film"), row.getInt("rank"),
599+
row.getLong("last_online"), row.getLong("club_subscribed"), row.getLong("club_expiration"),
600+
row.getLong("club_gift_due"), row.getString("badge"),
489601
row.getBoolean("badge_active"), row.getBoolean("allow_stalking"),
490602
row.getBoolean("allow_friend_requests"), row.getBoolean("sound_enabled"),
491603
row.getBoolean("tutorial_finished"), row.getInt("battleball_points"),

Diff for: Kepler-Server/src/main/java/org/alexdev/kepler/game/commands/registered/CoordsCommand.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,9 @@ public void handleCommand(Entity entity, String message, String[] args) {
2929
player.send(new ALERT("Your coordinates:<br>" +
3030
"X: " + player.getRoomUser().getPosition().getX() + "<br>" +
3131
"Y: " + player.getRoomUser().getPosition().getY() + "<br>" +
32-
"Z: " + Double.toString(StringUtil.format(player.getRoomUser().getPosition().getZ()))));
32+
"Z: " + Double.toString(StringUtil.format(player.getRoomUser().getPosition().getZ())) + "<br>" + "<br>" +
33+
"Head rotation: " + player.getRoomUser().getPosition().getHeadRotation() + "<br>" +
34+
"Body rotation: " + player.getRoomUser().getPosition().getBodyRotation()));
3335
}
3436

3537
@Override

Diff for: Kepler-Server/src/main/java/org/alexdev/kepler/game/item/interactors/InteractionType.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public enum InteractionType {
3030

3131
POOL_BOOTH(new PoolBoothInteractor()),
3232
POOL_LIFT(new PoolLiftInteractor()),
33-
POOL_QUEUE(new PoolQueueInteractor()),
33+
QUEUE_TILE(new QueueTileInteractor()),
3434
GAME_TIC_TAC_TOE(new TicTacToeTrigger()),
3535
GAME_CHESS(new ChessTrigger()),
3636
GAME_BATTLESHIPS(new BattleShipsTrigger()),

Diff for: Kepler-Server/src/main/java/org/alexdev/kepler/game/item/interactors/types/PoolQueueInteractor.java renamed to Kepler-Server/src/main/java/org/alexdev/kepler/game/item/interactors/types/QueueTileInteractor.java

+8-3
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
import org.alexdev.kepler.game.triggers.GenericTrigger;
1111
import org.alexdev.kepler.messages.outgoing.user.currencies.NO_TICKETS;
1212

13-
public class PoolQueueInteractor extends GenericTrigger {
13+
public class QueueTileInteractor extends GenericTrigger {
1414

1515
@Override
1616
public void onEntityStep(Entity entity, RoomEntity roomEntity, Item item, Position oldPosition) {
@@ -20,6 +20,9 @@ public void onEntityStep(Entity entity, RoomEntity roomEntity, Item item, Positi
2020

2121
Player player = (Player)entity;
2222

23+
if (!roomEntity.getRoom().getData().getModel().equals("pool_b")) {
24+
return;
25+
}
2326
if (player.getDetails().getTickets() == 0 || player.getDetails().getPoolFigure().isEmpty()) {
2427
oldPosition.setRotation(2); // Make user face this way, like the original Lido behaviour
2528
player.getRoomUser().stopWalking();
@@ -39,8 +42,10 @@ public void onEntityStop(Entity entity, RoomEntity roomEntity, Item item, boolea
3942

4043
Player player = (Player)entity;
4144

42-
if (player.getDetails().getTickets() == 0 || player.getDetails().getPoolFigure().isEmpty()) {
43-
return;
45+
if (roomEntity.getRoom().getData().getModel().equals("pool_b")) {
46+
if (player.getDetails().getTickets() == 0 || player.getDetails().getPoolFigure().isEmpty()) {
47+
return;
48+
}
4449
}
4550

4651
// When they stop walking, check if the player is on a pool lido queue and walk to the next one

Diff for: Kepler-Server/src/main/java/org/alexdev/kepler/game/item/public_items/PublicItemParser.java

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package org.alexdev.kepler.game.item.public_items;
22

3-
import org.alexdev.kepler.dao.mysql.ItemDao;
43
import org.alexdev.kepler.dao.mysql.PublicRoomsDao;
54
import org.alexdev.kepler.game.item.Item;
65
import org.alexdev.kepler.game.item.ItemManager;
@@ -24,8 +23,8 @@ public static List<Item> getPublicItems(int roomId, String modelId) {
2423

2524
itemTriggerMap.put("poolLift", InteractionType.POOL_LIFT);
2625
itemTriggerMap.put("poolBooth", InteractionType.POOL_BOOTH);
27-
itemTriggerMap.put("queue_tile2", InteractionType.POOL_QUEUE);
28-
itemTriggerMap.put("s_queue_tile2", InteractionType.POOL_QUEUE);
26+
itemTriggerMap.put("queue_tile2", InteractionType.QUEUE_TILE);
27+
itemTriggerMap.put("s_queue_tile2", InteractionType.QUEUE_TILE);
2928
itemTriggerMap.put("gamehall_chair_wood", InteractionType.GAME_TIC_TAC_TOE);
3029

3130
if (modelId.equals("hallC")) {

Diff for: Kepler-Server/src/main/java/org/alexdev/kepler/game/pathfinder/Pathfinder.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -89,15 +89,15 @@ public static boolean isValidStep(Room room, Entity entity, Position current, Po
8989
|| (fromItem.getDefinition().getSprite().equals("poolEnter") && toItem != null && toItem.getDefinition().getSprite().equals("poolExit")) // No height check when going between pool triggers
9090
|| (fromItem.getDefinition().getSprite().equals("poolExit") && toItem != null && toItem.getDefinition().getSprite().equals("poolEnter")) // No height check when going between pool triggers
9191
|| fromItem.getDefinition().getSprite().equals("poolLift")
92-
|| fromItem.getDefinition().getSprite().equals("queue_tile2"));
92+
|| fromItem.getDefinition().getSprite().equals("queue_tile2") && room.getData().getModel().equals("pool_b"));
9393

9494
boolean toItemHeightExempt = toItem != null && (toItem.hasBehaviour(ItemBehaviour.TELEPORTER)
9595
|| toItem.getDefinition().getSprite().equals("wsJoinQueue")
9696
|| toItem.getDefinition().getSprite().equals("wsQueueTile")
9797
|| (toItem.getDefinition().getSprite().equals("poolEnter") && fromItem != null && fromItem.getDefinition().getSprite().equals("poolExit")) // No height check when going between pool triggers
9898
|| (toItem.getDefinition().getSprite().equals("poolExit") && fromItem != null && fromItem.getDefinition().getSprite().equals("poolEnter")) // No height check when going between pool triggers
9999
|| toItem.getDefinition().getSprite().equals("poolLift")
100-
|| toItem.getDefinition().getSprite().equals("queue_tile2"));
100+
|| toItem.getDefinition().getSprite().equals("queue_tile2") && room.getData().getModel().equals("pool_b"));
101101

102102
// Pathfinder makes the path from reversed, so we compare the drop reversed (To tile height against From tile height)
103103
if (toTile.isHeightUpwards(fromTile) && (!fromItemHeightExempt && !toItemHeightExempt)) {

Diff for: Kepler-Server/src/main/java/org/alexdev/kepler/game/player/PlayerDetails.java

+12-1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ public class PlayerDetails {
2323
private String motto;
2424
private String consoleMotto;
2525
private char sex;
26+
private String birthday;
2627
private boolean receiveNews;
2728

2829
// Currencies
@@ -80,7 +81,7 @@ public PlayerDetails() {
8081
* @param battleballPoints the points accumulated when playing battleball
8182
* @param snowstormPoints the points accumulated when playing snowstorm
8283
*/
83-
public void fill(int id, String username, String figure, String poolFigure, int credits, String motto, String consoleMotto, String sex, int tickets, int film, int rank, long lastOnline, long firstClubSubscription, long clubExpiration, long clubGiftDue, String currentBadge, boolean showBadge, boolean allowStalking, boolean allowFriendRequests, boolean soundEnabled,
84+
public void fill(int id, String username, String figure, String poolFigure, int credits, String motto, String consoleMotto, String sex, String birthday, int tickets, int film, int rank, long lastOnline, long firstClubSubscription, long clubExpiration, long clubGiftDue, String currentBadge, boolean showBadge, boolean allowStalking, boolean allowFriendRequests, boolean soundEnabled,
8485
boolean tutorialFinished, int battleballPoints, int snowstormPoints) {
8586
this.id = id;
8687
this.username = StringUtil.filterInput(username, true);
@@ -89,6 +90,7 @@ public void fill(int id, String username, String figure, String poolFigure, int
8990
this.motto = StringUtil.filterInput(motto, true);
9091
this.consoleMotto = StringUtil.filterInput(consoleMotto, true);
9192
this.sex = sex.toLowerCase().equals("f") ? 'F' : 'M';
93+
this.birthday = birthday;
9294
this.credits = credits;
9395
this.tickets = tickets;
9496
this.film = film;
@@ -214,6 +216,7 @@ public void setMotto(String motto) {
214216
this.motto = motto;
215217
}
216218

219+
217220
public String getConsoleMotto() {
218221
return consoleMotto;
219222
}
@@ -383,4 +386,12 @@ public boolean isReceiveNews() {
383386
public void setReceiveNews(boolean receiveNews) {
384387
this.receiveNews = receiveNews;
385388
}
389+
390+
public String getBirthday() {
391+
return birthday;
392+
}
393+
394+
public void setBirthday(String birthday) {
395+
this.birthday = birthday;
396+
}
386397
}

Diff for: Kepler-Server/src/main/java/org/alexdev/kepler/game/player/PlayerManager.java

+13-13
Original file line numberDiff line numberDiff line change
@@ -313,19 +313,19 @@ public String createPassword(String password) throws Exception {
313313
*/
314314
public LinkedHashMap<Integer, RegisterValue> getRegisterValues() {
315315
var registerValues = new LinkedHashMap<Integer, RegisterValue>();
316-
registerValues.put(1, new RegisterValue("parentagree", 1, RegisterDataType.BOOLEAN));
317-
registerValues.put(2, new RegisterValue("name", 2, RegisterDataType.STRING));
318-
registerValues.put(3, new RegisterValue("password", 3, RegisterDataType.STRING));
319-
registerValues.put(4, new RegisterValue("figure", 4, RegisterDataType.STRING));
320-
registerValues.put(5, new RegisterValue("sex", 5, RegisterDataType.STRING));
321-
registerValues.put(6, new RegisterValue("customData", 6, RegisterDataType.STRING));
322-
registerValues.put(7, new RegisterValue("email", 7, RegisterDataType.STRING));
323-
registerValues.put(8, new RegisterValue("birthday", 8, RegisterDataType.STRING));
324-
registerValues.put(9, new RegisterValue("directMail", 9, RegisterDataType.BOOLEAN));
325-
registerValues.put(10, new RegisterValue("has_read_agreement", 10, RegisterDataType.BOOLEAN));
326-
registerValues.put(11, new RegisterValue("isp_id", 11, RegisterDataType.STRING));
327-
registerValues.put(12, new RegisterValue("partnersite", 12, RegisterDataType.STRING));
328-
registerValues.put(13, new RegisterValue("oldpassword", 13, RegisterDataType.STRING));
316+
registerValues.put(1, new RegisterValue("parentagree", RegisterDataType.BOOLEAN));
317+
registerValues.put(2, new RegisterValue("name", RegisterDataType.STRING));
318+
registerValues.put(3, new RegisterValue("password", RegisterDataType.STRING));
319+
registerValues.put(4, new RegisterValue("figure", RegisterDataType.STRING));
320+
registerValues.put(5, new RegisterValue("sex", RegisterDataType.STRING));
321+
registerValues.put(6, new RegisterValue("customData", RegisterDataType.STRING));
322+
registerValues.put(7, new RegisterValue("email", RegisterDataType.STRING));
323+
registerValues.put(8, new RegisterValue("birthday", RegisterDataType.STRING));
324+
registerValues.put(9, new RegisterValue("directMail", RegisterDataType.BOOLEAN));
325+
registerValues.put(10, new RegisterValue("has_read_agreement", RegisterDataType.BOOLEAN));
326+
registerValues.put(11, new RegisterValue("isp_id", RegisterDataType.STRING));
327+
registerValues.put(12, new RegisterValue("partnersite", RegisterDataType.STRING));
328+
registerValues.put(13, new RegisterValue("oldpassword", RegisterDataType.STRING));
329329
return registerValues;
330330
}
331331

Diff for: Kepler-Server/src/main/java/org/alexdev/kepler/game/player/register/RegisterValue.java

+1-7
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,20 @@
11
package org.alexdev.kepler.game.player.register;
22

33
public class RegisterValue {
4-
private int id;
54
private String label;
65
private RegisterDataType dataType;
76
private String value;
87
private boolean flag;
98

10-
public RegisterValue(String label, int id, RegisterDataType dataType) {
9+
public RegisterValue(String label, RegisterDataType dataType) {
1110
this.label = label;
12-
this.id = id;
1311
this.dataType = dataType;
1412
}
1513

1614
public RegisterDataType getDataType() {
1715
return dataType;
1816
}
1917

20-
public int getId() {
21-
return id;
22-
}
23-
2418
public boolean getFlag() {
2519
return flag;
2620
}

Diff for: Kepler-Server/src/main/java/org/alexdev/kepler/game/room/tasks/StatusTask.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -103,9 +103,11 @@ public static void processPoolQueue(Player player) {
103103
return;
104104
}
105105

106-
if (player.getRoomUser().getRoom() != null && !player.getRoomUser().getRoom().getModel().getName().equals("pool_b")) {
106+
/*
107+
if (player.getRoomUser().getRoom() == null && !player.getRoomUser().getRoom().getModel().getName().equals("pool_b")) {
107108
return;
108109
}
110+
*/
109111

110112
if (player.getRoomUser().isWalking()) {
111113
return;

Diff for: Kepler-Server/src/main/java/org/alexdev/kepler/messages/MessageHandler.java

+2
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@
5353
import org.alexdev.kepler.messages.incoming.user.*;
5454
import org.alexdev.kepler.messages.incoming.user.settings.GET_ACCOUNT_PREFERENCES;
5555
import org.alexdev.kepler.messages.incoming.user.settings.GET_SOUND_SETTING;
56+
import org.alexdev.kepler.messages.incoming.user.settings.UPDATE_ACCOUNT;
5657
import org.alexdev.kepler.messages.incoming.welcomingparty.ACCEPT_TUTOR_INVITATION;
5758
import org.alexdev.kepler.messages.incoming.welcomingparty.REJECT_TUTOR_INVITATION;
5859
import org.alexdev.kepler.messages.incoming.wobblesquabble.PTM;
@@ -158,6 +159,7 @@ private void registerUserPackets() {
158159
registerEvent(322, new UNIGNORE_USER());
159160
registerEvent(228, new GET_SOUND_SETTING());
160161
registerEvent(9, new GETAVAILABLESETS());
162+
registerEvent(149, new UPDATE_ACCOUNT());
161163
//registerEvent(315, new TEST_LATENCY());
162164
}
163165

0 commit comments

Comments
 (0)