From 8a136d84f473a7c4838ff61d883416c9f934e2d0 Mon Sep 17 00:00:00 2001 From: SlaveOfMagicbot Date: Fri, 9 Oct 2026 20:12:23 -0500 Subject: [PATCH] refactor: migrate JodaTime to java.time (rebuild on subdate2 ab96cfc) Complete the JodaTime -> java.time migration across 30 files on the correct subdate2 base. No org.joda references remain. --- src/engine/db/archive/BaneRecord.java | 21 +++++---- src/engine/db/handlers/dbBaneHandler.java | 6 +-- src/engine/db/handlers/dbBuildingHandler.java | 15 ++++--- src/engine/db/handlers/dbGuildHandler.java | 6 +-- src/engine/db/handlers/dbMobHandler.java | 7 +-- src/engine/db/handlers/dbNPCHandler.java | 7 +-- src/engine/db/handlers/dbShrineHandler.java | 6 +-- .../db/handlers/dbWarehouseHandler.java | 6 +-- src/engine/gameManager/BuildingManager.java | 2 +- src/engine/gameManager/GuildManager.java | 10 ++--- src/engine/jobs/BaneDefaultTimeJob.java | 9 ++-- src/engine/net/ByteBufferWriter.java | 17 +++---- src/engine/net/NetMsgFactory.java | 4 +- .../handlers/AcceptInviteToGuildHandler.java | 6 +-- .../handlers/BanishUnbanishHandler.java | 6 +-- .../handlers/ManageCityAssetMsgHandler.java | 9 ++-- .../client/handlers/PlaceAssetMsgHandler.java | 14 +++--- .../msg/ArcMineWindowAvailableTimeMsg.java | 19 ++++---- .../net/client/msg/ManageCityAssetsMsg.java | 33 ++++++-------- src/engine/net/client/msg/ManageNPCMsg.java | 44 +++++++++---------- .../net/client/msg/guild/GuildInfoMsg.java | 6 +-- src/engine/objects/Bane.java | 40 ++++++++--------- src/engine/objects/Guild.java | 6 +-- src/engine/objects/GuildHistory.java | 15 ++++--- src/engine/objects/Mob.java | 17 +++---- src/engine/objects/NPC.java | 19 ++++---- src/engine/objects/PlayerCharacter.java | 9 ++-- src/engine/objects/Transaction.java | 12 ++--- src/engine/objects/Warehouse.java | 6 +-- src/engine/workthreads/HourlyJobThread.java | 3 +- 30 files changed, 184 insertions(+), 196 deletions(-) diff --git a/src/engine/db/archive/BaneRecord.java b/src/engine/db/archive/BaneRecord.java index 4aa9508b..5ba91240 100644 --- a/src/engine/db/archive/BaneRecord.java +++ b/src/engine/db/archive/BaneRecord.java @@ -14,7 +14,6 @@ import engine.mbEnums; import engine.objects.Bane; import engine.objects.City; import engine.workthreads.WarehousePushThread; -import org.joda.time.DateTime; import org.pmw.tinylog.Logger; import java.sql.*; @@ -34,8 +33,8 @@ public class BaneRecord extends DataRecord { private String baneDropperHash; private String baneGuildHash; private String baneNationHash; - private DateTime baneLiveTime; - private DateTime baneDropTime; + private LocalDateTime baneLiveTime; + private LocalDateTime baneDropTime; private BaneRecord(Bane bane) { this.recordType = mbEnums.DataRecordType.BANE; @@ -129,9 +128,9 @@ public class BaneRecord extends DataRecord { return outStatement; } - public static DateTime getLastBaneDateTime(City city) { + public static LocalDateTime getLastBaneDateTime(City city) { - DateTime outDateTime = null; + LocalDateTime outDateTime = null; try (Connection connection = DbManager.getConnection(); PreparedStatement statement = buildDateTimeQueryStatement(connection, city); @@ -139,7 +138,7 @@ public class BaneRecord extends DataRecord { while (rs.next()) { - outDateTime = new DateTime(rs.getTimestamp("endDatetime")); + outDateTime = rs.getTimestamp("endDatetime").toLocalDateTime(); } @@ -160,7 +159,7 @@ public class BaneRecord extends DataRecord { } - public static void updateLiveDate(Bane bane, DateTime dateTime) { + public static void updateLiveDate(Bane bane, LocalDateTime dateTime) { if (bane == null) return; @@ -175,13 +174,13 @@ public class BaneRecord extends DataRecord { } } - private static PreparedStatement buildUpdateLiveDateStatement(Connection connection, Bane bane, DateTime dateTime) throws SQLException { + private static PreparedStatement buildUpdateLiveDateStatement(Connection connection, Bane bane, LocalDateTime dateTime) throws SQLException { PreparedStatement outStatement = null; String queryString = "UPDATE `warehouse_banehistory` SET `liveDatetime` = ?, `dirty` = 1 WHERE `city_id` = ? AND `resolution` = 'PENDING'"; outStatement = connection.prepareStatement(queryString); - outStatement.setTimestamp(1, new java.sql.Timestamp(dateTime.getMillis())); + outStatement.setTimestamp(1, Timestamp.valueOf(dateTime)); outStatement.setString(2, bane.getCity().getHash()); return outStatement; @@ -366,12 +365,12 @@ public class BaneRecord extends DataRecord { if (this.baneDropTime == null) outStatement.setNull(8, java.sql.Types.DATE); else - outStatement.setTimestamp(8, new java.sql.Timestamp(this.baneDropTime.getMillis())); + outStatement.setTimestamp(8, Timestamp.valueOf(this.baneDropTime)); if (this.baneLiveTime == null) outStatement.setNull(9, java.sql.Types.DATE); else - outStatement.setTimestamp(9, new java.sql.Timestamp(this.baneLiveTime.getMillis())); + outStatement.setTimestamp(9, Timestamp.valueOf(this.baneLiveTime)); outStatement.setString(10, this.eventType.name()); diff --git a/src/engine/db/handlers/dbBaneHandler.java b/src/engine/db/handlers/dbBaneHandler.java index 5f12389e..d392fe00 100644 --- a/src/engine/db/handlers/dbBaneHandler.java +++ b/src/engine/db/handlers/dbBaneHandler.java @@ -14,7 +14,7 @@ import engine.objects.Bane; import engine.objects.Building; import engine.objects.City; import engine.objects.PlayerCharacter; -import org.joda.time.DateTime; +import java.time.LocalDateTime; import org.pmw.tinylog.Logger; import java.sql.Connection; @@ -71,12 +71,12 @@ public class dbBaneHandler extends dbHandlerBase { } - public boolean SET_BANE_TIME(DateTime toSet, int cityUUID) { + public boolean SET_BANE_TIME(LocalDateTime toSet, int cityUUID) { try (Connection connection = DbManager.getConnection(); PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `dyn_banes` SET `liveDate`=? WHERE `cityUUID`=?")) { - preparedStatement.setTimestamp(1, new java.sql.Timestamp(toSet.getMillis())); + preparedStatement.setTimestamp(1, java.sql.Timestamp.valueOf(toSet)); preparedStatement.setLong(2, cityUUID); preparedStatement.execute(); diff --git a/src/engine/db/handlers/dbBuildingHandler.java b/src/engine/db/handlers/dbBuildingHandler.java index f14ea4fa..4b6a507a 100644 --- a/src/engine/db/handlers/dbBuildingHandler.java +++ b/src/engine/db/handlers/dbBuildingHandler.java @@ -17,7 +17,9 @@ import engine.mbEnums.DbObjectType; import engine.mbEnums.ProtectionState; import engine.mbEnums.TaxType; import engine.objects.*; -import org.joda.time.DateTime; +import java.time.Instant; +import java.time.LocalDateTime; +import java.time.ZoneId; import org.pmw.tinylog.Logger; import java.sql.Connection; @@ -40,7 +42,7 @@ public class dbBuildingHandler extends dbHandlerBase { public Building CREATE_BUILDING(int parentZoneID, int OwnerUUID, String name, int meshUUID, Vector3fImmutable location, float meshScale, int currentHP, ProtectionState protectionState, int currentGold, int rank, - DateTime upgradeDate, int blueprintUUID, float w, float rotY) { + Instant upgradeDate, int blueprintUUID, float w, float rotY) { Building building = null; @@ -61,7 +63,7 @@ public class dbBuildingHandler extends dbHandlerBase { preparedStatement.setInt(12, rank); if (upgradeDate != null) - preparedStatement.setTimestamp(13, new java.sql.Timestamp(upgradeDate.getMillis())); + preparedStatement.setTimestamp(13, new java.sql.Timestamp(upgradeDate.toEpochMilli())); else preparedStatement.setNull(13, java.sql.Types.DATE); @@ -749,7 +751,7 @@ public class dbBuildingHandler extends dbHandlerBase { return false; } - public boolean updateBuildingUpgradeTime(LocalDateTime upgradeDateTime, Building toUpgrade, int costToUpgrade) { + public boolean updateBuildingUpgradeTime(Instant upgradeDateTime, Building toUpgrade, int costToUpgrade) { try (Connection connection = DbManager.getConnection(); PreparedStatement preparedStatement = connection.prepareStatement("UPDATE obj_building SET upgradeDate=?, currentGold=? " @@ -758,8 +760,7 @@ public class dbBuildingHandler extends dbHandlerBase { if (upgradeDateTime == null) preparedStatement.setNull(1, java.sql.Types.DATE); else - preparedStatement.setTimestamp(1, new java.sql.Timestamp(upgradeDateTime.atZone(ZoneId.systemDefault()) - .toInstant().toEpochMilli())); + preparedStatement.setTimestamp(1, new java.sql.Timestamp(upgradeDateTime.toEpochMilli())); preparedStatement.setInt(2, toUpgrade.getStrongboxValue() - costToUpgrade); preparedStatement.setInt(3, toUpgrade.getObjectUUID()); @@ -838,7 +839,7 @@ public class dbBuildingHandler extends dbHandlerBase { PreparedStatement preparedStatement = connection.prepareStatement("UPDATE obj_building SET taxDate=? " + "WHERE UID = ?")) { - preparedStatement.setTimestamp(1, new java.sql.Timestamp(DateTime.now().plusDays(7).getMillis())); + preparedStatement.setTimestamp(1, new java.sql.Timestamp(Instant.now().plus(7, java.time.temporal.ChronoUnit.DAYS).toEpochMilli())); preparedStatement.setInt(2, building.getObjectUUID()); return (preparedStatement.executeUpdate() > 0); diff --git a/src/engine/db/handlers/dbGuildHandler.java b/src/engine/db/handlers/dbGuildHandler.java index e7ed61e0..7d5b1993 100644 --- a/src/engine/db/handlers/dbGuildHandler.java +++ b/src/engine/db/handlers/dbGuildHandler.java @@ -14,7 +14,7 @@ import engine.mbEnums; import engine.mbEnums.GuildHistoryType; import engine.objects.*; import engine.server.world.WorldServer; -import org.joda.time.DateTime; +import java.time.Instant; import org.pmw.tinylog.Logger; import java.sql.*; @@ -125,7 +125,7 @@ public class dbGuildHandler extends dbHandlerBase { return false; } - public boolean ADD_TO_GUILDHISTORY(int target, PlayerCharacter playerCharacter, DateTime historyDate, GuildHistoryType historyType) { + public boolean ADD_TO_GUILDHISTORY(int target, PlayerCharacter playerCharacter, Instant historyDate, GuildHistoryType historyType) { try (Connection connection = DbManager.getConnection(); PreparedStatement preparedStatement = connection.prepareStatement("INSERT INTO `dyn_character_guildhistory` (`GuildID`, `CharacterID`, `historyDate`, `historyType`) VALUES (?,?,?,?)")) { @@ -136,7 +136,7 @@ public class dbGuildHandler extends dbHandlerBase { if (historyDate == null) preparedStatement.setNull(3, java.sql.Types.DATE); else - preparedStatement.setTimestamp(3, new Timestamp(historyDate.getMillis())); + preparedStatement.setTimestamp(3, java.sql.Timestamp.from(historyDate)); preparedStatement.setString(4, historyType.name()); diff --git a/src/engine/db/handlers/dbMobHandler.java b/src/engine/db/handlers/dbMobHandler.java index 172d8541..f92e2f11 100644 --- a/src/engine/db/handlers/dbMobHandler.java +++ b/src/engine/db/handlers/dbMobHandler.java @@ -12,7 +12,8 @@ package engine.db.handlers; import engine.gameManager.DbManager; import engine.mbEnums; import engine.objects.Mob; -import org.joda.time.DateTime; +import java.time.LocalDateTime; +import java.time.ZoneId; import org.pmw.tinylog.Logger; import java.sql.Connection; @@ -82,7 +83,7 @@ public class dbMobHandler extends dbHandlerBase { return mobileList; } - public boolean updateUpgradeTime(Mob mob, DateTime upgradeDateTime) { + public boolean updateUpgradeTime(Mob mob, LocalDateTime upgradeDateTime) { try (Connection connection = DbManager.getConnection(); PreparedStatement preparedStatement = connection.prepareStatement("UPDATE obj_mob SET upgradeDate=? " @@ -91,7 +92,7 @@ public class dbMobHandler extends dbHandlerBase { if (upgradeDateTime == null) preparedStatement.setNull(1, java.sql.Types.DATE); else - preparedStatement.setTimestamp(1, new java.sql.Timestamp(upgradeDateTime.getMillis())); + preparedStatement.setTimestamp(1, new java.sql.Timestamp(upgradeDateTime.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli())); preparedStatement.setInt(2, mob.getObjectUUID()); diff --git a/src/engine/db/handlers/dbNPCHandler.java b/src/engine/db/handlers/dbNPCHandler.java index 300aa4a0..d13e79c6 100644 --- a/src/engine/db/handlers/dbNPCHandler.java +++ b/src/engine/db/handlers/dbNPCHandler.java @@ -15,7 +15,8 @@ import engine.mbEnums; import engine.mbEnums.ProfitType; import engine.objects.NPC; import engine.objects.NPCProfits; -import org.joda.time.DateTime; +import java.time.LocalDateTime; +import java.time.ZoneId; import org.pmw.tinylog.Logger; import java.sql.Connection; @@ -240,7 +241,7 @@ public class dbNPCHandler extends dbHandlerBase { } } - public boolean updateUpgradeTime(NPC npc, DateTime upgradeDateTime) { + public boolean updateUpgradeTime(NPC npc, LocalDateTime upgradeDateTime) { try (Connection connection = DbManager.getConnection(); PreparedStatement preparedStatement = connection.prepareStatement("UPDATE obj_npc SET upgradeDate=? " @@ -249,7 +250,7 @@ public class dbNPCHandler extends dbHandlerBase { if (upgradeDateTime == null) preparedStatement.setNull(1, java.sql.Types.DATE); else - preparedStatement.setTimestamp(1, new java.sql.Timestamp(upgradeDateTime.getMillis())); + preparedStatement.setTimestamp(1, new java.sql.Timestamp(upgradeDateTime.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli())); preparedStatement.setInt(2, npc.getObjectUUID()); diff --git a/src/engine/db/handlers/dbShrineHandler.java b/src/engine/db/handlers/dbShrineHandler.java index 7fd36351..59145f4e 100644 --- a/src/engine/db/handlers/dbShrineHandler.java +++ b/src/engine/db/handlers/dbShrineHandler.java @@ -16,7 +16,7 @@ import engine.mbEnums.ProtectionState; import engine.objects.AbstractGameObject; import engine.objects.Building; import engine.objects.Shrine; -import org.joda.time.DateTime; +import java.time.Instant; import org.pmw.tinylog.Logger; import java.sql.Connection; @@ -53,7 +53,7 @@ public class dbShrineHandler extends dbHandlerBase { public ArrayList CREATE_SHRINE(int parentZoneID, int OwnerUUID, String name, int meshUUID, Vector3fImmutable location, float meshScale, int currentHP, ProtectionState protectionState, int currentGold, int rank, - DateTime upgradeDate, int blueprintUUID, float w, float rotY, String shrineType) { + Instant upgradeDate, int blueprintUUID, float w, float rotY, String shrineType) { ArrayList shrineList = new ArrayList<>(); @@ -74,7 +74,7 @@ public class dbShrineHandler extends dbHandlerBase { preparedStatement.setInt(12, rank); if (upgradeDate != null) - preparedStatement.setTimestamp(13, new java.sql.Timestamp(upgradeDate.getMillis())); + preparedStatement.setTimestamp(13, java.sql.Timestamp.from(upgradeDate)); else preparedStatement.setNull(13, java.sql.Types.DATE); diff --git a/src/engine/db/handlers/dbWarehouseHandler.java b/src/engine/db/handlers/dbWarehouseHandler.java index 63699403..84278eb9 100644 --- a/src/engine/db/handlers/dbWarehouseHandler.java +++ b/src/engine/db/handlers/dbWarehouseHandler.java @@ -20,7 +20,7 @@ import engine.objects.City; import engine.objects.Transaction; import engine.objects.Warehouse; import engine.server.MBServerStatics; -import org.joda.time.DateTime; +import java.time.Instant; import org.json.JSONArray; import org.json.JSONObject; import org.pmw.tinylog.Logger; @@ -40,7 +40,7 @@ public class dbWarehouseHandler extends dbHandlerBase { } - public boolean CREATE_TRANSACTION(int warehouseBuildingID, GameObjectType targetType, int targetUUID, TransactionType transactionType, mbEnums.ResourceType resource, int amount, DateTime date) { + public boolean CREATE_TRANSACTION(int warehouseBuildingID, GameObjectType targetType, int targetUUID, TransactionType transactionType, mbEnums.ResourceType resource, int amount, Instant date) { try (Connection connection = DbManager.getConnection(); PreparedStatement preparedStatement = connection.prepareStatement("INSERT INTO `dyn_warehouse_transactions` (`warehouseUID`, `targetType`,`targetUID`, `type`,`resource`,`amount`,`date` ) VALUES (?,?,?,?,?,?,?)")) { @@ -51,7 +51,7 @@ public class dbWarehouseHandler extends dbHandlerBase { preparedStatement.setString(4, transactionType.name()); preparedStatement.setString(5, resource.name()); preparedStatement.setInt(6, amount); - preparedStatement.setTimestamp(7, new java.sql.Timestamp(date.getMillis())); + preparedStatement.setTimestamp(7, new java.sql.Timestamp(date.toEpochMilli())); return (preparedStatement.executeUpdate() > 0); diff --git a/src/engine/gameManager/BuildingManager.java b/src/engine/gameManager/BuildingManager.java index 1aaae006..271179a2 100644 --- a/src/engine/gameManager/BuildingManager.java +++ b/src/engine/gameManager/BuildingManager.java @@ -274,7 +274,7 @@ public enum BuildingManager { if (building == null) return; - if (!DbManager.BuildingQueries.updateBuildingUpgradeTime(upgradeDateTime, building, rankCost)) { + if (!DbManager.BuildingQueries.updateBuildingUpgradeTime(upgradeDateTime.atZone(ZoneId.systemDefault()).toInstant(), building, rankCost)) { Logger.error("Failed to set upgradeTime for building " + building.getObjectUUID()); return; } diff --git a/src/engine/gameManager/GuildManager.java b/src/engine/gameManager/GuildManager.java index a454a154..df7e5816 100644 --- a/src/engine/gameManager/GuildManager.java +++ b/src/engine/gameManager/GuildManager.java @@ -16,7 +16,7 @@ import engine.net.client.ClientConnection; import engine.net.client.msg.guild.AcceptInviteToGuildMsg; import engine.net.client.msg.guild.GuildInfoMsg; import engine.objects.*; -import org.joda.time.DateTime; +import java.time.Instant; public enum GuildManager { @@ -67,8 +67,8 @@ public enum GuildManager { return false; if (playerCharacter.getGuild() != null && !playerCharacter.getGuild().isEmptyGuild()) { - if (DbManager.GuildQueries.ADD_TO_GUILDHISTORY(playerCharacter.getGuildUUID(), playerCharacter, DateTime.now(), GuildHistoryType.LEAVE)) { - GuildHistory guildHistory = new GuildHistory(playerCharacter.getGuildUUID(), playerCharacter.getGuild().getName(), DateTime.now(), GuildHistoryType.LEAVE); + if (DbManager.GuildQueries.ADD_TO_GUILDHISTORY(playerCharacter.getGuildUUID(), playerCharacter, Instant.now(), GuildHistoryType.LEAVE)) { + GuildHistory guildHistory = new GuildHistory(playerCharacter.getGuildUUID(), playerCharacter.getGuild().getName(), Instant.now(), GuildHistoryType.LEAVE); playerCharacter.getGuildHistory().add(guildHistory); } } @@ -90,8 +90,8 @@ public enum GuildManager { dispatch = Dispatch.borrow(playerCharacter, msg); DispatchManager.dispatchMsgDispatch(dispatch, mbEnums.DispatchChannel.SECONDARY); } - if (DbManager.GuildQueries.ADD_TO_GUILDHISTORY(guild.getObjectUUID(), playerCharacter, DateTime.now(), historyType)) { - GuildHistory guildHistory = new GuildHistory(guild.getObjectUUID(), guild.getName(), DateTime.now(), historyType); + if (DbManager.GuildQueries.ADD_TO_GUILDHISTORY(guild.getObjectUUID(), playerCharacter, Instant.now(), historyType)) { + GuildHistory guildHistory = new GuildHistory(guild.getObjectUUID(), guild.getName(), Instant.now(), historyType); playerCharacter.getGuildHistory().add(guildHistory); } diff --git a/src/engine/jobs/BaneDefaultTimeJob.java b/src/engine/jobs/BaneDefaultTimeJob.java index cab117b4..d0eed23b 100644 --- a/src/engine/jobs/BaneDefaultTimeJob.java +++ b/src/engine/jobs/BaneDefaultTimeJob.java @@ -11,7 +11,7 @@ package engine.jobs; import engine.job.AbstractScheduleJob; import engine.objects.Bane; -import org.joda.time.DateTime; +import java.time.LocalDateTime; public class BaneDefaultTimeJob extends AbstractScheduleJob { @@ -31,11 +31,8 @@ public class BaneDefaultTimeJob extends AbstractScheduleJob { return; } - DateTime defaultTime = new DateTime(this.bane.getPlacementDate()); - defaultTime = defaultTime.plusDays(2); - defaultTime = defaultTime.hourOfDay().setCopy(22); - defaultTime = defaultTime.minuteOfHour().setCopy(0); - defaultTime = defaultTime.secondOfMinute().setCopy(0); + LocalDateTime defaultTime = this.bane.getPlacementDate() + .plusDays(2).withHour(22).withMinute(0).withSecond(0).withNano(0); this.bane.setLiveDate(defaultTime); } diff --git a/src/engine/net/ByteBufferWriter.java b/src/engine/net/ByteBufferWriter.java index 7b447547..9a6ce0c0 100644 --- a/src/engine/net/ByteBufferWriter.java +++ b/src/engine/net/ByteBufferWriter.java @@ -12,7 +12,8 @@ package engine.net; import engine.math.Vector3f; import engine.math.Vector3fImmutable; import engine.util.ByteBufferUtils; -import org.joda.time.DateTime; +import java.time.Instant; +import java.time.ZoneId; import java.nio.ByteBuffer; import java.time.LocalDateTime; @@ -57,13 +58,13 @@ public class ByteBufferWriter { this.bb.putLong(x); } - public synchronized void putDateTime(DateTime dateTime) { - this.put((byte) dateTime.getDayOfMonth()); - this.put((byte) ((byte) dateTime.getMonthOfYear() - 1)); - this.putInt(dateTime.getYear() - 1900); - this.put((byte) dateTime.getHourOfDay()); - this.put((byte) dateTime.getMinuteOfHour()); - this.put((byte) dateTime.getSecondOfDay()); + public synchronized void putDateTime(Instant dateTime) { + this.put((byte) dateTime.atZone(ZoneId.systemDefault()).toLocalDate().getDayOfMonth()); + this.put((byte) ((byte) dateTime.atZone(ZoneId.systemDefault()).toLocalDate().getMonthValue() - 1)); + this.putInt(dateTime.atZone(ZoneId.systemDefault()).toLocalDate().getYear() - 1900); + this.put((byte) dateTime.atZone(ZoneId.systemDefault()).toLocalTime().getHour()); + this.put((byte) dateTime.atZone(ZoneId.systemDefault()).toLocalTime().getMinute()); + this.put((byte) dateTime.atZone(ZoneId.systemDefault()).toLocalTime().getSecond()); } public synchronized void putLocalDateTime(LocalDateTime dateTime) { diff --git a/src/engine/net/NetMsgFactory.java b/src/engine/net/NetMsgFactory.java index 268ef204..8668c2bd 100644 --- a/src/engine/net/NetMsgFactory.java +++ b/src/engine/net/NetMsgFactory.java @@ -14,7 +14,7 @@ import engine.gameManager.ChatManager; import engine.net.client.ClientConnection; import engine.objects.PlayerCharacter; import engine.server.MBServerStatics; -import org.joda.time.DateTime; +import java.time.Instant; import org.pmw.tinylog.Logger; import java.lang.reflect.Constructor; @@ -85,7 +85,7 @@ public class NetMsgFactory { if (protocolMsg == Protocol.NONE) { - String errorString = DateTime.now().toString() + origin.lastProtocol.name(); + String errorString = Instant.now().toString() + origin.lastProtocol.name(); int errorCode = errorString.hashCode(); diff --git a/src/engine/net/client/handlers/AcceptInviteToGuildHandler.java b/src/engine/net/client/handlers/AcceptInviteToGuildHandler.java index 7f8955e6..f1d9bf09 100644 --- a/src/engine/net/client/handlers/AcceptInviteToGuildHandler.java +++ b/src/engine/net/client/handlers/AcceptInviteToGuildHandler.java @@ -22,7 +22,7 @@ import engine.net.client.msg.guild.GuildInfoMsg; import engine.objects.Guild; import engine.objects.GuildHistory; import engine.objects.PlayerCharacter; -import org.joda.time.DateTime; +import java.time.Instant; public class AcceptInviteToGuildHandler extends AbstractClientMsgHandler { @@ -90,8 +90,8 @@ public class AcceptInviteToGuildHandler extends AbstractClientMsgHandler { //Add to guild History if (player.getGuild() != null) { - if (DbManager.GuildQueries.ADD_TO_GUILDHISTORY(player.getGuildUUID(), player, DateTime.now(), GuildHistoryType.JOIN)) { - GuildHistory guildHistory = new GuildHistory(player.getGuildUUID(), player.getGuild().getName(), DateTime.now(), GuildHistoryType.JOIN); + if (DbManager.GuildQueries.ADD_TO_GUILDHISTORY(player.getGuildUUID(), player, Instant.now(), GuildHistoryType.JOIN)) { + GuildHistory guildHistory = new GuildHistory(player.getGuildUUID(), player.getGuild().getName(), Instant.now(), GuildHistoryType.JOIN); player.getGuildHistory().add(guildHistory); } } diff --git a/src/engine/net/client/handlers/BanishUnbanishHandler.java b/src/engine/net/client/handlers/BanishUnbanishHandler.java index 7c2eeeb1..ebd78d65 100644 --- a/src/engine/net/client/handlers/BanishUnbanishHandler.java +++ b/src/engine/net/client/handlers/BanishUnbanishHandler.java @@ -25,7 +25,7 @@ import engine.objects.Guild; import engine.objects.GuildHistory; import engine.objects.GuildStatusController; import engine.objects.PlayerCharacter; -import org.joda.time.DateTime; +import java.time.Instant; public class BanishUnbanishHandler extends AbstractClientMsgHandler { @@ -95,8 +95,8 @@ public class BanishUnbanishHandler extends AbstractClientMsgHandler { //Set guild history - if (DbManager.GuildQueries.ADD_TO_GUILDHISTORY(guild.getObjectUUID(), toBanish, DateTime.now(), GuildHistoryType.BANISHED)) { - GuildHistory guildHistory = new GuildHistory(toBanish.getGuildUUID(), toBanish.getGuild().getName(), DateTime.now(), GuildHistoryType.BANISHED); + if (DbManager.GuildQueries.ADD_TO_GUILDHISTORY(guild.getObjectUUID(), toBanish, Instant.now(), GuildHistoryType.BANISHED)) { + GuildHistory guildHistory = new GuildHistory(toBanish.getGuildUUID(), toBanish.getGuild().getName(), Instant.now(), GuildHistoryType.BANISHED); toBanish.getGuildHistory().add(guildHistory); } } diff --git a/src/engine/net/client/handlers/ManageCityAssetMsgHandler.java b/src/engine/net/client/handlers/ManageCityAssetMsgHandler.java index 1b4f8200..7a0dce45 100644 --- a/src/engine/net/client/handlers/ManageCityAssetMsgHandler.java +++ b/src/engine/net/client/handlers/ManageCityAssetMsgHandler.java @@ -15,7 +15,7 @@ import engine.net.client.msg.ErrorPopupMsg; import engine.net.client.msg.ManageCityAssetsMsg; import engine.net.client.msg.PlaceAssetMsg; import engine.objects.*; -import org.joda.time.DateTime; +import java.time.LocalDateTime; /* * @Author: @@ -251,11 +251,10 @@ public class ManageCityAssetMsgHandler extends AbstractClientMsgHandler { return true; } - DateTime baneLive = new DateTime(bane.getPlacementDate()); + LocalDateTime baneLive = bane.getPlacementDate(); baneLive = baneHour == 24 ? baneLive.plusDays(3) : baneLive.plusDays(2); - baneLive = baneHour == 24 ? baneLive.hourOfDay().setCopy(0) : baneLive.hourOfDay().setCopy(baneHour); - baneLive = baneLive.minuteOfHour().setCopy(0); - baneLive = baneLive.secondOfMinute().setCopy(1); + baneLive = baneHour == 24 ? baneLive.withHour(0) : baneLive.withHour(baneHour); + baneLive = baneLive.withMinute(0).withSecond(1).withNano(0); bane.setLiveDate(baneLive); outMsg.actionType = 18; diff --git a/src/engine/net/client/handlers/PlaceAssetMsgHandler.java b/src/engine/net/client/handlers/PlaceAssetMsgHandler.java index 4315a5a1..0ec209f4 100644 --- a/src/engine/net/client/handlers/PlaceAssetMsgHandler.java +++ b/src/engine/net/client/handlers/PlaceAssetMsgHandler.java @@ -19,7 +19,7 @@ import engine.net.client.msg.PlaceAssetMsg; import engine.net.client.msg.PlaceAssetMsg.PlacementInfo; import engine.objects.*; import engine.server.MBServerStatics; -import org.joda.time.DateTime; +import java.time.Instant; import org.pmw.tinylog.Logger; import java.time.LocalDateTime; @@ -1142,7 +1142,7 @@ public class PlaceAssetMsgHandler extends AbstractClientMsgHandler { Blueprint blueprint; Building newMesh; - DateTime completionDate; + Instant completionDate; float vendorRotation; float buildingRotation; @@ -1157,9 +1157,9 @@ public class PlaceAssetMsgHandler extends AbstractClientMsgHandler { if ((blueprint.getBuildingGroup().equals(BuildingGroup.SIEGETENT)) || (blueprint.getBuildingGroup().equals(BuildingGroup.BULWARK))) - completionDate = DateTime.now().plusMinutes(15); + completionDate = Instant.now().plusSeconds(15 * 60); else - completionDate = DateTime.now().plusHours(blueprint.getRankTime(1)); + completionDate = Instant.now().plusSeconds(blueprint.getRankTime(1) * 3600); Vector3fImmutable localLoc = new Vector3fImmutable(ZoneManager.worldToLocal(buildingInfo.getLoc(), currentZone)); @@ -1228,7 +1228,7 @@ public class PlaceAssetMsgHandler extends AbstractClientMsgHandler { ArrayList shrineObjects = DbManager.ShrineQueries.CREATE_SHRINE( currentZone.getObjectUUID(), player.getObjectUUID(), blueprint.getName(), blueprint.getMeshForRank(0), localLoc, 1.0f, blueprint.getMaxHealth(0), ProtectionState.PROTECTED, 0, 0, - DateTime.now().plusHours(blueprint.getRankTime(1)), blueprint.getMeshForRank(0), vendorRotation, buildingRotation, shrineType.name()); + Instant.now().plusSeconds(blueprint.getRankTime(1) * 3600), blueprint.getMeshForRank(0), vendorRotation, buildingRotation, shrineType.name()); if (shrineObjects == null) { PlaceAssetMsg.sendPlaceAssetError(player.getClientConnection(), 1, "A Serious error has occurred. Please post details for to ensure transaction integrity"); @@ -1288,7 +1288,7 @@ public class PlaceAssetMsgHandler extends AbstractClientMsgHandler { float buildingRotation = buildingInfo.getRot().y; float vendorRotation = buildingInfo.getW(); - DateTime completionDate = DateTime.now().plusHours(blueprint.getRankTime(1)); + Instant completionDate = Instant.now().plusSeconds(blueprint.getRankTime(1) * 3600); newMesh = DbManager.BuildingQueries.CREATE_BUILDING( @@ -1333,7 +1333,7 @@ public class PlaceAssetMsgHandler extends AbstractClientMsgHandler { warehouseBuilding = DbManager.BuildingQueries.CREATE_BUILDING( currentZone.getObjectUUID(), player.getObjectUUID(), blueprint.getName(), blueprint.getMeshForRank(0), localLoc, 1.0f, blueprint.getMaxHealth(0), ProtectionState.NONE, 0, 0, - DateTime.now().plusHours(blueprint.getRankTime(1)), blueprint.getMeshForRank(0), vendorRotation, buildingRotation); + Instant.now().plusSeconds(blueprint.getRankTime(1) * 3600), blueprint.getMeshForRank(0), vendorRotation, buildingRotation); if (warehouseBuilding == null) { PlaceAssetMsg.sendPlaceAssetError(player.getClientConnection(), 1, "A Serious error has occurred. Please post details for to ensure transaction integrity"); diff --git a/src/engine/net/client/msg/ArcMineWindowAvailableTimeMsg.java b/src/engine/net/client/msg/ArcMineWindowAvailableTimeMsg.java index 1fa42656..1b4b9fc2 100644 --- a/src/engine/net/client/msg/ArcMineWindowAvailableTimeMsg.java +++ b/src/engine/net/client/msg/ArcMineWindowAvailableTimeMsg.java @@ -17,8 +17,9 @@ import engine.net.Protocol; import engine.objects.Building; import engine.objects.Guild; import engine.server.MBServerStatics; -import org.joda.time.DateTime; -import org.joda.time.Seconds; +import java.time.Instant; +import java.time.Duration; +import java.time.temporal.ChronoField; public class ArcMineWindowAvailableTimeMsg extends ClientNetMsg { @@ -26,8 +27,8 @@ public class ArcMineWindowAvailableTimeMsg extends ClientNetMsg { private Building treeOfLife; private int currentMineHour; - private Seconds secondsLeft; - private DateTime lateTime; + private Duration secondsLeft; + private Instant lateTime; private int late; /** @@ -72,15 +73,15 @@ public class ArcMineWindowAvailableTimeMsg extends ClientNetMsg { currentMineHour = guild.getMineTime(); late = MBServerStatics.MINE_LATE_WINDOW; - lateTime = DateTime.now(); + lateTime = Instant.now(); if (late == 0) - lateTime = lateTime.plusDays(1); + lateTime = lateTime.plus(Duration.ofDays(1)); - lateTime = lateTime.hourOfDay().setCopy(late); + lateTime = lateTime.with(ChronoField.HOUR_OF_DAY, late); late = ((late > 23) ? (late - 24) : late); - secondsLeft = Seconds.secondsBetween(DateTime.now(), lateTime); + secondsLeft = Duration.between(Instant.now(), lateTime); } /** @@ -106,4 +107,4 @@ public class ArcMineWindowAvailableTimeMsg extends ClientNetMsg { public void setBuildingUUID(int buildingUUID) { this.buildingUUID = buildingUUID; } -} +} \ No newline at end of file diff --git a/src/engine/net/client/msg/ManageCityAssetsMsg.java b/src/engine/net/client/msg/ManageCityAssetsMsg.java index 53f2d6bd..a8a6cd19 100644 --- a/src/engine/net/client/msg/ManageCityAssetsMsg.java +++ b/src/engine/net/client/msg/ManageCityAssetsMsg.java @@ -18,9 +18,6 @@ import engine.net.ByteBufferReader; import engine.net.ByteBufferWriter; import engine.net.Protocol; import engine.objects.*; -import org.joda.time.DateTime; -import org.joda.time.Period; - import java.time.LocalDateTime; import java.time.ZoneId; import java.util.Set; @@ -397,37 +394,33 @@ public class ManageCityAssetsMsg extends ClientNetMsg { else writer.put((byte) 0); - DateTime placedOn = bane.getLiveDate(); + LocalDateTime placedOn = bane.getLiveDate(); if (placedOn == null) - placedOn = new DateTime(DateTime.now()); + placedOn = LocalDateTime.now(); //set Calander to date of bane live. - DateTime now = DateTime.now(); - DateTime defaultTime = new DateTime(bane.getPlacementDate()); - DateTime playerEnterWorldTime = new DateTime(this.assetManager.getTimeStamp("EnterWorld")); - Period period = new Period(playerEnterWorldTime.getMillis(), now.getMillis()); - int hoursLoggedIn = period.getHours(); + LocalDateTime now = LocalDateTime.now(); + LocalDateTime defaultTime = bane.getPlacementDate(); + LocalDateTime playerEnterWorldTime = LocalDateTime.ofInstant(java.time.Instant.ofEpochMilli(this.assetManager.getTimeStamp("EnterWorld")), ZoneId.systemDefault()); + int hoursLoggedIn = (int) java.time.Duration.between(playerEnterWorldTime, now).toHours(); hoursLoggedIn = hoursLoggedIn < 0 ? 0 : hoursLoggedIn; - defaultTime = defaultTime.plusDays(2); - defaultTime = defaultTime.hourOfDay().setCopy(22); - defaultTime = defaultTime.minuteOfHour().setCopy(0); - defaultTime = defaultTime.secondOfMinute().setCopy(0); + defaultTime = defaultTime.plusDays(2).withHour(22).withMinute(0).withSecond(0).withNano(0); - long curTime = now.getMillis(); + long curTime = now.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli(); long timeLeft = 0; if (bane.getLiveDate() != null) - timeLeft = bane.getLiveDate().getMillis() - curTime; + timeLeft = bane.getLiveDate().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli() - curTime; else - timeLeft = defaultTime.getMillis() - curTime + 1000; + timeLeft = defaultTime.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli() - curTime + 1000; //DO not touch these. They are static formula's until i get the correct converter for SB Time. - writer.put((byte) placedOn.dayOfMonth().get()); - writer.put((byte) placedOn.monthOfYear().get()); - writer.putInt(placedOn.year().get() - 1900); + writer.put((byte) placedOn.getDayOfMonth()); + writer.put((byte) placedOn.getMonthValue()); + writer.putInt(placedOn.getYear() - 1900); writer.put((byte) 0); writer.put((byte) 0); writer.put((byte) 0); diff --git a/src/engine/net/client/msg/ManageNPCMsg.java b/src/engine/net/client/msg/ManageNPCMsg.java index da9cfe98..1e4a51ae 100644 --- a/src/engine/net/client/msg/ManageNPCMsg.java +++ b/src/engine/net/client/msg/ManageNPCMsg.java @@ -19,9 +19,8 @@ import engine.net.ByteBufferReader; import engine.net.ByteBufferWriter; import engine.net.Protocol; import engine.objects.*; -import org.joda.time.DateTime; -import org.joda.time.Period; -import org.joda.time.Seconds; +import java.time.Duration; +import java.time.LocalDateTime; import org.pmw.tinylog.Logger; import java.util.ArrayList; @@ -137,7 +136,6 @@ public class ManageNPCMsg extends ClientNetMsg { @Override protected void _serialize(ByteBufferWriter writer) { - Period upgradePeriod; int upgradePeriodInSeconds; try { @@ -199,21 +197,20 @@ public class ManageNPCMsg extends ClientNetMsg { writer.putInt(npc.getUpgradeCost()); - if (npc.isRanking() && npc.getUpgradeDateTime().isAfter(DateTime.now())) - upgradePeriod = new Period(DateTime.now(), npc.getUpgradeDateTime()); - else - upgradePeriod = new Period(0); + long upgradeTotalSecs = 0; + if (npc.isRanking() && npc.getUpgradeDateTime().isAfter(LocalDateTime.now())) + upgradeTotalSecs = Duration.between(LocalDateTime.now(), npc.getUpgradeDateTime()).getSeconds(); - writer.put((byte) upgradePeriod.getDays()); //for timer + writer.put((byte) (int) (upgradeTotalSecs / 86400)); //for timer writer.put((byte) unknown26);//unknown writer.putInt(100); //unknown - writer.put((byte) upgradePeriod.getHours()); //for timer - writer.put((byte) upgradePeriod.getMinutes()); //for timer - writer.put((byte) upgradePeriod.getSeconds()); //for timer + writer.put((byte) (int) ((upgradeTotalSecs % 86400) / 3600)); //for timer + writer.put((byte) (int) ((upgradeTotalSecs % 3600) / 60)); //for timer + writer.put((byte) (int) (upgradeTotalSecs % 60)); //for timer - if (npc.isRanking() && npc.getUpgradeDateTime().isAfter(DateTime.now())) - upgradePeriodInSeconds = Seconds.secondsBetween(DateTime.now(), npc.getUpgradeDateTime()).getSeconds(); + if (npc.isRanking() && npc.getUpgradeDateTime().isAfter(LocalDateTime.now())) + upgradePeriodInSeconds = (int) upgradeTotalSecs; else upgradePeriodInSeconds = 0; @@ -589,21 +586,20 @@ public class ManageNPCMsg extends ClientNetMsg { writer.putInt(Mob.getUpgradeCost(mobA)); - if (mobA.isRanking() && mobA.getUpgradeDateTime().isAfter(DateTime.now())) - upgradePeriod = new Period(DateTime.now(), mobA.getUpgradeDateTime()); - else - upgradePeriod = new Period(0); + long upgradeTotalSecs = 0; + if (mobA.isRanking() && mobA.getUpgradeDateTime().isAfter(LocalDateTime.now())) + upgradeTotalSecs = Duration.between(LocalDateTime.now(), mobA.getUpgradeDateTime()).getSeconds(); - writer.put((byte) upgradePeriod.getDays()); //for timer + writer.put((byte) (int) (upgradeTotalSecs / 86400)); //for timer writer.put((byte) unknown26);//unknown writer.putInt(100); //unknown - writer.put((byte) upgradePeriod.getHours()); //for timer - writer.put((byte) upgradePeriod.getMinutes()); //for timer - writer.put((byte) upgradePeriod.getSeconds()); //for timer + writer.put((byte) (int) ((upgradeTotalSecs % 86400) / 3600)); //for timer + writer.put((byte) (int) ((upgradeTotalSecs % 3600) / 60)); //for timer + writer.put((byte) (int) (upgradeTotalSecs % 60)); //for timer - if (mobA.isRanking() && mobA.getUpgradeDateTime().isAfter(DateTime.now())) - upgradePeriodInSeconds = Seconds.secondsBetween(DateTime.now(), mobA.getUpgradeDateTime()).getSeconds(); + if (mobA.isRanking() && mobA.getUpgradeDateTime().isAfter(LocalDateTime.now())) + upgradePeriodInSeconds = (int) upgradeTotalSecs; else upgradePeriodInSeconds = 0; diff --git a/src/engine/net/client/msg/guild/GuildInfoMsg.java b/src/engine/net/client/msg/guild/GuildInfoMsg.java index c5dea86d..14e60283 100644 --- a/src/engine/net/client/msg/guild/GuildInfoMsg.java +++ b/src/engine/net/client/msg/guild/GuildInfoMsg.java @@ -17,7 +17,7 @@ import engine.net.ByteBufferWriter; import engine.net.Protocol; import engine.net.client.msg.ClientNetMsg; import engine.objects.*; -import org.joda.time.DateTime; +import java.time.Instant; public class GuildInfoMsg extends ClientNetMsg { @@ -306,7 +306,7 @@ class GuildInfoMessageType4 extends GuildInfoMessageType { writer.putString(guildLeaderName); writer.putString(pc.getName()); - writer.putDateTime(DateTime.now()); + writer.putDateTime(Instant.now()); writer.put((byte) 1); writer.put((byte) 1); writer.put((byte) 1); @@ -401,7 +401,7 @@ class GuildInfoMessageType5 extends GuildInfoMessageType { writer.putString("Guild Leader"); writer.putString(""); //Nation Leader - I believe - DateTime now = DateTime.now(); + Instant now = Instant.now(); writer.putDateTime(now); writer.put((byte) 1); diff --git a/src/engine/objects/Bane.java b/src/engine/objects/Bane.java index 8a0a7a90..eaf17ae0 100644 --- a/src/engine/objects/Bane.java +++ b/src/engine/objects/Bane.java @@ -25,7 +25,8 @@ import engine.net.client.ClientConnection; import engine.net.client.msg.PlaceAssetMsg; import engine.net.client.msg.chat.ChatSystemMsg; import engine.server.MBServerStatics; -import org.joda.time.DateTime; +import java.time.LocalDateTime; +import java.time.ZoneId; import org.pmw.tinylog.Logger; import java.sql.ResultSet; @@ -40,8 +41,8 @@ public final class Bane { private final int cityUUID; private final int stoneUUID; private int ownerUUID; - private DateTime placementDate = null; - private DateTime liveDate = null; + private LocalDateTime placementDate = null; + private LocalDateTime liveDate = null; private BaneDefaultTimeJob defaultTimeJob; // Internal cache for banes @@ -62,12 +63,12 @@ public final class Bane { sqlDateTime = rs.getTimestamp("placementDate"); if (sqlDateTime != null) - this.placementDate = new DateTime(sqlDateTime); + this.placementDate = LocalDateTime.ofInstant(sqlDateTime.toInstant(), ZoneId.systemDefault()); sqlDateTime = rs.getTimestamp("liveDate"); if (sqlDateTime != null) - this.liveDate = new DateTime(sqlDateTime); + this.liveDate = LocalDateTime.ofInstant(sqlDateTime.toInstant(), ZoneId.systemDefault()); switch (this.getSiegePhase()) { @@ -81,7 +82,7 @@ public final class Bane { this.activateBaneJob.cancelJob(); abtj = new ActivateBaneJob(cityUUID); - JobScheduler.getInstance().scheduleJob(abtj, this.liveDate.getMillis()); + JobScheduler.getInstance().scheduleJob(abtj, this.liveDate.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli()); this.activateBaneJob = abtj; break; @@ -93,7 +94,7 @@ public final class Bane { this.activateBaneJob.cancelJob(); abtj = new ActivateBaneJob(cityUUID); - JobScheduler.getInstance().scheduleJob(abtj, this.liveDate.getMillis()); + JobScheduler.getInstance().scheduleJob(abtj, this.liveDate.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli()); this.activateBaneJob = abtj; break; @@ -353,7 +354,7 @@ public final class Bane { return phase; } - if (DateTime.now().isAfter(this.liveDate)) { + if (LocalDateTime.now().isAfter(this.liveDate)) { phase = SiegePhase.WAR; //war return phase; } @@ -368,15 +369,10 @@ public final class Bane { private void setDefaultTime() { - DateTime timeToSetDefault = new DateTime(this.placementDate); - timeToSetDefault = timeToSetDefault.plusDays(1); + LocalDateTime timeToSetDefault = this.placementDate.plusDays(1); - DateTime currentTime = DateTime.now(); - DateTime defaultTime = new DateTime(this.placementDate); - defaultTime = defaultTime.plusDays(2); - defaultTime = defaultTime.hourOfDay().setCopy(22); - defaultTime = defaultTime.minuteOfHour().setCopy(0); - defaultTime = defaultTime.secondOfMinute().setCopy(0); + LocalDateTime currentTime = LocalDateTime.now(); + LocalDateTime defaultTime = this.placementDate.plusDays(2).withHour(22).withMinute(0).withSecond(0); if (currentTime.isAfter(timeToSetDefault)) this.setLiveDate(defaultTime); @@ -386,7 +382,7 @@ public final class Bane { this.defaultTimeJob.cancelJob(); BaneDefaultTimeJob bdtj = new BaneDefaultTimeJob(this); - JobScheduler.getInstance().scheduleJob(bdtj, timeToSetDefault.getMillis()); + JobScheduler.getInstance().scheduleJob(bdtj, timeToSetDefault.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli()); this.defaultTimeJob = bdtj; } } @@ -453,7 +449,7 @@ public final class Bane { return true; } - public final DateTime getPlacementDate() { + public final LocalDateTime getPlacementDate() { return placementDate; } @@ -462,14 +458,14 @@ public final class Bane { return (this.getSiegePhase() != SiegePhase.CHALLENGE); } - public final DateTime getLiveDate() { + public final LocalDateTime getLiveDate() { return liveDate; } - public void setLiveDate(DateTime baneTime) { + public void setLiveDate(LocalDateTime baneTime) { if (DbManager.BaneQueries.SET_BANE_TIME(baneTime, this.getCity().getObjectUUID())) { - this.liveDate = new DateTime(baneTime); + this.liveDate = baneTime; // Push event to warehouse @@ -511,7 +507,7 @@ public final class Bane { ActivateBaneJob abtj = new ActivateBaneJob(cityUUID); - JobScheduler.getInstance().scheduleJob(abtj, this.liveDate.getMillis()); + JobScheduler.getInstance().scheduleJob(abtj, this.liveDate.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli()); this.activateBaneJob = abtj; } else { Logger.debug("error with city " + this.getCity().getName()); diff --git a/src/engine/objects/Guild.java b/src/engine/objects/Guild.java index 3e86c12d..58c9e7d7 100644 --- a/src/engine/objects/Guild.java +++ b/src/engine/objects/Guild.java @@ -22,7 +22,7 @@ import engine.net.client.msg.ErrorPopupMsg; import engine.net.client.msg.UpdateClientAlliancesMsg; import engine.net.client.msg.guild.GuildInfoMsg; import engine.server.world.WorldServer; -import org.joda.time.DateTime; +import java.time.Instant; import org.pmw.tinylog.Logger; import java.sql.ResultSet; @@ -612,8 +612,8 @@ public class Guild extends AbstractWorldObject { //Add to Guild History if (pc.getGuild() != null) { - if (DbManager.GuildQueries.ADD_TO_GUILDHISTORY(pc.getGuildUUID(), pc, DateTime.now(), historyType)) { - GuildHistory guildHistory = new GuildHistory(pc.getGuildUUID(), pc.getGuild().name, DateTime.now(), historyType); + if (DbManager.GuildQueries.ADD_TO_GUILDHISTORY(pc.getGuildUUID(), pc, Instant.now(), historyType)) { + GuildHistory guildHistory = new GuildHistory(pc.getGuildUUID(), pc.getGuild().name, Instant.now(), historyType); pc.getGuildHistory().add(guildHistory); } } diff --git a/src/engine/objects/GuildHistory.java b/src/engine/objects/GuildHistory.java index ff7a48df..d5c76153 100644 --- a/src/engine/objects/GuildHistory.java +++ b/src/engine/objects/GuildHistory.java @@ -13,10 +13,11 @@ package engine.objects; import engine.mbEnums.GameObjectType; import engine.mbEnums.GuildHistoryType; import engine.net.ByteBufferWriter; -import org.joda.time.DateTime; import java.sql.ResultSet; import java.sql.SQLException; +import java.time.Instant; +import java.time.temporal.ChronoUnit; public class GuildHistory { @@ -24,12 +25,12 @@ public class GuildHistory { private int guildID; private String guildName; - private DateTime time; + private Instant time; private GuildHistoryType historyType; public GuildHistory(int guildID, String guildName, - DateTime dateTime, GuildHistoryType historyType) { + Instant dateTime, GuildHistoryType historyType) { super(); this.guildID = guildID; this.guildName = guildName; @@ -49,9 +50,9 @@ public class GuildHistory { sqlDateTime = rs.getTimestamp("historyDate"); if (sqlDateTime != null) - this.time = new DateTime(sqlDateTime); + this.time = sqlDateTime.toInstant(); else - this.time = DateTime.now().minusYears(1); + this.time = Instant.now().minus(1, ChronoUnit.YEARS); this.historyType = GuildHistoryType.valueOf(rs.getString("historyType")); } @@ -77,11 +78,11 @@ public class GuildHistory { writer.putDateTime(this.time); } - public DateTime getTime() { + public Instant getTime() { return time; } - public void setTime(DateTime time) { + public void setTime(Instant time) { this.time = time; } diff --git a/src/engine/objects/Mob.java b/src/engine/objects/Mob.java index 550b09f9..56f99376 100644 --- a/src/engine/objects/Mob.java +++ b/src/engine/objects/Mob.java @@ -24,7 +24,8 @@ import engine.net.client.msg.PetMsg; import engine.net.client.msg.PlaceAssetMsg; import engine.server.MBServerStatics; import org.jetbrains.annotations.NotNull; -import org.joda.time.DateTime; +import java.time.LocalDateTime; +import java.time.ZoneId; import org.pmw.tinylog.Logger; import java.sql.ResultSet; @@ -71,7 +72,7 @@ public class Mob extends AbstractIntelligenceAgent implements Delayed { public long nextAttackTime = System.currentTimeMillis(); private int lastMobPowerToken = 0; private DeferredPowerJob weaponPower; - private DateTime upgradeDateTime = null; + private LocalDateTime upgradeDateTime = null; private boolean lootSync = false; // New Mobile constructor. Fill in the blanks and then call @@ -126,7 +127,7 @@ public class Mob extends AbstractIntelligenceAgent implements Delayed { sqlDateTime = rs.getTimestamp("upgradeDate"); if (sqlDateTime != null) - upgradeDateTime = new DateTime(sqlDateTime); + upgradeDateTime = LocalDateTime.ofInstant(sqlDateTime.toInstant(), ZoneId.systemDefault()); else upgradeDateTime = null; @@ -593,8 +594,8 @@ public class Mob extends AbstractIntelligenceAgent implements Delayed { // Submit upgrade job for future date or current instant - if (mob.getUpgradeDateTime().isAfter(DateTime.now())) - JobScheduler.getInstance().scheduleJob(new UpgradeNPCJob(mob), mob.getUpgradeDateTime().getMillis()); + if (mob.getUpgradeDateTime().isAfter(LocalDateTime.now())) + JobScheduler.getInstance().scheduleJob(new UpgradeNPCJob(mob), mob.getUpgradeDateTime().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli()); else JobScheduler.getInstance().scheduleJob(new UpgradeNPCJob(mob), 0); @@ -620,7 +621,7 @@ public class Mob extends AbstractIntelligenceAgent implements Delayed { return upgradeCost; } - public static void setUpgradeDateTime(Mob mob, DateTime upgradeDateTime) { + public static void setUpgradeDateTime(Mob mob, LocalDateTime upgradeDateTime) { if (!DbManager.MobQueries.updateUpgradeTime(mob, upgradeDateTime)) { Logger.error("Failed to set upgradeTime for building " + mob.currentID); @@ -1353,7 +1354,7 @@ public class Mob extends AbstractIntelligenceAgent implements Delayed { this.weaponPower = weaponPower; } - public DateTime getUpgradeDateTime() { + public LocalDateTime getUpgradeDateTime() { lock.readLock().lock(); @@ -1433,7 +1434,7 @@ public class Mob extends AbstractIntelligenceAgent implements Delayed { if (!building.transferGold(-rankCost, false)) return; - DateTime dateToUpgrade = DateTime.now().plusHours(Mob.getUpgradeTime(this)); + LocalDateTime dateToUpgrade = LocalDateTime.now().plusHours(Mob.getUpgradeTime(this)); Mob.setUpgradeDateTime(this, dateToUpgrade); // Schedule upgrade job diff --git a/src/engine/objects/NPC.java b/src/engine/objects/NPC.java index a75a5190..beeb910f 100644 --- a/src/engine/objects/NPC.java +++ b/src/engine/objects/NPC.java @@ -24,7 +24,8 @@ import engine.net.Dispatch; import engine.net.client.msg.PetMsg; import engine.net.client.msg.PlaceAssetMsg; import engine.server.MBServerStatics; -import org.joda.time.DateTime; +import java.time.LocalDateTime; +import java.time.ZoneId; import org.pmw.tinylog.Logger; import java.sql.ResultSet; @@ -67,7 +68,7 @@ public class NPC extends AbstractCharacter { protected int symbol; // Variables NOT to be stored in db protected boolean isStatic = false; - private DateTime upgradeDateTime = null; + private LocalDateTime upgradeDateTime = null; private HashSet canRoll = null; public int parentZoneUUID; public int equipmentSetID = 0; @@ -131,7 +132,7 @@ public class NPC extends AbstractCharacter { sqlDateTime = rs.getTimestamp("upgradeDate"); if (sqlDateTime != null) - upgradeDateTime = new DateTime(sqlDateTime); + upgradeDateTime = LocalDateTime.ofInstant(sqlDateTime.toInstant(), ZoneId.systemDefault()); else upgradeDateTime = null; @@ -527,9 +528,9 @@ public class NPC extends AbstractCharacter { // Submit upgrade job for future date or current instant - if (this.getUpgradeDateTime().isAfter(DateTime.now())) + if (this.getUpgradeDateTime().isAfter(LocalDateTime.now())) jc = JobScheduler.getInstance().scheduleJob(new UpgradeNPCJob(this), - this.getUpgradeDateTime().getMillis()); + this.getUpgradeDateTime().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli()); else JobScheduler.getInstance().scheduleJob(new UpgradeNPCJob(this), 0); @@ -907,7 +908,7 @@ public class NPC extends AbstractCharacter { return new ConcurrentHashMap<>(MBServerStatics.CHM_INIT_CAP, MBServerStatics.CHM_LOAD, MBServerStatics.CHM_THREAD_LOW); } - public DateTime getUpgradeDateTime() { + public LocalDateTime getUpgradeDateTime() { lock.readLock().lock(); try { return upgradeDateTime; @@ -916,7 +917,7 @@ public class NPC extends AbstractCharacter { } } - public void setUpgradeDateTime(DateTime upgradeDateTime) { + public void setUpgradeDateTime(LocalDateTime upgradeDateTime) { if (!DbManager.NPCQueries.updateUpgradeTime(this, upgradeDateTime)) { Logger.error("Failed to set upgradeTime for building " + currentID); @@ -1059,7 +1060,7 @@ public class NPC extends AbstractCharacter { int rankCost; Building building; - DateTime dateToUpgrade; + LocalDateTime dateToUpgrade; this.lock.writeLock().lock(); @@ -1102,7 +1103,7 @@ public class NPC extends AbstractCharacter { if (!building.transferGold(-rankCost, false)) return; - dateToUpgrade = DateTime.now().plusHours(this.getUpgradeTime()); + dateToUpgrade = LocalDateTime.now().plusHours(this.getUpgradeTime()); this.setUpgradeDateTime(dateToUpgrade); diff --git a/src/engine/objects/PlayerCharacter.java b/src/engine/objects/PlayerCharacter.java index 19c45026..ad47f734 100644 --- a/src/engine/objects/PlayerCharacter.java +++ b/src/engine/objects/PlayerCharacter.java @@ -37,7 +37,8 @@ import engine.server.MBServerStatics; import engine.server.login.LoginServer; import engine.server.world.WorldServer; import engine.util.MiscUtils; -import org.joda.time.DateTime; +import java.time.Instant; +import java.time.ZoneId; import org.pmw.tinylog.Logger; import java.sql.ResultSet; @@ -702,11 +703,11 @@ public class PlayerCharacter extends AbstractCharacter { writer.putInt(token); writer.putInt((int) timeLeft / 1000); } - DateTime enterWorld = new DateTime(playerCharacter.timestamps.get("EnterWorld")); + Instant enterWorld = Instant.ofEpochMilli(playerCharacter.timestamps.get("EnterWorld")); writer.putDateTime(enterWorld); writer.putInt(0x49EF1E98); //DUnno what playerCharacter is. - writer.putFloat(DateTime.now().hourOfDay().get()); //daylight in float. + writer.putFloat(Instant.now().atZone(ZoneId.systemDefault()).toLocalTime().getHour()); //daylight in float. writer.putFloat(6); //interval of light to change per game hour //float //writer.putInt(1637194901); //playerCharacter is actually an opcode taht is in recordings, no clue what it is, dumped it and it changes nothing } else { @@ -4364,7 +4365,7 @@ public class PlayerCharacter extends AbstractCharacter { } if (count > 0) { - this.timestamps.put("RealmClaim", DateTime.now().plusMinutes(3).getMillis()); + this.timestamps.put("RealmClaim", Instant.now().plusSeconds(180).toEpochMilli()); for (PlayerCharacter toSend : SessionManager.getAllActivePlayerCharacters()) { ChatManager.chatSystemInfo(toSend, this.getCombinedName() + " is seeking to claim a realm and already has " + count + " blessngs!"); } diff --git a/src/engine/objects/Transaction.java b/src/engine/objects/Transaction.java index 389fa195..59dc6dea 100644 --- a/src/engine/objects/Transaction.java +++ b/src/engine/objects/Transaction.java @@ -12,7 +12,7 @@ package engine.objects; import engine.mbEnums; import engine.mbEnums.GameObjectType; import engine.mbEnums.TransactionType; -import org.joda.time.DateTime; +import java.time.Instant; import java.sql.ResultSet; import java.sql.SQLException; @@ -24,7 +24,7 @@ public class Transaction implements Comparable { private final int warehouseUUID; private final int targetUUID; private final mbEnums.ResourceType resource; - private final DateTime date; + private final Instant date; private final int amount; private final TransactionType transactionType; private GameObjectType targetType; @@ -41,15 +41,15 @@ public class Transaction implements Comparable { Date sqlDateTime = rs.getTimestamp("date"); if (sqlDateTime != null) - this.date = new DateTime(sqlDateTime); + this.date = sqlDateTime.toInstant(); else - this.date = DateTime.now(); + this.date = Instant.now(); } public Transaction(int warehouseUUID, GameObjectType targetType, int targetUUID, TransactionType transactionType, mbEnums.ResourceType resource, int amount, - DateTime date) { + Instant date) { this.warehouseUUID = warehouseUUID; this.targetUUID = targetUUID; this.resource = resource; @@ -75,7 +75,7 @@ public class Transaction implements Comparable { } - public DateTime getDate() { + public Instant getDate() { return date; } diff --git a/src/engine/objects/Warehouse.java b/src/engine/objects/Warehouse.java index f8a000af..9e88b7dc 100644 --- a/src/engine/objects/Warehouse.java +++ b/src/engine/objects/Warehouse.java @@ -18,7 +18,7 @@ import engine.net.Dispatch; import engine.net.client.ClientConnection; import engine.net.client.msg.*; import engine.server.MBServerStatics; -import org.joda.time.DateTime; +import java.time.Instant; import org.json.JSONArray; import org.json.JSONObject; import org.pmw.tinylog.Logger; @@ -576,10 +576,10 @@ public class Warehouse { public static void AddTransactionToWarehouse(Warehouse warehouse, mbEnums.GameObjectType targetType, int targetUUID, mbEnums.TransactionType transactionType, mbEnums.ResourceType resource, int amount) { - if (!DbManager.WarehouseQueries.CREATE_TRANSACTION(warehouse.building.getObjectUUID(), targetType, targetUUID, transactionType, resource, amount, DateTime.now())) + if (!DbManager.WarehouseQueries.CREATE_TRANSACTION(warehouse.building.getObjectUUID(), targetType, targetUUID, transactionType, resource, amount, Instant.now())) return; - Transaction transaction = new Transaction(warehouse.building.getObjectUUID(), targetType, targetUUID, transactionType, resource, amount, DateTime.now()); + Transaction transaction = new Transaction(warehouse.building.getObjectUUID(), targetType, targetUUID, transactionType, resource, amount, Instant.now()); warehouse.transactions.add(transaction); } diff --git a/src/engine/workthreads/HourlyJobThread.java b/src/engine/workthreads/HourlyJobThread.java index 0e03dcf5..809987e7 100644 --- a/src/engine/workthreads/HourlyJobThread.java +++ b/src/engine/workthreads/HourlyJobThread.java @@ -18,7 +18,6 @@ import engine.net.MessageDispatcher; import engine.net.client.msg.chat.ChatSystemMsg; import engine.objects.*; import engine.server.world.WorldServer; -import org.joda.time.DateTime; import org.pmw.tinylog.Logger; import java.time.LocalDateTime; @@ -292,7 +291,7 @@ public class HourlyJobThread implements Runnable { public static void processBanes() { //handle banes for (Bane bane : Bane.banes.values()) { - if (bane.getLiveDate() != null && DateTime.now().isAfter(bane.getLiveDate().minusMinutes(1)) && bane.isStarted == false) + if (bane.getLiveDate() != null && LocalDateTime.now().isAfter(bane.getLiveDate().minusMinutes(1)) && bane.isStarted == false) bane.startBane(); } }