From 9fe1fd593e88bafeba319bec36b0b0b69e3075e4 Mon Sep 17 00:00:00 2001 From: Stankman Date: Mon, 17 Jul 2023 12:09:56 -0500 Subject: [PATCH] Supernova --- .../com/eu/habbo/core/CreditsScheduler.java | 2 +- src/main/java/com/eu/habbo/core/Easter.java | 2 +- .../eu/habbo/core/GotwPointsScheduler.java | 2 +- .../com/eu/habbo/core/PixelScheduler.java | 2 +- .../com/eu/habbo/core/PointsScheduler.java | 2 +- .../eu/habbo/core/RoomUserPetComposer.java | 8 +- .../eu/habbo/database/DatabaseConstants.java | 2 +- .../achievements/AchievementManager.java | 13 +- .../com/eu/habbo/habbohotel/bots/Bot.java | 96 +- .../eu/habbo/habbohotel/bots/BotManager.java | 65 +- .../eu/habbo/habbohotel/bots/ButlerBot.java | 16 +- .../eu/habbo/habbohotel/bots/VisitorBot.java | 4 +- .../campaign/CalendarRewardObject.java | 8 +- .../catalog/CatalogLimitedConfiguration.java | 4 +- .../habbohotel/catalog/CatalogManager.java | 20 +- .../catalog/layouts/RoomBundleLayout.java | 50 +- .../catalog/marketplace/MarketPlace.java | 8 +- .../catalog/marketplace/MarketPlaceOffer.java | 4 +- .../habbohotel/commands/CommandsManager.java | 39 +- .../commands/list/ArcturusCommand.java | 2 +- .../commands/list/BlockAlertCommand.java | 2 +- .../habbohotel/commands/list/BotsCommand.java | 6 +- .../commands/list/ControlCommand.java | 2 +- .../commands/list/CoordsCommand.java | 18 +- .../commands/list/DiagonalCommand.java | 6 +- .../commands/list/EjectAllCommand.java | 10 +- .../list/EmptyBotsInventoryCommand.java | 4 +- .../commands/list/EmptyInventoryCommand.java | 8 +- .../list/EmptyPetsInventoryCommand.java | 4 +- .../commands/list/EnableCommand.java | 4 +- .../commands/list/EventCommand.java | 6 +- .../commands/list/FacelessCommand.java | 4 +- .../commands/list/FastwalkCommand.java | 6 +- .../commands/list/FreezeBotsCommand.java | 8 +- .../commands/list/FreezeCommand.java | 2 +- .../commands/list/HabnamCommand.java | 4 +- .../commands/list/HandItemCommand.java | 4 +- .../commands/list/HideWiredCommand.java | 8 +- .../commands/list/InvisibleCommand.java | 4 +- .../habbohotel/commands/list/LayCommand.java | 16 +- .../commands/list/MimicCommand.java | 4 +- .../commands/list/MoonwalkCommand.java | 4 +- .../habbohotel/commands/list/MuteCommand.java | 4 +- .../commands/list/PetInfoCommand.java | 8 +- .../commands/list/PickallCommand.java | 4 +- .../habbohotel/commands/list/PullCommand.java | 12 +- .../habbohotel/commands/list/PushCommand.java | 12 +- .../commands/list/RedeemCommand.java | 10 +- .../commands/list/ReloadRoomCommand.java | 8 +- .../commands/list/RoomAlertCommand.java | 2 +- .../commands/list/RoomBundleCommand.java | 6 +- .../commands/list/RoomDanceCommand.java | 4 +- .../commands/list/RoomEffectCommand.java | 4 +- .../commands/list/RoomItemCommand.java | 4 +- .../commands/list/RoomKickCommand.java | 6 +- .../commands/list/RoomMuteCommand.java | 2 +- .../commands/list/RoomSitCommand.java | 4 +- .../commands/list/SayAllCommand.java | 2 +- .../habbohotel/commands/list/SayCommand.java | 4 +- .../commands/list/SetMaxCommand.java | 2 +- .../commands/list/SetPollCommand.java | 4 +- .../commands/list/SetSpeedCommand.java | 6 +- .../commands/list/ShoutAllCommand.java | 2 +- .../commands/list/ShoutCommand.java | 4 +- .../habbohotel/commands/list/SitCommand.java | 2 +- .../commands/list/SoftKickCommand.java | 6 +- .../commands/list/StalkCommand.java | 8 +- .../commands/list/StandCommand.java | 2 +- .../commands/list/SummonCommand.java | 14 +- .../commands/list/SummonRankCommand.java | 12 +- .../commands/list/SuperPullCommand.java | 8 +- .../commands/list/TeleportCommand.java | 6 +- .../commands/list/TransformCommand.java | 8 +- .../commands/list/UnloadRoomCommand.java | 4 +- .../commands/list/UnmuteCommand.java | 6 +- .../commands/list/UpdateItemsCommand.java | 2 +- .../commands/list/UserInfoCommand.java | 2 +- .../commands/list/WordQuizCommand.java | 4 +- .../commands/list/badge/RoomBadgeCommand.java | 2 +- .../commands/list/badge/TakeBadgeCommand.java | 4 +- .../commands/list/credits/CreditsCommand.java | 2 +- .../list/credits/MassCreditsCommand.java | 2 +- .../list/credits/RoomCreditsCommand.java | 2 +- .../commands/list/gift/BaseGiftCommand.java | 4 +- .../commands/list/gift/GiftCommand.java | 4 +- .../commands/list/gift/RoomGiftCommand.java | 2 +- .../list/pixels/MassPixelsCommand.java | 2 +- .../commands/list/pixels/PixelCommand.java | 2 +- .../list/pixels/RoomPixelsCommand.java | 2 +- .../list/points/MassPointsCommand.java | 2 +- .../commands/list/points/PointsCommand.java | 2 +- .../list/points/RoomPointsCommand.java | 2 +- .../com/eu/habbo/habbohotel/games/Game.java | 16 +- .../eu/habbo/habbohotel/games/GamePlayer.java | 4 +- .../games/battlebanzai/BattleBanzaiGame.java | 42 +- .../battlebanzai/BattleBanzaiGameTeam.java | 21 +- .../games/football/FootballGame.java | 6 +- .../habbohotel/games/freeze/FreezeGame.java | 14 +- .../games/freeze/FreezeGamePlayer.java | 8 +- .../games/freeze/FreezeGameTeam.java | 19 +- .../habbo/habbohotel/games/tag/TagGame.java | 55 +- .../habbohotel/games/wired/WiredGame.java | 13 +- .../habbo/habbohotel/guilds/GuildManager.java | 4 +- .../habbohotel/items/IEventTriggers.java | 2 +- .../com/eu/habbo/habbohotel/items/Item.java | 4 +- .../habbohotel/items/ItemInteraction.java | 4 +- .../habbo/habbohotel/items/ItemManager.java | 82 +- .../habbo/habbohotel/items/NewUserGift.java | 4 +- .../InteractionBackgroundToner.java | 12 +- .../interactions/InteractionBadgeDisplay.java | 6 +- .../interactions/InteractionBlackHole.java | 2 +- .../interactions/InteractionBuildArea.java | 22 +- .../items/interactions/InteractionCannon.java | 12 +- .../interactions/InteractionClothing.java | 6 +- .../interactions/InteractionColorPlate.java | 2 +- .../interactions/InteractionColorWheel.java | 6 +- .../interactions/InteractionCrackable.java | 10 +- .../interactions/InteractionCustomValues.java | 6 +- .../interactions/InteractionDefault.java | 50 +- .../items/interactions/InteractionDice.java | 8 +- .../interactions/InteractionEffectGate.java | 10 +- .../interactions/InteractionEffectGiver.java | 10 +- .../interactions/InteractionEffectTile.java | 8 +- .../InteractionEffectVendingMachine.java | 6 +- ...nteractionEffectVendingMachineNoSides.java | 6 +- .../InteractionExternalImage.java | 6 +- .../items/interactions/InteractionFXBox.java | 4 +- .../interactions/InteractionFireworks.java | 8 +- .../items/interactions/InteractionGate.java | 8 +- .../items/interactions/InteractionGift.java | 10 +- .../interactions/InteractionGuildFurni.java | 2 +- .../interactions/InteractionGuildGate.java | 2 +- .../interactions/InteractionGymEquipment.java | 35 +- .../interactions/InteractionHanditem.java | 19 +- .../interactions/InteractionHanditemTile.java | 4 +- .../items/interactions/InteractionHopper.java | 22 +- .../InteractionInformationTerminal.java | 2 +- .../interactions/InteractionJukeBox.java | 6 +- .../interactions/InteractionLoveLock.java | 12 +- .../interactions/InteractionMannequin.java | 6 +- .../InteractionMonsterCrackable.java | 2 +- .../interactions/InteractionMoodLight.java | 9 +- .../interactions/InteractionMultiHeight.java | 26 +- .../interactions/InteractionMusicDisc.java | 6 +- .../interactions/InteractionMuteArea.java | 10 +- .../interactions/InteractionObstacle.java | 48 +- .../interactions/InteractionOneWayGate.java | 80 +- .../items/interactions/InteractionPostIt.java | 6 +- .../items/interactions/InteractionPoster.java | 6 +- .../InteractionPressurePlate.java | 6 +- .../interactions/InteractionPushable.java | 36 +- .../interactions/InteractionPuzzleBox.java | 42 +- .../interactions/InteractionPyramid.java | 9 +- .../InteractionRentableSpace.java | 16 +- .../items/interactions/InteractionRoller.java | 10 +- .../interactions/InteractionRoomAds.java | 2 +- ...Gate.java => InteractionRoomClubGate.java} | 8 +- ...er.java => InteractionRoomClubHopper.java} | 6 +- ...a => InteractionRoomClubTeleportTile.java} | 8 +- .../InteractionSnowboardSlope.java | 19 +- .../InteractionSpinningBottle.java | 8 +- .../interactions/InteractionStackHelper.java | 6 +- .../items/interactions/InteractionSwitch.java | 6 +- .../InteractionSwitchRemoteControl.java | 2 +- .../interactions/InteractionTeleport.java | 85 +- .../interactions/InteractionTeleportTile.java | 4 +- .../InteractionTileEffectProvider.java | 11 +- .../items/interactions/InteractionTrap.java | 6 +- .../InteractionVendingMachine.java | 38 +- .../interactions/InteractionVoteCounter.java | 6 +- .../items/interactions/InteractionWater.java | 29 +- .../interactions/InteractionWaterItem.java | 8 +- .../items/interactions/InteractionWired.java | 4 +- .../interactions/InteractionWiredExtra.java | 2 +- .../InteractionWiredHighscore.java | 6 +- .../interactions/InteractionYoutubeTV.java | 7 +- .../games/InteractionGameGate.java | 2 +- .../games/InteractionGameTeamItem.java | 4 +- .../games/InteractionGameTimer.java | 6 +- .../InteractionBattleBanzaiPuck.java | 78 +- .../InteractionBattleBanzaiSphere.java | 6 +- .../InteractionBattleBanzaiTeleporter.java | 10 +- .../InteractionBattleBanzaiTile.java | 10 +- .../gates/InteractionBattleBanzaiGate.java | 4 +- .../InteractionBattleBanzaiScoreboard.java | 2 +- .../games/football/InteractionFootball.java | 98 +- .../football/InteractionFootballGate.java | 10 +- .../goals/InteractionFootballGoal.java | 2 +- .../InteractionFootballScoreboard.java | 6 +- .../games/freeze/InteractionFreezeBlock.java | 12 +- .../freeze/InteractionFreezeExitTile.java | 6 +- .../games/freeze/InteractionFreezeTile.java | 12 +- .../freeze/gates/InteractionFreezeGate.java | 4 +- .../InteractionFreezeScoreboard.java | 2 +- .../games/tag/InteractionTagField.java | 6 +- .../games/tag/InteractionTagPole.java | 6 +- .../tag/icetag/InteractionIceTagField.java | 2 +- .../InteractionRollerskateField.java | 2 +- .../interfaces/ConditionalGate.java | 2 +- .../pets/InteractionMonsterPlantSeed.java | 6 +- .../interactions/pets/InteractionNest.java | 10 +- .../pets/InteractionPetBreedingNest.java | 28 +- .../pets/InteractionPetDrink.java | 23 +- .../interactions/pets/InteractionPetFood.java | 10 +- .../interactions/pets/InteractionPetToy.java | 33 +- .../pets/InteractionPetTrampoline.java | 14 +- .../interactions/pets/InteractionPetTree.java | 39 +- .../totems/InteractionTotemHead.java | 4 +- .../totems/InteractionTotemLegs.java | 4 +- .../totems/InteractionTotemPlanet.java | 8 +- .../interactions/wired/WiredSettings.java | 8 +- .../WiredConditionDateRangeActive.java | 2 +- .../WiredConditionFurniHaveFurni.java | 8 +- ....java => WiredConditionFurniHaveRoom.java} | 25 +- .../WiredConditionFurniTypeMatch.java | 11 +- .../conditions/WiredConditionGroupMember.java | 8 +- .../WiredConditionLessTimeElapsed.java | 5 +- .../WiredConditionMatchStatePosition.java | 8 +- .../WiredConditionMoreTimeElapsed.java | 4 +- .../WiredConditionNotFurniHaveFurni.java | 7 +- ...va => WiredConditionNotFurniHaveRoom.java} | 25 +- .../WiredConditionNotFurniTypeMatch.java | 12 +- .../conditions/WiredConditionNotInGroup.java | 8 +- .../conditions/WiredConditionNotInTeam.java | 5 +- .../WiredConditionNotMatchStatePosition.java | 2 +- ...t.java => WiredConditionNotRoomCount.java} | 12 +- ...va => WiredConditionNotRoomHasEffect.java} | 12 +- ...a => WiredConditionNotRoomWearsBadge.java} | 8 +- .../WiredConditionNotTriggerOnFurni.java | 2 +- ...ount.java => WiredConditionRoomCount.java} | 13 +- ....java => WiredConditionRoomHasEffect.java} | 16 +- ...ava => WiredConditionRoomHasHandItem.java} | 13 +- ...java => WiredConditionRoomWearsBadge.java} | 11 +- .../conditions/WiredConditionTeamMember.java | 5 +- .../WiredConditionTriggerOnFurni.java | 10 +- .../wired/effects/WiredEffectAlert.java | 2 +- .../wired/effects/WiredEffectBotClothes.java | 10 +- ...bbo.java => WiredEffectBotFollowRoom.java} | 17 +- .../effects/WiredEffectBotGiveHandItem.java | 25 +- .../wired/effects/WiredEffectBotTalk.java | 15 +- ...bbo.java => WiredEffectBotTalkToRoom.java} | 22 +- .../wired/effects/WiredEffectBotTeleport.java | 44 +- .../effects/WiredEffectBotWalkToFurni.java | 22 +- .../WiredEffectChangeFurniDirection.java | 33 +- .../wired/effects/WiredEffectGiveEffect.java | 2 +- .../effects/WiredEffectGiveHandItem.java | 6 +- ...redEffectGiveHotelviewBonusRarePoints.java | 10 +- .../WiredEffectGiveHotelviewHofPoints.java | 8 +- .../wired/effects/WiredEffectGiveRespect.java | 8 +- .../wired/effects/WiredEffectGiveReward.java | 12 +- .../wired/effects/WiredEffectGiveScore.java | 5 +- .../effects/WiredEffectGiveScoreToTeam.java | 5 +- .../wired/effects/WiredEffectJoinTeam.java | 10 +- ...ickHabbo.java => WiredEffectKickRoom.java} | 17 +- .../wired/effects/WiredEffectLeaveTeam.java | 10 +- .../wired/effects/WiredEffectMatchFurni.java | 7 +- .../effects/WiredEffectMoveFurniAway.java | 50 +- .../wired/effects/WiredEffectMoveFurniTo.java | 16 +- .../effects/WiredEffectMoveFurniTowards.java | 78 +- .../effects/WiredEffectMoveRotateFurni.java | 36 +- ...uteHabbo.java => WiredEffectMuteRoom.java} | 8 +- .../wired/effects/WiredEffectResetTimers.java | 3 +- .../wired/effects/WiredEffectTeleport.java | 29 +- .../wired/effects/WiredEffectToggleFurni.java | 10 +- .../effects/WiredEffectToggleRandom.java | 13 +- .../effects/WiredEffectTriggerStacks.java | 11 +- .../wired/effects/WiredEffectWhisper.java | 4 +- .../interactions/wired/extra/WiredBlob.java | 2 +- .../wired/extra/WiredExtraRandom.java | 4 +- .../wired/extra/WiredExtraUnseen.java | 4 +- .../wired/interfaces/IWiredInteraction.java | 2 +- .../wired/triggers/WiredTriggerAtSetTime.java | 7 +- .../triggers/WiredTriggerAtTimeLong.java | 7 +- .../triggers/WiredTriggerBotReachedFurni.java | 13 +- ...o.java => WiredTriggerBotReachedRoom.java} | 13 +- .../wired/triggers/WiredTriggerCollision.java | 9 +- .../WiredTriggerFurniStateToggled.java | 12 +- .../wired/triggers/WiredTriggerGameEnds.java | 6 +- .../triggers/WiredTriggerGameStarts.java | 6 +- .../wired/triggers/WiredTriggerRepeater.java | 8 +- .../triggers/WiredTriggerRepeaterLong.java | 6 +- ...m.java => WiredTriggerRoomEntersRoom.java} | 8 +- ....java => WiredTriggerRoomSaysKeyword.java} | 13 +- ...java => WiredTriggerRoomWalkOffFurni.java} | 17 +- ....java => WiredTriggerRoomWalkOnFurni.java} | 12 +- .../triggers/WiredTriggerScoreAchieved.java | 5 +- .../habbohotel/messenger/MessengerBuddy.java | 4 +- .../habbohotel/modtool/ModToolIssue.java | 4 +- .../habbohotel/modtool/ModToolManager.java | 15 +- .../navigation/NavigatorManager.java | 2 +- .../navigation/NavigatorPublicCategory.java | 2 +- .../navigation/SearchResultList.java | 2 +- .../habbohotel/pets/MonsterplantPet.java | 25 +- .../com/eu/habbo/habbohotel/pets/Pet.java | 149 +- .../eu/habbo/habbohotel/pets/PetCommand.java | 2 +- .../com/eu/habbo/habbohotel/pets/PetData.java | 32 +- .../eu/habbo/habbohotel/pets/PetManager.java | 14 +- .../habbohotel/pets/actions/ActionBreed.java | 4 +- .../habbohotel/pets/actions/ActionCroak.java | 4 +- .../habbohotel/pets/actions/ActionDip.java | 6 +- .../habbohotel/pets/actions/ActionDown.java | 6 +- .../habbohotel/pets/actions/ActionHang.java | 2 +- .../habbohotel/pets/actions/ActionHere.java | 2 +- .../pets/actions/ActionMoveForward.java | 2 +- .../pets/actions/ActionPlayDead.java | 2 +- .../pets/actions/ActionPlayFootball.java | 6 +- .../habbohotel/pets/actions/ActionRelax.java | 2 +- .../pets/actions/ActionRingOfFire.java | 2 +- .../habbohotel/pets/actions/ActionRoll.java | 2 +- .../habbohotel/pets/actions/ActionSit.java | 6 +- .../habbohotel/pets/actions/ActionSwing.java | 2 +- .../pets/actions/ActionTurnLeft.java | 6 +- .../pets/actions/ActionTurnRight.java | 6 +- .../habbohotel/pets/actions/ActionWave.java | 2 +- .../habbohotel/rooms/CustomRoomLayout.java | 2 +- .../com/eu/habbo/habbohotel/rooms/Room.java | 1783 +++++------------ .../habbohotel/rooms/RoomChatMessage.java | 15 +- .../eu/habbo/habbohotel/rooms/RoomInfo.java | 242 +++ .../habbohotel/rooms/RoomItemManager.java | 72 + .../eu/habbo/habbohotel/rooms/RoomLayout.java | 12 +- .../habbo/habbohotel/rooms/RoomManager.java | 521 ++--- .../habbo/habbohotel/rooms/RoomPromotion.java | 2 +- .../habbohotel/rooms/RoomSpecialTypes.java | 22 +- .../eu/habbo/habbohotel/rooms/RoomTile.java | 25 +- .../eu/habbo/habbohotel/rooms/RoomTrade.java | 32 +- .../habbo/habbohotel/rooms/RoomTradeUser.java | 12 +- .../eu/habbo/habbohotel/rooms/RoomUnit.java | 752 ------- .../habbohotel/rooms/RoomUnitManager.java | 439 ++++ .../habbohotel/rooms/RoomUserRotation.java | 56 - .../habbo/habbohotel/rooms/TraxManager.java | 24 +- .../rooms/entities/IRoomEntity.java | 31 + .../habbohotel/rooms/entities/RoomEntity.java | 58 + .../rooms/entities/RoomRotation.java | 56 + .../rooms/entities/items/ItemLimitedData.java | 13 + .../entities/items/RoomItem.java} | 44 +- .../entities/items/types/RoomFloorItem.java | 30 + .../entities/items/types/RoomWallItem.java | 30 + .../rooms/entities/units/IRoomUnit.java | 4 + .../rooms/entities/units/RoomUnit.java | 433 ++++ .../{ => entities/units}/RoomUnitType.java | 5 +- .../entities/units/types/RoomAvatar.java | 322 +++ .../rooms/entities/units/types/RoomBot.java | 15 + .../rooms/entities/units/types/RoomHabbo.java | 64 + .../rooms/entities/units/types/RoomPet.java | 208 ++ .../com/eu/habbo/habbohotel/units/Unit.java | 11 + .../com/eu/habbo/habbohotel/users/Habbo.java | 48 +- .../eu/habbo/habbohotel/users/HabboInfo.java | 28 +- .../users/inventory/EffectsComponent.java | 4 +- .../users/inventory/ItemsComponent.java | 36 +- .../subscriptions/SubscriptionHabboClub.java | 4 +- .../wired/WiredChangeDirectionSetting.java | 4 +- .../habbo/habbohotel/wired/WiredHandler.java | 14 +- .../WiredHighscoreMidnightUpdater.java | 6 +- .../ambassadors/AmbassadorAlertEvent.java | 2 +- .../ambassadors/FollowFriendEvent.java | 4 +- .../incoming/camera/PurchasePhotoEvent.java | 6 +- .../incoming/camera/RenderRoomEvent.java | 6 +- .../camera/RenderRoomThumbnailEvent.java | 4 +- .../PurchaseFromCatalogAsGiftEvent.java | 18 +- .../catalog/marketplace/MakeOfferEvent.java | 4 +- .../catalog/recycler/PresentOpenEvent.java | 10 +- .../catalog/recycler/RecycleItemsEvent.java | 10 +- .../incoming/crafting/CraftEvent.java | 14 +- .../incoming/crafting/CraftSecretEvent.java | 22 +- .../crafting/GetCraftingRecipeEvent.java | 4 +- .../GetCraftingRecipesAvailableEvent.java | 14 +- .../GetOccupiedTilesEvent.java | 4 +- .../GetRoomEntryTileEvent.java | 6 +- .../UpdateFloorPropertiesEvent.java | 20 +- .../incoming/friends/FindNewFriendsEvent.java | 6 +- .../incoming/friends/VisitUserEvent.java | 6 +- .../GuideSessionGetRequesterRoomEvent.java | 2 +- .../GuideSessionInviteRequesterEvent.java | 2 +- .../guilds/AddAdminRightsToMemberEvent.java | 8 +- .../guilds/ApproveMembershipRequestEvent.java | 8 +- .../incoming/guilds/CreateGuildEvent.java | 16 +- .../incoming/guilds/DeactivateGuildEvent.java | 12 +- .../DeselectFavouriteHabboGroupEvent.java | 4 +- .../guilds/GetGuildCreationInfoEvent.java | 2 +- .../GetGuildFurniContextMenuInfoEvent.java | 6 +- .../guilds/GetMemberGuildItemCountEvent.java | 2 +- .../incoming/guilds/JoinHabboGroupEvent.java | 4 +- .../incoming/guilds/KickMemberEvent.java | 10 +- .../guilds/RejectMembershipRequestEvent.java | 4 +- .../RemoveAdminRightsFromMemberEvent.java | 4 +- .../SelectFavouriteHabboGroupEvent.java | 6 +- .../guilds/UpdateGuildBadgeEvent.java | 4 +- .../guilds/UpdateGuildColorsEvent.java | 10 +- .../guilds/UpdateGuildIdentityEvent.java | 8 +- .../guilds/UpdateGuildSettingsEvent.java | 2 +- .../incoming/hotelview/QuitEvent.java | 17 +- ...questFurniInventoryWhenNotInRoomEvent.java | 6 +- .../incoming/modtool/CallForHelpEvent.java | 4 +- .../modtool/CallForHelpFromPhotoEvent.java | 6 +- .../modtool/ChatReviewSessionCreateEvent.java | 4 +- .../incoming/modtool/GetCfhChatlogEvent.java | 4 +- .../modtool/GetModeratorRoomInfoEvent.java | 2 +- .../incoming/modtool/GetRoomChatlogEvent.java | 4 +- .../ModToolRequestRoomUserChatlogEvent.java | 4 +- .../incoming/modtool/ModerateRoomEvent.java | 2 +- .../modtool/ModeratorActionEvent.java | 2 +- .../incoming/navigator/CreateFlatEvent.java | 8 +- .../incoming/navigator/DeleteRoomEvent.java | 24 +- .../navigator/ForwardToSomeRoomEvent.java | 3 +- .../navigator/NewNavigatorSearchEvent.java | 2 +- .../navigator/PopularRoomsSearchEvent.java | 2 +- .../incoming/polls/AnswerPollEvent.java | 2 +- .../incoming/rooms/AddFavouriteRoomEvent.java | 2 +- .../rooms/DeleteFavouriteRoomEvent.java | 2 +- .../rooms/GetBannedUsersFromRoomEvent.java | 2 +- .../rooms/GetCustomRoomFilterEvent.java | 2 +- .../rooms/GetFlatControllersEvent.java | 4 +- .../incoming/rooms/GetGuestRoomEvent.java | 5 +- .../incoming/rooms/GetRoomEntryDataEvent.java | 4 +- .../incoming/rooms/GetRoomSettingsEvent.java | 2 +- .../incoming/rooms/LetUserInEvent.java | 22 +- .../incoming/rooms/MuteAllInRoomEvent.java | 4 +- .../rooms/OpenFlatConnectionEvent.java | 21 +- .../incoming/rooms/RateFlatEvent.java | 2 +- .../incoming/rooms/RemoveAllRightsEvent.java | 8 +- .../rooms/RemoveOwnRoomRightsRoomEvent.java | 2 +- .../incoming/rooms/RequestHeightmapEvent.java | 5 +- .../rooms/RequestRoomPropertySet.java | 16 +- .../incoming/rooms/SaveRoomSettingsEvent.java | 81 +- .../SetRoomBackgroundColorDataEvent.java | 6 +- .../rooms/SubmitRoomToCompetitionEvent.java | 9 +- .../incoming/rooms/ToggleStaffPickEvent.java | 9 +- .../incoming/rooms/UpdateRoomFilterEvent.java | 6 +- .../incoming/rooms/bots/CommandBotEvent.java | 8 +- .../GetBotCommandConfigurationDataEvent.java | 6 +- .../incoming/rooms/bots/PlaceBotEvent.java | 10 +- .../rooms/bots/RemoveBotFromFlatEvent.java | 4 +- .../rooms/items/AddSpamWallPostItEvent.java | 10 +- .../rooms/items/CreditFurniRedeemEvent.java | 6 +- .../items/CustomizeAvatarWithFurniEvent.java | 18 +- .../incoming/rooms/items/DiceOffEvent.java | 8 +- .../rooms/items/EnterOneWayDoorEvent.java | 8 +- .../rooms/items/GetItemDataEvent.java | 6 +- .../incoming/rooms/items/MoveObjectEvent.java | 6 +- .../rooms/items/MoveWallItemEvent.java | 14 +- .../rooms/items/PickupObjectEvent.java | 14 +- .../rooms/items/PlaceObjectEvent.java | 16 +- .../rooms/items/PlacePostItEvent.java | 12 +- .../incoming/rooms/items/RemoveItemEvent.java | 6 +- .../items/RoomDimmerChangeStateEvent.java | 11 +- .../items/RoomDimmerGetPresetsEvent.java | 6 +- .../items/RoomDimmerSavePresetEvent.java | 13 +- .../items/SetClothingChangeDataEvent.java | 8 +- .../items/SetCustomStackingHeightEvent.java | 18 +- .../rooms/items/SetItemDataEvent.java | 6 +- .../rooms/items/SetMannequinFigureEvent.java | 8 +- .../rooms/items/SetMannequinNameEvent.java | 8 +- .../rooms/items/SetObjectDataEvent.java | 6 +- .../rooms/items/SetRandomStateEvent.java | 6 +- .../rooms/items/SpinWheelOfFortuneEvent.java | 6 +- .../incoming/rooms/items/ThrowDiceEvent.java | 8 +- .../rooms/items/UseFurnitureEvent.java | 21 +- .../rooms/items/UseWallItemEvent.java | 6 +- .../items/jukebox/AddJukeboxDiskEvent.java | 8 +- .../rooms/items/jukebox/JukeboxEvent.java | 4 +- .../items/jukebox/RemoveJukeboxDiskEvent.java | 4 +- .../lovelock/FriendFurniConfirmLockEvent.java | 10 +- .../RentableSpaceCancelRentEvent.java | 8 +- .../rentablespace/RentableSpaceRentEvent.java | 6 +- .../ControlYoutubeDisplayPlaybackEvent.java | 8 +- .../youtube/GetYoutubeDisplayStatusEvent.java | 6 +- .../SetYoutubeDisplayPlaylistEvent.java | 8 +- .../rooms/items/youtube/YoutubeEvent.java | 4 +- .../incoming/rooms/pets/BreedPetsEvent.java | 6 +- .../rooms/pets/CancelPetBreedingEvent.java | 4 +- .../rooms/pets/CompostPlantEvent.java | 14 +- .../rooms/pets/ConfirmPetBreedingEvent.java | 4 +- .../pets/CustomizePetWithFurniEvent.java | 46 +- .../rooms/pets/GetPetCommandsEvent.java | 4 +- .../incoming/rooms/pets/GetPetInfoEvent.java | 4 +- .../incoming/rooms/pets/MountPetEvent.java | 15 +- .../incoming/rooms/pets/MovePetEvent.java | 13 +- .../rooms/pets/OpenPetPackageEvent.java | 10 +- .../incoming/rooms/pets/PlacePetEvent.java | 33 +- .../rooms/pets/RemovePetFromFlatEvent.java | 8 +- .../rooms/pets/RemoveSaddleFromPetEvent.java | 11 +- .../incoming/rooms/pets/RespectPetEvent.java | 12 +- .../TogglePetBreedingPermissionEvent.java | 2 +- .../pets/TogglePetRidingPermissionEvent.java | 6 +- .../rooms/promotions/EditEventEvent.java | 4 +- .../rooms/promotions/PurchaseRoomAdEvent.java | 4 +- .../rooms/users/AssignRightsEvent.java | 6 +- .../rooms/users/AvatarExpressionEvent.java | 4 +- .../rooms/users/CancelTypingEvent.java | 4 +- .../rooms/users/ChangePostureEvent.java | 6 +- .../incoming/rooms/users/ChatEvent.java | 2 +- .../incoming/rooms/users/DanceEvent.java | 8 +- .../rooms/users/DropCarryItemEvent.java | 2 +- .../rooms/users/GetUserTagsEvent.java | 4 +- .../incoming/rooms/users/IgnoreUserEvent.java | 2 +- .../incoming/rooms/users/LookToEvent.java | 19 +- .../incoming/rooms/users/MoveAvatarEvent.java | 202 +- .../rooms/users/PassCarryItemEvent.java | 6 +- .../rooms/users/RemoveRightsEvent.java | 4 +- .../rooms/users/RespectUserEvent.java | 2 +- .../rooms/users/RoomUserKickEvent.java | 6 +- .../rooms/users/RoomUserMuteEvent.java | 4 +- .../incoming/rooms/users/ShoutEvent.java | 4 +- .../incoming/rooms/users/SignEvent.java | 8 +- .../rooms/users/StartTypingEvent.java | 4 +- .../rooms/users/UnbanUserFromRoomEvent.java | 4 +- .../rooms/users/UnignoreUserEvent.java | 2 +- .../incoming/rooms/users/WhisperEvent.java | 4 +- .../incoming/trading/AcceptTradingEvent.java | 4 +- .../incoming/trading/AddItemToTradeEvent.java | 8 +- .../trading/AddItemsToTradeEvent.java | 10 +- .../trading/ConfirmAcceptTradingEvent.java | 2 +- .../incoming/trading/OpenTradingEvent.java | 6 +- .../trading/RemoveItemFromTradeEvent.java | 6 +- .../incoming/trading/TradingEvent.java | 2 +- .../trading/UnacceptTradingEvent.java | 2 +- .../users/AvatarEffectSelectedEvent.java | 4 +- .../incoming/users/ChangeMottoEvent.java | 4 +- .../incoming/users/ChangeUserNameEvent.java | 9 +- .../users/SetActivatedBadgesEvent.java | 4 +- .../incoming/users/UpdateFigureDataEvent.java | 4 +- .../incoming/wired/ApplySnapshotEvent.java | 14 +- .../incoming/wired/UpdateActionEvent.java | 4 +- .../incoming/wired/UpdateConditionEvent.java | 4 +- .../incoming/wired/UpdateTriggerEvent.java | 4 +- ...sionInvitedToGuideRoomMessageComposer.java | 4 +- ...deSessionRequesterRoomMessageComposer.java | 2 +- ...voriteMembershipUpdateMessageComposer.java | 4 +- .../GuildCreationInfoMessageComposer.java | 4 +- ...ldFurniContextMenuInfoMessageComposer.java | 4 +- .../FurniListAddOrUpdateComposer.java | 34 +- .../outgoing/inventory/FurniListComposer.java | 48 +- .../inventory/UnseenItemsComposer.java | 14 +- .../outgoing/modtool/CfhChatlogComposer.java | 4 +- .../modtool/ModeratorRoomInfoComposer.java | 20 +- .../outgoing/modtool/RoomChatlogComposer.java | 4 +- .../navigator/FlatCreatedComposer.java | 4 +- .../rooms/BannedUsersFromRoomComposer.java | 2 +- .../rooms/FlatControllerAddedComposer.java | 2 +- .../rooms/FlatControllerRemovedComposer.java | 2 +- .../rooms/FlatControllersComposer.java | 2 +- .../rooms/FloorHeightMapComposer.java | 2 +- .../rooms/GamePlayerValueMessageComposer.java | 2 +- .../rooms/GetGuestRoomResultComposer.java | 93 +- .../RoomChatSettingsMessageComposer.java | 10 +- .../outgoing/rooms/RoomEntryInfoComposer.java | 4 +- .../rooms/RoomEntryInfoMessageComposer.java | 2 +- .../RoomFloorThicknessUpdatedComposer.java | 6 +- .../rooms/RoomInfoUpdatedComposer.java | 2 +- .../rooms/RoomReadyMessageComposer.java | 2 +- .../rooms/RoomSettingsDataComposer.java | 50 +- .../rooms/RoomSettingsSavedComposer.java | 2 +- .../RoomVisualizationSettingsComposer.java | 6 +- .../items/FloorItemOnRollerComposer.java | 8 +- .../rooms/items/ItemAddMessageComposer.java | 4 +- .../items/ItemRemoveMessageComposer.java | 4 +- .../items/ItemUpdateMessageComposer.java | 4 +- .../outgoing/rooms/items/ItemsComposer.java | 6 +- .../rooms/items/ItemsDataUpdateComposer.java | 6 +- .../rooms/items/ObjectAddMessageComposer.java | 4 +- .../ObjectDataUpdateMessageComposer.java | 4 +- .../items/ObjectUpdateMessageComposer.java | 4 +- .../rooms/items/ObjectsMessageComposer.java | 6 +- .../OneWayDoorStatusMessageComposer.java | 4 +- .../items/PresentOpenedMessageComposer.java | 4 +- .../rooms/items/RemoveFloorItemComposer.java | 6 +- .../RequestSpamWallPostItMessageComposer.java | 4 +- .../UpdateStackHeightTileHeightComposer.java | 4 +- .../RentableSpaceStatusMessageComposer.java | 4 +- ...penPetPackageRequestedMessageComposer.java | 4 +- .../rooms/pets/PetExperienceComposer.java | 2 +- .../rooms/pets/PetFigureUpdateComposer.java | 2 +- .../rooms/pets/PetLevelUpdatedComposer.java | 2 +- .../rooms/pets/PetStatusUpdateComposer.java | 2 +- .../outgoing/rooms/pets/RoomPetComposer.java | 22 +- .../RoomAdPurchaseInfoComposer.java | 4 +- .../rooms/promotions/RoomEventComposer.java | 8 +- .../users/AvatarEffectMessageComposer.java | 12 +- .../users/CarryObjectMessageComposer.java | 8 +- .../rooms/users/DanceMessageComposer.java | 4 +- .../users/ExpressionMessageComposer.java | 4 +- .../HandItemReceivedMessageComposer.java | 4 +- .../rooms/users/NoSuchFlatComposer.java | 2 +- .../rooms/users/RoomUnitOnRollerComposer.java | 28 +- .../rooms/users/RoomUsersComposer.java | 32 +- .../rooms/users/SleepMessageComposer.java | 4 +- .../users/UserChangeMessageComposer.java | 2 +- .../users/UserNameChangedMessageComposer.java | 2 +- .../users/UserRemoveMessageComposer.java | 4 +- .../rooms/users/UserTagsMessageComposer.java | 2 +- .../users/UserTypingMessageComposer.java | 4 +- .../users/UserUnbannedFromRoomComposer.java | 2 +- .../rooms/users/UserUpdateComposer.java | 14 +- .../trading/TradingItemListComposer.java | 4 +- .../unknown/PostItPlacedComposer.java | 4 +- ...oomMessageNotificationMessageComposer.java | 4 +- .../messages/outgoing/wired/OpenComposer.java | 4 +- .../habbo/messages/rcon/ChangeRoomOwner.java | 22 +- .../eu/habbo/messages/rcon/ForwardUser.java | 6 +- .../com/eu/habbo/messages/rcon/SendGift.java | 4 +- .../com/eu/habbo/messages/rcon/SetMotto.java | 2 +- .../com/eu/habbo/messages/rcon/StalkUser.java | 6 +- .../eu/habbo/messages/rcon/UpdateUser.java | 4 +- .../furniture/FurnitureBuildheightEvent.java | 4 +- .../furniture/FurnitureDiceRolledEvent.java | 4 +- .../events/furniture/FurnitureEvent.java | 6 +- .../events/furniture/FurnitureMovedEvent.java | 4 +- .../furniture/FurniturePickedUpEvent.java | 4 +- .../furniture/FurniturePlacedEvent.java | 4 +- .../furniture/FurnitureRedeemedEvent.java | 4 +- .../furniture/FurnitureRolledEvent.java | 6 +- .../furniture/FurnitureRoomTonerEvent.java | 4 +- .../furniture/FurnitureRotatedEvent.java | 4 +- .../furniture/FurnitureToggleEvent.java | 4 +- .../events/furniture/FurnitureUserEvent.java | 4 +- .../wired/WiredConditionFailedEvent.java | 2 +- .../wired/WiredStackExecutedEvent.java | 2 +- .../wired/WiredStackTriggeredEvent.java | 2 +- .../inventory/InventoryItemAddedEvent.java | 4 +- .../events/inventory/InventoryItemEvent.java | 6 +- .../inventory/InventoryItemRemovedEvent.java | 4 +- .../inventory/InventoryItemsAddedEvent.java | 6 +- .../MarketPlaceItemOfferedEvent.java | 6 +- .../marketplace/MarketPlaceItemSoldEvent.java | 6 +- .../events/rooms/RoomFloorItemsLoadEvent.java | 10 +- .../plugin/events/roomunit/RoomUnitEvent.java | 2 +- .../roomunit/RoomUnitLookAtPointEvent.java | 2 +- .../events/roomunit/RoomUnitSetGoalEvent.java | 2 +- .../plugin/events/users/UserRolledEvent.java | 6 +- .../UserCatalogFurnitureBoughtEvent.java | 6 +- .../UserCatalogItemPurchasedEvent.java | 6 +- .../runnables/BackgroundAnimation.java | 4 +- .../runnables/BanzaiRandomTeleport.java | 18 +- .../runnables/BattleBanzaiTilesFlicker.java | 8 +- .../threading/runnables/BotFollowHabbo.java | 8 +- .../threading/runnables/CannonKickAction.java | 10 +- .../threading/runnables/ClearRentedSpace.java | 8 +- .../habbo/threading/runnables/CloseGate.java | 15 +- .../threading/runnables/CrackableExplode.java | 6 +- .../runnables/HabboGiveHandItemToHabbo.java | 12 +- .../runnables/HabboItemNewState.java | 6 +- .../threading/runnables/KickBallAction.java | 10 +- .../runnables/OneWayGateActionOne.java | 6 +- .../habbo/threading/runnables/OpenGift.java | 12 +- .../threading/runnables/PetFollowHabbo.java | 6 +- .../runnables/QueryDeleteHabboItem.java | 4 +- .../runnables/QueryDeleteHabboItems.java | 6 +- .../threading/runnables/RandomDiceNumber.java | 8 +- .../runnables/RandomSpinningBottleNumber.java | 8 +- .../runnables/RemoveFloorItemTask.java | 4 +- .../threading/runnables/RoomTrashing.java | 18 +- .../runnables/RoomUnitGiveHanditem.java | 10 +- .../threading/runnables/RoomUnitKick.java | 3 +- .../threading/runnables/RoomUnitRidePet.java | 20 +- .../threading/runnables/RoomUnitTeleport.java | 18 +- .../RoomUnitTeleportWalkToAction.java | 12 +- .../RoomUnitVendingMachineAction.java | 12 +- .../runnables/RoomUnitWalkToLocation.java | 6 +- .../runnables/RoomUnitWalkToRoomUnit.java | 6 +- .../threading/runnables/SaveScoreForTeam.java | 4 +- .../runnables/SendRoomUnitEffectComposer.java | 8 +- .../runnables/TeleportInteraction.java | 38 +- .../runnables/WiredCollissionRunnable.java | 2 +- .../threading/runnables/WiredExecuteTask.java | 20 +- .../runnables/WiredRepeatEffectTask.java | 8 +- .../threading/runnables/YouAreAPirate.java | 2 +- .../runnables/YoutubeAdvanceVideo.java | 2 +- .../runnables/freeze/FreezeClearEffects.java | 7 +- .../freeze/FreezeHandleSnowballExplosion.java | 9 +- .../freeze/FreezeResetExplosionTiles.java | 4 +- .../runnables/freeze/FreezeThrowSnowball.java | 4 +- .../threading/runnables/games/GameTimer.java | 2 +- .../runnables/hopper/HopperActionFive.java | 4 +- .../runnables/hopper/HopperActionFour.java | 4 +- .../runnables/hopper/HopperActionOne.java | 10 +- .../runnables/hopper/HopperActionThree.java | 16 +- .../runnables/hopper/HopperActionTwo.java | 4 +- .../teleport/TeleportActionFive.java | 12 +- .../teleport/TeleportActionFour.java | 6 +- .../runnables/teleport/TeleportActionOne.java | 12 +- .../teleport/TeleportActionThree.java | 24 +- .../runnables/teleport/TeleportActionTwo.java | 8 +- 682 files changed, 6196 insertions(+), 5707 deletions(-) rename src/main/java/com/eu/habbo/habbohotel/items/interactions/{InteractionHabboClubGate.java => InteractionRoomClubGate.java} (86%) rename src/main/java/com/eu/habbo/habbohotel/items/interactions/{InteractionHabboClubHopper.java => InteractionRoomClubHopper.java} (79%) rename src/main/java/com/eu/habbo/habbohotel/items/interactions/{InteractionHabboClubTeleportTile.java => InteractionRoomClubTeleportTile.java} (70%) rename src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/{WiredConditionFurniHaveHabbo.java => WiredConditionFurniHaveRoom.java} (62%) rename src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/{WiredConditionNotFurniHaveHabbo.java => WiredConditionNotFurniHaveRoom.java} (62%) rename src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/{WiredConditionNotHabboCount.java => WiredConditionNotRoomCount.java} (52%) rename src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/{WiredConditionNotHabboHasEffect.java => WiredConditionNotRoomHasEffect.java} (52%) rename src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/{WiredConditionNotHabboWearsBadge.java => WiredConditionNotRoomWearsBadge.java} (67%) rename src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/{WiredConditionHabboCount.java => WiredConditionRoomCount.java} (70%) rename src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/{WiredConditionHabboHasEffect.java => WiredConditionRoomHasEffect.java} (63%) rename src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/{WiredConditionHabboHasHandItem.java => WiredConditionRoomHasHandItem.java} (66%) rename src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/{WiredConditionHabboWearsBadge.java => WiredConditionRoomWearsBadge.java} (73%) rename src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/{WiredEffectBotFollowHabbo.java => WiredEffectBotFollowRoom.java} (65%) rename src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/{WiredEffectBotTalkToHabbo.java => WiredEffectBotTalkToRoom.java} (79%) rename src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/{WiredEffectKickHabbo.java => WiredEffectKickRoom.java} (73%) rename src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/{WiredEffectMuteHabbo.java => WiredEffectMuteRoom.java} (84%) rename src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/{WiredTriggerBotReachedHabbo.java => WiredTriggerBotReachedRoom.java} (51%) rename src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/{WiredTriggerHabboEntersRoom.java => WiredTriggerRoomEntersRoom.java} (74%) rename src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/{WiredTriggerHabboSaysKeyword.java => WiredTriggerRoomSaysKeyword.java} (69%) rename src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/{WiredTriggerHabboWalkOffFurni.java => WiredTriggerRoomWalkOffFurni.java} (58%) rename src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/{WiredTriggerHabboWalkOnFurni.java => WiredTriggerRoomWalkOnFurni.java} (64%) create mode 100644 src/main/java/com/eu/habbo/habbohotel/rooms/RoomInfo.java create mode 100644 src/main/java/com/eu/habbo/habbohotel/rooms/RoomItemManager.java delete mode 100644 src/main/java/com/eu/habbo/habbohotel/rooms/RoomUnit.java create mode 100644 src/main/java/com/eu/habbo/habbohotel/rooms/RoomUnitManager.java delete mode 100644 src/main/java/com/eu/habbo/habbohotel/rooms/RoomUserRotation.java create mode 100644 src/main/java/com/eu/habbo/habbohotel/rooms/entities/IRoomEntity.java create mode 100644 src/main/java/com/eu/habbo/habbohotel/rooms/entities/RoomEntity.java create mode 100644 src/main/java/com/eu/habbo/habbohotel/rooms/entities/RoomRotation.java create mode 100644 src/main/java/com/eu/habbo/habbohotel/rooms/entities/items/ItemLimitedData.java rename src/main/java/com/eu/habbo/habbohotel/{users/HabboItem.java => rooms/entities/items/RoomItem.java} (91%) create mode 100644 src/main/java/com/eu/habbo/habbohotel/rooms/entities/items/types/RoomFloorItem.java create mode 100644 src/main/java/com/eu/habbo/habbohotel/rooms/entities/items/types/RoomWallItem.java create mode 100644 src/main/java/com/eu/habbo/habbohotel/rooms/entities/units/IRoomUnit.java create mode 100644 src/main/java/com/eu/habbo/habbohotel/rooms/entities/units/RoomUnit.java rename src/main/java/com/eu/habbo/habbohotel/rooms/{ => entities/units}/RoomUnitType.java (73%) create mode 100644 src/main/java/com/eu/habbo/habbohotel/rooms/entities/units/types/RoomAvatar.java create mode 100644 src/main/java/com/eu/habbo/habbohotel/rooms/entities/units/types/RoomBot.java create mode 100644 src/main/java/com/eu/habbo/habbohotel/rooms/entities/units/types/RoomHabbo.java create mode 100644 src/main/java/com/eu/habbo/habbohotel/rooms/entities/units/types/RoomPet.java create mode 100644 src/main/java/com/eu/habbo/habbohotel/units/Unit.java diff --git a/src/main/java/com/eu/habbo/core/CreditsScheduler.java b/src/main/java/com/eu/habbo/core/CreditsScheduler.java index 2c691133..62e2cffd 100644 --- a/src/main/java/com/eu/habbo/core/CreditsScheduler.java +++ b/src/main/java/com/eu/habbo/core/CreditsScheduler.java @@ -45,7 +45,7 @@ public class CreditsScheduler extends Scheduler { try { if (habbo != null) { - if (habbo.getHabboInfo().getCurrentRoom() == null && IGNORE_HOTEL_VIEW) + if (habbo.getRoomUnit().getRoom() == null && IGNORE_HOTEL_VIEW) continue; if (habbo.getRoomUnit().isIdle() && IGNORE_IDLED) diff --git a/src/main/java/com/eu/habbo/core/Easter.java b/src/main/java/com/eu/habbo/core/Easter.java index 40b57a6c..0c0007bf 100644 --- a/src/main/java/com/eu/habbo/core/Easter.java +++ b/src/main/java/com/eu/habbo/core/Easter.java @@ -15,7 +15,7 @@ public class Easter { if (Emulator.getConfig().getBoolean("easter_eggs.enabled") && event.getNewMotto().equalsIgnoreCase("crickey!")) { event.habbo.getClient().sendResponse(new WhisperMessageComposer(new RoomChatMessage(event.getNewMotto(), event.habbo, event.habbo, RoomChatMessageBubbles.ALERT))); - Room room = event.habbo.getHabboInfo().getCurrentRoom(); + Room room = event.habbo.getRoomUnit().getRoom(); room.sendComposer(new UserRemoveMessageComposer(event.habbo.getRoomUnit()).compose()); room.sendComposer(new RoomUserPetComposer(2, 1, "FFFFFF", event.habbo).compose()); diff --git a/src/main/java/com/eu/habbo/core/GotwPointsScheduler.java b/src/main/java/com/eu/habbo/core/GotwPointsScheduler.java index 8b19429c..66c70e8b 100644 --- a/src/main/java/com/eu/habbo/core/GotwPointsScheduler.java +++ b/src/main/java/com/eu/habbo/core/GotwPointsScheduler.java @@ -45,7 +45,7 @@ public class GotwPointsScheduler extends Scheduler { try { if (habbo != null) { - if (habbo.getHabboInfo().getCurrentRoom() == null && IGNORE_HOTEL_VIEW) + if (habbo.getRoomUnit().getRoom() == null && IGNORE_HOTEL_VIEW) continue; if (habbo.getRoomUnit().isIdle() && IGNORE_IDLED) diff --git a/src/main/java/com/eu/habbo/core/PixelScheduler.java b/src/main/java/com/eu/habbo/core/PixelScheduler.java index ac36ec14..0bd440bf 100644 --- a/src/main/java/com/eu/habbo/core/PixelScheduler.java +++ b/src/main/java/com/eu/habbo/core/PixelScheduler.java @@ -40,7 +40,7 @@ public class PixelScheduler extends Scheduler { habbo = map.getValue(); try { if (habbo != null) { - if (habbo.getHabboInfo().getCurrentRoom() == null && IGNORE_HOTEL_VIEW) + if (habbo.getRoomUnit().getRoom() == null && IGNORE_HOTEL_VIEW) continue; if (habbo.getRoomUnit().isIdle() && IGNORE_IDLED) diff --git a/src/main/java/com/eu/habbo/core/PointsScheduler.java b/src/main/java/com/eu/habbo/core/PointsScheduler.java index 1fce2860..664026f3 100644 --- a/src/main/java/com/eu/habbo/core/PointsScheduler.java +++ b/src/main/java/com/eu/habbo/core/PointsScheduler.java @@ -44,7 +44,7 @@ public class PointsScheduler extends Scheduler { try { if (habbo != null) { - if (habbo.getHabboInfo().getCurrentRoom() == null && IGNORE_HOTEL_VIEW) + if (habbo.getRoomUnit().getRoom() == null && IGNORE_HOTEL_VIEW) continue; if (habbo.getRoomUnit().isIdle() && IGNORE_IDLED) diff --git a/src/main/java/com/eu/habbo/core/RoomUserPetComposer.java b/src/main/java/com/eu/habbo/core/RoomUserPetComposer.java index 515334d5..0b6926e5 100644 --- a/src/main/java/com/eu/habbo/core/RoomUserPetComposer.java +++ b/src/main/java/com/eu/habbo/core/RoomUserPetComposer.java @@ -22,10 +22,10 @@ public class RoomUserPetComposer extends MessageComposer { this.response.appendString(this.habbo.getHabboInfo().getUsername()); this.response.appendString(""); this.response.appendString(this.petType + " " + this.race + " " + this.color + " 2 2 -1 0 3 -1 0"); - this.response.appendInt(this.habbo.getRoomUnit().getId()); - this.response.appendInt(this.habbo.getRoomUnit().getX()); - this.response.appendInt(this.habbo.getRoomUnit().getY()); - this.response.appendString(this.habbo.getRoomUnit().getZ() + ""); + this.response.appendInt(this.habbo.getRoomUnit().getVirtualId()); + this.response.appendInt(this.habbo.getRoomUnit().getCurrentPosition().getX()); + this.response.appendInt(this.habbo.getRoomUnit().getCurrentPosition().getY()); + this.response.appendString(this.habbo.getRoomUnit().getCurrentZ() + ""); this.response.appendInt(this.habbo.getRoomUnit().getBodyRotation().getValue()); this.response.appendInt(2); this.response.appendInt(this.petType); diff --git a/src/main/java/com/eu/habbo/database/DatabaseConstants.java b/src/main/java/com/eu/habbo/database/DatabaseConstants.java index 5b4a706f..4a55cb3f 100644 --- a/src/main/java/com/eu/habbo/database/DatabaseConstants.java +++ b/src/main/java/com/eu/habbo/database/DatabaseConstants.java @@ -4,4 +4,4 @@ public class DatabaseConstants { public static final String CAUGHT_SQL_EXCEPTION = "Caught SQL exception"; public final static String USER_ID = "user_id"; -} +} \ No newline at end of file diff --git a/src/main/java/com/eu/habbo/habbohotel/achievements/AchievementManager.java b/src/main/java/com/eu/habbo/habbohotel/achievements/AchievementManager.java index a7c23ace..37e1e048 100644 --- a/src/main/java/com/eu/habbo/habbohotel/achievements/AchievementManager.java +++ b/src/main/java/com/eu/habbo/habbohotel/achievements/AchievementManager.java @@ -2,9 +2,9 @@ package com.eu.habbo.habbohotel.achievements; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.items.Item; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.habbohotel.users.HabboBadge; -import com.eu.habbo.habbohotel.users.HabboItem; import com.eu.habbo.messages.outgoing.achievements.AchievementComposer; import com.eu.habbo.messages.outgoing.achievements.AchievementUnlockedComposer; import com.eu.habbo.messages.outgoing.achievements.talenttrack.TalentLevelUpComposer; @@ -17,7 +17,6 @@ import com.eu.habbo.plugin.Event; import com.eu.habbo.plugin.events.users.achievements.UserAchievementLeveledEvent; import com.eu.habbo.plugin.events.users.achievements.UserAchievementProgressEvent; import gnu.trove.map.hash.THashMap; -import gnu.trove.procedure.TObjectIntProcedure; import lombok.extern.slf4j.Slf4j; import java.sql.*; @@ -155,8 +154,8 @@ public class AchievementManager { Emulator.getThreading().run(badge); - if (badge.getSlot() > 0 && habbo.getHabboInfo().getCurrentRoom() != null) { - habbo.getHabboInfo().getCurrentRoom().sendComposer(new UserBadgesComposer(habbo.getInventory().getBadgesComponent().getWearingBadges(), habbo.getHabboInfo().getId()).compose()); + if (badge.getSlot() > 0 && habbo.getRoomUnit().getRoom() != null) { + habbo.getRoomUnit().getRoom().sendComposer(new UserBadgesComposer(habbo.getInventory().getBadgesComponent().getWearingBadges(), habbo.getHabboInfo().getId()).compose()); } habbo.getClient().sendResponse(new UnseenItemsComposer(badge.getId(), UnseenItemsComposer.AddHabboItemCategory.BADGE)); @@ -167,8 +166,8 @@ public class AchievementManager { habbo.givePoints(newLevel.getRewardType(), newLevel.getRewardAmount()); } - if (habbo.getHabboInfo().getCurrentRoom() != null) { - habbo.getHabboInfo().getCurrentRoom().sendComposer(new UserChangeMessageComposer(habbo).compose()); + if (habbo.getRoomUnit().getRoom() != null) { + habbo.getRoomUnit().getRoom().sendComposer(new UserChangeMessageComposer(habbo).compose()); } } } @@ -339,7 +338,7 @@ public class AchievementManager { if (level != null) { if (level.items != null && !level.items.isEmpty()) { for (Item item : level.items) { - HabboItem rewardItem = Emulator.getGameEnvironment().getItemManager().createItem(habbo.getHabboInfo().getId(), item, 0, 0, ""); + RoomItem rewardItem = Emulator.getGameEnvironment().getItemManager().createItem(habbo.getHabboInfo().getId(), item, 0, 0, ""); habbo.getInventory().getItemsComponent().addItem(rewardItem); habbo.getClient().sendResponse(new UnseenItemsComposer(rewardItem)); habbo.getClient().sendResponse(new FurniListInvalidateComposer()); diff --git a/src/main/java/com/eu/habbo/habbohotel/bots/Bot.java b/src/main/java/com/eu/habbo/habbohotel/bots/Bot.java index b10086cf..6eb9d81d 100644 --- a/src/main/java/com/eu/habbo/habbohotel/bots/Bot.java +++ b/src/main/java/com/eu/habbo/habbohotel/bots/Bot.java @@ -3,6 +3,9 @@ package com.eu.habbo.habbohotel.bots; import com.eu.habbo.Emulator; import com.eu.habbo.database.DatabaseConstants; import com.eu.habbo.habbohotel.rooms.*; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.types.RoomBot; +import com.eu.habbo.habbohotel.units.Unit; import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.habbohotel.users.HabboGender; import com.eu.habbo.habbohotel.wired.WiredHandler; @@ -13,6 +16,9 @@ import com.eu.habbo.plugin.events.bots.BotShoutEvent; import com.eu.habbo.plugin.events.bots.BotTalkEvent; import com.eu.habbo.plugin.events.bots.BotWhisperEvent; import com.eu.habbo.threading.runnables.BotFollowHabbo; +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; import lombok.extern.slf4j.Slf4j; import java.sql.Connection; @@ -24,7 +30,7 @@ import java.util.Arrays; import java.util.List; @Slf4j -public class Bot implements Runnable { +public class Bot extends Unit implements Runnable { public static final String NO_CHAT_SET = "${bot.skill.chatter.configuration.text.placeholder}"; public static String[] PLACEMENT_MESSAGES = "Yo!;Hello I'm a real party animal!;Hello!".split(";"); @@ -37,7 +43,6 @@ public class Bot implements Runnable { private int ownerId; private String ownerName; private Room room; - private RoomUnit roomUnit; private boolean chatAuto; private boolean chatRandom; private short chatDelay; @@ -45,19 +50,15 @@ public class Bot implements Runnable { private int chatTimestamp; private short lastChatIndex; private final int bubble; - - private final String type; - - private int effect; - private transient boolean canWalk = true; - private boolean needsUpdate; - - private transient int followingHabboId; + @Getter + @Setter + @Accessors(chain = true) + private RoomBot roomUnit; public Bot(int id, String name, String motto, String figure, HabboGender gender, int ownerId, String ownerName) { this.id = id; @@ -92,10 +93,11 @@ public class Bot implements Runnable { this.effect = set.getInt("effect"); this.canWalk = set.getString("freeroam").equals("1"); this.room = null; - this.roomUnit = null; this.chatTimeOut = Emulator.getIntUnixTimestamp() + this.chatDelay; this.needsUpdate = false; this.bubble = set.getInt("bubble_id"); + + this.roomUnit = new RoomBot(); } public Bot(Bot bot) { @@ -141,9 +143,9 @@ public class Bot implements Runnable { statement.setString(3, this.figure); statement.setString(4, this.gender.toString()); statement.setInt(5, this.ownerId); - statement.setInt(6, this.room == null ? 0 : this.room.getId()); - statement.setInt(7, this.roomUnit == null ? 0 : this.roomUnit.getBodyRotation().getValue()); - statement.setInt(8, this.roomUnit == null ? 0 : this.roomUnit.getDanceType().getType()); + statement.setInt(6, this.room == null ? 0 : this.room.getRoomInfo().getId()); + statement.setInt(7, this.getRoomUnit() == null ? 0 : this.getRoomUnit().getBodyRotation().getValue()); + statement.setInt(8, this.getRoomUnit() == null ? 0 : this.getRoomUnit().getDanceType().getType()); statement.setString(9, this.canWalk ? "1" : "0"); StringBuilder text = new StringBuilder(); for (String s : this.chatLines) { @@ -165,18 +167,18 @@ public class Bot implements Runnable { } public void cycle(boolean allowBotsWalk) { - if (this.roomUnit != null) { + if (this.getRoomUnit() != null) { if (allowBotsWalk && this.canWalk) { - if (!this.roomUnit.isWalking()) { - if (this.roomUnit.getWalkTimeOut() < Emulator.getIntUnixTimestamp() && this.followingHabboId == 0) { - this.roomUnit.setGoalLocation(Emulator.getConfig().getBoolean("hotel.bot.limit.walking.distance", true) ? this.room.getLayout().getRandomWalkableTilesAround(this.roomUnit, this.room.getLayout().getTile(this.roomUnit.getBotStartLocation().getX(), this.roomUnit.getBotStartLocation().getY()), this.room, Emulator.getConfig().getInt("hotel.bot.limit.walking.distance.radius", 5)) : this.room.getRandomWalkableTile()); + if (!this.getRoomUnit().isWalking()) { + if (this.getRoomUnit().getWalkTimeOut() < Emulator.getIntUnixTimestamp() && this.followingHabboId == 0) { + this.getRoomUnit().setGoalLocation(Emulator.getConfig().getBoolean("hotel.bot.limit.walking.distance", true) ? this.room.getLayout().getRandomWalkableTilesAround(this.getRoomUnit(), this.room.getLayout().getTile(this.getRoomUnit().getBotStartLocation().getX(), this.getRoomUnit().getBotStartLocation().getY()), this.room, Emulator.getConfig().getInt("hotel.bot.limit.walking.distance.radius", 5)) : this.room.getRandomWalkableTile()); int timeOut = Emulator.getRandom().nextInt(20) * 2; - this.roomUnit.setWalkTimeOut((timeOut < 10 ? 5 : timeOut) + Emulator.getIntUnixTimestamp()); + this.getRoomUnit().setWalkTimeOut((timeOut < 10 ? 5 : timeOut) + Emulator.getIntUnixTimestamp()); } }/* else { for (RoomTile t : this.room.getLayout().getTilesAround(this.room.getLayout().getTile(this.getRoomUnit().getX(), this.getRoomUnit().getY()))) { - WiredHandler.handle(WiredTriggerType.BOT_REACHED_STF, this.roomUnit, this.room, this.room.getItemsAt(t).toArray()); + WiredHandler.handle(WiredTriggerType.BOT_REACHED_STF, this.getRoomUnit(), this.room, this.room.getItemsAt(t).toArray()); } }*/ } @@ -190,11 +192,11 @@ public class Bot implements Runnable { } String message = this.chatLines.get(this.lastChatIndex) - .replace(Emulator.getTexts().getValue("wired.variable.owner", "%owner%"), this.room.getOwnerName()) + .replace(Emulator.getTexts().getValue("wired.variable.owner", "%owner%"), this.room.getRoomInfo().getOwnerInfo().getUsername()) .replace(Emulator.getTexts().getValue("wired.variable.item_count", "%item_count%"), this.room.itemCount() + "") .replace(Emulator.getTexts().getValue("wired.variable.name", "%name%"), this.name) - .replace(Emulator.getTexts().getValue("wired.variable.roomname", "%roomname%"), this.room.getName()) - .replace(Emulator.getTexts().getValue("wired.variable.user_count", "%user_count%"), this.room.getUserCount() + ""); + .replace(Emulator.getTexts().getValue("wired.variable.roomname", "%roomname%"), this.room.getRoomInfo().getName()) + .replace(Emulator.getTexts().getValue("wired.variable.user_count", "%user_count%"), this.room.getRoomUnitManager().getRoomHabbosCount() + ""); if(!WiredHandler.handle(WiredTriggerType.SAY_SOMETHING, this.getRoomUnit(), room, new Object[]{ message })) { this.talk(message); @@ -213,10 +215,10 @@ public class Bot implements Runnable { return; this.chatTimestamp = Emulator.getIntUnixTimestamp(); - this.room.botChat(new ChatMessageComposer(new RoomChatMessage(event.getMessage(), this.roomUnit, RoomChatMessageBubbles.getBubble(this.getBubbleId()))).compose()); + this.room.botChat(new ChatMessageComposer(new RoomChatMessage(event.getMessage(), this.getRoomUnit(), RoomChatMessageBubbles.getBubble(this.getBubbleId()))).compose()); if (message.equals("o/") || message.equals("_o/")) { - this.room.sendComposer(new ExpressionMessageComposer(this.roomUnit, RoomUserAction.WAVE).compose()); + this.room.sendComposer(new ExpressionMessageComposer(this.getRoomUnit(), RoomUserAction.WAVE).compose()); } } } @@ -228,10 +230,10 @@ public class Bot implements Runnable { return; this.chatTimestamp = Emulator.getIntUnixTimestamp(); - this.room.botChat(new ShoutMessageComposer(new RoomChatMessage(event.getMessage(), this.roomUnit, RoomChatMessageBubbles.getBubble(this.getBubbleId()))).compose()); + this.room.botChat(new ShoutMessageComposer(new RoomChatMessage(event.getMessage(), this.getRoomUnit(), RoomChatMessageBubbles.getBubble(this.getBubbleId()))).compose()); if (message.equals("o/") || message.equals("_o/")) { - this.room.sendComposer(new ExpressionMessageComposer(this.roomUnit, RoomUserAction.WAVE).compose()); + this.room.sendComposer(new ExpressionMessageComposer(this.getRoomUnit(), RoomUserAction.WAVE).compose()); } } } @@ -243,13 +245,13 @@ public class Bot implements Runnable { return; this.chatTimestamp = Emulator.getIntUnixTimestamp(); - event.getTarget().getClient().sendResponse(new WhisperMessageComposer(new RoomChatMessage(event.getMessage(), this.roomUnit, RoomChatMessageBubbles.getBubble(this.getBubbleId())))); + event.getTarget().getClient().sendResponse(new WhisperMessageComposer(new RoomChatMessage(event.getMessage(), this.getRoomUnit(), RoomChatMessageBubbles.getBubble(this.getBubbleId())))); } } public void onPlace(Habbo habbo, Room room) { - if (this.roomUnit != null) { - room.giveEffect(this.roomUnit, this.effect, -1); + if (this.getRoomUnit() != null) { + room.giveEffect(this.getRoomUnit(), this.effect, -1); } if(PLACEMENT_MESSAGES.length > 0) { @@ -357,14 +359,6 @@ public class Bot implements Runnable { this.room = room; } - public RoomUnit getRoomUnit() { - return this.roomUnit; - } - - public void setRoomUnit(RoomUnit roomUnit) { - this.roomUnit = roomUnit; - } - public boolean isChatAuto() { return this.chatAuto; } @@ -420,9 +414,9 @@ public class Bot implements Runnable { this.effect = effect; this.needsUpdate = true; - if (this.roomUnit != null) { + if (this.getRoomUnit() != null) { if (this.room != null) { - this.room.giveEffect(this.roomUnit, this.effect, duration); + this.room.giveEffect(this.getRoomUnit(), this.effect, duration); } } } @@ -452,7 +446,7 @@ public class Bot implements Runnable { public void startFollowingHabbo(Habbo habbo) { this.followingHabboId = habbo.getHabboInfo().getId(); - Emulator.getThreading().run(new BotFollowHabbo(this, habbo, habbo.getHabboInfo().getCurrentRoom())); + Emulator.getThreading().run(new BotFollowHabbo(this, habbo, habbo.getRoomUnit().getRoom())); } public void stopFollowingHabbo() { @@ -468,16 +462,16 @@ public class Bot implements Runnable { } public void lookAt(Habbo habbo) { - this.lookAt(habbo.getRoomUnit().getCurrentLocation()); + this.lookAt(habbo.getRoomUnit().getCurrentPosition()); } public void lookAt(RoomUnit roomUnit) { - this.lookAt(roomUnit.getCurrentLocation()); + this.lookAt(roomUnit.getCurrentPosition()); } public void lookAt(RoomTile tile) { - this.roomUnit.lookAtPoint(tile); - this.roomUnit.statusUpdate(true); + this.getRoomUnit().lookAtPoint(tile); + this.getRoomUnit().setStatusUpdateNeeded(true); } public void onPlaceUpdate() { @@ -487,12 +481,12 @@ public class Bot implements Runnable { statement.setString(3, this.figure); statement.setString(4, this.gender.toString()); statement.setInt(5, this.ownerId); - statement.setInt(6, this.room == null ? 0 : this.room.getId()); - statement.setInt(7, this.roomUnit == null ? 0 : this.roomUnit.getX()); - statement.setInt(8, this.roomUnit == null ? 0 : this.roomUnit.getY()); - statement.setDouble(9, this.roomUnit == null ? 0 : this.roomUnit.getZ()); - statement.setInt(10, this.roomUnit == null ? 0 : this.roomUnit.getBodyRotation().getValue()); - statement.setInt(11, this.roomUnit == null ? 0 : this.roomUnit.getDanceType().getType()); + statement.setInt(6, this.room == null ? 0 : this.room.getRoomInfo().getId()); + statement.setInt(7, this.getRoomUnit() == null ? 0 : this.getRoomUnit().getCurrentPosition().getX()); + statement.setInt(8, this.getRoomUnit() == null ? 0 : this.getRoomUnit().getCurrentPosition().getY()); + statement.setDouble(9, this.getRoomUnit() == null ? 0 : this.getRoomUnit().getCurrentZ()); + statement.setInt(10, this.getRoomUnit() == null ? 0 : this.getRoomUnit().getBodyRotation().getValue()); + statement.setInt(11, this.getRoomUnit() == null ? 0 : this.getRoomUnit().getDanceType().getType()); statement.setString(12, this.canWalk ? "1" : "0"); StringBuilder text = new StringBuilder(); for (String s : this.chatLines) { diff --git a/src/main/java/com/eu/habbo/habbohotel/bots/BotManager.java b/src/main/java/com/eu/habbo/habbohotel/bots/BotManager.java index 2d5e03b8..53261255 100644 --- a/src/main/java/com/eu/habbo/habbohotel/bots/BotManager.java +++ b/src/main/java/com/eu/habbo/habbohotel/bots/BotManager.java @@ -2,10 +2,16 @@ package com.eu.habbo.habbohotel.bots; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.permissions.Permission; -import com.eu.habbo.habbohotel.rooms.*; +import com.eu.habbo.habbohotel.rooms.FurnitureMovementError; +import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.RoomTile; +import com.eu.habbo.habbohotel.rooms.RoomTileState; +import com.eu.habbo.habbohotel.rooms.entities.RoomRotation; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnitType; +import com.eu.habbo.habbohotel.rooms.entities.units.types.RoomBot; import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.habbohotel.users.HabboInfo; -import com.eu.habbo.habbohotel.users.HabboItem; import com.eu.habbo.messages.outgoing.generic.alerts.BotErrorComposer; import com.eu.habbo.messages.outgoing.generic.alerts.BubbleAlertKeys; import com.eu.habbo.messages.outgoing.generic.alerts.NotificationDialogMessageComposer; @@ -21,6 +27,7 @@ import lombok.extern.slf4j.Slf4j; import java.lang.reflect.Method; import java.sql.*; import java.util.Map; + @Slf4j public class BotManager { @@ -98,41 +105,44 @@ public class BotManager { public void placeBot(Bot bot, Habbo habbo, Room room, RoomTile location) { BotPlacedEvent event = new BotPlacedEvent(bot, location, habbo); + Emulator.getPluginManager().fireEvent(event); if (event.isCancelled()) return; if (room != null && bot != null && habbo != null) { - if (room.getOwnerId() == habbo.getHabboInfo().getId() || habbo.hasRight(Permission.ACC_ANYROOMOWNER) || habbo.hasRight(Permission.ACC_PLACEFURNI)) { - if (room.getCurrentBots().size() >= Room.MAXIMUM_BOTS && !habbo.hasRight(Permission.ACC_UNLIMITED_BOTS)) { + if (room.getRoomInfo().isRoomOwner(habbo) || habbo.hasRight(Permission.ACC_ANYROOMOWNER) || habbo.hasRight(Permission.ACC_PLACEFURNI)) { + if (room.getRoomUnitManager().getCurrentRoomBots().size() >= Room.MAXIMUM_BOTS && !habbo.hasRight(Permission.ACC_UNLIMITED_BOTS)) { habbo.getClient().sendResponse(new BotErrorComposer(BotErrorComposer.ROOM_ERROR_MAX_BOTS)); return; } - if (room.hasHabbosAt(location.getX(), location.getY()) || (!location.isWalkable() && location.getState() != RoomTileState.SIT && location.getState() != RoomTileState.LAY)) + if (room.getRoomUnitManager().hasHabbosAt(location) || (!location.isWalkable() && location.getState() != RoomTileState.SIT && location.getState() != RoomTileState.LAY)) return; - if (room.hasBotsAt(location.getX(), location.getY())) { + if (!room.getRoomUnitManager().getBotsAt(location).isEmpty()) { habbo.getClient().sendResponse(new BotErrorComposer(BotErrorComposer.ROOM_ERROR_BOTS_SELECTED_TILE_NOT_FREE)); return; } - RoomUnit roomUnit = new RoomUnit(); - roomUnit.setRotation(RoomUserRotation.SOUTH); - roomUnit.setLocation(location); + bot.setRoomUnit(new RoomBot()); + RoomBot roomBot = bot.getRoomUnit(); + roomBot.setRotation(RoomRotation.SOUTH); + roomBot.setLocation(location); double stackHeight = room.getTopHeightAt(location.getX(), location.getY()); - roomUnit.setPreviousLocationZ(stackHeight); - roomUnit.setZ(stackHeight); + roomBot.setPreviousLocationZ(stackHeight); + roomBot.setCurrentZ(stackHeight); + roomBot.setRoom(room); + roomBot.setRoomUnitType(RoomUnitType.BOT); + roomBot.setCanWalk(room.isAllowBotsWalk()); - roomUnit.setPathFinderRoom(room); - roomUnit.setRoomUnitType(RoomUnitType.BOT); - roomUnit.setCanWalk(room.isAllowBotsWalk()); - bot.setRoomUnit(roomUnit); bot.setRoom(room); + bot.onPlaceUpdate(); - room.addBot(bot); + + room.getRoomUnitManager().addRoomUnit(bot); Emulator.getThreading().run(bot); room.sendComposer(new RoomUsersComposer(bot).compose()); room.sendComposer(new UserUpdateComposer(bot.getRoomUnit()).compose()); @@ -140,7 +150,7 @@ public class BotManager { habbo.getClient().sendResponse(new BotRemovedFromInventoryComposer(bot)); bot.onPlace(habbo, room); - HabboItem topItem = room.getTopItemAt(location.getX(), location.getY()); + RoomItem topItem = room.getTopItemAt(location.getX(), location.getY()); if (topItem != null) { try { @@ -157,14 +167,15 @@ public class BotManager { } } - public void pickUpBot(int botId, Habbo habbo) { - if (habbo.getHabboInfo().getCurrentRoom() != null) { - this.pickUpBot(habbo.getHabboInfo().getCurrentRoom().getBot(Math.abs(botId)), habbo); + public void pickUpBot(int botId, Habbo habbo, Room room) { + if (habbo.getRoomUnit().getRoom() != null) { + this.pickUpBot(habbo.getRoomUnit().getRoom().getRoomUnitManager().getRoomBotById(Math.abs(botId)), habbo, room); } } - public void pickUpBot(Bot bot, Habbo habbo) { - HabboInfo receiverInfo = habbo == null ? Emulator.getGameEnvironment().getHabboManager().getHabboInfo(bot.getOwnerId()) : habbo.getHabboInfo(); + public void pickUpBot(Bot bot, Habbo habbo, Room room) { + HabboInfo botOwnerInfo = habbo == null ? Emulator.getGameEnvironment().getHabboManager().getHabboInfo(bot.getOwnerId()) : habbo.getHabboInfo(); + if (bot != null) { BotPickUpEvent pickedUpEvent = new BotPickUpEvent(bot, habbo); @@ -179,15 +190,15 @@ public class BotManager { return; } - bot.onPickUp(habbo, receiverInfo.getCurrentRoom()); - receiverInfo.getCurrentRoom().removeBot(bot); + bot.onPickUp(habbo, room); + room.getRoomUnitManager().removeBot(bot); bot.stopFollowingHabbo(); - bot.setOwnerId(receiverInfo.getId()); - bot.setOwnerName(receiverInfo.getUsername()); + bot.setOwnerId(botOwnerInfo.getId()); + bot.setOwnerName(botOwnerInfo.getUsername()); bot.needsUpdate(true); Emulator.getThreading().run(bot); - Habbo receiver = habbo == null ? Emulator.getGameEnvironment().getHabboManager().getHabbo(receiverInfo.getId()) : habbo; + Habbo receiver = habbo == null ? Emulator.getGameEnvironment().getHabboManager().getHabbo(botOwnerInfo.getId()) : habbo; if (receiver != null) { receiver.getInventory().getBotsComponent().addBot(bot); receiver.getClient().sendResponse(new BotAddedToInventoryComposer(bot)); diff --git a/src/main/java/com/eu/habbo/habbohotel/bots/ButlerBot.java b/src/main/java/com/eu/habbo/habbohotel/bots/ButlerBot.java index b3e992aa..c5148bc4 100644 --- a/src/main/java/com/eu/habbo/habbohotel/bots/ButlerBot.java +++ b/src/main/java/com/eu/habbo/habbohotel/bots/ButlerBot.java @@ -5,6 +5,7 @@ import com.eu.habbo.habbohotel.rooms.RoomChatMessage; import com.eu.habbo.habbohotel.rooms.RoomUnitStatus; import com.eu.habbo.habbohotel.wired.WiredHandler; import com.eu.habbo.habbohotel.wired.WiredTriggerType; +import com.eu.habbo.messages.outgoing.rooms.users.CarryObjectMessageComposer; import com.eu.habbo.plugin.events.bots.BotServerItemEvent; import com.eu.habbo.threading.runnables.RoomUnitGiveHanditem; import com.eu.habbo.threading.runnables.RoomUnitWalkToRoomUnit; @@ -61,7 +62,7 @@ public class ButlerBot extends Bot { return; } - double distanceBetweenBotAndHabbo = this.getRoomUnit().getCurrentLocation().distance(message.getHabbo().getRoomUnit().getCurrentLocation()); + double distanceBetweenBotAndHabbo = this.getRoomUnit().getCurrentPosition().distance(message.getHabbo().getRoomUnit().getCurrentPosition()); if (distanceBetweenBotAndHabbo <= Emulator.getConfig().getInt("hotel.bot.butler.commanddistance")) { @@ -80,7 +81,7 @@ public class ButlerBot extends Bot { } // Start give handitem process - if (this.getRoomUnit().canWalk()) { + if (this.getRoomUnit().isCanWalk()) { final String key = keyword; final Bot bot = this; @@ -89,8 +90,8 @@ public class ButlerBot extends Bot { // Step 2: Prepare tasks for when the Bot (carrying the handitem) reaches the Habbo final List tasks = new ArrayList<>(); - tasks.add(new RoomUnitGiveHanditem(serveEvent.getHabbo().getRoomUnit(), serveEvent.getHabbo().getHabboInfo().getCurrentRoom(), serveEvent.getItemId())); - tasks.add(new RoomUnitGiveHanditem(this.getRoomUnit(), serveEvent.getHabbo().getHabboInfo().getCurrentRoom(), 0)); + tasks.add(new RoomUnitGiveHanditem(serveEvent.getHabbo().getRoomUnit(), serveEvent.getHabbo().getRoomUnit().getRoom(), serveEvent.getItemId())); + tasks.add(new RoomUnitGiveHanditem(this.getRoomUnit(), serveEvent.getHabbo().getRoomUnit().getRoom(), 0)); tasks.add(() -> { if (this.getRoom() != null) { @@ -115,16 +116,17 @@ public class ButlerBot extends Bot { }); // Give bot the handitem that it's going to give the Habbo - Emulator.getThreading().run(new RoomUnitGiveHanditem(this.getRoomUnit(), serveEvent.getHabbo().getHabboInfo().getCurrentRoom(), serveEvent.getItemId())); + Emulator.getThreading().run(new RoomUnitGiveHanditem(this.getRoomUnit(), serveEvent.getHabbo().getRoomUnit().getRoom(), serveEvent.getItemId())); if (distanceBetweenBotAndHabbo > Emulator.getConfig().getInt("hotel.bot.butler.reachdistance", 3)) { - Emulator.getThreading().run(new RoomUnitWalkToRoomUnit(this.getRoomUnit(), serveEvent.getHabbo().getRoomUnit(), serveEvent.getHabbo().getHabboInfo().getCurrentRoom(), tasks, failedReached, Emulator.getConfig().getInt("hotel.bot.butler.reachdistance", 3))); + Emulator.getThreading().run(new RoomUnitWalkToRoomUnit(this.getRoomUnit(), serveEvent.getHabbo().getRoomUnit(), serveEvent.getHabbo().getRoomUnit().getRoom(), tasks, failedReached, Emulator.getConfig().getInt("hotel.bot.butler.reachdistance", 3))); } else { Emulator.getThreading().run(failedReached.get(0), 1000); } } else { if (this.getRoom() != null) { - this.getRoom().giveHandItem(serveEvent.getHabbo(), serveEvent.getItemId()); + serveEvent.getHabbo().getRoomUnit().setHandItem(serveEvent.getItemId()); + this.getRoom().sendComposer(new CarryObjectMessageComposer(serveEvent.getHabbo().getRoomUnit()).compose()); String msg = Emulator.getTexts().getValue("bots.butler.given").replace("%key%", keyword).replace("%username%", serveEvent.getHabbo().getHabboInfo().getUsername()); if (!WiredHandler.handle(WiredTriggerType.SAY_SOMETHING, this.getRoomUnit(), this.getRoom(), new Object[]{msg})) { diff --git a/src/main/java/com/eu/habbo/habbohotel/bots/VisitorBot.java b/src/main/java/com/eu/habbo/habbohotel/bots/VisitorBot.java index 130ff3b1..672dfff2 100644 --- a/src/main/java/com/eu/habbo/habbohotel/bots/VisitorBot.java +++ b/src/main/java/com/eu/habbo/habbohotel/bots/VisitorBot.java @@ -55,8 +55,8 @@ public class VisitorBot extends Bot { public void onUserEnter(Habbo habbo) { if (!this.showedLog) { - if (habbo.getHabboInfo().getCurrentRoom() != null) { - this.visits = Emulator.getGameEnvironment().getModToolManager().getVisitsForRoom(habbo.getHabboInfo().getCurrentRoom(), 10, true, habbo.getHabboInfo().getLastOnline(), Emulator.getIntUnixTimestamp(), habbo.getHabboInfo().getCurrentRoom().getOwnerName()); + if (habbo.getRoomUnit().getRoom() != null) { + this.visits = Emulator.getGameEnvironment().getModToolManager().getVisitsForRoom(habbo.getRoomUnit().getRoom(), 10, true, habbo.getHabboInfo().getLastOnline(), Emulator.getIntUnixTimestamp(), habbo.getRoomUnit().getRoom().getRoomInfo().getOwnerInfo().getUsername()); if (this.visits.isEmpty()) { this.talk(Emulator.getTexts().getValue("bots.visitor.no_visits")); diff --git a/src/main/java/com/eu/habbo/habbohotel/campaign/CalendarRewardObject.java b/src/main/java/com/eu/habbo/habbohotel/campaign/CalendarRewardObject.java index d8b74fa3..e2832ab5 100644 --- a/src/main/java/com/eu/habbo/habbohotel/campaign/CalendarRewardObject.java +++ b/src/main/java/com/eu/habbo/habbohotel/campaign/CalendarRewardObject.java @@ -3,7 +3,7 @@ package com.eu.habbo.habbohotel.campaign; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.habbohotel.users.subscriptions.SubscriptionHabboClub; import com.eu.habbo.messages.outgoing.inventory.FurniListInvalidateComposer; import com.eu.habbo.messages.outgoing.inventory.UnseenItemsComposer; @@ -71,14 +71,14 @@ public class CalendarRewardObject { Item item = getItem(); if (item != null) { - HabboItem habboItem = Emulator.getGameEnvironment().getItemManager().createItem( + RoomItem roomItem = Emulator.getGameEnvironment().getItemManager().createItem( habbo.getHabboInfo().getId(), item, 0, 0, ""); - habbo.getInventory().getItemsComponent().addItem(habboItem); - habbo.getClient().sendResponse(new UnseenItemsComposer(habboItem)); + habbo.getInventory().getItemsComponent().addItem(roomItem); + habbo.getClient().sendResponse(new UnseenItemsComposer(roomItem)); habbo.getClient().sendResponse(new FurniListInvalidateComposer()); } } diff --git a/src/main/java/com/eu/habbo/habbohotel/catalog/CatalogLimitedConfiguration.java b/src/main/java/com/eu/habbo/habbohotel/catalog/CatalogLimitedConfiguration.java index babec10e..a29ef6d6 100644 --- a/src/main/java/com/eu/habbo/habbohotel/catalog/CatalogLimitedConfiguration.java +++ b/src/main/java/com/eu/habbo/habbohotel/catalog/CatalogLimitedConfiguration.java @@ -2,7 +2,7 @@ package com.eu.habbo.habbohotel.catalog; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; @@ -53,7 +53,7 @@ public class CatalogLimitedConfiguration implements Runnable { } } - public void limitedSold(int catalogItemId, Habbo habbo, HabboItem item) { + public void limitedSold(int catalogItemId, Habbo habbo, RoomItem item) { synchronized (lock) { try (Connection connection = Emulator.getDatabase().getDataSource().getConnection(); PreparedStatement statement = connection.prepareStatement("UPDATE catalog_items_limited SET user_id = ?, timestamp = ?, item_id = ? WHERE catalog_item_id = ? AND number = ? AND user_id = 0 LIMIT 1")) { statement.setInt(1, habbo.getHabboInfo().getId()); diff --git a/src/main/java/com/eu/habbo/habbohotel/catalog/CatalogManager.java b/src/main/java/com/eu/habbo/habbohotel/catalog/CatalogManager.java index 33fb7916..81b32f9c 100644 --- a/src/main/java/com/eu/habbo/habbohotel/catalog/CatalogManager.java +++ b/src/main/java/com/eu/habbo/habbohotel/catalog/CatalogManager.java @@ -17,7 +17,7 @@ import com.eu.habbo.habbohotel.pets.Pet; import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.habbohotel.users.HabboBadge; import com.eu.habbo.habbohotel.users.HabboGender; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.outgoing.catalog.*; import com.eu.habbo.messages.outgoing.generic.alerts.BubbleAlertKeys; import com.eu.habbo.messages.outgoing.generic.alerts.NotificationDialogMessageComposer; @@ -846,7 +846,7 @@ public class CatalogManager { } } - THashSet itemsList = new THashSet<>(); + THashSet itemsList = new THashSet<>(); if (amount > 1 && !CatalogItem.haveOffer(item)) { @@ -980,13 +980,13 @@ public class CatalogManager { } if (InteractionTeleport.class.isAssignableFrom(baseItem.getInteractionType().getType())) { - HabboItem teleportOne = Emulator.getGameEnvironment().getItemManager().createItem(habbo.getClient().getHabbo().getHabboInfo().getId(), baseItem, limitedStack, limitedNumber, extradata); - HabboItem teleportTwo = Emulator.getGameEnvironment().getItemManager().createItem(habbo.getClient().getHabbo().getHabboInfo().getId(), baseItem, limitedStack, limitedNumber, extradata); + RoomItem teleportOne = Emulator.getGameEnvironment().getItemManager().createItem(habbo.getClient().getHabbo().getHabboInfo().getId(), baseItem, limitedStack, limitedNumber, extradata); + RoomItem teleportTwo = Emulator.getGameEnvironment().getItemManager().createItem(habbo.getClient().getHabbo().getHabboInfo().getId(), baseItem, limitedStack, limitedNumber, extradata); Emulator.getGameEnvironment().getItemManager().insertTeleportPair(teleportOne.getId(), teleportTwo.getId()); itemsList.add(teleportOne); itemsList.add(teleportTwo); } else if (baseItem.getInteractionType().getType() == InteractionHopper.class) { - HabboItem hopper = Emulator.getGameEnvironment().getItemManager().createItem(habbo.getClient().getHabbo().getHabboInfo().getId(), baseItem, limitedStack, limitedNumber, extradata); + RoomItem hopper = Emulator.getGameEnvironment().getItemManager().createItem(habbo.getClient().getHabbo().getHabboInfo().getId(), baseItem, limitedStack, limitedNumber, extradata); Emulator.getGameEnvironment().getItemManager().insertHopper(hopper); @@ -1034,8 +1034,8 @@ public class CatalogManager { AchievementManager.progressAchievement(habbo, Emulator.getGameEnvironment().getAchievementManager().getAchievement("MusicCollector")); } else { - HabboItem habboItem = Emulator.getGameEnvironment().getItemManager().createItem(habbo.getClient().getHabbo().getHabboInfo().getId(), baseItem, limitedStack, limitedNumber, extradata); - itemsList.add(habboItem); + RoomItem roomItem = Emulator.getGameEnvironment().getItemManager().createItem(habbo.getClient().getHabbo().getHabboInfo().getId(), baseItem, limitedStack, limitedNumber, extradata); + itemsList.add(roomItem); } } } @@ -1062,12 +1062,12 @@ public class CatalogManager { if (purchasedEvent.itemsList != null && !purchasedEvent.itemsList.isEmpty()) { habbo.getClient().getHabbo().getInventory().getItemsComponent().addItems(purchasedEvent.itemsList); - unseenItems.put(UnseenItemsComposer.AddHabboItemCategory.OWNED_FURNI, purchasedEvent.itemsList.stream().map(HabboItem::getId).toList()); + unseenItems.put(UnseenItemsComposer.AddHabboItemCategory.OWNED_FURNI, purchasedEvent.itemsList.stream().map(RoomItem::getId).toList()); Emulator.getPluginManager().fireEvent(new UserCatalogFurnitureBoughtEvent(habbo, item, purchasedEvent.itemsList)); if (limitedConfiguration != null) { - for (HabboItem itm : purchasedEvent.itemsList) { + for (RoomItem itm : purchasedEvent.itemsList) { limitedConfiguration.limitedSold(item.getId(), habbo, itm); } } @@ -1098,7 +1098,7 @@ public class CatalogManager { THashSet itemIds = new THashSet<>(); - for (HabboItem ix : purchasedEvent.itemsList) { + for (RoomItem ix : purchasedEvent.itemsList) { itemIds.add(ix.getId() + ""); } diff --git a/src/main/java/com/eu/habbo/habbohotel/catalog/layouts/RoomBundleLayout.java b/src/main/java/com/eu/habbo/habbohotel/catalog/layouts/RoomBundleLayout.java index de366cad..7d4de245 100644 --- a/src/main/java/com/eu/habbo/habbohotel/catalog/layouts/RoomBundleLayout.java +++ b/src/main/java/com/eu/habbo/habbohotel/catalog/layouts/RoomBundleLayout.java @@ -6,8 +6,8 @@ import com.eu.habbo.habbohotel.catalog.CatalogItem; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomManager; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; import com.eu.habbo.messages.outgoing.generic.alerts.BubbleAlertKeys; import com.eu.habbo.messages.outgoing.generic.alerts.NotificationDialogMessageComposer; import com.eu.habbo.messages.outgoing.navigator.CanCreateRoomComposer; @@ -40,7 +40,7 @@ public class RoomBundleLayout extends SingleBundle { if (this.room == null) { if (this.roomId > 0) { - this.room = Emulator.getGameEnvironment().getRoomManager().loadRoom(this.roomId); + this.room = Emulator.getGameEnvironment().getRoomManager().getRoom(this.roomId); if (this.room != null) this.room.preventUnloading = true; @@ -73,7 +73,7 @@ public class RoomBundleLayout extends SingleBundle { THashMap items = new THashMap<>(); - for (HabboItem i : this.room.getFloorItems()) { + for (RoomItem i : this.room.getFloorItems()) { if (!items.contains(i.getBaseItem())) { items.put(i.getBaseItem(), 0); } @@ -81,7 +81,7 @@ public class RoomBundleLayout extends SingleBundle { items.put(i.getBaseItem(), items.get(i.getBaseItem()) + 1); } - for (HabboItem i : this.room.getWallItems()) { + for (RoomItem i : this.room.getWallItems()) { if (!items.contains(i.getBaseItem())) { items.put(i.getBaseItem(), 0); } @@ -123,7 +123,7 @@ public class RoomBundleLayout extends SingleBundle { public void buyRoom(Habbo habbo, int userId, String userName) { if (!this.loaded) { - this.loadItems(Emulator.getGameEnvironment().getRoomManager().loadRoom(this.roomId)); + this.loadItems(Emulator.getGameEnvironment().getRoomManager().getRoom(this.roomId)); } if (habbo != null) { @@ -141,11 +141,11 @@ public class RoomBundleLayout extends SingleBundle { this.room.save(); - for (HabboItem item : this.room.getFloorItems()) { + for (RoomItem item : this.room.getFloorItems()) { item.run(); } - for (HabboItem item : this.room.getWallItems()) { + for (RoomItem item : this.room.getWallItems()) { item.run(); } @@ -156,7 +156,7 @@ public class RoomBundleLayout extends SingleBundle { try (PreparedStatement statement = connection.prepareStatement("INSERT INTO rooms (owner_id, owner_name, name, description, model, password, state, users_max, category, paper_floor, paper_wall, paper_landscape, thickness_wall, thickness_floor, moodlight_data, override_model) (SELECT ?, ?, name, description, model, password, state, users_max, category, paper_floor, paper_wall, paper_landscape, thickness_wall, thickness_floor, moodlight_data, override_model FROM rooms WHERE id = ?)", Statement.RETURN_GENERATED_KEYS)) { statement.setInt(1, userId); statement.setString(2, userName); - statement.setInt(3, this.room.getId()); + statement.setInt(3, this.room.getRoomInfo().getId()); statement.execute(); try (ResultSet set = statement.getGeneratedKeys()) { if (set.next()) { @@ -173,15 +173,15 @@ public class RoomBundleLayout extends SingleBundle { statement.setInt(2, roomId); statement.setString(3, "0:0"); statement.setInt(4, 0); - statement.setInt(5, this.room.getId()); + statement.setInt(5, this.room.getRoomInfo().getId()); statement.execute(); } - if (this.room.hasCustomLayout()) { + if (this.room.getRoomInfo().isModelOverridden()) { try (PreparedStatement statement = connection.prepareStatement("INSERT INTO room_models_custom (id, name, door_x, door_y, door_dir, heightmap) (SELECT ?, ?, door_x, door_y, door_dir, heightmap FROM room_models_custom WHERE id = ? LIMIT 1)", Statement.RETURN_GENERATED_KEYS)) { statement.setInt(1, roomId); statement.setString(2, "custom_" + roomId); - statement.setInt(3, this.room.getId()); + statement.setInt(3, this.room.getRoomInfo().getId()); statement.execute(); } catch (SQLException e) { log.error("Caught SQL exception", e); @@ -190,17 +190,17 @@ public class RoomBundleLayout extends SingleBundle { if (Emulator.getConfig().getBoolean("bundle.bots.enabled")) { try (PreparedStatement statement = connection.prepareStatement("INSERT INTO bots (user_id, room_id, name, motto, figure, gender, x, y, z, chat_lines, chat_auto, chat_random, chat_delay, dance, type) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", Statement.RETURN_GENERATED_KEYS)) { - synchronized (this.room.getCurrentBots()) { + synchronized (this.room.getRoomUnitManager().getCurrentRoomBots()) { statement.setInt(1, userId); statement.setInt(2, roomId); - for (Bot bot : this.room.getCurrentBots().valueCollection()) { + for (Bot bot : this.room.getRoomUnitManager().getCurrentRoomBots().values()) { statement.setString(3, bot.getName()); statement.setString(4, bot.getMotto()); statement.setString(5, bot.getFigure()); statement.setString(6, bot.getGender().name()); - statement.setInt(7, bot.getRoomUnit().getX()); - statement.setInt(8, bot.getRoomUnit().getY()); - statement.setDouble(9, bot.getRoomUnit().getZ()); + statement.setInt(7, bot.getRoomUnit().getCurrentPosition().getX()); + statement.setInt(8, bot.getRoomUnit().getCurrentPosition().getY()); + statement.setDouble(9, bot.getRoomUnit().getCurrentZ()); StringBuilder text = new StringBuilder(); for (String s : bot.getChatLines()) { text.append(s).append("\r"); @@ -221,17 +221,17 @@ public class RoomBundleLayout extends SingleBundle { log.error("Caught SQL exception", e); } - Room r = Emulator.getGameEnvironment().getRoomManager().loadRoom(roomId); - r.setWallHeight(this.room.getWallHeight()); - r.setFloorSize(this.room.getFloorSize()); - r.setWallPaint(this.room.getWallPaint()); - r.setFloorPaint(this.room.getFloorPaint()); - r.setScore(0); + Room r = Emulator.getGameEnvironment().getRoomManager().getRoom(roomId); + r.getRoomInfo().setWallHeight(this.room.getRoomInfo().getWallHeight()); + r.getRoomInfo().setFloorThickness(this.room.getRoomInfo().getFloorThickness()); + r.getRoomInfo().setWallPaint(this.room.getRoomInfo().getWallPaint()); + r.getRoomInfo().setFloorPaint(this.room.getRoomInfo().getFloorPaint()); + r.getRoomInfo().setScore(0); r.setNeedsUpdate(true); THashMap keys = new THashMap<>(); - keys.put("ROOMNAME", r.getName()); - keys.put("ROOMID", r.getId() + ""); - keys.put("OWNER", r.getOwnerName()); + keys.put("ROOMNAME", r.getRoomInfo().getName()); + keys.put("ROOMID", r.getRoomInfo().getId() + ""); + keys.put("OWNER", r.getRoomInfo().getOwnerInfo().getUsername()); keys.put("image", "${image.library.url}/notifications/room_bundle_" + this.getId() + ".png"); if (habbo != null) { diff --git a/src/main/java/com/eu/habbo/habbohotel/catalog/marketplace/MarketPlace.java b/src/main/java/com/eu/habbo/habbohotel/catalog/marketplace/MarketPlace.java index e425f6ab..e0acb682 100644 --- a/src/main/java/com/eu/habbo/habbohotel/catalog/marketplace/MarketPlace.java +++ b/src/main/java/com/eu/habbo/habbohotel/catalog/marketplace/MarketPlace.java @@ -4,7 +4,7 @@ import com.eu.habbo.Emulator; import com.eu.habbo.database.DatabaseConstants; import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.messages.incoming.catalog.marketplace.GetMarketplaceOffersEvent; import com.eu.habbo.messages.outgoing.catalog.marketplace.MarketplaceBuyOfferResultComposer; @@ -97,7 +97,7 @@ public class MarketPlace { selectItem.setInt(1, offer.getSoldItemId()); try (ResultSet set = selectItem.executeQuery()) { while (set.next()) { - HabboItem item = Emulator.getGameEnvironment().getItemManager().loadHabboItem(set); + RoomItem item = Emulator.getGameEnvironment().getItemManager().loadHabboItem(set); habbo.getInventory().getItemsComponent().addItem(item); habbo.getClient().sendResponse(new MarketplaceCancelOfferResultComposer(offer, true)); habbo.getClient().sendResponse(new UnseenItemsComposer(item)); @@ -273,7 +273,7 @@ public class MarketPlace { updateOffer.execute(); } Habbo habbo = Emulator.getGameServer().getGameClientManager().getHabbo(set.getInt(DatabaseConstants.USER_ID)); - HabboItem item = Emulator.getGameEnvironment().getItemManager().loadHabboItem(itemSet); + RoomItem item = Emulator.getGameEnvironment().getItemManager().loadHabboItem(itemSet); MarketPlaceItemSoldEvent event = new MarketPlaceItemSoldEvent(habbo, client.getHabbo(), item, set.getInt("price")); if (Emulator.getPluginManager().fireEvent(event).isCancelled()) { @@ -340,7 +340,7 @@ public class MarketPlace { } - public static boolean sellItem(GameClient client, HabboItem item, int price) { + public static boolean sellItem(GameClient client, RoomItem item, int price) { if (item == null || client == null) return false; diff --git a/src/main/java/com/eu/habbo/habbohotel/catalog/marketplace/MarketPlaceOffer.java b/src/main/java/com/eu/habbo/habbohotel/catalog/marketplace/MarketPlaceOffer.java index cada0040..481a79a2 100644 --- a/src/main/java/com/eu/habbo/habbohotel/catalog/marketplace/MarketPlaceOffer.java +++ b/src/main/java/com/eu/habbo/habbohotel/catalog/marketplace/MarketPlaceOffer.java @@ -4,7 +4,7 @@ import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.items.FurnitureType; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; @@ -60,7 +60,7 @@ public class MarketPlaceOffer implements Runnable { } } - public MarketPlaceOffer(HabboItem item, int price, Habbo habbo) { + public MarketPlaceOffer(RoomItem item, int price, Habbo habbo) { this.price = price; this.baseItem = item.getBaseItem(); this.itemId = item.getId(); diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/CommandsManager.java b/src/main/java/com/eu/habbo/habbohotel/commands/CommandsManager.java index 160a354c..8a996d27 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/CommandsManager.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/CommandsManager.java @@ -3,12 +3,25 @@ package com.eu.habbo.habbohotel.commands; import com.eu.habbo.Emulator; import com.eu.habbo.core.CommandLog; import com.eu.habbo.habbohotel.commands.list.*; -import com.eu.habbo.habbohotel.commands.list.badge.*; -import com.eu.habbo.habbohotel.commands.list.bans.*; -import com.eu.habbo.habbohotel.commands.list.credits.*; -import com.eu.habbo.habbohotel.commands.list.gift.*; -import com.eu.habbo.habbohotel.commands.list.pixels.*; -import com.eu.habbo.habbohotel.commands.list.points.*; +import com.eu.habbo.habbohotel.commands.list.badge.BadgeCommand; +import com.eu.habbo.habbohotel.commands.list.badge.MassBadgeCommand; +import com.eu.habbo.habbohotel.commands.list.badge.RoomBadgeCommand; +import com.eu.habbo.habbohotel.commands.list.badge.TakeBadgeCommand; +import com.eu.habbo.habbohotel.commands.list.bans.BanCommand; +import com.eu.habbo.habbohotel.commands.list.bans.IPBanCommand; +import com.eu.habbo.habbohotel.commands.list.bans.MachineBanCommand; +import com.eu.habbo.habbohotel.commands.list.bans.SuperbanCommand; +import com.eu.habbo.habbohotel.commands.list.credits.CreditsCommand; +import com.eu.habbo.habbohotel.commands.list.credits.MassCreditsCommand; +import com.eu.habbo.habbohotel.commands.list.credits.RoomCreditsCommand; +import com.eu.habbo.habbohotel.commands.list.gift.GiftCommand; +import com.eu.habbo.habbohotel.commands.list.gift.MassGiftCommand; +import com.eu.habbo.habbohotel.commands.list.pixels.MassPixelsCommand; +import com.eu.habbo.habbohotel.commands.list.pixels.PixelCommand; +import com.eu.habbo.habbohotel.commands.list.pixels.RoomPixelsCommand; +import com.eu.habbo.habbohotel.commands.list.points.MassPointsCommand; +import com.eu.habbo.habbohotel.commands.list.points.PointsCommand; +import com.eu.habbo.habbohotel.commands.list.points.RoomPointsCommand; import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.permissions.Permission; import com.eu.habbo.habbohotel.permissions.PermissionCommand; @@ -73,11 +86,11 @@ public class CommandsManager { } String commandKey = parts[0]; - Room currentRoom = gameClient.getHabbo().getHabboInfo().getCurrentRoom(); + Room currentRoom = gameClient.getHabbo().getRoomUnit().getRoom(); boolean hasRights = currentRoom != null && (currentRoom.hasRights(gameClient.getHabbo())) || gameClient.getHabbo().hasRight(Permission.ACC_PLACEFURNI) || - currentRoom.getGuildId() > 0 && currentRoom.getGuildRightLevel(gameClient.getHabbo()).isEqualOrGreaterThan(RoomRightLevels.GUILD_RIGHTS); + currentRoom.getRoomInfo().getGuild().getId() > 0 && currentRoom.getGuildRightLevel(gameClient.getHabbo()).isEqualOrGreaterThan(RoomRightLevels.GUILD_RIGHTS); if (!gameClient.getHabbo().canExecuteCommand(commandKey, hasRights)) { @@ -127,17 +140,17 @@ public class CommandsManager { private boolean handlePetCommand(GameClient gameClient, String commandLine) { String[] args = commandLine.split(" "); - if (args.length <= 1 || gameClient.getHabbo().getHabboInfo().getCurrentRoom() == null) { + if (args.length <= 1 || gameClient.getHabbo().getRoomUnit().getRoom() == null) { return false; } - Room room = gameClient.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = gameClient.getHabbo().getRoomUnit().getRoom(); - if (room.getCurrentPets().isEmpty()) { + if (room.getRoomUnitManager().getCurrentRoomPets().isEmpty()) { return false; } - for(Pet pet : room.getCurrentPets().valueCollection()) { + for(Pet pet : room.getRoomUnitManager().getCurrentRoomPets().values()) { if (pet != null && pet.getName().equalsIgnoreCase(args[0])) { StringBuilder commandBuilder = new StringBuilder(); @@ -150,7 +163,7 @@ public class CommandsManager { for (PetCommand command : pet.getPetData().getPetCommands()) { if (command.getKey().equalsIgnoreCase(commandKey)) { if (pet instanceof RideablePet rideablePet && rideablePet.getRider() != null && rideablePet.getRider().getHabboInfo().getId() == gameClient.getHabbo().getHabboInfo().getId()) { - rideablePet.getRider().getHabboInfo().dismountPet(); + rideablePet.getRider().getHabboInfo().dismountPet(room); break; } diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/ArcturusCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/ArcturusCommand.java index 6b3d8c94..d020247a 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/ArcturusCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/ArcturusCommand.java @@ -11,7 +11,7 @@ public class ArcturusCommand extends Command { @Override public boolean handle(GameClient gameClient, String[] params) { - if (gameClient.getHabbo().getHabboInfo().getCurrentRoom() != null) { + if (gameClient.getHabbo().getRoomUnit().getRoom() != null) { gameClient.getHabbo().whisper("This hotel is powered by Arcturus Emulator! \r" + "Cet hôtel est alimenté par Arcturus émulateur! \r" + "Dit hotel draait op Arcturus Emulator! \r" + diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/BlockAlertCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/BlockAlertCommand.java index e7163ca4..bd95efcf 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/BlockAlertCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/BlockAlertCommand.java @@ -11,7 +11,7 @@ public class BlockAlertCommand extends Command { @Override public boolean handle(GameClient gameClient, String[] params) { - if (gameClient.getHabbo().getHabboInfo().getCurrentRoom() != null) { + if (gameClient.getHabbo().getRoomUnit().getRoom() != null) { gameClient.getHabbo().getHabboStats().setBlockStaffAlerts(!gameClient.getHabbo().getHabboStats().isBlockStaffAlerts()); gameClient.getHabbo().whisper(getTextsValue("commands.succes.cmd_blockalert").replace("%state%", (gameClient.getHabbo().getHabboStats().isBlockStaffAlerts() ? getTextsValue("generic.on") : getTextsValue("generic.off"))), RoomChatMessageBubbles.ALERT); diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/BotsCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/BotsCommand.java index a5e8ac1d..7db71e8b 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/BotsCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/BotsCommand.java @@ -12,12 +12,12 @@ public class BotsCommand extends Command { @Override public boolean handle(GameClient gameClient, String[] params) { - if (gameClient.getHabbo().getHabboInfo().getCurrentRoom() == null || !gameClient.getHabbo().getHabboInfo().getCurrentRoom().hasRights(gameClient.getHabbo())) + if (gameClient.getHabbo().getRoomUnit().getRoom() == null || !gameClient.getHabbo().getRoomUnit().getRoom().hasRights(gameClient.getHabbo())) return false; - StringBuilder data = new StringBuilder(getTextsValue("total") + ": " + gameClient.getHabbo().getHabboInfo().getCurrentRoom().getCurrentBots().values().length); + StringBuilder data = new StringBuilder(getTextsValue("total") + ": " + gameClient.getHabbo().getRoomUnit().getRoom().getRoomUnitManager().getCurrentRoomBots().values().size()); - for (Bot bot : gameClient.getHabbo().getHabboInfo().getCurrentRoom().getCurrentBots().valueCollection()) { + for (Bot bot : gameClient.getHabbo().getRoomUnit().getRoom().getRoomUnitManager().getCurrentRoomBots().values()) { data.append("\r"); data.append(""); data.append(Emulator.getTexts().getValue("generic.bot.name")); diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/ControlCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/ControlCommand.java index 76442da4..537e80bc 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/ControlCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/ControlCommand.java @@ -12,7 +12,7 @@ public class ControlCommand extends Command { @Override public boolean handle(GameClient gameClient, String[] params) { - if (gameClient.getHabbo().getHabboInfo().getCurrentRoom() != null) { + if (gameClient.getHabbo().getRoomUnit().getRoom() != null) { if (params.length == 2) { Habbo target = getHabbo(params[1]); diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/CoordsCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/CoordsCommand.java index 0bbac1d8..0cb80a4c 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/CoordsCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/CoordsCommand.java @@ -12,24 +12,24 @@ public class CoordsCommand extends Command { @Override public boolean handle(GameClient gameClient, String[] params) { - if (gameClient.getHabbo().getRoomUnit() == null || gameClient.getHabbo().getHabboInfo().getCurrentRoom() == null) + if (gameClient.getHabbo().getRoomUnit() == null || gameClient.getHabbo().getRoomUnit().getRoom() == null) return false; if (params.length == 1) { gameClient.getHabbo().alert(getTextsValue("commands.generic.cmd_coords.title") + "\r\n" + - "x: " + gameClient.getHabbo().getRoomUnit().getX() + "\r" + - "y: " + gameClient.getHabbo().getRoomUnit().getY() + "\r" + - "z: " + (gameClient.getHabbo().getRoomUnit().hasStatus(RoomUnitStatus.SIT) ? gameClient.getHabbo().getRoomUnit().getStatus(RoomUnitStatus.SIT) : gameClient.getHabbo().getRoomUnit().getZ()) + "\r" + + "x: " + gameClient.getHabbo().getRoomUnit().getCurrentPosition().getX() + "\r" + + "y: " + gameClient.getHabbo().getRoomUnit().getCurrentPosition().getY() + "\r" + + "z: " + (gameClient.getHabbo().getRoomUnit().hasStatus(RoomUnitStatus.SIT) ? gameClient.getHabbo().getRoomUnit().getStatus(RoomUnitStatus.SIT) : gameClient.getHabbo().getRoomUnit().getCurrentZ()) + "\r" + getTextsValue("generic.rotation.head") + ": " + gameClient.getHabbo().getRoomUnit().getHeadRotation() + "-" + gameClient.getHabbo().getRoomUnit().getHeadRotation().getValue() + "\r" + getTextsValue("generic.rotation.body") + ": " + gameClient.getHabbo().getRoomUnit().getBodyRotation() + "-" + gameClient.getHabbo().getRoomUnit().getBodyRotation().getValue() + "\r" + getTextsValue("generic.sitting") + ": " + (gameClient.getHabbo().getRoomUnit().hasStatus(RoomUnitStatus.SIT) ? getTextsValue("generic.yes") : getTextsValue("generic.no")) + "\r" + - "Tile State: " + gameClient.getHabbo().getHabboInfo().getCurrentRoom().getLayout().getTile(gameClient.getHabbo().getRoomUnit().getX(), gameClient.getHabbo().getRoomUnit().getY()).getState().name() + "\r" + - "Tile Walkable: " + gameClient.getHabbo().getHabboInfo().getCurrentRoom().getLayout().getTile(gameClient.getHabbo().getRoomUnit().getX(), gameClient.getHabbo().getRoomUnit().getY()).isWalkable() + "\r" + - "Tile relative height: " + gameClient.getHabbo().getHabboInfo().getCurrentRoom().getLayout().getTile(gameClient.getHabbo().getRoomUnit().getX(), gameClient.getHabbo().getRoomUnit().getY()).relativeHeight() + "\r" + - "Tile stack height: " + gameClient.getHabbo().getHabboInfo().getCurrentRoom().getLayout().getTile(gameClient.getHabbo().getRoomUnit().getX(), gameClient.getHabbo().getRoomUnit().getY()).getStackHeight()); + "Tile State: " + gameClient.getHabbo().getRoomUnit().getRoom().getLayout().getTile(gameClient.getHabbo().getRoomUnit().getCurrentPosition().getX(), gameClient.getHabbo().getRoomUnit().getCurrentPosition().getY()).getState().name() + "\r" + + "Tile Walkable: " + gameClient.getHabbo().getRoomUnit().getRoom().getLayout().getTile(gameClient.getHabbo().getRoomUnit().getCurrentPosition().getX(), gameClient.getHabbo().getRoomUnit().getCurrentPosition().getY()).isWalkable() + "\r" + + "Tile relative height: " + gameClient.getHabbo().getRoomUnit().getRoom().getLayout().getTile(gameClient.getHabbo().getRoomUnit().getCurrentPosition().getX(), gameClient.getHabbo().getRoomUnit().getCurrentPosition().getY()).relativeHeight() + "\r" + + "Tile stack height: " + gameClient.getHabbo().getRoomUnit().getRoom().getLayout().getTile(gameClient.getHabbo().getRoomUnit().getCurrentPosition().getX(), gameClient.getHabbo().getRoomUnit().getCurrentPosition().getY()).getStackHeight()); } else { - RoomTile tile = gameClient.getHabbo().getHabboInfo().getCurrentRoom().getLayout().getTile(Short.parseShort(params[1]), Short.parseShort(params[2])); + RoomTile tile = gameClient.getHabbo().getRoomUnit().getRoom().getLayout().getTile(Short.parseShort(params[1]), Short.parseShort(params[2])); if (tile != null) { gameClient.getHabbo().alert(getTextsValue("commands.generic.cmd_coords.title") + "\r\n" + diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/DiagonalCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/DiagonalCommand.java index 6b841eea..7e1ca0f3 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/DiagonalCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/DiagonalCommand.java @@ -11,10 +11,10 @@ public class DiagonalCommand extends Command { @Override public boolean handle(GameClient gameClient, String[] params) { - if (gameClient.getHabbo().getHabboInfo().getCurrentRoom() != null && gameClient.getHabbo().getHabboInfo().getCurrentRoom().hasRights(gameClient.getHabbo())) { - gameClient.getHabbo().getHabboInfo().getCurrentRoom().moveDiagonally(!gameClient.getHabbo().getHabboInfo().getCurrentRoom().moveDiagonally()); + if (gameClient.getHabbo().getRoomUnit().getRoom() != null && gameClient.getHabbo().getRoomUnit().getRoom().hasRights(gameClient.getHabbo())) { + gameClient.getHabbo().getRoomUnit().getRoom().setDiagonalMoveEnabled(!gameClient.getHabbo().getRoomUnit().getRoom().getRoomInfo().isDiagonalMoveEnabled()); - if (!gameClient.getHabbo().getHabboInfo().getCurrentRoom().moveDiagonally()) { + if (!gameClient.getHabbo().getRoomUnit().getRoom().getRoomInfo().isDiagonalMoveEnabled()) { gameClient.getHabbo().whisper(getTextsValue("commands.succes.cmd_diagonal.disabled"), RoomChatMessageBubbles.ALERT); } else { gameClient.getHabbo().whisper(getTextsValue("commands.succes.cmd_diagonal.enabled"), RoomChatMessageBubbles.ALERT); diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/EjectAllCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/EjectAllCommand.java index b68e8c12..f0927824 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/EjectAllCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/EjectAllCommand.java @@ -12,11 +12,13 @@ public class EjectAllCommand extends Command { @Override public boolean handle(GameClient gameClient, String[] params) { - Room room = gameClient.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = gameClient.getHabbo().getRoomUnit().getRoom(); - if (room != null && (room.isOwner(gameClient.getHabbo()) - || (room.hasGuild() && room.getGuildRightLevel(gameClient.getHabbo()).equals(RoomRightLevels.GUILD_ADMIN)))) { - room.ejectAll(gameClient.getHabbo()); + if (room != null) { + if (room.getRoomInfo().isRoomOwner(gameClient.getHabbo()) + || (room.getRoomInfo().hasGuild() && room.getGuildRightLevel(gameClient.getHabbo()).equals(RoomRightLevels.GUILD_ADMIN))) { + room.ejectAll(gameClient.getHabbo()); + } } return true; diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/EmptyBotsInventoryCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/EmptyBotsInventoryCommand.java index 316c5421..d2364227 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/EmptyBotsInventoryCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/EmptyBotsInventoryCommand.java @@ -19,8 +19,8 @@ public class EmptyBotsInventoryCommand extends Command { @Override public boolean handle(GameClient gameClient, String[] params) { if (params.length == 1 || (params.length >= 2 && !params[1].equals(getTextsValue("generic.yes")))) { - if (gameClient.getHabbo().getHabboInfo().getCurrentRoom() != null) { - if (gameClient.getHabbo().getHabboInfo().getCurrentRoom().getUserCount() > 10) { + if (gameClient.getHabbo().getRoomUnit().getRoom() != null) { + if (gameClient.getHabbo().getRoomUnit().getRoom().getRoomUnitManager().getRoomHabbosCount() > 10) { gameClient.getHabbo().alert(getTextsValue("commands.succes.cmd_empty_bots.verify").replace("%generic.yes%", getTextsValue("generic.yes"))); } else { gameClient.getHabbo().whisper(getTextsValue("commands.succes.cmd_empty_bots.verify").replace("%generic.yes%", getTextsValue("generic.yes")), RoomChatMessageBubbles.ALERT); diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/EmptyInventoryCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/EmptyInventoryCommand.java index 4298201e..d6dd555b 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/EmptyInventoryCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/EmptyInventoryCommand.java @@ -5,8 +5,8 @@ import com.eu.habbo.habbohotel.commands.Command; import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.permissions.Permission; import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; import com.eu.habbo.messages.outgoing.inventory.FurniListComposer; import com.eu.habbo.messages.outgoing.inventory.FurniListInvalidateComposer; import com.eu.habbo.threading.runnables.QueryDeleteHabboItems; @@ -21,8 +21,8 @@ public class EmptyInventoryCommand extends Command { @Override public boolean handle(GameClient gameClient, String[] params) { if (params.length == 1 || (params.length == 2 && !params[1].equals(getTextsValue("generic.yes")))) { - if (gameClient.getHabbo().getHabboInfo().getCurrentRoom() != null) { - if (gameClient.getHabbo().getHabboInfo().getCurrentRoom().getUserCount() > 10) { + if (gameClient.getHabbo().getRoomUnit().getRoom() != null) { + if (gameClient.getHabbo().getRoomUnit().getRoom().getRoomUnitManager().getRoomHabbosCount() > 10) { gameClient.getHabbo().alert(getTextsValue("commands.succes.cmd_empty.verify").replace("%generic.yes%", getTextsValue("generic.yes"))); } else { gameClient.getHabbo().whisper(getTextsValue("commands.succes.cmd_empty.verify").replace("%generic.yes%", getTextsValue("generic.yes")), RoomChatMessageBubbles.ALERT); @@ -37,7 +37,7 @@ public class EmptyInventoryCommand extends Command { Habbo habbo = (params.length == 3 && gameClient.getHabbo().hasRight(Permission.ACC_EMPTY_OTHERS)) ? Emulator.getGameEnvironment().getHabboManager().getHabbo(params[2]) : gameClient.getHabbo(); if (habbo != null) { - TIntObjectMap items = new TIntObjectHashMap<>(); + TIntObjectMap items = new TIntObjectHashMap<>(); items.putAll(habbo.getInventory().getItemsComponent().getItems()); habbo.getInventory().getItemsComponent().getItems().clear(); Emulator.getThreading().run(new QueryDeleteHabboItems(items)); diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/EmptyPetsInventoryCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/EmptyPetsInventoryCommand.java index d1679b9c..7c74e237 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/EmptyPetsInventoryCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/EmptyPetsInventoryCommand.java @@ -19,8 +19,8 @@ public class EmptyPetsInventoryCommand extends Command { @Override public boolean handle(GameClient gameClient, String[] params) { if (params.length == 1 || (params.length >= 2 && !params[1].equals(getTextsValue("generic.yes")))) { - if (gameClient.getHabbo().getHabboInfo().getCurrentRoom() != null) { - if (gameClient.getHabbo().getHabboInfo().getCurrentRoom().getUserCount() > 10) { + if (gameClient.getHabbo().getRoomUnit().getRoom() != null) { + if (gameClient.getHabbo().getRoomUnit().getRoom().getRoomUnitManager().getRoomHabbosCount() > 10) { gameClient.getHabbo().alert(getTextsValue("commands.succes.cmd_empty_pets.verify").replace("%generic.yes%", getTextsValue("generic.yes"))); } else { gameClient.getHabbo().whisper(getTextsValue("commands.succes.cmd_empty_pets.verify").replace("%generic.yes%", getTextsValue("generic.yes")), RoomChatMessageBubbles.ALERT); diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/EnableCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/EnableCommand.java index d1ea3825..87af068d 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/EnableCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/EnableCommand.java @@ -33,13 +33,13 @@ public class EnableCommand extends Command { } if (target == gameClient.getHabbo() || gameClient.getHabbo().hasRight(Permission.ACC_ENABLE_OTHERS)) { try { - if (target.getHabboInfo().getCurrentRoom() != null && target.getHabboInfo().getRiding() == null) { + if (target.getRoomUnit().getRoom() != null && target.getHabboInfo().getRiding() == null) { if (Emulator.getGameEnvironment().getPermissionsManager().isEffectBlocked(effectId, target.getHabboInfo().getPermissionGroup().getId())) { gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_enable.not_allowed"), RoomChatMessageBubbles.ALERT); return true; } - target.getHabboInfo().getCurrentRoom().giveEffect(target, effectId, -1); + target.getRoomUnit().getRoom().giveEffect(target, effectId, -1); } } catch (Exception e) { log.error("Caught exception", e); diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/EventCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/EventCommand.java index 1ea5bf86..ed363e35 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/EventCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/EventCommand.java @@ -18,14 +18,14 @@ public class EventCommand extends Command { @Override public boolean handle(GameClient gameClient, String[] params) { - if (gameClient.getHabbo().getHabboInfo().getCurrentRoom() == null || params.length < 2) { + if (gameClient.getHabbo().getRoomUnit().getRoom() == null || params.length < 2) { return false; } String message = IntStream.range(1, params.length).mapToObj(i -> params[i] + " ").collect(Collectors.joining()); THashMap codes = new THashMap<>(); - codes.put("ROOMNAME", gameClient.getHabbo().getHabboInfo().getCurrentRoom().getName()); - codes.put("ROOMID", gameClient.getHabbo().getHabboInfo().getCurrentRoom().getId() + ""); + codes.put("ROOMNAME", gameClient.getHabbo().getRoomUnit().getRoom().getRoomInfo().getName()); + codes.put("ROOMID", gameClient.getHabbo().getRoomUnit().getRoom().getRoomInfo().getId() + ""); codes.put("USERNAME", gameClient.getHabbo().getHabboInfo().getUsername()); codes.put("LOOK", gameClient.getHabbo().getHabboInfo().getLook()); codes.put("TIME", Emulator.getDate().toString()); diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/FacelessCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/FacelessCommand.java index 88d9a95e..dbb4c7bd 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/FacelessCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/FacelessCommand.java @@ -13,7 +13,7 @@ public class FacelessCommand extends Command { @Override public boolean handle(GameClient gameClient, String[] params) { - if (gameClient.getHabbo().getHabboInfo().getCurrentRoom() == null) { + if (gameClient.getHabbo().getRoomUnit().getRoom() == null) { return false; } @@ -34,7 +34,7 @@ public class FacelessCommand extends Command { gameClient.getHabbo().getHabboInfo().setLook(gameClient.getHabbo().getHabboInfo().getLook().replace(part, newHead)); gameClient.sendResponse(new FigureUpdateComposer(gameClient.getHabbo())); - gameClient.getHabbo().getHabboInfo().getCurrentRoom().sendComposer(new UserChangeMessageComposer(gameClient.getHabbo()).compose()); + gameClient.getHabbo().getRoomUnit().getRoom().sendComposer(new UserChangeMessageComposer(gameClient.getHabbo()).compose()); return true; } } diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/FastwalkCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/FastwalkCommand.java index fc790173..65c9e5f5 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/FastwalkCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/FastwalkCommand.java @@ -11,9 +11,9 @@ public class FastwalkCommand extends Command { @Override public boolean handle(GameClient gameClient, String[] params) { - if (gameClient.getHabbo().getHabboInfo().getCurrentRoom() != null) { + if (gameClient.getHabbo().getRoomUnit().getRoom() != null) { //TODO Make this an event plugin which fires that can be cancelled - if (gameClient.getHabbo().getHabboInfo().getCurrentRoom() != null && gameClient.getHabbo().getHabboInfo().getRiding() != null) + if (gameClient.getHabbo().getRoomUnit().getRoom() != null && gameClient.getHabbo().getHabboInfo().getRiding() != null) return true; Habbo habbo = gameClient.getHabbo(); @@ -26,7 +26,7 @@ public class FastwalkCommand extends Command { if (habbo == null) return false; } - habbo.getRoomUnit().setFastWalk(!habbo.getRoomUnit().isFastWalk()); + habbo.getRoomUnit().setFastWalkEnabled(!habbo.getRoomUnit().isFastWalkEnabled()); return true; } diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/FreezeBotsCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/FreezeBotsCommand.java index 3e579fa8..ced95a10 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/FreezeBotsCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/FreezeBotsCommand.java @@ -12,14 +12,14 @@ public class FreezeBotsCommand extends Command { @Override public boolean handle(GameClient gameClient, String[] params) { - if (gameClient.getHabbo().getHabboInfo().getCurrentRoom() == null) { + if (gameClient.getHabbo().getRoomUnit().getRoom() == null) { return false; } - if (gameClient.getHabbo().getHabboInfo().getId() == gameClient.getHabbo().getHabboInfo().getCurrentRoom().getOwnerId() + if (gameClient.getHabbo().getHabboInfo().getId() == gameClient.getHabbo().getRoomUnit().getRoom().getRoomInfo().getOwnerInfo().getId() || gameClient.getHabbo().hasRight(Permission.ACC_ANYROOMOWNER)) { - gameClient.getHabbo().getHabboInfo().getCurrentRoom().setAllowBotsWalk(!gameClient.getHabbo().getHabboInfo().getCurrentRoom().isAllowBotsWalk()); - gameClient.getHabbo().whisper(gameClient.getHabbo().getHabboInfo().getCurrentRoom().isAllowBotsWalk() ? getTextsValue("commands.succes.cmd_freeze_bots.unfrozen") : getTextsValue("commands.succes.cmd_freeze_bots.frozen"), RoomChatMessageBubbles.ALERT); + gameClient.getHabbo().getRoomUnit().getRoom().setAllowBotsWalk(!gameClient.getHabbo().getRoomUnit().getRoom().isAllowBotsWalk()); + gameClient.getHabbo().whisper(gameClient.getHabbo().getRoomUnit().getRoom().isAllowBotsWalk() ? getTextsValue("commands.succes.cmd_freeze_bots.unfrozen") : getTextsValue("commands.succes.cmd_freeze_bots.frozen"), RoomChatMessageBubbles.ALERT); } else { gameClient.getHabbo().whisper(getTextsValue("generic.cannot_do_that"), RoomChatMessageBubbles.ALERT); } diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/FreezeCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/FreezeCommand.java index de2ed0b0..ac9e3895 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/FreezeCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/FreezeCommand.java @@ -18,7 +18,7 @@ public class FreezeCommand extends Command { if (habbo == null) { gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.error.cmd_freeze.not_found"), params[1]), RoomChatMessageBubbles.ALERT); } else { - if (habbo.getRoomUnit().canWalk()) { + if (habbo.getRoomUnit().isCanWalk()) { habbo.getRoomUnit().setCanWalk(false); habbo.whisper(getTextsValue("commands.succes.cmd_freeze.frozen"), RoomChatMessageBubbles.ALERT); gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.succes.cmd_freeze.user_frozen"), params[1]), RoomChatMessageBubbles.ALERT); diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/HabnamCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/HabnamCommand.java index 7c637fd4..e089d6ae 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/HabnamCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/HabnamCommand.java @@ -10,8 +10,8 @@ public class HabnamCommand extends Command { @Override public boolean handle(GameClient gameClient, String[] params) { - if (gameClient.getHabbo().getHabboStats().hasActiveClub() && gameClient.getHabbo().getHabboInfo().getCurrentRoom() != null) { - gameClient.getHabbo().getHabboInfo().getCurrentRoom().giveEffect(gameClient.getHabbo(), 140, 30); + if (gameClient.getHabbo().getHabboStats().hasActiveClub() && gameClient.getHabbo().getRoomUnit().getRoom() != null) { + gameClient.getHabbo().getRoomUnit().getRoom().giveEffect(gameClient.getHabbo(), 140, 30); return true; } diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/HandItemCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/HandItemCommand.java index c14fba16..a2cd6844 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/HandItemCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/HandItemCommand.java @@ -13,10 +13,10 @@ public class HandItemCommand extends Command { public boolean handle(GameClient gameClient, String[] params) { if (params.length == 2) { try { - if (gameClient.getHabbo().getHabboInfo().getCurrentRoom() != null) { + if (gameClient.getHabbo().getRoomUnit().getRoom() != null) { int effectId = Integer.parseInt(params[1]); gameClient.getHabbo().getRoomUnit().setHandItem(effectId); - gameClient.getHabbo().getHabboInfo().getCurrentRoom().sendComposer(new CarryObjectMessageComposer(gameClient.getHabbo().getRoomUnit()).compose()); + gameClient.getHabbo().getRoomUnit().getRoom().sendComposer(new CarryObjectMessageComposer(gameClient.getHabbo().getRoomUnit()).compose()); } } catch (Exception e) { //Don't handle incorrect parse exceptions :P diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/HideWiredCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/HideWiredCommand.java index a1a37ac0..1c1246e4 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/HideWiredCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/HideWiredCommand.java @@ -11,14 +11,14 @@ public class HideWiredCommand extends Command { @Override public boolean handle(GameClient gameClient, String[] params) { - Room room = gameClient.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = gameClient.getHabbo().getRoomUnit().getRoom(); if (room == null) { return true; } - if (room.isOwner(gameClient.getHabbo())) { - room.setHideWired(!room.isHideWired()); - gameClient.getHabbo().whisper(getTextsValue("commands.succes.cmd_hidewired." + (room.isHideWired() ? "hidden" : "shown"))); + if (room.getRoomInfo().isRoomOwner(gameClient.getHabbo())) { + room.setHideWired(!room.getRoomInfo().isHiddenWiredEnabled()); + gameClient.getHabbo().whisper(getTextsValue("commands.succes.cmd_hidewired." + (room.getRoomInfo().isHiddenWiredEnabled() ? "hidden" : "shown"))); } else { gameClient.getHabbo().whisper(getTextsValue("commands.errors.cmd_hidewired.permission")); } diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/InvisibleCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/InvisibleCommand.java index a89cf853..3d58cd98 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/InvisibleCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/InvisibleCommand.java @@ -3,7 +3,7 @@ package com.eu.habbo.habbohotel.commands.list; import com.eu.habbo.habbohotel.commands.Command; import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.rooms.RoomLayout; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.wired.WiredHandler; import com.eu.habbo.habbohotel.wired.WiredTriggerType; import com.eu.habbo.messages.outgoing.rooms.users.RoomUsersComposer; @@ -41,7 +41,7 @@ public class InvisibleCommand extends Command { roomUnit.setInvisible(true); gameClient.getHabbo().whisper(getTextsValue("commands.succes.cmd_invisible.updated")); - gameClient.getHabbo().getHabboInfo().getCurrentRoom().sendComposer(new UserRemoveMessageComposer(roomUnit).compose()); + gameClient.getHabbo().getRoomUnit().getRoom().sendComposer(new UserRemoveMessageComposer(roomUnit).compose()); return true; } diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/LayCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/LayCommand.java index 0961d2ba..62b402bd 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/LayCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/LayCommand.java @@ -4,7 +4,7 @@ import com.eu.habbo.habbohotel.commands.Command; import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.rooms.RoomTile; import com.eu.habbo.habbohotel.rooms.RoomUnitStatus; -import com.eu.habbo.habbohotel.rooms.RoomUserRotation; +import com.eu.habbo.habbohotel.rooms.entities.RoomRotation; import com.eu.habbo.messages.outgoing.rooms.users.UserUpdateComposer; import java.util.stream.IntStream; @@ -19,24 +19,24 @@ public class LayCommand extends Command { if (gameClient.getHabbo().getRoomUnit() == null || !gameClient.getHabbo().getRoomUnit().canForcePosture()) return true; - gameClient.getHabbo().getRoomUnit().setCmdLay(true); - gameClient.getHabbo().getHabboInfo().getCurrentRoom().updateHabbo(gameClient.getHabbo()); - gameClient.getHabbo().getRoomUnit().setCmdSit(true); - gameClient.getHabbo().getRoomUnit().setBodyRotation(RoomUserRotation.values()[gameClient.getHabbo().getRoomUnit().getBodyRotation().getValue() - gameClient.getHabbo().getRoomUnit().getBodyRotation().getValue() % 2]); + gameClient.getHabbo().getRoomUnit().setCmdLayEnabled(true); + gameClient.getHabbo().getRoomUnit().getRoom().updateHabbo(gameClient.getHabbo()); + gameClient.getHabbo().getRoomUnit().setCmdSitEnabled(true); + gameClient.getHabbo().getRoomUnit().setBodyRotation(RoomRotation.values()[gameClient.getHabbo().getRoomUnit().getBodyRotation().getValue() - gameClient.getHabbo().getRoomUnit().getBodyRotation().getValue() % 2]); - RoomTile tile = gameClient.getHabbo().getRoomUnit().getCurrentLocation(); + RoomTile tile = gameClient.getHabbo().getRoomUnit().getCurrentPosition(); if (tile == null) { return false; } if (IntStream.range(0, 3) - .mapToObj(i -> gameClient.getHabbo().getHabboInfo().getCurrentRoom().getLayout().getTileInFront(tile, gameClient.getHabbo().getRoomUnit().getBodyRotation().getValue(), i)) + .mapToObj(i -> gameClient.getHabbo().getRoomUnit().getRoom().getLayout().getTileInFront(tile, gameClient.getHabbo().getRoomUnit().getBodyRotation().getValue(), i)) .anyMatch(t -> t == null || !t.isWalkable())) { return false; } gameClient.getHabbo().getRoomUnit().setStatus(RoomUnitStatus.LAY, 0.5 + ""); - gameClient.getHabbo().getHabboInfo().getCurrentRoom().sendComposer(new UserUpdateComposer(gameClient.getHabbo().getRoomUnit()).compose()); + gameClient.getHabbo().getRoomUnit().getRoom().sendComposer(new UserUpdateComposer(gameClient.getHabbo().getRoomUnit()).compose()); return true; } } \ No newline at end of file diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/MimicCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/MimicCommand.java index 91be1f99..110c1d9a 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/MimicCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/MimicCommand.java @@ -19,7 +19,7 @@ public class MimicCommand extends Command { @Override public boolean handle(GameClient gameClient, String[] params) { if (params.length == 2) { - Habbo habbo = gameClient.getHabbo().getHabboInfo().getCurrentRoom().getHabbo(params[1]); + Habbo habbo = gameClient.getHabbo().getRoomUnit().getRoom().getHabbo(params[1]); if (habbo == null) { gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.error.cmd_mimic.not_found"), ""), RoomChatMessageBubbles.ALERT); @@ -39,7 +39,7 @@ public class MimicCommand extends Command { gameClient.getHabbo().getHabboInfo().setLook(ClothingValidationManager.VALIDATE_ON_MIMIC ? ClothingValidationManager.validateLook(gameClient.getHabbo(), habbo.getHabboInfo().getLook(), habbo.getHabboInfo().getGender().name()) : habbo.getHabboInfo().getLook()); gameClient.getHabbo().getHabboInfo().setGender(habbo.getHabboInfo().getGender()); gameClient.sendResponse(new UserObjectComposer(gameClient.getHabbo())); - gameClient.getHabbo().getHabboInfo().getCurrentRoom().sendComposer(new UserChangeMessageComposer(gameClient.getHabbo()).compose()); + gameClient.getHabbo().getRoomUnit().getRoom().sendComposer(new UserChangeMessageComposer(gameClient.getHabbo()).compose()); gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.succes.cmd_mimic.copied"), params[1]).replace("%gender_name%", getGenderName(habbo)), RoomChatMessageBubbles.ALERT); return true; } diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/MoonwalkCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/MoonwalkCommand.java index 5c03d536..e21db613 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/MoonwalkCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/MoonwalkCommand.java @@ -10,12 +10,12 @@ public class MoonwalkCommand extends Command { @Override public boolean handle(GameClient gameClient, String[] params) { - if (gameClient.getHabbo().getHabboInfo().getCurrentRoom() != null && gameClient.getHabbo().getHabboStats().hasActiveClub()) { + if (gameClient.getHabbo().getRoomUnit().getRoom() != null && gameClient.getHabbo().getHabboStats().hasActiveClub()) { int effect = 136; if (gameClient.getHabbo().getRoomUnit().getEffectId() == 136) effect = 0; - gameClient.getHabbo().getHabboInfo().getCurrentRoom().giveEffect(gameClient.getHabbo(), effect, -1); + gameClient.getHabbo().getRoomUnit().getRoom().giveEffect(gameClient.getHabbo(), effect, -1); return true; } diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/MuteCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/MuteCommand.java index b92589b8..da3a6ab1 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/MuteCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/MuteCommand.java @@ -46,8 +46,8 @@ public class MuteCommand extends Command { habbo.mute(duration, false); - if (habbo.getHabboInfo().getCurrentRoom() != null) { - habbo.getHabboInfo().getCurrentRoom().sendComposer(new IgnoreResultMessageComposer(habbo, IgnoreResultMessageComposer.MUTED).compose()); //: RoomUserIgnoredComposer.UNIGNORED + if (habbo.getRoomUnit().getRoom() != null) { + habbo.getRoomUnit().getRoom().sendComposer(new IgnoreResultMessageComposer(habbo, IgnoreResultMessageComposer.MUTED).compose()); //: RoomUserIgnoredComposer.UNIGNORED } gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.succes.cmd_mute.muted"), params[1]), RoomChatMessageBubbles.ALERT); diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/PetInfoCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/PetInfoCommand.java index 5ffafb07..b7e27792 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/PetInfoCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/PetInfoCommand.java @@ -16,12 +16,12 @@ public class PetInfoCommand extends Command { gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_pet_info.pet_not_found"), RoomChatMessageBubbles.ALERT); return true; } - if (gameClient.getHabbo().getHabboInfo().getCurrentRoom() == null) + if (gameClient.getHabbo().getRoomUnit().getRoom() == null) return false; String name = params[1]; - gameClient.getHabbo().getHabboInfo().getCurrentRoom().getCurrentPets().forEachEntry((a, pet) -> { + gameClient.getHabbo().getRoomUnit().getRoom().getRoomUnitManager().getCurrentRoomPets().forEach((a, pet) -> { if (pet.getName().equalsIgnoreCase(name)) { gameClient.getHabbo().alert("" + getTextsValue("commands.generic.cmd_pet_info.title") + ": " + pet.getName() + "\r\n" + @@ -37,11 +37,9 @@ public class PetInfoCommand extends Command { getTextsValue("generic.pet.level.thirst") + ": " + pet.levelThirst + "\r" + getTextsValue("generic.pet.level.hunger") + ": " + pet.levelHunger + "\r" + getTextsValue("generic.pet.current_action") + ": " + (pet.getTask() == null ? getTextsValue("generic.nothing") : pet.getTask().name()) + "\r" + - getTextsValue("generic.can.walk") + ": " + (pet.getRoomUnit().canWalk() ? getTextsValue("generic.yes") : getTextsValue("generic.no")) + "" + getTextsValue("generic.can.walk") + ": " + (pet.getRoomUnit().isCanWalk() ? getTextsValue("generic.yes") : getTextsValue("generic.no")) + "" ); } - - return true; }); return true; } diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/PickallCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/PickallCommand.java index cd0d6887..9e7037fe 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/PickallCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/PickallCommand.java @@ -11,13 +11,13 @@ public class PickallCommand extends Command { @Override public boolean handle(GameClient gameClient, String[] params) { - Room room = gameClient.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = gameClient.getHabbo().getRoomUnit().getRoom(); if (room == null) { return true; } - if (room.isOwner(gameClient.getHabbo())) { + if (room.getRoomInfo().isRoomOwner(gameClient.getHabbo())) { room.ejectAll(); return true; } diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/PullCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/PullCommand.java index 3b78f9db..bee583fa 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/PullCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/PullCommand.java @@ -17,7 +17,7 @@ public class PullCommand extends Command { @Override public boolean handle(GameClient gameClient, String[] params) { if (params.length != 2) return true; - Habbo habbo = gameClient.getHabbo().getHabboInfo().getCurrentRoom().getHabbo(params[1]); + Habbo habbo = gameClient.getHabbo().getRoomUnit().getRoom().getHabbo(params[1]); if (habbo == null) { gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.error.cmd_pull.not_found"), params[1]), RoomChatMessageBubbles.ALERT); @@ -27,22 +27,22 @@ public class PullCommand extends Command { gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_pull.pull_self"), RoomChatMessageBubbles.ALERT); return true; } - int distanceX = habbo.getRoomUnit().getX() - gameClient.getHabbo().getRoomUnit().getX(); - int distanceY = habbo.getRoomUnit().getY() - gameClient.getHabbo().getRoomUnit().getY(); + int distanceX = habbo.getRoomUnit().getCurrentPosition().getX() - gameClient.getHabbo().getRoomUnit().getCurrentPosition().getX(); + int distanceY = habbo.getRoomUnit().getCurrentPosition().getY() - gameClient.getHabbo().getRoomUnit().getCurrentPosition().getY(); if (distanceX < -2 || distanceX > 2 || distanceY < -2 || distanceY > 2) { gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.error.cmd_pull.cant_reach"), params[1]), RoomChatMessageBubbles.ALERT); return true; } - RoomTile tile = gameClient.getHabbo().getHabboInfo().getCurrentRoom().getLayout().getTileInFront(gameClient.getHabbo().getRoomUnit().getCurrentLocation(), gameClient.getHabbo().getRoomUnit().getBodyRotation().getValue()); + RoomTile tile = gameClient.getHabbo().getRoomUnit().getRoom().getLayout().getTileInFront(gameClient.getHabbo().getRoomUnit().getCurrentPosition(), gameClient.getHabbo().getRoomUnit().getBodyRotation().getValue()); if (tile != null && tile.isWalkable()) { - if (gameClient.getHabbo().getHabboInfo().getCurrentRoom().getLayout().getDoorTile() == tile) { + if (gameClient.getHabbo().getRoomUnit().getRoom().getLayout().getDoorTile() == tile) { gameClient.getHabbo().whisper(replaceUsername(getTextsValue("commands.error.cmd_pull.invalid"), params[1])); return true; } habbo.getRoomUnit().setGoalLocation(tile); - gameClient.getHabbo().getHabboInfo().getCurrentRoom().sendComposer(new ChatMessageComposer(new RoomChatMessage(replaceUser(getTextsValue("commands.succes.cmd_pull.pull"), params[1]).replace("%gender_name%", (gameClient.getHabbo().getHabboInfo().getGender().equals(HabboGender.M) ? getTextsValue("gender.him") : getTextsValue("gender.her"))), gameClient.getHabbo(), gameClient.getHabbo(), RoomChatMessageBubbles.NORMAL)).compose()); + gameClient.getHabbo().getRoomUnit().getRoom().sendComposer(new ChatMessageComposer(new RoomChatMessage(replaceUser(getTextsValue("commands.succes.cmd_pull.pull"), params[1]).replace("%gender_name%", (gameClient.getHabbo().getHabboInfo().getGender().equals(HabboGender.M) ? getTextsValue("gender.him") : getTextsValue("gender.her"))), gameClient.getHabbo(), gameClient.getHabbo(), RoomChatMessageBubbles.NORMAL)).compose()); } diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/PushCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/PushCommand.java index e440af6f..f9679b42 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/PushCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/PushCommand.java @@ -18,7 +18,7 @@ public class PushCommand extends Command { public boolean handle(GameClient gameClient, String[] params) { if (params.length != 2) return true; - Habbo habbo = gameClient.getHabbo().getHabboInfo().getCurrentRoom().getHabbo(params[1]); + Habbo habbo = gameClient.getHabbo().getRoomUnit().getRoom().getHabbo(params[1]); if (habbo == null) { gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.error.cmd_push.not_found"), params[1]), RoomChatMessageBubbles.ALERT); @@ -29,19 +29,19 @@ public class PushCommand extends Command { gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_push.push_self"), RoomChatMessageBubbles.ALERT); return true; } - RoomTile tFront = gameClient.getHabbo().getHabboInfo().getCurrentRoom().getLayout().getTileInFront(gameClient.getHabbo().getRoomUnit().getCurrentLocation(), gameClient.getHabbo().getRoomUnit().getBodyRotation().getValue()); + RoomTile tFront = gameClient.getHabbo().getRoomUnit().getRoom().getLayout().getTileInFront(gameClient.getHabbo().getRoomUnit().getCurrentPosition(), gameClient.getHabbo().getRoomUnit().getBodyRotation().getValue()); if (tFront != null && tFront.isWalkable()) { - if (tFront.getX() == habbo.getRoomUnit().getX() && tFront.getY() == habbo.getRoomUnit().getY()) { - RoomTile tFrontTarget = gameClient.getHabbo().getHabboInfo().getCurrentRoom().getLayout().getTileInFront(habbo.getRoomUnit().getCurrentLocation(), gameClient.getHabbo().getRoomUnit().getBodyRotation().getValue()); + if (tFront.getX() == habbo.getRoomUnit().getCurrentPosition().getX() && tFront.getY() == habbo.getRoomUnit().getCurrentPosition().getY()) { + RoomTile tFrontTarget = gameClient.getHabbo().getRoomUnit().getRoom().getLayout().getTileInFront(habbo.getRoomUnit().getCurrentPosition(), gameClient.getHabbo().getRoomUnit().getBodyRotation().getValue()); if (tFrontTarget != null && tFrontTarget.isWalkable()) { - if (gameClient.getHabbo().getHabboInfo().getCurrentRoom().getLayout().getDoorTile() == tFrontTarget) { + if (gameClient.getHabbo().getRoomUnit().getRoom().getLayout().getDoorTile() == tFrontTarget) { gameClient.getHabbo().whisper(replaceUsername(getTextsValue("commands.error.cmd_push.invalid"), params[1])); return true; } habbo.getRoomUnit().setGoalLocation(tFrontTarget); - gameClient.getHabbo().getHabboInfo().getCurrentRoom().sendComposer( + gameClient.getHabbo().getRoomUnit().getRoom().sendComposer( new ChatMessageComposer( new RoomChatMessage( replaceUser(getTextsValue("commands.succes.cmd_push.push"), params[1]) diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/RedeemCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/RedeemCommand.java index a0b32f1c..91e9a483 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/RedeemCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/RedeemCommand.java @@ -4,7 +4,7 @@ import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.commands.Command; import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.outgoing.inventory.FurniListInvalidateComposer; import com.eu.habbo.threading.runnables.QueryDeleteHabboItems; import gnu.trove.map.TIntIntMap; @@ -20,16 +20,16 @@ public class RedeemCommand extends Command { @Override public boolean handle(final GameClient gameClient, String[] params) { - if (gameClient.getHabbo().getHabboInfo().getCurrentRoom().getActiveTradeForHabbo(gameClient.getHabbo()) != null) + if (gameClient.getHabbo().getRoomUnit().getRoom().getActiveTradeForHabbo(gameClient.getHabbo()) != null) return false; - ArrayList items = new ArrayList<>(); + ArrayList items = new ArrayList<>(); int credits = 0; int pixels = 0; TIntIntMap points = new TIntIntHashMap(); - for (HabboItem item : gameClient.getHabbo().getInventory().getItemsComponent().getItemsAsValueCollection()) { + for (RoomItem item : gameClient.getHabbo().getInventory().getItemsComponent().getItemsAsValueCollection()) { if ((item.getBaseItem().getName().startsWith("CF_") || item.getBaseItem().getName().startsWith("CFC_") || item.getBaseItem().getName().startsWith("DF_") || item.getBaseItem().getName().startsWith("PF_")) && item.getUserId() == gameClient.getHabbo().getHabboInfo().getId()) { items.add(item); if ((item.getBaseItem().getName().startsWith("CF_") || item.getBaseItem().getName().startsWith("CFC_")) && !item.getBaseItem().getName().contains("_diamond_")) { @@ -63,7 +63,7 @@ public class RedeemCommand extends Command { } } - TIntObjectHashMap deleted = new TIntObjectHashMap<>(); + TIntObjectHashMap deleted = new TIntObjectHashMap<>(); items.forEach(item -> { gameClient.getHabbo().getInventory().getItemsComponent().removeHabboItem(item); deleted.put(item.getId(), item); diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/ReloadRoomCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/ReloadRoomCommand.java index 0dbd9e8c..371a0e7d 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/ReloadRoomCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/ReloadRoomCommand.java @@ -19,12 +19,12 @@ public class ReloadRoomCommand extends Command { @Override public boolean handle(GameClient gameClient, String[] params) { Emulator.getThreading().run(() -> { - Room room = gameClient.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = gameClient.getHabbo().getRoomUnit().getRoom(); if (room != null) { - Collection habbos = new ArrayList<>(room.getHabbos()); + Collection habbos = new ArrayList<>(room.getRoomUnitManager().getRoomHabbos()); Emulator.getGameEnvironment().getRoomManager().unloadRoom(room); - room = Emulator.getGameEnvironment().getRoomManager().loadRoom(room.getId()); - ServerMessage message = new RoomForwardMessageComposer(room.getId()).compose(); + room = Emulator.getGameEnvironment().getRoomManager().getRoom(room.getRoomInfo().getId()); + ServerMessage message = new RoomForwardMessageComposer(room.getRoomInfo().getId()).compose(); habbos.forEach(habbo -> habbo.getClient().sendResponse(message)); } }, 100); diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/RoomAlertCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/RoomAlertCommand.java index 36fff7ee..5a542b86 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/RoomAlertCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/RoomAlertCommand.java @@ -28,7 +28,7 @@ public class RoomAlertCommand extends Command { return true; } - Room room = gameClient.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = gameClient.getHabbo().getRoomUnit().getRoom(); if (room != null) { room.sendComposer(new IssueCloseNotificationMessageComposer(message).compose()); return true; diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/RoomBundleCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/RoomBundleCommand.java index 958be816..f59d01c1 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/RoomBundleCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/RoomBundleCommand.java @@ -30,7 +30,7 @@ public class RoomBundleCommand extends Command { return true; } - if (Emulator.getGameEnvironment().getCatalogManager().getCatalogPage("room_bundle_" + gameClient.getHabbo().getHabboInfo().getCurrentRoom().getId()) != null) { + if (Emulator.getGameEnvironment().getCatalogManager().getCatalogPage("room_bundle_" + gameClient.getHabbo().getRoomUnit().getRoom().getRoomInfo().getId()) != null) { gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_bundle.duplicate"), RoomChatMessageBubbles.ALERT); return true; } @@ -40,7 +40,7 @@ public class RoomBundleCommand extends Command { points = Integer.parseInt(params[3]); pointsType = Integer.parseInt(params[4]); - CatalogPage page = Emulator.getGameEnvironment().getCatalogManager().createCatalogPage("Room Bundle: " + gameClient.getHabbo().getHabboInfo().getCurrentRoom().getName(), "room_bundle_" + gameClient.getHabbo().getHabboInfo().getCurrentRoom().getId(), gameClient.getHabbo().getHabboInfo().getCurrentRoom().getId(), 0, CatalogPageLayouts.room_bundle, gameClient.getHabbo().getHabboInfo().getPermissionGroup().getId(), parentId); + CatalogPage page = Emulator.getGameEnvironment().getCatalogManager().createCatalogPage("Room Bundle: " + gameClient.getHabbo().getRoomUnit().getRoom().getRoomInfo().getName(), "room_bundle_" + gameClient.getHabbo().getRoomUnit().getRoom().getRoomInfo().getId(), gameClient.getHabbo().getRoomUnit().getRoom().getRoomInfo().getId(), 0, CatalogPageLayouts.room_bundle, gameClient.getHabbo().getHabboInfo().getPermissionGroup().getId(), parentId); if (page instanceof RoomBundleLayout roomBundleLayout) { try (Connection connection = Emulator.getDatabase().getDataSource().getConnection(); PreparedStatement statement = connection.prepareStatement("INSERT INTO catalog_items (page_id, item_ids, catalog_name, cost_credits, cost_points, points_type ) VALUES (?, ?, ?, ?, ?, ?)", Statement.RETURN_GENERATED_KEYS)) { @@ -67,7 +67,7 @@ public class RoomBundleCommand extends Command { } catch (SQLException e) { log.error("Caught SQL exception", e); } - roomBundleLayout.loadItems(gameClient.getHabbo().getHabboInfo().getCurrentRoom()); + roomBundleLayout.loadItems(gameClient.getHabbo().getRoomUnit().getRoom()); gameClient.getHabbo().whisper(getTextsValue("commands.succes.cmd_bundle").replace("%id%", roomBundleLayout.getId() + ""), RoomChatMessageBubbles.ALERT); } diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/RoomDanceCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/RoomDanceCommand.java index bf39fef0..90ef6b57 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/RoomDanceCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/RoomDanceCommand.java @@ -28,9 +28,9 @@ public class RoomDanceCommand extends Command { return true; } - gameClient.getHabbo().getHabboInfo().getCurrentRoom().getHabbos().forEach(habbo -> { + gameClient.getHabbo().getRoomUnit().getRoom().getRoomUnitManager().getRoomHabbos().forEach(habbo -> { habbo.getRoomUnit().setDanceType(DanceType.values()[danceId]); - habbo.getHabboInfo().getCurrentRoom().sendComposer(new DanceMessageComposer(habbo.getRoomUnit()).compose()); + habbo.getRoomUnit().getRoom().sendComposer(new DanceMessageComposer(habbo.getRoomUnit()).compose()); }); } else { gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_danceall.no_dance"), RoomChatMessageBubbles.ALERT); diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/RoomEffectCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/RoomEffectCommand.java index d164a3a0..ebecd5fc 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/RoomEffectCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/RoomEffectCommand.java @@ -21,8 +21,8 @@ public class RoomEffectCommand extends Command { int effectId = Integer.parseInt(params[1]); if (effectId >= 0) { - Room room = gameClient.getHabbo().getHabboInfo().getCurrentRoom(); - room.getHabbos().forEach(habbo -> room.giveEffect(habbo, effectId, -1)); + Room room = gameClient.getHabbo().getRoomUnit().getRoom(); + room.getRoomUnitManager().getRoomHabbos().forEach(habbo -> room.giveEffect(habbo, effectId, -1)); } else { gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_roomeffect.positive"), RoomChatMessageBubbles.ALERT); diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/RoomItemCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/RoomItemCommand.java index 0fd9b203..d58b7e89 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/RoomItemCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/RoomItemCommand.java @@ -29,9 +29,9 @@ public class RoomItemCommand extends Command { } } - for (Habbo habbo : gameClient.getHabbo().getHabboInfo().getCurrentRoom().getHabbos()) { + for (Habbo habbo : gameClient.getHabbo().getRoomUnit().getRoom().getRoomUnitManager().getRoomHabbos()) { habbo.getRoomUnit().setHandItem(itemId); - habbo.getHabboInfo().getCurrentRoom().sendComposer(new CarryObjectMessageComposer(habbo.getRoomUnit()).compose()); + habbo.getRoomUnit().getRoom().sendComposer(new CarryObjectMessageComposer(habbo.getRoomUnit()).compose()); } if (itemId > 0) { diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/RoomKickCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/RoomKickCommand.java index 6b0e8ae9..924d5c52 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/RoomKickCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/RoomKickCommand.java @@ -17,15 +17,15 @@ public class RoomKickCommand extends Command { @Override public boolean handle(GameClient gameClient, String[] params) { - final Room room = gameClient.getHabbo().getHabboInfo().getCurrentRoom(); + final Room room = gameClient.getHabbo().getRoomUnit().getRoom(); if (room != null) { if (params.length > 1) { String message = IntStream.range(1, params.length).mapToObj(i -> params[i] + " ").collect(Collectors.joining()); room.sendComposer(new HabboBroadcastMessageComposer(message + "\r\n-" + gameClient.getHabbo().getHabboInfo().getUsername()).compose()); } - for (Habbo habbo : room.getHabbos()) { - if (!(habbo.hasRight(Permission.ACC_UNKICKABLE) || habbo.hasRight(Permission.ACC_SUPPORTTOOL) || room.isOwner(habbo))) { + for (Habbo habbo : room.getRoomUnitManager().getRoomHabbos()) { + if (!(habbo.hasRight(Permission.ACC_UNKICKABLE) || habbo.hasRight(Permission.ACC_SUPPORTTOOL) || room.getRoomInfo().isRoomOwner(habbo))) { room.kickHabbo(habbo, true); } } diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/RoomMuteCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/RoomMuteCommand.java index 3e97d0e6..d07c0bdc 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/RoomMuteCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/RoomMuteCommand.java @@ -13,7 +13,7 @@ public class RoomMuteCommand extends Command { @Override public boolean handle(GameClient gameClient, String[] params) { - Room room = gameClient.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = gameClient.getHabbo().getRoomUnit().getRoom(); if (room != null) { room.setMuted(!room.isMuted()); diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/RoomSitCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/RoomSitCommand.java index 0f375fbe..0938a9eb 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/RoomSitCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/RoomSitCommand.java @@ -11,13 +11,13 @@ public class RoomSitCommand extends Command { @Override public boolean handle(GameClient gameClient, String[] params) { - gameClient.getHabbo().getHabboInfo().getCurrentRoom().getHabbos().forEach(habbo -> { + gameClient.getHabbo().getRoomUnit().getRoom().getRoomUnitManager().getRoomHabbos().forEach(habbo -> { if (habbo.getRoomUnit().isWalking()) { habbo.getRoomUnit().stopWalking(); } else if (habbo.getRoomUnit().hasStatus(RoomUnitStatus.SIT)) { return; } - gameClient.getHabbo().getHabboInfo().getCurrentRoom().makeSit(habbo); + gameClient.getHabbo().getRoomUnit().getRoom().makeSit(habbo); }); return true; diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/SayAllCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/SayAllCommand.java index 262a6ee0..ed798452 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/SayAllCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/SayAllCommand.java @@ -21,7 +21,7 @@ public class SayAllCommand extends Command { String message = IntStream.range(1, params.length).mapToObj(i -> params[i] + " ").collect(Collectors.joining()); - gameClient.getHabbo().getHabboInfo().getCurrentRoom().getHabbos().forEach(habbo -> habbo.talk(message)); + gameClient.getHabbo().getRoomUnit().getRoom().getRoomUnitManager().getRoomHabbos().forEach(habbo -> habbo.talk(message)); return true; } diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/SayCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/SayCommand.java index 3320b9d3..70dbe876 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/SayCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/SayCommand.java @@ -28,7 +28,7 @@ public class SayCommand extends Command { gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_say.user_not_found"), RoomChatMessageBubbles.ALERT); return true; } else { - if (target.getHabboInfo().getCurrentRoom() == null) { + if (target.getRoomUnit().getRoom() == null) { gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.error.cmd_say.hotel_view"), params[1]), RoomChatMessageBubbles.ALERT); return true; } @@ -39,7 +39,7 @@ public class SayCommand extends Command { message = IntStream.range(2, params.length).mapToObj(i -> params[i] + " ").collect(Collectors.joining()); } - target.getHabboInfo().getCurrentRoom().sendComposer(new ChatMessageComposer(new RoomChatMessage(message, target, RoomChatMessageBubbles.NORMAL)).compose()); + target.getRoomUnit().getRoom().sendComposer(new ChatMessageComposer(new RoomChatMessage(message, target, RoomChatMessageBubbles.NORMAL)).compose()); gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.succes.cmd_say"), params[1]).replace("%message%", message), RoomChatMessageBubbles.ALERT); return true; } diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/SetMaxCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/SetMaxCommand.java index c512e42d..2081a269 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/SetMaxCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/SetMaxCommand.java @@ -20,7 +20,7 @@ public class SetMaxCommand extends Command { } if (max > 0 && max < 9999) { - gameClient.getHabbo().getHabboInfo().getCurrentRoom().setUsersMax(max); + gameClient.getHabbo().getRoomUnit().getRoom().getRoomInfo().setMaxUsers(max); gameClient.getHabbo().whisper(getTextsValue("commands.success.cmd_setmax").replace("%value%", max + ""), RoomChatMessageBubbles.ALERT); } else { gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_setmax.invalid_number"), RoomChatMessageBubbles.ALERT); diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/SetPollCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/SetPollCommand.java index 3682b784..cc2e030f 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/SetPollCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/SetPollCommand.java @@ -17,7 +17,7 @@ public class SetPollCommand extends Command { return true; } - if (gameClient.getHabbo().getHabboInfo().getCurrentRoom() != null) { + if (gameClient.getHabbo().getRoomUnit().getRoom() != null) { int pollId = -1; try { pollId = Integer.parseInt(params[1]); @@ -25,7 +25,7 @@ public class SetPollCommand extends Command { if (pollId >= 0) { if (Emulator.getGameEnvironment().getPollManager().getPoll(pollId) != null) { - gameClient.getHabbo().getHabboInfo().getCurrentRoom().setPollId(pollId); + gameClient.getHabbo().getRoomUnit().getRoom().getRoomInfo().setPollId(pollId); gameClient.getHabbo().whisper(getTextsValue("commands.succes.cmd_set_poll"), RoomChatMessageBubbles.ALERT); } else { gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_set_poll.not_found"), RoomChatMessageBubbles.ALERT); diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/SetSpeedCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/SetSpeedCommand.java index 9525c6fc..b8bbffea 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/SetSpeedCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/SetSpeedCommand.java @@ -13,10 +13,10 @@ public class SetSpeedCommand extends Command { @Override public boolean handle(GameClient gameClient, String[] params) { - if (gameClient.getHabbo().getHabboInfo().getCurrentRoom() != null && gameClient.getHabbo().getHabboInfo().getCurrentRoom().hasRights(gameClient.getHabbo())) { - Room room = gameClient.getHabbo().getHabboInfo().getCurrentRoom(); + if (gameClient.getHabbo().getRoomUnit().getRoom() != null && gameClient.getHabbo().getRoomUnit().getRoom().hasRights(gameClient.getHabbo())) { + Room room = gameClient.getHabbo().getRoomUnit().getRoom(); - int oldSpeed = room.getRollerSpeed(); + int oldSpeed = room.getRoomInfo().getRollerSpeed(); int newSpeed; try { diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/ShoutAllCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/ShoutAllCommand.java index 128339ac..73befe08 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/ShoutAllCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/ShoutAllCommand.java @@ -22,7 +22,7 @@ public class ShoutAllCommand extends Command { String message = IntStream.range(1, params.length).mapToObj(i -> params[i] + " ").collect(Collectors.joining()); - for (Habbo habbo : gameClient.getHabbo().getHabboInfo().getCurrentRoom().getHabbos()) { + for (Habbo habbo : gameClient.getHabbo().getRoomUnit().getRoom().getRoomUnitManager().getRoomHabbos()) { habbo.shout(message); } diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/ShoutCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/ShoutCommand.java index a19529e2..32bb8a85 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/ShoutCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/ShoutCommand.java @@ -29,7 +29,7 @@ public class ShoutCommand extends Command { gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_shout.user_not_found"), RoomChatMessageBubbles.ALERT); return true; } else { - if (target.getHabboInfo().getCurrentRoom() == null) { + if (target.getRoomUnit().getRoom() == null) { gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.error.cmd_shout.hotel_view"), params[1]), RoomChatMessageBubbles.ALERT); return true; } @@ -40,7 +40,7 @@ public class ShoutCommand extends Command { message = IntStream.range(2, params.length).mapToObj(i -> params[i] + " ").collect(Collectors.joining()); } - target.getHabboInfo().getCurrentRoom().sendComposer(new ShoutMessageComposer(new RoomChatMessage(message, target, RoomChatMessageBubbles.NORMAL)).compose()); + target.getRoomUnit().getRoom().sendComposer(new ShoutMessageComposer(new RoomChatMessage(message, target, RoomChatMessageBubbles.NORMAL)).compose()); gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.succes.cmd_shout"), params[1]).replace("%message%", message), RoomChatMessageBubbles.ALERT); return true; } diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/SitCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/SitCommand.java index 0e8703f0..5994315a 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/SitCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/SitCommand.java @@ -11,7 +11,7 @@ public class SitCommand extends Command { @Override public boolean handle(GameClient gameClient, String[] params) { if (gameClient.getHabbo().getHabboInfo().getRiding() == null) //TODO Make this an event plugin which fires that can be cancelled - gameClient.getHabbo().getHabboInfo().getCurrentRoom().makeSit(gameClient.getHabbo()); + gameClient.getHabbo().getRoomUnit().getRoom().makeSit(gameClient.getHabbo()); return true; } } diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/SoftKickCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/SoftKickCommand.java index 8bd98051..e9cf4562 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/SoftKickCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/SoftKickCommand.java @@ -15,7 +15,7 @@ public class SoftKickCommand extends Command { @Override public boolean handle(GameClient gameClient, String[] params) { if (params.length != 2) return true; - final Habbo habbo = gameClient.getHabbo().getHabboInfo().getCurrentRoom().getHabbo(params[1]); + final Habbo habbo = gameClient.getHabbo().getRoomUnit().getRoom().getHabbo(params[1]); if (habbo == null) { gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.keys.cmd_softkick_error"), params[1]), RoomChatMessageBubbles.ALERT); @@ -27,9 +27,9 @@ public class SoftKickCommand extends Command { return true; } - final Room room = gameClient.getHabbo().getHabboInfo().getCurrentRoom(); + final Room room = gameClient.getHabbo().getRoomUnit().getRoom(); - if (room != null && (!(habbo.hasRight(Permission.ACC_UNKICKABLE) || habbo.hasRight(Permission.ACC_SUPPORTTOOL) || room.isOwner(habbo)))) { + if (room != null && (!(habbo.hasRight(Permission.ACC_UNKICKABLE) || habbo.hasRight(Permission.ACC_SUPPORTTOOL) || room.getRoomInfo().isRoomOwner(habbo)))) { room.kickHabbo(habbo, false); } return true; diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/StalkCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/StalkCommand.java index 928a1d55..e1b41502 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/StalkCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/StalkCommand.java @@ -13,7 +13,7 @@ public class StalkCommand extends Command { @Override public boolean handle(GameClient gameClient, String[] params) { - if (gameClient.getHabbo().getHabboInfo().getCurrentRoom() == null) + if (gameClient.getHabbo().getRoomUnit().getRoom() == null) return true; if (params.length >= 2) { @@ -24,7 +24,7 @@ public class StalkCommand extends Command { return true; } - if (habbo.getHabboInfo().getCurrentRoom() == null) { + if (habbo.getRoomUnit().getRoom() == null) { gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.error.cmd_stalk.not_room"), params[1]), RoomChatMessageBubbles.ALERT); return true; } @@ -34,12 +34,12 @@ public class StalkCommand extends Command { return true; } - if (gameClient.getHabbo().getHabboInfo().getCurrentRoom() == habbo.getHabboInfo().getCurrentRoom()) { + if (gameClient.getHabbo().getRoomUnit().getRoom() == habbo.getRoomUnit().getRoom()) { gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.generic.cmd_stalk.same_room"), params[1]), RoomChatMessageBubbles.ALERT); return true; } - gameClient.sendResponse(new GetGuestRoomResultComposer(habbo.getHabboInfo().getCurrentRoom(), gameClient.getHabbo(), true, false)); + gameClient.sendResponse(new GetGuestRoomResultComposer(habbo.getRoomUnit().getRoom(), gameClient.getHabbo(), true, false)); } else { gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_stalk.forgot_username"), RoomChatMessageBubbles.ALERT); } diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/StandCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/StandCommand.java index f14e36b6..7d47c562 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/StandCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/StandCommand.java @@ -11,7 +11,7 @@ public class StandCommand extends Command { @Override public boolean handle(GameClient gameClient, String[] params) { if (gameClient.getHabbo().getHabboInfo().getRiding() == null) - gameClient.getHabbo().getHabboInfo().getCurrentRoom().makeStand(gameClient.getHabbo()); + gameClient.getHabbo().getRoomUnit().getRoom().makeStand(gameClient.getHabbo()); return true; } } diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/SummonCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/SummonCommand.java index f889259b..83c9c42c 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/SummonCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/SummonCommand.java @@ -15,7 +15,7 @@ public class SummonCommand extends Command { @Override public boolean handle(GameClient gameClient, String[] params) { - if (gameClient.getHabbo().getHabboInfo().getCurrentRoom() == null) + if (gameClient.getHabbo().getRoomUnit().getRoom() == null) return true; if (params.length < 2) { @@ -35,23 +35,21 @@ public class SummonCommand extends Command { return true; } - if (gameClient.getHabbo().getHabboInfo().getCurrentRoom() == habbo.getHabboInfo().getCurrentRoom()) { + if (gameClient.getHabbo().getRoomUnit().getRoom() == habbo.getRoomUnit().getRoom()) { gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.generic.cmd_summon.same_room"), params[1]), RoomChatMessageBubbles.ALERT); return true; } - Room room = habbo.getHabboInfo().getCurrentRoom(); + Room room = habbo.getRoomUnit().getRoom(); if (room != null) { Emulator.getGameEnvironment().getRoomManager().logExit(habbo); - room.removeHabbo(habbo, true); - - habbo.getHabboInfo().setCurrentRoom(null); + room.getRoomUnitManager().removeHabbo(habbo, true); } - Emulator.getGameEnvironment().getRoomManager().enterRoom(habbo, gameClient.getHabbo().getHabboInfo().getCurrentRoom().getId(), "", true); + Emulator.getGameEnvironment().getRoomManager().enterRoom(habbo, gameClient.getHabbo().getRoomUnit().getRoom().getRoomInfo().getId(), "", true); - habbo.getClient().sendResponse(new RoomForwardMessageComposer(gameClient.getHabbo().getHabboInfo().getCurrentRoom().getId())); + habbo.getClient().sendResponse(new RoomForwardMessageComposer(gameClient.getHabbo().getRoomUnit().getRoom().getRoomInfo().getId())); gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.succes.cmd_summon.summoned"), params[1]), RoomChatMessageBubbles.ALERT); diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/SummonRankCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/SummonRankCommand.java index efc1ef4b..07e38c0b 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/SummonRankCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/SummonRankCommand.java @@ -30,21 +30,19 @@ public class SummonRankCommand extends Command { if (habbo == gameClient.getHabbo()) continue; - if (habbo.getHabboInfo().getCurrentRoom() == gameClient.getHabbo().getHabboInfo().getCurrentRoom()) + if (habbo.getRoomUnit().getRoom() == gameClient.getHabbo().getRoomUnit().getRoom()) continue; - Room room = habbo.getHabboInfo().getCurrentRoom(); + Room room = habbo.getRoomUnit().getRoom(); if (room != null) { Emulator.getGameEnvironment().getRoomManager().logExit(habbo); - room.removeHabbo(habbo, true); - - habbo.getHabboInfo().setCurrentRoom(null); + room.getRoomUnitManager().removeHabbo(habbo, true); } - Emulator.getGameEnvironment().getRoomManager().enterRoom(habbo, gameClient.getHabbo().getHabboInfo().getCurrentRoom().getId(), "", true); + Emulator.getGameEnvironment().getRoomManager().enterRoom(habbo, gameClient.getHabbo().getRoomUnit().getRoom().getRoomInfo().getId(), "", true); - habbo.getClient().sendResponse(new RoomForwardMessageComposer(gameClient.getHabbo().getHabboInfo().getCurrentRoom().getId())); + habbo.getClient().sendResponse(new RoomForwardMessageComposer(gameClient.getHabbo().getRoomUnit().getRoom().getRoomInfo().getId())); } } diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/SuperPullCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/SuperPullCommand.java index a783adea..400ef81c 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/SuperPullCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/SuperPullCommand.java @@ -20,7 +20,7 @@ public class SuperPullCommand extends Command { return true; } - Habbo habbo = gameClient.getHabbo().getHabboInfo().getCurrentRoom().getHabbo(params[1]); + Habbo habbo = gameClient.getHabbo().getRoomUnit().getRoom().getHabbo(params[1]); if (habbo == null) { gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.error.cmd_pull.not_found"), params[1]), RoomChatMessageBubbles.ALERT); @@ -29,15 +29,15 @@ public class SuperPullCommand extends Command { gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_pull.pull_self"), RoomChatMessageBubbles.ALERT); return true; } else { - RoomTile tile = gameClient.getHabbo().getHabboInfo().getCurrentRoom().getLayout().getTileInFront(gameClient.getHabbo().getRoomUnit().getCurrentLocation(), gameClient.getHabbo().getRoomUnit().getBodyRotation().getValue()); + RoomTile tile = gameClient.getHabbo().getRoomUnit().getRoom().getLayout().getTileInFront(gameClient.getHabbo().getRoomUnit().getCurrentPosition(), gameClient.getHabbo().getRoomUnit().getBodyRotation().getValue()); if (tile != null && tile.isWalkable()) { - if (tile == gameClient.getHabbo().getHabboInfo().getCurrentRoom().getLayout().getDoorTile()) { + if (tile == gameClient.getHabbo().getRoomUnit().getRoom().getLayout().getDoorTile()) { gameClient.getHabbo().whisper(replaceUsername(getTextsValue("commands.error.cmd_pull.invalid"), params[1]), RoomChatMessageBubbles.ALERT); return true; } habbo.getRoomUnit().setGoalLocation(tile); - gameClient.getHabbo().getHabboInfo().getCurrentRoom().sendComposer(new ChatMessageComposer(new RoomChatMessage(replaceUser(getTextsValue("commands.succes.cmd_pull.pull"), params[1]).replace("%gender_name%", (gameClient.getHabbo().getHabboInfo().getGender().equals(HabboGender.M) ? getTextsValue("gender.him") : getTextsValue("gender.her"))), gameClient.getHabbo(), gameClient.getHabbo(), RoomChatMessageBubbles.NORMAL)).compose()); + gameClient.getHabbo().getRoomUnit().getRoom().sendComposer(new ChatMessageComposer(new RoomChatMessage(replaceUser(getTextsValue("commands.succes.cmd_pull.pull"), params[1]).replace("%gender_name%", (gameClient.getHabbo().getHabboInfo().getGender().equals(HabboGender.M) ? getTextsValue("gender.him") : getTextsValue("gender.her"))), gameClient.getHabbo(), gameClient.getHabbo(), RoomChatMessageBubbles.NORMAL)).compose()); } } return true; diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/TeleportCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/TeleportCommand.java index b39d024a..d1f67b33 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/TeleportCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/TeleportCommand.java @@ -16,12 +16,12 @@ public class TeleportCommand extends Command { return true; } - if (gameClient.getHabbo().getRoomUnit().isCmdTeleport()) { - gameClient.getHabbo().getRoomUnit().setCmdTeleport(false); + if (gameClient.getHabbo().getRoomUnit().isCmdTeleportEnabled()) { + gameClient.getHabbo().getRoomUnit().setCmdTeleportEnabled(false); gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_teleport.disabled"), RoomChatMessageBubbles.ALERT); return true; } else { - gameClient.getHabbo().getRoomUnit().setCmdTeleport(true); + gameClient.getHabbo().getRoomUnit().setCmdTeleportEnabled(true); gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_teleport.enabled"), RoomChatMessageBubbles.ALERT); return true; } diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/TransformCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/TransformCommand.java index f59c6498..5f6f0b8d 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/TransformCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/TransformCommand.java @@ -5,8 +5,8 @@ import com.eu.habbo.core.RoomUserPetComposer; import com.eu.habbo.habbohotel.commands.Command; import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.pets.PetData; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.rooms.RoomUnitType; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnitType; import com.eu.habbo.messages.outgoing.generic.alerts.MOTDNotificationComposer; import com.eu.habbo.messages.outgoing.rooms.users.UserRemoveMessageComposer; @@ -57,8 +57,8 @@ public class TransformCommand extends Command { gameClient.getHabbo().getHabboStats().getCache().put("pet_type", petData); gameClient.getHabbo().getHabboStats().getCache().put("pet_race", race); gameClient.getHabbo().getHabboStats().getCache().put("pet_color", color); - gameClient.getHabbo().getHabboInfo().getCurrentRoom().sendComposer(new UserRemoveMessageComposer(gameClient.getHabbo().getRoomUnit()).compose()); - gameClient.getHabbo().getHabboInfo().getCurrentRoom().sendComposer(new RoomUserPetComposer(petData.getType(), race, color, gameClient.getHabbo()).compose()); + gameClient.getHabbo().getRoomUnit().getRoom().sendComposer(new UserRemoveMessageComposer(gameClient.getHabbo().getRoomUnit()).compose()); + gameClient.getHabbo().getRoomUnit().getRoom().sendComposer(new RoomUserPetComposer(petData.getType(), race, color, gameClient.getHabbo()).compose()); } else { //Pet Not Found return true; diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/UnloadRoomCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/UnloadRoomCommand.java index 99c157f5..31245b31 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/UnloadRoomCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/UnloadRoomCommand.java @@ -13,9 +13,9 @@ public class UnloadRoomCommand extends Command { @Override public boolean handle(GameClient gameClient, String[] params) { - Room room = gameClient.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = gameClient.getHabbo().getRoomUnit().getRoom(); - if (room != null && (room.isOwner(gameClient.getHabbo()) || (room.hasGuild() && room.getGuildRightLevel(gameClient.getHabbo()).equals(RoomRightLevels.GUILD_ADMIN))) || gameClient.getHabbo().hasRight(Permission.ACC_ANYROOMOWNER)) { + if (room != null && (room.getRoomInfo().isRoomOwner(gameClient.getHabbo()) || (room.getRoomInfo().hasGuild() && room.getGuildRightLevel(gameClient.getHabbo()).equals(RoomRightLevels.GUILD_ADMIN))) || gameClient.getHabbo().hasRight(Permission.ACC_ANYROOMOWNER)) { room.dispose(); return true; } diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/UnmuteCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/UnmuteCommand.java index 29b65f1d..cb0c4e42 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/UnmuteCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/UnmuteCommand.java @@ -25,13 +25,13 @@ public class UnmuteCommand extends Command { return true; } - if (!habbo.getHabboStats().allowTalk() || (habbo.getHabboInfo().getCurrentRoom() != null && habbo.getHabboInfo().getCurrentRoom().isMuted(habbo))) { + if (!habbo.getHabboStats().allowTalk() || (habbo.getRoomUnit().getRoom() != null && habbo.getRoomUnit().getRoom().isMuted(habbo))) { if (!habbo.getHabboStats().allowTalk()) { habbo.unMute(); } - if (habbo.getHabboInfo().getCurrentRoom() != null && habbo.getHabboInfo().getCurrentRoom().isMuted(habbo)) { - habbo.getHabboInfo().getCurrentRoom().muteHabbo(habbo, 1); + if (habbo.getRoomUnit().getRoom() != null && habbo.getRoomUnit().getRoom().isMuted(habbo)) { + habbo.getRoomUnit().getRoom().muteHabbo(habbo, 1); } gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.succes.cmd_unmute"), params[1]), RoomChatMessageBubbles.ALERT); diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/UpdateItemsCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/UpdateItemsCommand.java index ccfeae37..b2e1be1c 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/UpdateItemsCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/UpdateItemsCommand.java @@ -19,7 +19,7 @@ public class UpdateItemsCommand extends Command { synchronized (Emulator.getGameEnvironment().getRoomManager().getActiveRooms()) { Emulator.getGameEnvironment().getRoomManager().getActiveRooms().stream() - .filter(room -> room.isLoaded() && room.getUserCount() > 0 && room.getLayout() != null) + .filter(room -> room.isLoaded() && room.getRoomUnitManager().getRoomHabbosCount() > 0 && room.getLayout() != null) .forEach(room -> room.sendComposer(new HeightMapComposer(room).compose())); } diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/UserInfoCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/UserInfoCommand.java index 39cb7f8f..6b89e602 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/UserInfoCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/UserInfoCommand.java @@ -71,7 +71,7 @@ public class UserInfoCommand extends Command { message.append(getTextsValue("seasonal.name." + iterator.key())).append(": ").append(iterator.value()).append("\r"); } - message.append("\r").append(onlineHabbo != null ? "" + getTextsValue("command.cmd_userinfo.current_activity") + "\r" : "").append(onlineHabbo != null ? getTextsValue("command.cmd_userinfo.room") + ": " + (onlineHabbo.getHabboInfo().getCurrentRoom() != null ? onlineHabbo.getHabboInfo().getCurrentRoom().getName() + "(" + onlineHabbo.getHabboInfo().getCurrentRoom().getId() + ")\r" : "-") : "").append(onlineHabbo != null ? getTextsValue("command.cmd_userinfo.respect_left") + ": " + onlineHabbo.getHabboStats().getRespectPointsToGive() + "\r" : "").append(onlineHabbo != null ? getTextsValue("command.cmd_userinfo.pet_respect_left") + ": " + onlineHabbo.getHabboStats().getPetRespectPointsToGive() + "\r" : "").append(onlineHabbo != null ? getTextsValue("command.cmd_userinfo.allow_trade") + ": " + ((onlineHabbo.getHabboStats().allowTrade()) ? getTextsValue("generic.yes") : getTextsValue("generic.no")) + "\r" : "").append(onlineHabbo != null ? getTextsValue("command.cmd_userinfo.allow_follow") + ": " + ((onlineHabbo.getHabboStats().isBlockFollowing()) ? getTextsValue("generic.no") : getTextsValue("generic.yes")) + "\r" : "").append(onlineHabbo != null ? getTextsValue("command.cmd_userinfo.allow_friend_request") + ": " + ((onlineHabbo.getHabboStats().isBlockFriendRequests()) ? getTextsValue("generic.no") : getTextsValue("generic.yes")) + "\r" : ""); + message.append("\r").append(onlineHabbo != null ? "" + getTextsValue("command.cmd_userinfo.current_activity") + "\r" : "").append(onlineHabbo != null ? getTextsValue("command.cmd_userinfo.room") + ": " + (onlineHabbo.getRoomUnit().getRoom() != null ? onlineHabbo.getRoomUnit().getRoom().getRoomInfo().getName() + "(" + onlineHabbo.getRoomUnit().getRoom().getRoomInfo().getId() + ")\r" : "-") : "").append(onlineHabbo != null ? getTextsValue("command.cmd_userinfo.respect_left") + ": " + onlineHabbo.getHabboStats().getRespectPointsToGive() + "\r" : "").append(onlineHabbo != null ? getTextsValue("command.cmd_userinfo.pet_respect_left") + ": " + onlineHabbo.getHabboStats().getPetRespectPointsToGive() + "\r" : "").append(onlineHabbo != null ? getTextsValue("command.cmd_userinfo.allow_trade") + ": " + ((onlineHabbo.getHabboStats().allowTrade()) ? getTextsValue("generic.yes") : getTextsValue("generic.no")) + "\r" : "").append(onlineHabbo != null ? getTextsValue("command.cmd_userinfo.allow_follow") + ": " + ((onlineHabbo.getHabboStats().isBlockFollowing()) ? getTextsValue("generic.no") : getTextsValue("generic.yes")) + "\r" : "").append(onlineHabbo != null ? getTextsValue("command.cmd_userinfo.allow_friend_request") + ": " + ((onlineHabbo.getHabboStats().isBlockFriendRequests()) ? getTextsValue("generic.no") : getTextsValue("generic.yes")) + "\r" : ""); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); List> nameChanges = Emulator.getGameEnvironment().getHabboManager().getNameChanges(habbo.getId(), 3); diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/WordQuizCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/WordQuizCommand.java index 8c5b8508..f3954e0b 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/WordQuizCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/WordQuizCommand.java @@ -13,7 +13,7 @@ public class WordQuizCommand extends Command { @Override public boolean handle(GameClient gameClient, String[] params) { - if (!gameClient.getHabbo().getHabboInfo().getCurrentRoom().hasActiveWordQuiz()) { + if (!gameClient.getHabbo().getRoomUnit().getRoom().hasActiveWordQuiz()) { if(params.length == 1) { gameClient.getHabbo().whisper(getTextsValue("commands.description.cmd_word_quiz"), RoomChatMessageBubbles.ALERT); return true; @@ -31,7 +31,7 @@ public class WordQuizCommand extends Command { question.append(" ").append(params[i]); } - gameClient.getHabbo().getHabboInfo().getCurrentRoom().startWordQuiz(question.toString(), duration * 1000); + gameClient.getHabbo().getRoomUnit().getRoom().startWordQuiz(question.toString(), duration * 1000); } return true; } diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/badge/RoomBadgeCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/badge/RoomBadgeCommand.java index 45b38c4b..ee2ee8c8 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/badge/RoomBadgeCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/badge/RoomBadgeCommand.java @@ -20,7 +20,7 @@ public class RoomBadgeCommand extends BaseBadgeCommand { if (!badge.isEmpty()) { ServerMessage message = createServerMessage(badge); - gameClient.getHabbo().getRoomUnit().getRoom().getHabbos() + gameClient.getHabbo().getRoomUnit().getRoom().getRoomUnitManager().getRoomHabbos() .forEach(habbo -> sendBadgeToClient(badge, message, habbo)); } return true; diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/badge/TakeBadgeCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/badge/TakeBadgeCommand.java index 9ed7ffe4..923ca3e0 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/badge/TakeBadgeCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/badge/TakeBadgeCommand.java @@ -41,8 +41,8 @@ public class TakeBadgeCommand extends BaseBadgeCommand { } habbo.getClient().sendResponse(new BadgesComposer(habbo)); - if (habbo.getHabboInfo().getCurrentRoom() != null) { - habbo.getHabboInfo().getCurrentRoom().sendComposer(new UserBadgesComposer(habbo.getInventory().getBadgesComponent().getWearingBadges(), habbo.getHabboInfo().getId()).compose()); + if (habbo.getRoomUnit().getRoom() != null) { + habbo.getRoomUnit().getRoom().sendComposer(new UserBadgesComposer(habbo.getInventory().getBadgesComponent().getWearingBadges(), habbo.getHabboInfo().getId()).compose()); } } diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/credits/CreditsCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/credits/CreditsCommand.java index def03e2a..8b362593 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/credits/CreditsCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/credits/CreditsCommand.java @@ -32,7 +32,7 @@ public class CreditsCommand extends BaseCreditsCommand { if (habbo != null) { if (credits != 0) { habbo.giveCredits(credits); - if (habbo.getHabboInfo().getCurrentRoom() != null) + if (habbo.getRoomUnit().getRoom() != null) habbo.whisper(replaceAmount(getTextsValue("commands.generic.cmd_credits.received"), params[2]), RoomChatMessageBubbles.ALERT); else habbo.alert(replaceAmount(getTextsValue("commands.generic.cmd_credits.received"), params[2])); diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/credits/MassCreditsCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/credits/MassCreditsCommand.java index 74f1ed68..7a68c283 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/credits/MassCreditsCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/credits/MassCreditsCommand.java @@ -32,7 +32,7 @@ public class MassCreditsCommand extends BaseCreditsCommand { habbo.giveCredits(amount); habbo.getClient().sendResponse(new CreditBalanceComposer(habbo)); - if (habbo.getHabboInfo().getCurrentRoom() != null) + if (habbo.getRoomUnit().getRoom() != null) habbo.whisper(replaceAmount(getTextsValue("commands.generic.cmd_credits.received"), amount + ""), RoomChatMessageBubbles.ALERT); } } diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/credits/RoomCreditsCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/credits/RoomCreditsCommand.java index cb895fbb..d3193eb5 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/credits/RoomCreditsCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/credits/RoomCreditsCommand.java @@ -22,7 +22,7 @@ public class RoomCreditsCommand extends BaseCreditsCommand { if (amount != 0) { final String message = replaceAmount(getTextsValue("commands.generic.cmd_credits.received"), amount + ""); - gameClient.getHabbo().getHabboInfo().getCurrentRoom().getHabbos().forEach(habbo -> { + gameClient.getHabbo().getRoomUnit().getRoom().getRoomUnitManager().getRoomHabbos().forEach(habbo -> { habbo.giveCredits(amount); habbo.whisper(message, RoomChatMessageBubbles.ALERT); }); diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/gift/BaseGiftCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/gift/BaseGiftCommand.java index efd07557..da9a9040 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/gift/BaseGiftCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/gift/BaseGiftCommand.java @@ -6,7 +6,7 @@ import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.outgoing.inventory.FurniListInvalidateComposer; import java.util.stream.Collectors; @@ -49,7 +49,7 @@ public abstract class BaseGiftCommand extends Command { } protected void createGift(String finalMessage, Habbo habbo, String[] params) { - HabboItem item = Emulator.getGameEnvironment().getItemManager().createItem(0, getBaseItem(params), 0, 0, ""); + RoomItem item = Emulator.getGameEnvironment().getItemManager().createItem(0, getBaseItem(params), 0, 0, ""); Item giftItem = Emulator.getGameEnvironment().getItemManager().getItem((Integer) Emulator.getGameEnvironment().getCatalogManager().giftFurnis.values().toArray()[Emulator.getRandom().nextInt(Emulator.getGameEnvironment().getCatalogManager().giftFurnis.size())]); diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/gift/GiftCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/gift/GiftCommand.java index c360e3d6..9ea0bad4 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/gift/GiftCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/gift/GiftCommand.java @@ -6,7 +6,7 @@ import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles; import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.habbohotel.users.HabboInfo; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.habbohotel.users.HabboManager; import com.eu.habbo.messages.outgoing.generic.alerts.BubbleAlertKeys; import com.eu.habbo.messages.outgoing.generic.alerts.NotificationDialogMessageComposer; @@ -55,7 +55,7 @@ public class GiftCommand extends BaseGiftCommand { String message = params.length > 3 ? IntStream.range(3, params.length).mapToObj(i -> params[i] + " ").collect(Collectors.joining()) : ""; - HabboItem item = Emulator.getGameEnvironment().getItemManager().createItem(0, baseItem, 0, 0, ""); + RoomItem item = Emulator.getGameEnvironment().getItemManager().createItem(0, baseItem, 0, 0, ""); Item giftItem = Emulator.getGameEnvironment().getItemManager().getItem((Integer) Emulator.getGameEnvironment().getCatalogManager().giftFurnis.values().toArray()[Emulator.getRandom().nextInt(Emulator.getGameEnvironment().getCatalogManager().giftFurnis.size())]); String extraData = "1\t" + item.getId() + "\t0\t0\t0\t" + message + "\t0\t0"; diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/gift/RoomGiftCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/gift/RoomGiftCommand.java index f36f9886..a590effb 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/gift/RoomGiftCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/gift/RoomGiftCommand.java @@ -17,7 +17,7 @@ public class RoomGiftCommand extends BaseGiftCommand { final String finalMessage = getFinalMessage(params); - gameClient.getHabbo().getHabboInfo().getCurrentRoom().getHabbos().forEach(habbo -> { + gameClient.getHabbo().getRoomUnit().getRoom().getRoomUnitManager().getRoomHabbos().forEach(habbo -> { createGift(finalMessage, habbo, params); habbo.getClient().sendResponse(new WiredRewardResultMessageComposer(WiredRewardResultMessageComposer.REWARD_RECEIVED_ITEM)); } diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/pixels/MassPixelsCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/pixels/MassPixelsCommand.java index 447f8cea..fd9eb5f2 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/pixels/MassPixelsCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/pixels/MassPixelsCommand.java @@ -30,7 +30,7 @@ public class MassPixelsCommand extends BasePixelsCommand { habbo.givePixels(amount); - if (habbo.getHabboInfo().getCurrentRoom() != null) + if (habbo.getRoomUnit().getRoom() != null) habbo.whisper(replaceAmount(getTextsValue("commands.generic.cmd_duckets.received"), amount + ""), RoomChatMessageBubbles.ALERT); } } diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/pixels/PixelCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/pixels/PixelCommand.java index ec4c0a28..2cbc0f4f 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/pixels/PixelCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/pixels/PixelCommand.java @@ -21,7 +21,7 @@ public class PixelCommand extends BasePixelsCommand { try { if (Integer.parseInt(params[2]) != 0) { habbo.givePixels(Integer.parseInt(params[2])); - if (habbo.getHabboInfo().getCurrentRoom() != null) + if (habbo.getRoomUnit().getRoom() != null) habbo.whisper(replaceAmount(getTextsValue("commands.generic.cmd_duckets.received"), params[2]), RoomChatMessageBubbles.ALERT); else habbo.alert(replaceAmount(getTextsValue("commands.generic.cmd_duckets.received"), params[2])); diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/pixels/RoomPixelsCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/pixels/RoomPixelsCommand.java index ef838f7f..518e3bb4 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/pixels/RoomPixelsCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/pixels/RoomPixelsCommand.java @@ -22,7 +22,7 @@ public class RoomPixelsCommand extends BasePixelsCommand { if (amount != 0) { final String message = replaceAmount(getTextsValue("commands.generic.cmd_duckets.received"), amount + ""); - gameClient.getHabbo().getHabboInfo().getCurrentRoom().getHabbos().forEach(habbo -> { + gameClient.getHabbo().getRoomUnit().getRoom().getRoomUnitManager().getRoomHabbos().forEach(habbo -> { habbo.givePixels(amount); habbo.whisper(message, RoomChatMessageBubbles.ALERT); }); diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/points/MassPointsCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/points/MassPointsCommand.java index c8890cdc..71ccb991 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/points/MassPointsCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/points/MassPointsCommand.java @@ -58,7 +58,7 @@ public class MassPointsCommand extends BasePointsCommand { for (Habbo habbo : Emulator.getGameEnvironment().getHabboManager().getOnlineHabbos().values()) { habbo.givePoints(type, amount); - if (habbo.getHabboInfo().getCurrentRoom() != null) + if (habbo.getRoomUnit().getRoom() != null) habbo.whisper(message, RoomChatMessageBubbles.ALERT); else habbo.alert(message); diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/points/PointsCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/points/PointsCommand.java index 23b3451b..dce20efb 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/points/PointsCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/points/PointsCommand.java @@ -48,7 +48,7 @@ public class PointsCommand extends BasePointsCommand { if (amount != 0) { habbo.givePoints(type, amount); - if (habbo.getHabboInfo().getCurrentRoom() != null) + if (habbo.getRoomUnit().getRoom() != null) habbo.whisper(replaceAmountAndType(getTextsValue("commands.generic.cmd_points.received"), amount + "", getTextsValue("seasonal.name." + type)), RoomChatMessageBubbles.ALERT); else habbo.alert(replaceAmountAndType(getTextsValue("commands.generic.cmd_points.received"), amount + "", getTextsValue("seasonal.name." + type))); diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/list/points/RoomPointsCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/list/points/RoomPointsCommand.java index 40f82a89..e431be43 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/list/points/RoomPointsCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/list/points/RoomPointsCommand.java @@ -55,7 +55,7 @@ public class RoomPointsCommand extends BasePointsCommand { if (amount != 0) { final String message = replaceAmountAndType(getTextsValue("commands.generic.cmd_points.received"), amount + "", getTextsValue("seasonal.name." + type)); - for (Habbo habbo : gameClient.getHabbo().getHabboInfo().getCurrentRoom().getHabbos()) { + for (Habbo habbo : gameClient.getHabbo().getRoomUnit().getRoom().getRoomUnitManager().getRoomHabbos()) { habbo.givePoints(type, amount); habbo.whisper(message, RoomChatMessageBubbles.ALERT); } diff --git a/src/main/java/com/eu/habbo/habbohotel/games/Game.java b/src/main/java/com/eu/habbo/habbohotel/games/Game.java index aa50cea7..e9acec7b 100644 --- a/src/main/java/com/eu/habbo/habbohotel/games/Game.java +++ b/src/main/java/com/eu/habbo/habbohotel/games/Game.java @@ -8,8 +8,8 @@ import com.eu.habbo.habbohotel.items.interactions.wired.extra.WiredBlob; import com.eu.habbo.habbohotel.items.interactions.wired.triggers.WiredTriggerTeamLoses; import com.eu.habbo.habbohotel.items.interactions.wired.triggers.WiredTriggerTeamWins; import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; import com.eu.habbo.habbohotel.wired.WiredHandler; import com.eu.habbo.habbohotel.wired.highscores.WiredHighscoreDataEntry; import com.eu.habbo.messages.outgoing.guides.YouArePlayingGameMessageComposer; @@ -120,7 +120,7 @@ public abstract class Game implements Runnable { Emulator.getPluginManager().fireEvent(gameStartedEvent); } - for (HabboItem item : this.room.getRoomSpecialTypes().getItemsOfType(WiredBlob.class)) { + for (RoomItem item : this.room.getRoomSpecialTypes().getItemsOfType(WiredBlob.class)) { ((WiredBlob) item).onGameStart(this.room); } @@ -136,7 +136,7 @@ public abstract class Game implements Runnable { int totalPointsGained = this.teams.values().stream().mapToInt(GameTeam::getTotalScore).sum(); - Habbo roomOwner = Emulator.getGameEnvironment().getHabboManager().getHabbo(this.room.getOwnerId()); + Habbo roomOwner = Emulator.getGameEnvironment().getHabboManager().getHabbo(this.room.getRoomInfo().getOwnerInfo().getId()); if (roomOwner != null) { AchievementManager.progressAchievement(roomOwner, Emulator.getGameEnvironment().getAchievementManager().getAchievement("GameAuthorExperience"), totalPointsGained); } @@ -161,7 +161,7 @@ public abstract class Game implements Runnable { } if (winningTeam.getMembers().size() > 0) { - for (HabboItem item : this.room.getRoomSpecialTypes().getItemsOfType(InteractionWiredHighscore.class)) { + for (RoomItem item : this.room.getRoomSpecialTypes().getItemsOfType(InteractionWiredHighscore.class)) { Emulator.getGameEnvironment().getItemManager().getHighscoreManager().addHighscoreData(new WiredHighscoreDataEntry(item.getId(), winningTeam.getMembers().stream().map(m -> m.getHabbo().getHabboInfo().getId()).collect(Collectors.toList()), winningTeam.getTotalScore(), true, Emulator.getIntUnixTimestamp())); } } @@ -174,19 +174,19 @@ public abstract class Game implements Runnable { } if (team.getMembers().size() > 0 && team.getTotalScore() > 0) { - for (HabboItem item : this.room.getRoomSpecialTypes().getItemsOfType(InteractionWiredHighscore.class)) { + for (RoomItem item : this.room.getRoomSpecialTypes().getItemsOfType(InteractionWiredHighscore.class)) { Emulator.getGameEnvironment().getItemManager().getHighscoreManager().addHighscoreData(new WiredHighscoreDataEntry(item.getId(), team.getMembers().stream().map(m -> m.getHabbo().getHabboInfo().getId()).collect(Collectors.toList()), team.getTotalScore(), false, Emulator.getIntUnixTimestamp())); } } } } - for (HabboItem item : this.room.getRoomSpecialTypes().getItemsOfType(InteractionWiredHighscore.class)) { + for (RoomItem item : this.room.getRoomSpecialTypes().getItemsOfType(InteractionWiredHighscore.class)) { ((InteractionWiredHighscore) item).reloadData(); this.room.updateItem(item); } - for (HabboItem item : this.room.getRoomSpecialTypes().getItemsOfType(WiredBlob.class)) { + for (RoomItem item : this.room.getRoomSpecialTypes().getItemsOfType(WiredBlob.class)) { ((WiredBlob) item).onGameEnd(this.room); } } @@ -209,7 +209,7 @@ public abstract class Game implements Runnable { this.state = GameState.IDLE; boolean gamesActive = false; - for (HabboItem timer : room.getFloorItems()) { + for (RoomItem timer : room.getFloorItems()) { if (timer instanceof InteractionGameTimer) { if (((InteractionGameTimer) timer).isRunning()) gamesActive = true; diff --git a/src/main/java/com/eu/habbo/habbohotel/games/GamePlayer.java b/src/main/java/com/eu/habbo/habbohotel/games/GamePlayer.java index b3653c11..781bd3ac 100644 --- a/src/main/java/com/eu/habbo/habbohotel/games/GamePlayer.java +++ b/src/main/java/com/eu/habbo/habbohotel/games/GamePlayer.java @@ -24,7 +24,7 @@ public class GamePlayer { } public synchronized void addScore(int amount, boolean isWired) { - if (habbo.getHabboInfo().getGamePlayer() != null && this.habbo.getHabboInfo().getCurrentGame() != null && this.habbo.getHabboInfo().getCurrentRoom().getGame(this.habbo.getHabboInfo().getCurrentGame()).getTeamForHabbo(this.habbo) != null) { + if (habbo.getHabboInfo().getGamePlayer() != null && this.habbo.getHabboInfo().getCurrentGame() != null && this.habbo.getRoomUnit().getRoom().getGame(this.habbo.getHabboInfo().getCurrentGame()).getTeamForHabbo(this.habbo) != null) { this.score += amount; if (this.score < 0) this.score = 0; @@ -33,7 +33,7 @@ public class GamePlayer { this.wiredScore += amount; } - WiredHandler.handle(WiredTriggerType.SCORE_ACHIEVED, this.habbo.getRoomUnit(), this.habbo.getHabboInfo().getCurrentRoom(), new Object[]{this.habbo.getHabboInfo().getCurrentRoom().getGame(this.habbo.getHabboInfo().getCurrentGame()).getTeamForHabbo(this.habbo).getTotalScore(), amount}); + WiredHandler.handle(WiredTriggerType.SCORE_ACHIEVED, this.habbo.getRoomUnit(), this.habbo.getRoomUnit().getRoom(), new Object[]{this.habbo.getRoomUnit().getRoom().getGame(this.habbo.getHabboInfo().getCurrentGame()).getTeamForHabbo(this.habbo).getTotalScore(), amount}); } } diff --git a/src/main/java/com/eu/habbo/habbohotel/games/battlebanzai/BattleBanzaiGame.java b/src/main/java/com/eu/habbo/habbohotel/games/battlebanzai/BattleBanzaiGame.java index 33f83e3b..27b98156 100644 --- a/src/main/java/com/eu/habbo/habbohotel/games/battlebanzai/BattleBanzaiGame.java +++ b/src/main/java/com/eu/habbo/habbohotel/games/battlebanzai/BattleBanzaiGame.java @@ -12,7 +12,7 @@ import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; import com.eu.habbo.habbohotel.rooms.RoomUserAction; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.outgoing.rooms.users.ExpressionMessageComposer; import com.eu.habbo.threading.runnables.BattleBanzaiTilesFlicker; import gnu.trove.map.hash.THashMap; @@ -35,8 +35,8 @@ public class BattleBanzaiGame extends Game { public static final int POINTS_LOCK_TILE = Emulator.getConfig().getInt("hotel.banzai.points.tile.lock", 1); private static final ThreadPoolExecutor executor = (ThreadPoolExecutor) Executors.newFixedThreadPool(Emulator.getConfig().getInt("hotel.banzai.fill.threads", 2)); - private final THashMap> lockedTiles; - private final THashMap gameTiles; + private final THashMap> lockedTiles; + private final THashMap gameTiles; private int tileCount; private int countDown; private int countDown2; @@ -69,7 +69,7 @@ public class BattleBanzaiGame extends Game { } } - for (HabboItem item : this.room.getRoomSpecialTypes().getItemsOfType(InteractionBattleBanzaiSphere.class)) { + for (RoomItem item : this.room.getRoomSpecialTypes().getItemsOfType(InteractionBattleBanzaiSphere.class)) { item.setExtradata("1"); this.room.updateItemState(item); } @@ -104,7 +104,7 @@ public class BattleBanzaiGame extends Game { this.countDown--; if (this.countDown == 0) { - for (HabboItem item : this.room.getRoomSpecialTypes().getItemsOfType(InteractionBattleBanzaiSphere.class)) { + for (RoomItem item : this.room.getRoomSpecialTypes().getItemsOfType(InteractionBattleBanzaiSphere.class)) { item.setExtradata("1"); this.room.updateItemState(item); if(this.countDown2 > 0) { @@ -130,7 +130,7 @@ public class BattleBanzaiGame extends Game { int total = 0; synchronized (this.lockedTiles) { - for (Map.Entry> set : this.lockedTiles.entrySet()) { + for (Map.Entry> set : this.lockedTiles.entrySet()) { total += set.getValue().size(); } } @@ -146,7 +146,7 @@ public class BattleBanzaiGame extends Game { } if (highestScore != null) { - for (HabboItem item : this.room.getRoomSpecialTypes().getItemsOfType(InteractionBattleBanzaiSphere.class)) { + for (RoomItem item : this.room.getRoomSpecialTypes().getItemsOfType(InteractionBattleBanzaiSphere.class)) { item.setExtradata((highestScore.teamColor.type + 2) + ""); this.room.updateItemState(item); } @@ -194,7 +194,7 @@ public class BattleBanzaiGame extends Game { } } - for (HabboItem item : this.room.getRoomSpecialTypes().getItemsOfType(InteractionBattleBanzaiSphere.class)) { + for (RoomItem item : this.room.getRoomSpecialTypes().getItemsOfType(InteractionBattleBanzaiSphere.class)) { item.setExtradata((6 + winningTeam.teamColor.type) + ""); this.room.updateItemState(item); } @@ -212,7 +212,7 @@ public class BattleBanzaiGame extends Game { this.refreshGates(); - for (HabboItem tile : this.gameTiles.values()) { + for (RoomItem tile : this.gameTiles.values()) { if (tile.getExtradata().equals("1")) { tile.setExtradata("0"); this.room.updateItem(tile); @@ -226,7 +226,7 @@ public class BattleBanzaiGame extends Game { private synchronized void resetMap() { this.tileCount = 0; - for (HabboItem item : this.room.getFloorItems()) { + for (RoomItem item : this.room.getFloorItems()) { if (item instanceof InteractionBattleBanzaiTile) { item.setExtradata("1"); this.room.updateItemState(item); @@ -242,11 +242,11 @@ public class BattleBanzaiGame extends Game { } - public void tileLocked(GameTeamColors teamColor, HabboItem item, Habbo habbo) { + public void tileLocked(GameTeamColors teamColor, RoomItem item, Habbo habbo) { this.tileLocked(teamColor, item, habbo, false); } - public void tileLocked(GameTeamColors teamColor, HabboItem item, Habbo habbo, boolean doNotCheckFill) { + public void tileLocked(GameTeamColors teamColor, RoomItem item, Habbo habbo, boolean doNotCheckFill) { synchronized (this.lockedTiles) { if (item instanceof InteractionBattleBanzaiTile) { if (!this.lockedTiles.containsKey(teamColor)) { @@ -266,7 +266,7 @@ public class BattleBanzaiGame extends Game { final int y = item.getY(); final List> filledAreas = new ArrayList<>(); - final THashSet lockedTiles = new THashSet<>(this.lockedTiles.get(teamColor)); + final THashSet lockedTiles = new THashSet<>(this.lockedTiles.get(teamColor)); executor.execute(() -> { filledAreas.add(this.floodFill(x, y - 1, lockedTiles, new ArrayList<>(), teamColor)); @@ -278,7 +278,7 @@ public class BattleBanzaiGame extends Game { if (largestAreaOfAll.isPresent()) { for (RoomTile tile : largestAreaOfAll.get()) { - Optional tileItem = this.gameTiles.values().stream().filter(i -> i.getX() == tile.getX() && i.getY() == tile.getY() && i instanceof InteractionBattleBanzaiTile).findAny(); + Optional tileItem = this.gameTiles.values().stream().filter(i -> i.getX() == tile.getX() && i.getY() == tile.getY() && i instanceof InteractionBattleBanzaiTile).findAny(); tileItem.ifPresent(habboItem -> { this.tileLocked(teamColor, habboItem, habbo, true); @@ -297,7 +297,7 @@ public class BattleBanzaiGame extends Game { } } - private List floodFill(int x, int y, THashSet lockedTiles, List stack, GameTeamColors color) { + private List floodFill(int x, int y, THashSet lockedTiles, List stack, GameTeamColors color) { if (this.isOutOfBounds(x, y) || this.isForeignLockedTile(x, y, color)) return null; RoomTile tile = this.room.getLayout().getTile((short) x, (short) y); @@ -320,8 +320,8 @@ public class BattleBanzaiGame extends Game { } - private boolean hasLockedTileAtCoordinates(int x, int y, THashSet lockedTiles) { - for (HabboItem item : lockedTiles) { + private boolean hasLockedTileAtCoordinates(int x, int y, THashSet lockedTiles) { + for (RoomItem item : lockedTiles) { if (item.getX() == x && item.getY() == y) return true; } @@ -329,7 +329,7 @@ public class BattleBanzaiGame extends Game { } private boolean isOutOfBounds(int x, int y) { - for (HabboItem item : this.gameTiles.values()) { + for (RoomItem item : this.gameTiles.values()) { if (item.getX() == x && item.getY() == y) return false; } @@ -337,10 +337,10 @@ public class BattleBanzaiGame extends Game { } private boolean isForeignLockedTile(int x, int y, GameTeamColors color) { - for (HashMap.Entry> lockedTilesForColor : this.lockedTiles.entrySet()) { + for (HashMap.Entry> lockedTilesForColor : this.lockedTiles.entrySet()) { if (lockedTilesForColor.getKey() == color) continue; - for (HabboItem item : lockedTilesForColor.getValue()) { + for (RoomItem item : lockedTilesForColor.getValue()) { if (item.getX() == x && item.getY() == y) return true; } } @@ -383,7 +383,7 @@ public class BattleBanzaiGame extends Game { private void refreshGates() { Collection gates = this.room.getRoomSpecialTypes().getBattleBanzaiGates().values(); THashSet tilesToUpdate = new THashSet<>(gates.size()); - for (HabboItem item : gates) { + for (RoomItem item : gates) { tilesToUpdate.add(this.room.getLayout().getTile(item.getX(), item.getY())); } diff --git a/src/main/java/com/eu/habbo/habbohotel/games/battlebanzai/BattleBanzaiGameTeam.java b/src/main/java/com/eu/habbo/habbohotel/games/battlebanzai/BattleBanzaiGameTeam.java index 94725332..c061c627 100644 --- a/src/main/java/com/eu/habbo/habbohotel/games/battlebanzai/BattleBanzaiGameTeam.java +++ b/src/main/java/com/eu/habbo/habbohotel/games/battlebanzai/BattleBanzaiGameTeam.java @@ -7,10 +7,11 @@ import com.eu.habbo.habbohotel.games.GameTeamColors; import com.eu.habbo.habbohotel.games.freeze.FreezeGame; import com.eu.habbo.habbohotel.items.interactions.games.InteractionGameGate; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.types.RoomHabbo; import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.habbohotel.users.HabboGender; -import com.eu.habbo.habbohotel.users.HabboItem; public class BattleBanzaiGameTeam extends GameTeam { public BattleBanzaiGameTeam(GameTeamColors teamColor) { @@ -20,25 +21,27 @@ public class BattleBanzaiGameTeam extends GameTeam { @Override public void addMember(GamePlayer gamePlayer) { super.addMember(gamePlayer); - RoomUnit roomUnit = gamePlayer.getHabbo().getRoomUnit(); - if (roomUnit.getEffectId() > 0) - roomUnit.setPreviousEffectId(roomUnit.getEffectId(), roomUnit.getPreviousEffectEndTimestamp()); + RoomHabbo roomHabbo = gamePlayer.getHabbo().getRoomUnit(); + if (roomHabbo.getEffectId() > 0) { + roomHabbo.setPreviousEffectId(roomHabbo.getEffectId()); + roomHabbo.setPreviousEffectEndTimestamp(roomHabbo.getPreviousEffectEndTimestamp()); + } - gamePlayer.getHabbo().getHabboInfo().getCurrentRoom().giveEffect(gamePlayer.getHabbo(), BattleBanzaiGame.effectId + this.teamColor.type, -1, true); + gamePlayer.getHabbo().getRoomUnit().getRoom().giveEffect(gamePlayer.getHabbo(), BattleBanzaiGame.effectId + this.teamColor.type, -1, true); } @Override public void removeMember(GamePlayer gamePlayer) { super.removeMember(gamePlayer); - if (gamePlayer == null || gamePlayer.getHabbo() == null || gamePlayer.getHabbo().getHabboInfo().getCurrentRoom() == null) + if (gamePlayer == null || gamePlayer.getHabbo() == null || gamePlayer.getHabbo().getRoomUnit().getRoom() == null) return; Habbo habbo = gamePlayer.getHabbo(); - Game game = habbo.getHabboInfo().getCurrentRoom().getGame(FreezeGame.class); + Game game = habbo.getRoomUnit().getRoom().getGame(FreezeGame.class); RoomUnit roomUnit = habbo.getRoomUnit(); Room room = roomUnit.getRoom(); if(room == null) return; - HabboItem topItem = room.getTopItemAt(roomUnit.getCurrentLocation().getX(), roomUnit.getCurrentLocation().getY()); + RoomItem topItem = room.getTopItemAt(roomUnit.getCurrentPosition().getX(), roomUnit.getCurrentPosition().getY()); int nextEffectM = 0; int nextEffectF = 0; int nextEffectDuration = -1; diff --git a/src/main/java/com/eu/habbo/habbohotel/games/football/FootballGame.java b/src/main/java/com/eu/habbo/habbohotel/games/football/FootballGame.java index 4039feb9..279969e2 100644 --- a/src/main/java/com/eu/habbo/habbohotel/games/football/FootballGame.java +++ b/src/main/java/com/eu/habbo/habbohotel/games/football/FootballGame.java @@ -6,8 +6,8 @@ import com.eu.habbo.habbohotel.games.Game; import com.eu.habbo.habbohotel.games.GameTeamColors; import com.eu.habbo.habbohotel.items.interactions.games.football.scoreboards.InteractionFootballScoreboard; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; import com.eu.habbo.habbohotel.rooms.RoomUserAction; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.messages.outgoing.rooms.users.ExpressionMessageComposer; @@ -38,8 +38,8 @@ public class FootballGame extends Game { Habbo habbo = this.room.getHabbo(kicker); if (habbo != null) { AchievementManager.progressAchievement(habbo, Emulator.getGameEnvironment().getAchievementManager().getAchievement("FootballGoalScored")); - if (habbo.getHabboInfo().getId() != this.room.getOwnerId()) { - AchievementManager.progressAchievement(this.room.getOwnerId(), Emulator.getGameEnvironment().getAchievementManager().getAchievement("FootballGoalScoredInRoom")); + if (habbo.getHabboInfo().getId() != this.room.getRoomInfo().getOwnerInfo().getId()) { + AchievementManager.progressAchievement(this.room.getRoomInfo().getOwnerInfo().getId(), Emulator.getGameEnvironment().getAchievementManager().getAchievement("FootballGoalScoredInRoom")); } } diff --git a/src/main/java/com/eu/habbo/habbohotel/games/freeze/FreezeGame.java b/src/main/java/com/eu/habbo/habbohotel/games/freeze/FreezeGame.java index 262f48db..292c95a4 100644 --- a/src/main/java/com/eu/habbo/habbohotel/games/freeze/FreezeGame.java +++ b/src/main/java/com/eu/habbo/habbohotel/games/freeze/FreezeGame.java @@ -13,8 +13,8 @@ import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomLayout; import com.eu.habbo.habbohotel.rooms.RoomTile; import com.eu.habbo.habbohotel.rooms.RoomUserAction; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; import com.eu.habbo.messages.outgoing.rooms.users.ExpressionMessageComposer; import com.eu.habbo.plugin.EventHandler; import com.eu.habbo.plugin.events.emulator.EmulatorConfigUpdatedEvent; @@ -78,7 +78,7 @@ public class FreezeGame extends Game { } synchronized void resetMap() { - for (HabboItem item : this.room.getFloorItems()) { + for (RoomItem item : this.room.getFloorItems()) { if (item instanceof InteractionFreezeBlock || item instanceof InteractionFreezeScoreboard) { item.setExtradata("0"); this.room.updateItemState(item); @@ -93,7 +93,7 @@ public class FreezeGame extends Game { if (!item.getExtradata().equalsIgnoreCase("0") && !item.getExtradata().isEmpty()) return; - if (RoomLayout.tilesAdjecent(habbo.getRoomUnit().getCurrentLocation(), this.room.getLayout().getTile(item.getX(), item.getY()))) { + if (RoomLayout.tilesAdjecent(habbo.getRoomUnit().getCurrentPosition(), this.room.getLayout().getTile(item.getX(), item.getY()))) { if (((FreezeGamePlayer) habbo.getHabboInfo().getGamePlayer()).canThrowSnowball()) { Emulator.getThreading().run(new FreezeThrowSnowball(habbo, item, this.room)); } @@ -189,11 +189,11 @@ public class FreezeGame extends Game { super.start(); if (this.room.getRoomSpecialTypes().hasFreezeExitTile()) { - for (Habbo habbo : this.room.getHabbos()) { + for (Habbo habbo : this.room.getRoomUnitManager().getRoomHabbos()) { if (this.getTeamForHabbo(habbo) == null) { - for (HabboItem item : this.room.getItemsAt(habbo.getRoomUnit().getCurrentLocation())) { + for (RoomItem item : this.room.getItemsAt(habbo.getRoomUnit().getCurrentPosition())) { if (item instanceof InteractionFreezeTile) { - HabboItem exitTile = this.room.getRoomSpecialTypes().getRandomFreezeExitTile(); + RoomItem exitTile = this.room.getRoomSpecialTypes().getRandomFreezeExitTile(); WiredEffectTeleport.teleportUnitToTile(habbo.getRoomUnit(), this.room.getLayout().getTile(exitTile.getX(), exitTile.getY())); } } @@ -304,7 +304,7 @@ public class FreezeGame extends Game { private void refreshGates() { THashSet tilesToUpdate = new THashSet<>(); - for (HabboItem item : this.room.getRoomSpecialTypes().getFreezeGates().values()) { + for (RoomItem item : this.room.getRoomSpecialTypes().getFreezeGates().values()) { tilesToUpdate.add(this.room.getLayout().getTile(item.getX(), item.getY())); } diff --git a/src/main/java/com/eu/habbo/habbohotel/games/freeze/FreezeGamePlayer.java b/src/main/java/com/eu/habbo/habbohotel/games/freeze/FreezeGamePlayer.java index 7c14d9cb..67a21c88 100644 --- a/src/main/java/com/eu/habbo/habbohotel/games/freeze/FreezeGamePlayer.java +++ b/src/main/java/com/eu/habbo/habbohotel/games/freeze/FreezeGamePlayer.java @@ -52,7 +52,7 @@ public class FreezeGamePlayer extends GamePlayer { public void addLife() { if (this.lives < FreezeGame.MAX_LIVES) { this.lives++; - super.getHabbo().getHabboInfo().getCurrentRoom().sendComposer(new GamePlayerValueMessageComposer(this).compose()); + super.getHabbo().getRoomUnit().getRoom().sendComposer(new GamePlayerValueMessageComposer(this).compose()); } } @@ -61,13 +61,13 @@ public class FreezeGamePlayer extends GamePlayer { if (this.lives == 0) { this.dead = true; - FreezeGame game = (FreezeGame) super.getHabbo().getHabboInfo().getCurrentRoom().getGame(FreezeGame.class); + FreezeGame game = (FreezeGame) super.getHabbo().getRoomUnit().getRoom().getGame(FreezeGame.class); if (game != null) { game.playerDies(this); } } else { - super.getHabbo().getHabboInfo().getCurrentRoom().sendComposer(new GamePlayerValueMessageComposer(this).compose()); + super.getHabbo().getRoomUnit().getRoom().sendComposer(new GamePlayerValueMessageComposer(this).compose()); } } @@ -208,6 +208,6 @@ public class FreezeGamePlayer extends GamePlayer { if (this.dead) return; - super.getHabbo().getHabboInfo().getCurrentRoom().giveEffect(super.getHabbo(), this.correctEffectId(), -1, true); + super.getHabbo().getRoomUnit().getRoom().giveEffect(super.getHabbo(), this.correctEffectId(), -1, true); } } diff --git a/src/main/java/com/eu/habbo/habbohotel/games/freeze/FreezeGameTeam.java b/src/main/java/com/eu/habbo/habbohotel/games/freeze/FreezeGameTeam.java index 845a9bb6..9a4e764d 100644 --- a/src/main/java/com/eu/habbo/habbohotel/games/freeze/FreezeGameTeam.java +++ b/src/main/java/com/eu/habbo/habbohotel/games/freeze/FreezeGameTeam.java @@ -6,10 +6,11 @@ import com.eu.habbo.habbohotel.games.GameTeam; import com.eu.habbo.habbohotel.games.GameTeamColors; import com.eu.habbo.habbohotel.items.interactions.games.InteractionGameGate; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.types.RoomHabbo; import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.habbohotel.users.HabboGender; -import com.eu.habbo.habbohotel.users.HabboItem; public class FreezeGameTeam extends GameTeam { public FreezeGameTeam(GameTeamColors teamColor) { @@ -19,16 +20,16 @@ public class FreezeGameTeam extends GameTeam { @Override public void removeMember(GamePlayer gamePlayer) { super.removeMember(gamePlayer); - if (gamePlayer == null || gamePlayer.getHabbo() == null || gamePlayer.getHabbo().getHabboInfo().getCurrentRoom() == null) + if (gamePlayer == null || gamePlayer.getHabbo() == null || gamePlayer.getHabbo().getRoomUnit().getRoom() == null) return; Habbo habbo = gamePlayer.getHabbo(); - Game game = habbo.getHabboInfo().getCurrentRoom().getGame(FreezeGame.class); + Game game = habbo.getRoomUnit().getRoom().getGame(FreezeGame.class); RoomUnit roomUnit = habbo.getRoomUnit(); Room room = roomUnit.getRoom(); if(room == null) return; - HabboItem topItem = room.getTopItemAt(roomUnit.getCurrentLocation().getX(), roomUnit.getCurrentLocation().getY()); + RoomItem topItem = room.getTopItemAt(roomUnit.getCurrentPosition().getX(), roomUnit.getCurrentPosition().getY()); int nextEffectM = 0; int nextEffectF = 0; int nextEffectDuration = -1; @@ -64,9 +65,9 @@ public class FreezeGameTeam extends GameTeam { public void addMember(GamePlayer gamePlayer) { super.addMember(gamePlayer); - RoomUnit roomUnit = gamePlayer.getHabbo().getRoomUnit(); - if (roomUnit.getEffectId() > 0) - roomUnit.setPreviousEffectId(roomUnit.getEffectId(), roomUnit.getPreviousEffectEndTimestamp()); - gamePlayer.getHabbo().getHabboInfo().getCurrentRoom().giveEffect(gamePlayer.getHabbo(), FreezeGame.effectId + this.teamColor.type, -1, true); + RoomHabbo roomHabbo = gamePlayer.getHabbo().getRoomUnit(); + if (roomHabbo.getEffectId() > 0) + roomHabbo.setPreviousEffectId(roomHabbo.getEffectId(), roomHabbo.getPreviousEffectEndTimestamp()); + gamePlayer.getHabbo().getRoomUnit().getRoom().giveEffect(gamePlayer.getHabbo(), FreezeGame.effectId + this.teamColor.type, -1, true); } } diff --git a/src/main/java/com/eu/habbo/habbohotel/games/tag/TagGame.java b/src/main/java/com/eu/habbo/habbohotel/games/tag/TagGame.java index bd612428..df080a9f 100644 --- a/src/main/java/com/eu/habbo/habbohotel/games/tag/TagGame.java +++ b/src/main/java/com/eu/habbo/habbohotel/games/tag/TagGame.java @@ -9,10 +9,11 @@ import com.eu.habbo.habbohotel.items.interactions.games.tag.InteractionTagField; import com.eu.habbo.habbohotel.items.interactions.games.tag.InteractionTagPole; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomLayout; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.types.RoomHabbo; import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.habbohotel.users.HabboGender; -import com.eu.habbo.habbohotel.users.HabboItem; import com.eu.habbo.plugin.EventHandler; import com.eu.habbo.plugin.events.roomunit.RoomUnitLookAtPointEvent; import com.eu.habbo.plugin.events.users.UserTakeStepEvent; @@ -34,7 +35,7 @@ public abstract class TagGame extends Game { public static void onUserLookAtPoint(RoomUnitLookAtPointEvent event) { if (event.room == null || event.roomUnit == null || event.location == null) return; - if (RoomLayout.tilesAdjecent(event.roomUnit.getCurrentLocation(), event.location)) { + if (RoomLayout.tilesAdjecent(event.roomUnit.getCurrentPosition(), event.location)) { Habbo habbo = event.room.getHabbo(event.roomUnit); if (habbo != null) { @@ -44,7 +45,7 @@ public abstract class TagGame extends Game { if (game != null) { if (game.isTagger(habbo)) { - for (Habbo tagged : event.room.getHabbosAt(event.location)) { + for (Habbo tagged : event.room.getRoomUnitManager().getHabbosAt(event.location)) { if (tagged == habbo || tagged.getHabboInfo().getCurrentGame() == null || tagged.getHabboInfo().getCurrentGame() != habbo.getHabboInfo().getCurrentGame()) { continue; } @@ -63,15 +64,15 @@ public abstract class TagGame extends Game { @EventHandler public static void onUserWalkEvent(UserTakeStepEvent event) { if (event.habbo.getHabboInfo().getCurrentGame() != null && TagGame.class.isAssignableFrom(event.habbo.getHabboInfo().getCurrentGame())) { - THashSet items = event.habbo.getHabboInfo().getCurrentRoom().getItemsAt(event.toLocation); + THashSet items = event.habbo.getRoomUnit().getRoom().getItemsAt(event.toLocation); - TagGame game = (TagGame) event.habbo.getHabboInfo().getCurrentRoom().getGame(event.habbo.getHabboInfo().getCurrentGame()); + TagGame game = (TagGame) event.habbo.getRoomUnit().getRoom().getGame(event.habbo.getHabboInfo().getCurrentGame()); if (game != null) { - for (HabboItem item : items) { + for (RoomItem item : items) { if (item instanceof InteractionTagField && ((InteractionTagField) item).gameClazz == event.habbo.getHabboInfo().getCurrentGame()) { if (game.taggers.isEmpty()) { - game.tagged(event.habbo.getHabboInfo().getCurrentRoom(), null, event.habbo); + game.tagged(event.habbo.getRoomUnit().getRoom(), null, event.habbo); } return; } @@ -97,7 +98,7 @@ public abstract class TagGame extends Game { return; } - THashSet poles = room.getRoomSpecialTypes().getItemsOfType(this.getTagPole()); + THashSet poles = room.getRoomSpecialTypes().getItemsOfType(this.getTagPole()); InteractionTagPole pole = this.taggers.get(tagger); room.giveEffect(tagged, this.getTaggedEffect(tagged), -1); @@ -106,8 +107,8 @@ public abstract class TagGame extends Game { poles.remove(set.getValue()); } - for (HabboItem item : poles) { - tagged.getHabboInfo().getCurrentRoom().giveEffect(tagged, this.getTaggedEffect(tagged), -1); + for (RoomItem item : poles) { + tagged.getRoomUnit().getRoom().giveEffect(tagged, this.getTaggedEffect(tagged), -1); this.taggers.put(tagged, (InteractionTagPole) item); } } else { @@ -130,39 +131,39 @@ public abstract class TagGame extends Game { public synchronized boolean addHabbo(Habbo habbo, GameTeamColors teamColor) { super.addHabbo(habbo, GameTeamColors.RED); - RoomUnit roomUnit = habbo.getRoomUnit(); + RoomHabbo roomHabbo = habbo.getRoomUnit(); if (this.getTagPole() != null) { - THashSet poles = habbo.getHabboInfo().getCurrentRoom().getRoomSpecialTypes().getItemsOfType(this.getTagPole()); + THashSet poles = habbo.getRoomUnit().getRoom().getRoomSpecialTypes().getItemsOfType(this.getTagPole()); if (poles.size() > this.taggers.size()) { for (Map.Entry set : this.taggers.entrySet()) { poles.remove(set.getValue()); } - TObjectHashIterator iterator = poles.iterator(); + TObjectHashIterator iterator = poles.iterator(); if ((iterator.hasNext())) { - HabboItem item = iterator.next(); - if (roomUnit.getEffectId() > 0) - roomUnit.setPreviousEffectId(roomUnit.getEffectId(), roomUnit.getPreviousEffectEndTimestamp()); - habbo.getHabboInfo().getCurrentRoom().giveEffect(habbo, this.getEffect(habbo), -1, true); - this.room.scheduledTasks.add(() -> habbo.getHabboInfo().getCurrentRoom().giveEffect(habbo, this.getTaggedEffect(habbo), -1, true)); + RoomItem item = iterator.next(); + if (roomHabbo.getEffectId() > 0) + roomHabbo.setPreviousEffectId(roomHabbo.getEffectId(), roomHabbo.getPreviousEffectEndTimestamp()); + habbo.getRoomUnit().getRoom().giveEffect(habbo, this.getEffect(habbo), -1, true); + this.room.scheduledTasks.add(() -> habbo.getRoomUnit().getRoom().giveEffect(habbo, this.getTaggedEffect(habbo), -1, true)); this.taggers.put(habbo, (InteractionTagPole) item); return true; } } } else { if (this.taggers.isEmpty()) { - if (roomUnit.getEffectId() > 0) - roomUnit.setPreviousEffectId(roomUnit.getEffectId(), roomUnit.getPreviousEffectEndTimestamp()); - habbo.getHabboInfo().getCurrentRoom().giveEffect(habbo, this.getEffect(habbo), -1, true); - this.room.scheduledTasks.add(() -> habbo.getHabboInfo().getCurrentRoom().giveEffect(habbo, this.getTaggedEffect(habbo), -1, true)); + if (roomHabbo.getEffectId() > 0) + roomHabbo.setPreviousEffectId(roomHabbo.getEffectId(), roomHabbo.getPreviousEffectEndTimestamp()); + habbo.getRoomUnit().getRoom().giveEffect(habbo, this.getEffect(habbo), -1, true); + this.room.scheduledTasks.add(() -> habbo.getRoomUnit().getRoom().giveEffect(habbo, this.getTaggedEffect(habbo), -1, true)); this.taggers.put(habbo, null); return true; } } - if (roomUnit.getEffectId() > 0) - roomUnit.setPreviousEffectId(roomUnit.getEffectId(), roomUnit.getPreviousEffectEndTimestamp()); - habbo.getHabboInfo().getCurrentRoom().giveEffect(habbo, this.getEffect(habbo), -1, true); + if (roomHabbo.getEffectId() > 0) + roomHabbo.setPreviousEffectId(roomHabbo.getEffectId(), roomHabbo.getPreviousEffectEndTimestamp()); + habbo.getRoomUnit().getRoom().giveEffect(habbo, this.getEffect(habbo), -1, true); return true; } @@ -176,7 +177,7 @@ public abstract class TagGame extends Game { Room room = roomUnit.getRoom(); if (room == null) return; - HabboItem topItem = room.getTopItemAt(roomUnit.getCurrentLocation().getX(), roomUnit.getCurrentLocation().getY()); + RoomItem topItem = room.getTopItemAt(roomUnit.getCurrentPosition().getX(), roomUnit.getCurrentPosition().getY()); int nextEffectM = 0; int nextEffectF = 0; int nextEffectDuration = -1; diff --git a/src/main/java/com/eu/habbo/habbohotel/games/wired/WiredGame.java b/src/main/java/com/eu/habbo/habbohotel/games/wired/WiredGame.java index 9cb2a072..78886dc2 100644 --- a/src/main/java/com/eu/habbo/habbohotel/games/wired/WiredGame.java +++ b/src/main/java/com/eu/habbo/habbohotel/games/wired/WiredGame.java @@ -3,10 +3,11 @@ package com.eu.habbo.habbohotel.games.wired; import com.eu.habbo.habbohotel.games.*; import com.eu.habbo.habbohotel.games.freeze.FreezeGame; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.types.RoomHabbo; import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.habbohotel.users.HabboGender; -import com.eu.habbo.habbohotel.users.HabboItem; public class WiredGame extends Game { public GameState state = GameState.RUNNING; @@ -31,9 +32,9 @@ public class WiredGame extends Game { @Override public boolean addHabbo(Habbo habbo, GameTeamColors teamColor) { - RoomUnit roomUnit = habbo.getRoomUnit(); - if (roomUnit.getEffectId() > 0) - roomUnit.setPreviousEffectId(roomUnit.getEffectId(), roomUnit.getPreviousEffectEndTimestamp()); + RoomHabbo roomHabbo = habbo.getRoomUnit(); + if (roomHabbo.getEffectId() > 0) + roomHabbo.setPreviousEffectId(roomHabbo.getEffectId(), roomHabbo.getPreviousEffectEndTimestamp()); this.room.giveEffect(habbo, FreezeGame.effectId + teamColor.type, -1, true); return super.addHabbo(habbo, teamColor); } @@ -45,7 +46,7 @@ public class WiredGame extends Game { Room room = this.room; if (room == null) return; - HabboItem topItem = room.getTopItemAt(roomUnit.getCurrentLocation().getX(), roomUnit.getCurrentLocation().getY()); + RoomItem topItem = room.getTopItemAt(roomUnit.getCurrentPosition().getX(), roomUnit.getCurrentPosition().getY()); int nextEffectM = 0; int nextEffectF = 0; int nextEffectDuration = -1; diff --git a/src/main/java/com/eu/habbo/habbohotel/guilds/GuildManager.java b/src/main/java/com/eu/habbo/habbohotel/guilds/GuildManager.java index 06827a70..93217ee5 100644 --- a/src/main/java/com/eu/habbo/habbohotel/guilds/GuildManager.java +++ b/src/main/java/com/eu/habbo/habbohotel/guilds/GuildManager.java @@ -152,10 +152,10 @@ public class GuildManager { statement.execute(); } - Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(guild.getRoomId()); + Room room = Emulator.getGameEnvironment().getRoomManager().getActiveRoomById(guild.getRoomId()); if (room != null) { - room.setGuildId(0); + room.getRoomInfo().setGuild(null); } } catch (SQLException e) { log.error("Caught SQL exception", e); diff --git a/src/main/java/com/eu/habbo/habbohotel/items/IEventTriggers.java b/src/main/java/com/eu/habbo/habbohotel/items/IEventTriggers.java index 788f92d8..57dd19c3 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/IEventTriggers.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/IEventTriggers.java @@ -2,7 +2,7 @@ package com.eu.habbo.habbohotel.items; import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; public interface IEventTriggers { void onClick(GameClient client, Room room, Object[] objects) throws Exception; diff --git a/src/main/java/com/eu/habbo/habbohotel/items/Item.java b/src/main/java/com/eu/habbo/habbohotel/items/Item.java index bfb3c6a7..1d9ffce7 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/Item.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/Item.java @@ -2,7 +2,7 @@ package com.eu.habbo.habbohotel.items; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.items.interactions.InteractionMultiHeight; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.ISerialize; import com.eu.habbo.messages.ServerMessage; import gnu.trove.list.array.TIntArrayList; @@ -66,7 +66,7 @@ public class Item implements ISerialize { return item.getName().toLowerCase().startsWith("a0 pet"); } - public static double getCurrentHeight(HabboItem item) { + public static double getCurrentHeight(RoomItem item) { if (item instanceof InteractionMultiHeight && item.getBaseItem().getMultiHeights().length > 0) { if (item.getExtradata().isEmpty()) { item.setExtradata("0"); diff --git a/src/main/java/com/eu/habbo/habbohotel/items/ItemInteraction.java b/src/main/java/com/eu/habbo/habbohotel/items/ItemInteraction.java index fd32de85..2f830413 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/ItemInteraction.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/ItemInteraction.java @@ -1,6 +1,6 @@ package com.eu.habbo.habbohotel.items; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import lombok.AllArgsConstructor; import lombok.Getter; @@ -9,5 +9,5 @@ public class ItemInteraction { @Getter private final String name; @Getter - private final Class type; + private final Class type; } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/ItemManager.java b/src/main/java/com/eu/habbo/habbohotel/items/ItemManager.java index 47eaadf1..00240bbc 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/ItemManager.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/ItemManager.java @@ -52,7 +52,7 @@ import com.eu.habbo.habbohotel.items.interactions.wired.extra.WiredExtraRandom; import com.eu.habbo.habbohotel.items.interactions.wired.extra.WiredExtraUnseen; import com.eu.habbo.habbohotel.items.interactions.wired.triggers.*; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.habbohotel.wired.highscores.WiredHighscoreManager; import com.eu.habbo.messages.outgoing.inventory.UnseenItemsComposer; import com.eu.habbo.plugin.events.emulator.EmulatorLoadItemsManagerEvent; @@ -147,9 +147,9 @@ public class ItemManager { this.interactionsList.add(new ItemInteraction("hopper", InteractionHopper.class)); this.interactionsList.add(new ItemInteraction("costume_hopper", InteractionCostumeHopper.class)); this.interactionsList.add(new ItemInteraction("effect_gate", InteractionEffectGate.class)); - this.interactionsList.add(new ItemInteraction("club_hopper", InteractionHabboClubHopper.class)); - this.interactionsList.add(new ItemInteraction("club_gate", InteractionHabboClubGate.class)); - this.interactionsList.add(new ItemInteraction("club_teleporttile", InteractionHabboClubTeleportTile.class)); + this.interactionsList.add(new ItemInteraction("club_hopper", InteractionRoomClubHopper.class)); + this.interactionsList.add(new ItemInteraction("club_gate", InteractionRoomClubGate.class)); + this.interactionsList.add(new ItemInteraction("club_teleporttile", InteractionRoomClubTeleportTile.class)); this.interactionsList.add(new ItemInteraction("onewaygate", InteractionOneWayGate.class)); this.interactionsList.add(new ItemInteraction("love_lock", InteractionLoveLock.class)); this.interactionsList.add(new ItemInteraction("clothing", InteractionClothing.class)); @@ -198,10 +198,10 @@ public class ItemManager { this.interactionsList.add(new ItemInteraction("game_timer", InteractionGameTimer.class)); - this.interactionsList.add(new ItemInteraction("wf_trg_walks_on_furni", WiredTriggerHabboWalkOnFurni.class)); - this.interactionsList.add(new ItemInteraction("wf_trg_walks_off_furni", WiredTriggerHabboWalkOffFurni.class)); - this.interactionsList.add(new ItemInteraction("wf_trg_enter_room", WiredTriggerHabboEntersRoom.class)); - this.interactionsList.add(new ItemInteraction("wf_trg_says_something", WiredTriggerHabboSaysKeyword.class)); + this.interactionsList.add(new ItemInteraction("wf_trg_walks_on_furni", WiredTriggerRoomWalkOnFurni.class)); + this.interactionsList.add(new ItemInteraction("wf_trg_walks_off_furni", WiredTriggerRoomWalkOffFurni.class)); + this.interactionsList.add(new ItemInteraction("wf_trg_enter_room", WiredTriggerRoomEntersRoom.class)); + this.interactionsList.add(new ItemInteraction("wf_trg_says_something", WiredTriggerRoomSaysKeyword.class)); this.interactionsList.add(new ItemInteraction("wf_trg_periodically", WiredTriggerRepeater.class)); this.interactionsList.add(new ItemInteraction("wf_trg_period_long", WiredTriggerRepeaterLong.class)); this.interactionsList.add(new ItemInteraction("wf_trg_state_changed", WiredTriggerFurniStateToggled.class)); @@ -211,7 +211,7 @@ public class ItemManager { this.interactionsList.add(new ItemInteraction("wf_trg_game_starts", WiredTriggerGameStarts.class)); this.interactionsList.add(new ItemInteraction("wf_trg_game_ends", WiredTriggerGameEnds.class)); this.interactionsList.add(new ItemInteraction("wf_trg_bot_reached_stf", WiredTriggerBotReachedFurni.class)); - this.interactionsList.add(new ItemInteraction("wf_trg_bot_reached_avtr", WiredTriggerBotReachedHabbo.class)); + this.interactionsList.add(new ItemInteraction("wf_trg_bot_reached_avtr", WiredTriggerBotReachedRoom.class)); this.interactionsList.add(new ItemInteraction("wf_trg_score_achieved", WiredTriggerScoreAchieved.class)); this.interactionsList.add(new ItemInteraction("wf_trg_game_team_win", WiredTriggerTeamWins.class)); this.interactionsList.add(new ItemInteraction("wf_trg_game_team_lose", WiredTriggerTeamLoses.class)); @@ -234,43 +234,43 @@ public class ItemManager { this.interactionsList.add(new ItemInteraction("wf_act_move_furni_to", WiredEffectMoveFurniTo.class)); this.interactionsList.add(new ItemInteraction("wf_act_give_reward", WiredEffectGiveReward.class)); this.interactionsList.add(new ItemInteraction("wf_act_call_stacks", WiredEffectTriggerStacks.class)); - this.interactionsList.add(new ItemInteraction("wf_act_kick_user", WiredEffectKickHabbo.class)); - this.interactionsList.add(new ItemInteraction("wf_act_mute_triggerer", WiredEffectMuteHabbo.class)); + this.interactionsList.add(new ItemInteraction("wf_act_kick_user", WiredEffectKickRoom.class)); + this.interactionsList.add(new ItemInteraction("wf_act_mute_triggerer", WiredEffectMuteRoom.class)); this.interactionsList.add(new ItemInteraction("wf_act_bot_teleport", WiredEffectBotTeleport.class)); this.interactionsList.add(new ItemInteraction("wf_act_bot_move", WiredEffectBotWalkToFurni.class)); this.interactionsList.add(new ItemInteraction("wf_act_bot_talk", WiredEffectBotTalk.class)); this.interactionsList.add(new ItemInteraction("wf_act_bot_give_handitem", WiredEffectBotGiveHandItem.class)); - this.interactionsList.add(new ItemInteraction("wf_act_bot_follow_avatar", WiredEffectBotFollowHabbo.class)); + this.interactionsList.add(new ItemInteraction("wf_act_bot_follow_avatar", WiredEffectBotFollowRoom.class)); this.interactionsList.add(new ItemInteraction("wf_act_bot_clothes", WiredEffectBotClothes.class)); - this.interactionsList.add(new ItemInteraction("wf_act_bot_talk_to_avatar", WiredEffectBotTalkToHabbo.class)); + this.interactionsList.add(new ItemInteraction("wf_act_bot_talk_to_avatar", WiredEffectBotTalkToRoom.class)); this.interactionsList.add(new ItemInteraction("wf_act_give_respect", WiredEffectGiveRespect.class)); this.interactionsList.add(new ItemInteraction("wf_act_alert", WiredEffectAlert.class)); this.interactionsList.add(new ItemInteraction("wf_act_give_handitem", WiredEffectGiveHandItem.class)); this.interactionsList.add(new ItemInteraction("wf_act_give_effect", WiredEffectGiveEffect.class)); this.interactionsList.add(new ItemInteraction("wf_cnd_has_furni_on", WiredConditionFurniHaveFurni.class)); - this.interactionsList.add(new ItemInteraction("wf_cnd_furnis_hv_avtrs", WiredConditionFurniHaveHabbo.class)); + this.interactionsList.add(new ItemInteraction("wf_cnd_furnis_hv_avtrs", WiredConditionFurniHaveRoom.class)); this.interactionsList.add(new ItemInteraction("wf_cnd_stuff_is", WiredConditionFurniTypeMatch.class)); this.interactionsList.add(new ItemInteraction("wf_cnd_actor_in_group", WiredConditionGroupMember.class)); - this.interactionsList.add(new ItemInteraction("wf_cnd_user_count_in", WiredConditionHabboCount.class)); - this.interactionsList.add(new ItemInteraction("wf_cnd_wearing_effect", WiredConditionHabboHasEffect.class)); - this.interactionsList.add(new ItemInteraction("wf_cnd_wearing_badge", WiredConditionHabboWearsBadge.class)); + this.interactionsList.add(new ItemInteraction("wf_cnd_user_count_in", WiredConditionRoomCount.class)); + this.interactionsList.add(new ItemInteraction("wf_cnd_wearing_effect", WiredConditionRoomHasEffect.class)); + this.interactionsList.add(new ItemInteraction("wf_cnd_wearing_badge", WiredConditionRoomWearsBadge.class)); this.interactionsList.add(new ItemInteraction("wf_cnd_time_less_than", WiredConditionLessTimeElapsed.class)); this.interactionsList.add(new ItemInteraction("wf_cnd_match_snapshot", WiredConditionMatchStatePosition.class)); this.interactionsList.add(new ItemInteraction("wf_cnd_time_more_than", WiredConditionMoreTimeElapsed.class)); this.interactionsList.add(new ItemInteraction("wf_cnd_not_furni_on", WiredConditionNotFurniHaveFurni.class)); - this.interactionsList.add(new ItemInteraction("wf_cnd_not_hv_avtrs", WiredConditionNotFurniHaveHabbo.class)); + this.interactionsList.add(new ItemInteraction("wf_cnd_not_hv_avtrs", WiredConditionNotFurniHaveRoom.class)); this.interactionsList.add(new ItemInteraction("wf_cnd_not_stuff_is", WiredConditionNotFurniTypeMatch.class)); - this.interactionsList.add(new ItemInteraction("wf_cnd_not_user_count", WiredConditionNotHabboCount.class)); - this.interactionsList.add(new ItemInteraction("wf_cnd_not_wearing_fx", WiredConditionNotHabboHasEffect.class)); - this.interactionsList.add(new ItemInteraction("wf_cnd_not_wearing_b", WiredConditionNotHabboWearsBadge.class)); + this.interactionsList.add(new ItemInteraction("wf_cnd_not_user_count", WiredConditionNotRoomCount.class)); + this.interactionsList.add(new ItemInteraction("wf_cnd_not_wearing_fx", WiredConditionNotRoomHasEffect.class)); + this.interactionsList.add(new ItemInteraction("wf_cnd_not_wearing_b", WiredConditionNotRoomWearsBadge.class)); this.interactionsList.add(new ItemInteraction("wf_cnd_not_in_group", WiredConditionNotInGroup.class)); this.interactionsList.add(new ItemInteraction("wf_cnd_not_in_team", WiredConditionNotInTeam.class)); this.interactionsList.add(new ItemInteraction("wf_cnd_not_match_snap", WiredConditionNotMatchStatePosition.class)); this.interactionsList.add(new ItemInteraction("wf_cnd_not_trggrer_on", WiredConditionNotTriggerOnFurni.class)); this.interactionsList.add(new ItemInteraction("wf_cnd_actor_in_team", WiredConditionTeamMember.class)); this.interactionsList.add(new ItemInteraction("wf_cnd_trggrer_on_frn", WiredConditionTriggerOnFurni.class)); - this.interactionsList.add(new ItemInteraction("wf_cnd_has_handitem", WiredConditionHabboHasHandItem.class)); + this.interactionsList.add(new ItemInteraction("wf_cnd_has_handitem", WiredConditionRoomHasHandItem.class)); this.interactionsList.add(new ItemInteraction("wf_cnd_date_rng_active", WiredConditionDateRangeActive.class)); @@ -363,7 +363,7 @@ public class ItemManager { } - public ItemInteraction getItemInteraction(Class type) { + public ItemInteraction getItemInteraction(Class type) { for (ItemInteraction interaction : this.interactionsList) { if (interaction.getType() == type) return interaction; @@ -477,7 +477,7 @@ public class ItemManager { return null; } - public HabboItem createItem(int habboId, Item item, int limitedStack, int limitedSells, String extraData) { + public RoomItem createItem(int habboId, Item item, int limitedStack, int limitedSells, String extraData) { try (Connection connection = Emulator.getDatabase().getDataSource().getConnection(); PreparedStatement statement = connection.prepareStatement("INSERT INTO items (user_id, item_id, extra_data, limited_data) VALUES (?, ?, ?, ?)", Statement.RETURN_GENERATED_KEYS)) { statement.setInt(1, habboId); statement.setInt(2, item.getId()); @@ -487,7 +487,7 @@ public class ItemManager { try (ResultSet set = statement.getGeneratedKeys()) { if (set.next()) { - Class itemClass = item.getInteractionType().getType(); + Class itemClass = item.getInteractionType().getType(); if (itemClass != null) { try { @@ -537,7 +537,7 @@ public class ItemManager { return new ArrayList<>(this.newuserGifts.values()); } - public void deleteItem(HabboItem item) { + public void deleteItem(RoomItem item) { try (Connection connection = Emulator.getDatabase().getDataSource().getConnection(); PreparedStatement statement = connection.prepareStatement("DELETE FROM items WHERE id = ?")) { statement.setInt(1, item.getId()); statement.execute(); @@ -546,10 +546,10 @@ public class ItemManager { } } - public HabboItem handleRecycle(Habbo habbo, String itemId) { + public RoomItem handleRecycle(Habbo habbo, String itemId) { String extradata = Calendar.getInstance().get(Calendar.DAY_OF_MONTH) + "-" + (Calendar.getInstance().get(Calendar.MONTH) + 1) + "-" + Calendar.getInstance().get(Calendar.YEAR); - HabboItem item = null; + RoomItem item = null; try (Connection connection = Emulator.getDatabase().getDataSource().getConnection(); PreparedStatement statement = connection.prepareStatement("INSERT INTO items (user_id, item_id, extra_data) VALUES (?, ?, ?)", Statement.RETURN_GENERATED_KEYS)) { statement.setInt(1, habbo.getHabboInfo().getId()); statement.setInt(2, Emulator.getGameEnvironment().getCatalogManager().ecotronItem.getId()); @@ -575,9 +575,9 @@ public class ItemManager { return item; } - public HabboItem handleOpenRecycleBox(Habbo habbo, HabboItem box) { + public RoomItem handleOpenRecycleBox(Habbo habbo, RoomItem box) { Emulator.getThreading().run(new QueryDeleteHabboItem(box.getId())); - HabboItem item = null; + RoomItem item = null; try (Connection connection = Emulator.getDatabase().getDataSource().getConnection(); PreparedStatement statement = connection.prepareStatement("SELECT * FROM items_presents WHERE item_id = ? LIMIT 1")) { statement.setInt(1, box.getId()); try (ResultSet rewardSet = statement.executeQuery()) { @@ -627,7 +627,7 @@ public class ItemManager { } } - public void insertHopper(HabboItem hopper) { + public void insertHopper(RoomItem hopper) { try (Connection connection = Emulator.getDatabase().getDataSource().getConnection(); PreparedStatement statement = connection.prepareStatement("INSERT INTO items_hoppers VALUES (?, ?)")) { statement.setInt(1, hopper.getId()); statement.setInt(2, hopper.getBaseItem().getId()); @@ -637,7 +637,7 @@ public class ItemManager { } } - public int[] getTargetTeleportRoomId(HabboItem item) { + public int[] getTargetTeleportRoomId(RoomItem item) { int[] a = new int[]{}; try (Connection connection = Emulator.getDatabase().getDataSource().getConnection(); PreparedStatement statement = connection.prepareStatement("SELECT items.id, items.room_id FROM items_teleports INNER JOIN items ON items_teleports.teleport_one_id = items.id OR items_teleports.teleport_two_id = items.id WHERE items.id != ? AND items.room_id > 0 LIMIT 1")) { @@ -654,8 +654,8 @@ public class ItemManager { return a; } - public HabboItem loadHabboItem(int itemId) { - HabboItem item = null; + public RoomItem loadHabboItem(int itemId) { + RoomItem item = null; try (Connection connection = Emulator.getDatabase().getDataSource().getConnection(); PreparedStatement statement = connection.prepareStatement("SELECT * FROM items WHERE id = ? LIMIT 1")) { statement.setInt(1, itemId); try (ResultSet set = statement.executeQuery()) { @@ -672,20 +672,20 @@ public class ItemManager { return item; } - public HabboItem loadHabboItem(ResultSet set) throws SQLException { + public RoomItem loadHabboItem(ResultSet set) throws SQLException { Item baseItem = this.getItem(set.getInt("item_id")); if (baseItem == null) return null; - Class itemClass = baseItem.getInteractionType().getType(); + Class itemClass = baseItem.getInteractionType().getType(); if (itemClass != null) { try { - Constructor c = itemClass.getConstructor(ResultSet.class, Item.class); + Constructor c = itemClass.getConstructor(ResultSet.class, Item.class); c.setAccessible(true); - HabboItem item = (HabboItem) c.newInstance(set, baseItem); + RoomItem item = (RoomItem) c.newInstance(set, baseItem); if (item instanceof InteractionWired interactionWired) { interactionWired.loadWiredSettings(set); @@ -700,7 +700,7 @@ public class ItemManager { return null; } - public HabboItem createGift(String username, Item item, String extraData, int limitedStack, int limitedSells) { + public RoomItem createGift(String username, Item item, String extraData, int limitedStack, int limitedSells) { Habbo habbo = Emulator.getGameEnvironment().getHabboManager().getHabbo(username); int userId = 0; @@ -728,7 +728,7 @@ public class ItemManager { return null; } - public HabboItem createGift(int userId, Item item, String extraData, int limitedStack, int limitedSells) { + public RoomItem createGift(int userId, Item item, String extraData, int limitedStack, int limitedSells) { if (userId == 0) return null; @@ -737,7 +737,7 @@ public class ItemManager { extraData = extraData.substring(0, 1000); } - HabboItem gift = this.createItem(userId, item, limitedStack, limitedSells, extraData); + RoomItem gift = this.createItem(userId, item, limitedStack, limitedSells, extraData); if (gift != null) { Habbo habbo = Emulator.getGameEnvironment().getHabboManager().getHabbo(userId); diff --git a/src/main/java/com/eu/habbo/habbohotel/items/NewUserGift.java b/src/main/java/com/eu/habbo/habbohotel/items/NewUserGift.java index eda6da13..6420116a 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/NewUserGift.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/NewUserGift.java @@ -2,7 +2,7 @@ package com.eu.habbo.habbohotel.items; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.ISerialize; import com.eu.habbo.messages.ServerMessage; import lombok.Getter; @@ -52,7 +52,7 @@ public class NewUserGift implements ISerialize { Item item = Emulator.getGameEnvironment().getItemManager().getItem(set.getKey()); if (item != null) { - HabboItem createdItem = Emulator.getGameEnvironment().getItemManager().createItem(habbo.getHabboInfo().getId(), item, 0, 0, ""); + RoomItem createdItem = Emulator.getGameEnvironment().getItemManager().createItem(habbo.getHabboInfo().getId(), item, 0, 0, ""); if (createdItem != null) { habbo.addFurniture(createdItem); diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionBackgroundToner.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionBackgroundToner.java index 890738e6..3fb3dc39 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionBackgroundToner.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionBackgroundToner.java @@ -5,15 +5,15 @@ import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.modtool.ScripterManager; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.threading.runnables.BackgroundAnimation; import java.sql.ResultSet; import java.sql.SQLException; -public class InteractionBackgroundToner extends HabboItem { +public class InteractionBackgroundToner extends RoomItem { public InteractionBackgroundToner(ResultSet set, Item baseItem) throws SQLException { super(set, baseItem); } @@ -65,13 +65,13 @@ public class InteractionBackgroundToner extends HabboItem { ScripterManager.scripterDetected( client, Emulator.getTexts().getValue("scripter.warning.item.bgtoner.permission").replace("%username%", client.getHabbo().getHabboInfo().getUsername()) - .replace("%room%", room.getName()) - .replace("%owner%", room.getOwnerName()) + .replace("%room%", room.getRoomInfo().getName()) + .replace("%owner%", room.getRoomInfo().getOwnerInfo().getUsername()) ); return; } - if (client.getHabbo().getRoomUnit().isCmdSit() && client.getHabbo().getRoomUnit().getEffectId() == 1337) { + if (client.getHabbo().getRoomUnit().isCmdSitEnabled() && client.getHabbo().getRoomUnit().getEffectId() == 1337) { new BackgroundAnimation(this, room).run(); return; } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionBadgeDisplay.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionBadgeDisplay.java index c34be7e5..aa9d223a 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionBadgeDisplay.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionBadgeDisplay.java @@ -3,14 +3,14 @@ package com.eu.habbo.habbohotel.items.interactions; import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.ServerMessage; import java.sql.ResultSet; import java.sql.SQLException; -public class InteractionBadgeDisplay extends HabboItem { +public class InteractionBadgeDisplay extends RoomItem { public InteractionBadgeDisplay(ResultSet set, Item baseItem) throws SQLException { super(set, baseItem); } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionBlackHole.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionBlackHole.java index f669479a..7fcfeace 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionBlackHole.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionBlackHole.java @@ -24,7 +24,7 @@ public class InteractionBlackHole extends InteractionGate { Achievement holeCountAchievement = Emulator.getGameEnvironment().getAchievementManager().getAchievement("RoomDecoHoleFurniCount"); int holesCountProgress = 0; - Habbo owner = room.getHabbo(this.getUserId()); + Habbo owner = room.getRoomUnitManager().getRoomHabboById(this.getUserId()); if (owner == null) { holesCountProgress = AchievementManager.getAchievementProgressForHabbo(this.getUserId(), holeCountAchievement); diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionBuildArea.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionBuildArea.java index f6877649..998193a9 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionBuildArea.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionBuildArea.java @@ -6,9 +6,9 @@ import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; import com.eu.habbo.habbohotel.rooms.RoomTileState; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.habbohotel.users.HabboInfo; -import com.eu.habbo.habbohotel.users.HabboItem; import com.eu.habbo.habbohotel.users.HabboManager; import com.eu.habbo.messages.outgoing.rooms.items.ObjectsMessageComposer; import com.eu.habbo.messages.outgoing.rooms.items.RemoveFloorItemComposer; @@ -78,8 +78,8 @@ public class InteractionBuildArea extends InteractionCustomValues { if (!canBuild.isEmpty()) { for (RoomTile tile : this.tiles) { - THashSet tileItems = room.getItemsAt(tile); - for (HabboItem tileItem : tileItems) { + THashSet tileItems = room.getItemsAt(tile); + for (RoomItem tileItem : tileItems) { if (canBuild.contains(tileItem.getUserId()) && tileItem != this) { room.pickUpItem(tileItem, null); } @@ -127,9 +127,9 @@ public class InteractionBuildArea extends InteractionCustomValues { if (!canBuild.isEmpty()) { for (RoomTile tile : this.tiles) { - THashSet tileItems = room.getItemsAt(tile); + THashSet tileItems = room.getItemsAt(tile); if (newTiles.contains(tile)) continue; - for (HabboItem tileItem : tileItems) { + for (RoomItem tileItem : tileItems) { if (canBuild.contains(tileItem.getUserId()) && tileItem != this) { room.pickUpItem(tileItem, null); } @@ -140,7 +140,7 @@ public class InteractionBuildArea extends InteractionCustomValues { } public boolean inSquare(RoomTile location) { - Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(this.getRoomId()); + Room room = Emulator.getGameEnvironment().getRoomManager().getActiveRoomById(this.getRoomId()); if (room != null && this.tiles.size() == 0) { regenAffectedTiles(room); @@ -202,8 +202,8 @@ public class InteractionBuildArea extends InteractionCustomValues { } if (!canBuild.isEmpty()) { for (RoomTile tile : oldTiles) { - THashSet tileItems = room.getItemsAt(tile); - for (HabboItem tileItem : tileItems) { + THashSet tileItems = room.getItemsAt(tile); + for (RoomItem tileItem : tileItems) { if (canBuild.contains(tileItem.getUserId()) && tileItem != this) { room.pickUpItem(tileItem, null); } @@ -217,12 +217,12 @@ public class InteractionBuildArea extends InteractionCustomValues { if (effectItem != null) { TIntObjectMap ownerNames = TCollections.synchronizedMap(new TIntObjectHashMap<>(0)); ownerNames.put(-1, "System"); - THashSet items = new THashSet<>(); + THashSet items = new THashSet<>(); int id = 0; for (RoomTile tile : this.tiles) { id--; - HabboItem item = new InteractionDefault(id, -1, effectItem, "1", 0, 0); + RoomItem item = new InteractionDefault(id, -1, effectItem, "1", 0, 0); item.setX(tile.getX()); item.setY(tile.getY()); item.setZ(tile.relativeHeight()); @@ -231,7 +231,7 @@ public class InteractionBuildArea extends InteractionCustomValues { client.sendResponse(new ObjectsMessageComposer(ownerNames, items)); Emulator.getThreading().run(() -> { - for (HabboItem item : items) { + for (RoomItem item : items) { client.sendResponse(new RemoveFloorItemComposer(item, true)); } }, 3000); diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionCannon.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionCannon.java index b1223794..a2f3a65e 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionCannon.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionCannon.java @@ -5,8 +5,8 @@ import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.threading.runnables.CannonKickAction; import com.eu.habbo.threading.runnables.CannonResetCooldownAction; @@ -15,7 +15,7 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.util.List; -public class InteractionCannon extends HabboItem { +public class InteractionCannon extends RoomItem { public boolean cooldown = false; public InteractionCannon(ResultSet set, Item baseItem) throws SQLException { @@ -61,12 +61,12 @@ public class InteractionCannon extends HabboItem { tiles.remove(room.getLayout().getTileInFront(tile, (this.getRotation() + (this.getRotation() >= 4 ? -1 : 0)) % 8)); tiles.remove(room.getLayout().getTileInFront(tile, (this.getRotation() + (this.getRotation() >= 4 ? 5 : 4)) % 8)); - if ((client == null || (tiles.contains(client.getHabbo().getRoomUnit().getCurrentLocation())) && client.getHabbo().getRoomUnit().canWalk()) && !this.cooldown) { + if ((client == null || (tiles.contains(client.getHabbo().getRoomUnit().getCurrentPosition())) && client.getHabbo().getRoomUnit().isCanWalk()) && !this.cooldown) { if (client != null) { client.getHabbo().getRoomUnit().setCanWalk(false); - client.getHabbo().getRoomUnit().setGoalLocation(client.getHabbo().getRoomUnit().getCurrentLocation()); + client.getHabbo().getRoomUnit().setGoalLocation(client.getHabbo().getRoomUnit().getCurrentPosition()); client.getHabbo().getRoomUnit().lookAtPoint(fuseTile); - client.getHabbo().getRoomUnit().statusUpdate(true); + client.getHabbo().getRoomUnit().setStatusUpdateNeeded(true); } this.cooldown = true; diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionClothing.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionClothing.java index 9bcd0794..bfd245bd 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionClothing.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionClothing.java @@ -2,14 +2,14 @@ package com.eu.habbo.habbohotel.items.interactions; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.ServerMessage; import java.sql.ResultSet; import java.sql.SQLException; -public class InteractionClothing extends HabboItem { +public class InteractionClothing extends RoomItem { public InteractionClothing(ResultSet set, Item baseItem) throws SQLException { super(set, baseItem); } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionColorPlate.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionColorPlate.java index 9d181a92..d530ba7c 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionColorPlate.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionColorPlate.java @@ -2,7 +2,7 @@ package com.eu.habbo.habbohotel.items.interactions; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import lombok.extern.slf4j.Slf4j; import java.sql.ResultSet; diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionColorWheel.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionColorWheel.java index 2f57bec8..34d511f5 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionColorWheel.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionColorWheel.java @@ -4,8 +4,8 @@ import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.messages.outgoing.rooms.items.ItemUpdateMessageComposer; import com.eu.habbo.threading.runnables.RandomDiceNumber; @@ -13,7 +13,7 @@ import com.eu.habbo.threading.runnables.RandomDiceNumber; import java.sql.ResultSet; import java.sql.SQLException; -public class InteractionColorWheel extends HabboItem { +public class InteractionColorWheel extends RoomItem { private Runnable rollTaks; public InteractionColorWheel(ResultSet set, Item baseItem) throws SQLException { diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionCrackable.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionCrackable.java index 2ccdb52e..e6b6664e 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionCrackable.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionCrackable.java @@ -6,10 +6,10 @@ import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.items.CrackableReward; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.habbohotel.users.HabboGender; -import com.eu.habbo.habbohotel.users.HabboItem; import com.eu.habbo.habbohotel.users.subscriptions.SubscriptionHabboClub; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.threading.runnables.CrackableExplode; @@ -18,7 +18,7 @@ import com.eu.habbo.util.pathfinding.Rotation; import java.sql.ResultSet; import java.sql.SQLException; -public class InteractionCrackable extends HabboItem { +public class InteractionCrackable extends RoomItem { private final Object lock = new Object(); public boolean cracked = false; protected int ticks = 0; @@ -69,8 +69,8 @@ public class InteractionCrackable extends HabboItem { if (this.cracked) return; - if (this.userRequiredToBeAdjacent() && client.getHabbo().getRoomUnit().getCurrentLocation().distance(room.getLayout().getTile(this.getX(), this.getY())) > 1.5) { - client.getHabbo().getRoomUnit().setGoalLocation(room.getLayout().getTileInFront(room.getLayout().getTile(this.getX(), this.getY()), Rotation.Calculate(client.getHabbo().getRoomUnit().getX(), client.getHabbo().getRoomUnit().getY(), this.getX(), this.getY()))); + if (this.userRequiredToBeAdjacent() && client.getHabbo().getRoomUnit().getCurrentPosition().distance(room.getLayout().getTile(this.getX(), this.getY())) > 1.5) { + client.getHabbo().getRoomUnit().setGoalLocation(room.getLayout().getTileInFront(room.getLayout().getTile(this.getX(), this.getY()), Rotation.Calculate(client.getHabbo().getRoomUnit().getCurrentPosition().getX(), client.getHabbo().getRoomUnit().getCurrentPosition().getY(), this.getX(), this.getY()))); return; } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionCustomValues.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionCustomValues.java index 8f39af73..ed124f97 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionCustomValues.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionCustomValues.java @@ -3,8 +3,8 @@ package com.eu.habbo.habbohotel.items.interactions; import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.ServerMessage; import gnu.trove.map.hash.THashMap; @@ -12,7 +12,7 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.util.Map; -public abstract class InteractionCustomValues extends HabboItem { +public abstract class InteractionCustomValues extends RoomItem { public final THashMap values = new THashMap<>(); public InteractionCustomValues(ResultSet set, Item baseItem, THashMap defaultValues) throws SQLException { diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionDefault.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionDefault.java index 255054ba..b0a17a3d 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionDefault.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionDefault.java @@ -3,10 +3,15 @@ package com.eu.habbo.habbohotel.items.interactions; import com.eu.habbo.habbohotel.bots.Bot; import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.items.Item; -import com.eu.habbo.habbohotel.rooms.*; +import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.RoomLayout; +import com.eu.habbo.habbohotel.rooms.RoomTile; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnitType; +import com.eu.habbo.habbohotel.rooms.entities.units.types.RoomAvatar; import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.habbohotel.users.HabboGender; -import com.eu.habbo.habbohotel.users.HabboItem; import com.eu.habbo.habbohotel.wired.WiredEffectType; import com.eu.habbo.messages.ServerMessage; import lombok.extern.slf4j.Slf4j; @@ -15,7 +20,7 @@ import java.sql.ResultSet; import java.sql.SQLException; @Slf4j -public class InteractionDefault extends HabboItem { +public class InteractionDefault extends RoomItem { public InteractionDefault(ResultSet set, Item baseItem) throws SQLException { super(set, baseItem); @@ -48,7 +53,7 @@ public class InteractionDefault extends HabboItem { super.onMove(room, oldLocation, newLocation); if (room.getItemsAt(oldLocation).stream().noneMatch(item -> item.getClass().isAssignableFrom(InteractionRoller.class))) { - for (RoomUnit unit : room.getRoomUnits()) { + for (RoomUnit unit : room.getRoomUnitManager().getCurrentRoomUnits().values()) { if (!oldLocation.unitIsOnFurniOnTile(unit, this.getBaseItem())) continue; // If the unit was previously on the furni... if (newLocation.unitIsOnFurniOnTile(unit, this.getBaseItem())) continue; // but is not anymore... @@ -100,39 +105,42 @@ public class InteractionDefault extends HabboItem { public void onWalkOn(RoomUnit roomUnit, Room room, Object[] objects) throws Exception { super.onWalkOn(roomUnit, room, objects); - if (roomUnit == null || (this.getBaseItem().getEffectF() == 0 && this.getBaseItem().getEffectM() == 0)) return; - if (roomUnit.getRoomUnitType().equals(RoomUnitType.USER)) { + if (roomUnit == null || (this.getBaseItem().getEffectF() == 0 && this.getBaseItem().getEffectM() == 0)) { + return; + } + + if (roomUnit.getRoomUnitType().equals(RoomUnitType.HABBO)) { Habbo habbo = room.getHabbo(roomUnit); if (habbo == null) return; if (habbo.getHabboInfo().getGender().equals(HabboGender.M) && this.getBaseItem().getEffectM() > 0 && habbo.getRoomUnit().getEffectId() != this.getBaseItem().getEffectM()) { - if (roomUnit.getEffectId() > 0) - roomUnit.setPreviousEffectId(roomUnit.getEffectId(), roomUnit.getPreviousEffectEndTimestamp()); + if (((RoomAvatar) roomUnit).getEffectId() > 0) + roomUnit.setPreviousEffectId(((RoomAvatar) roomUnit).getEffectId(), roomUnit.getPreviousEffectEndTimestamp()); room.giveEffect(habbo, this.getBaseItem().getEffectM(), -1); return; } if (habbo.getHabboInfo().getGender().equals(HabboGender.F) && this.getBaseItem().getEffectF() > 0 && habbo.getRoomUnit().getEffectId() != this.getBaseItem().getEffectF()) { - if (roomUnit.getEffectId() > 0) - roomUnit.setPreviousEffectId(roomUnit.getEffectId(), roomUnit.getPreviousEffectEndTimestamp()); + if (((RoomAvatar) roomUnit).getEffectId() > 0) + roomUnit.setPreviousEffectId(((RoomAvatar) roomUnit).getEffectId(), roomUnit.getPreviousEffectEndTimestamp()); room.giveEffect(habbo, this.getBaseItem().getEffectF(), -1); } } else if (roomUnit.getRoomUnitType().equals(RoomUnitType.BOT)) { - Bot bot = room.getBot(roomUnit); + Bot bot = room.getRoomUnitManager().getRoomBotById(roomUnit.getVirtualId()); if (bot == null) return; - if (bot.getGender().equals(HabboGender.M) && this.getBaseItem().getEffectM() > 0 && roomUnit.getEffectId() != this.getBaseItem().getEffectM()) { - if (roomUnit.getEffectId() > 0) - roomUnit.setPreviousEffectId(roomUnit.getEffectId(), roomUnit.getPreviousEffectEndTimestamp()); + if (bot.getGender().equals(HabboGender.M) && this.getBaseItem().getEffectM() > 0 && ((RoomAvatar) roomUnit).getEffectId() != this.getBaseItem().getEffectM()) { + if (((RoomAvatar) roomUnit).getEffectId() > 0) + roomUnit.setPreviousEffectId(((RoomAvatar) roomUnit).getEffectId(), roomUnit.getPreviousEffectEndTimestamp()); room.giveEffect(bot.getRoomUnit(), this.getBaseItem().getEffectM(), -1); return; } - if (bot.getGender().equals(HabboGender.F) && this.getBaseItem().getEffectF() > 0 && roomUnit.getEffectId() != this.getBaseItem().getEffectF()) { - if (roomUnit.getEffectId() > 0) - roomUnit.setPreviousEffectId(roomUnit.getEffectId(), roomUnit.getPreviousEffectEndTimestamp()); + if (bot.getGender().equals(HabboGender.F) && this.getBaseItem().getEffectF() > 0 && ((RoomAvatar) roomUnit).getEffectId() != this.getBaseItem().getEffectF()) { + if (((RoomAvatar) roomUnit).getEffectId() > 0) + roomUnit.setPreviousEffectId(((RoomAvatar) roomUnit).getEffectId(), roomUnit.getPreviousEffectEndTimestamp()); room.giveEffect(bot.getRoomUnit(), this.getBaseItem().getEffectF(), -1); } } @@ -150,7 +158,7 @@ public class InteractionDefault extends HabboItem { if (objects != null && objects.length == 2) { if (objects[0] instanceof RoomTile goalTile && objects[1] instanceof RoomTile) { - HabboItem topItem = room.getTopItemAt(goalTile.getX(), goalTile.getY(), (objects[0] != objects[1]) ? this : null); + RoomItem topItem = room.getTopItemAt(goalTile.getX(), goalTile.getY(), (objects[0] != objects[1]) ? this : null); if (topItem != null && (topItem.getBaseItem().getEffectM() == this.getBaseItem().getEffectM() || topItem.getBaseItem().getEffectF() == this.getBaseItem().getEffectF())) { return; @@ -167,7 +175,7 @@ public class InteractionDefault extends HabboItem { } } - if (roomUnit.getRoomUnitType().equals(RoomUnitType.USER)) { + if (roomUnit.getRoomUnitType().equals(RoomUnitType.HABBO)) { Habbo habbo = room.getHabbo(roomUnit); if (habbo != null) { @@ -182,7 +190,7 @@ public class InteractionDefault extends HabboItem { } } } else if (roomUnit.getRoomUnitType().equals(RoomUnitType.BOT)) { - Bot bot = room.getBot(roomUnit); + Bot bot = room.getRoomUnitManager().getRoomBotById(roomUnit.getVirtualId()); if (bot != null) { if (bot.getGender().equals(HabboGender.M) && this.getBaseItem().getEffectM() > 0) { @@ -204,7 +212,7 @@ public class InteractionDefault extends HabboItem { if (!habbo.getHabboStats().isRentingSpace()) return false; - HabboItem rentSpace = room.getHabboItem(habbo.getHabboStats().getRentedItemId()); + RoomItem rentSpace = room.getHabboItem(habbo.getHabboStats().getRentedItemId()); return rentSpace != null && RoomLayout.squareInSquare(RoomLayout.getRectangle(rentSpace.getX(), rentSpace.getY(), rentSpace.getBaseItem().getWidth(), rentSpace.getBaseItem().getLength(), rentSpace.getRotation()), RoomLayout.getRectangle(this.getX(), this.getY(), this.getBaseItem().getWidth(), this.getBaseItem().getLength(), this.getRotation())); diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionDice.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionDice.java index 896cf046..6a9cdffe 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionDice.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionDice.java @@ -5,8 +5,8 @@ import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomLayout; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.plugin.events.furniture.FurnitureDiceRolledEvent; import com.eu.habbo.threading.runnables.RandomDiceNumber; @@ -14,7 +14,7 @@ import com.eu.habbo.threading.runnables.RandomDiceNumber; import java.sql.ResultSet; import java.sql.SQLException; -public class InteractionDice extends HabboItem { +public class InteractionDice extends RoomItem { public InteractionDice(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { super(id, userId, item, extradata, limitedStack, limitedSells); } @@ -46,7 +46,7 @@ public class InteractionDice extends HabboItem { super.onClick(client, room, objects); if (client != null) { - if (RoomLayout.tilesAdjecent(room.getLayout().getTile(this.getX(), this.getY()), client.getHabbo().getRoomUnit().getCurrentLocation())) { + if (RoomLayout.tilesAdjecent(room.getLayout().getTile(this.getX(), this.getY()), client.getHabbo().getRoomUnit().getCurrentPosition())) { if (!this.getExtradata().equalsIgnoreCase("-1")) { FurnitureDiceRolledEvent event = Emulator.getPluginManager().fireEvent(new FurnitureDiceRolledEvent(this, client.getHabbo(), -1)); diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionEffectGate.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionEffectGate.java index eb0e8b19..d4138670 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionEffectGate.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionEffectGate.java @@ -5,7 +5,8 @@ import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.interfaces.ConditionalGate; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.types.RoomHabbo; import com.eu.habbo.threading.runnables.CloseGate; import java.sql.ResultSet; @@ -43,17 +44,16 @@ public class InteractionEffectGate extends InteractionDefault implements Conditi @Override public boolean canWalkOn(RoomUnit roomUnit, Room room, Object[] objects) { - if (roomUnit == null || room == null) + if (roomUnit == null || room == null || !(roomUnit instanceof RoomHabbo roomHabbo)) return false; String customparams = this.getBaseItem().getCustomParams().trim(); if (!customparams.isEmpty()) { - return Arrays.asList(customparams.split(";")) - .contains(String.valueOf(roomUnit.getEffectId())); + return Arrays.asList(customparams.split(";")).contains(String.valueOf(roomHabbo.getEffectId())); } - return defaultAllowedEnables.contains(roomUnit.getEffectId()); + return defaultAllowedEnables.contains(roomHabbo.getEffectId()); } @Override diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionEffectGiver.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionEffectGiver.java index 4d8d011a..b662f8e8 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionEffectGiver.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionEffectGiver.java @@ -5,8 +5,8 @@ import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomLayout; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import java.sql.ResultSet; import java.sql.SQLException; @@ -26,8 +26,8 @@ public class InteractionEffectGiver extends InteractionDefault { public void onClick(GameClient client, Room room, Object[] objects) throws Exception { super.onClick(client, room, objects); - if (RoomLayout.tilesAdjecent(client.getHabbo().getRoomUnit().getCurrentLocation(), room.getLayout().getTile(this.getX(), this.getY())) || - (client.getHabbo().getRoomUnit().getCurrentLocation().getX() == this.getX() && client.getHabbo().getRoomUnit().getCurrentLocation().getY() == this.getY())) { + if (RoomLayout.tilesAdjecent(client.getHabbo().getRoomUnit().getCurrentPosition(), room.getLayout().getTile(this.getX(), this.getY())) || + (client.getHabbo().getRoomUnit().getCurrentPosition().getX() == this.getX() && client.getHabbo().getRoomUnit().getCurrentPosition().getY() == this.getY())) { this.handle(room, client.getHabbo().getRoomUnit()); } } @@ -37,7 +37,7 @@ public class InteractionEffectGiver extends InteractionDefault { if (!this.getExtradata().equals("0")) return; - HabboItem instance = this; + RoomItem instance = this; room.giveEffect(roomUnit, this.getBaseItem().getRandomVendingItem(), -1); if (this.getBaseItem().getStateCount() > 1) { diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionEffectTile.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionEffectTile.java index ac10dcc7..e03b75a5 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionEffectTile.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionEffectTile.java @@ -4,8 +4,8 @@ import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.bots.Bot; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.rooms.RoomUnitType; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnitType; import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.habbohotel.users.HabboGender; import com.eu.habbo.habbohotel.wired.WiredHandler; @@ -51,14 +51,14 @@ public class InteractionEffectTile extends InteractionPressurePlate { public void onWalkOn(RoomUnit roomUnit, Room room, Object[] objects) throws Exception { super.onWalkOn(roomUnit, room, objects); - if (roomUnit.getRoomUnitType() == RoomUnitType.USER) { + if (roomUnit.getRoomUnitType() == RoomUnitType.HABBO) { Habbo habbo = room.getHabbo(roomUnit); if (habbo != null) { this.giveEffect(room, roomUnit, habbo.getHabboInfo().getGender()); } } else if (roomUnit.getRoomUnitType() == RoomUnitType.BOT) { - Bot bot = room.getBot(roomUnit); + Bot bot = room.getRoomUnitManager().getRoomBotById(roomUnit.getVirtualId()); if (bot != null) { this.giveEffect(room, roomUnit, bot.getGender()); diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionEffectVendingMachine.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionEffectVendingMachine.java index 49261af4..3cb7e9de 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionEffectVendingMachine.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionEffectVendingMachine.java @@ -2,7 +2,7 @@ package com.eu.habbo.habbohotel.items.interactions; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.types.RoomAvatar; import java.sql.ResultSet; import java.sql.SQLException; @@ -19,7 +19,7 @@ public class InteractionEffectVendingMachine extends InteractionVendingMachine { } @Override - public void giveVendingMachineItem(Room room, RoomUnit unit) { - room.giveEffect(unit, this.getBaseItem().getRandomVendingItem(), 30); + public void giveVendingMachineItem(Room room, RoomAvatar roomAvatar) { + room.giveEffect(roomAvatar, this.getBaseItem().getRandomVendingItem(), 30); } } \ No newline at end of file diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionEffectVendingMachineNoSides.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionEffectVendingMachineNoSides.java index 84f91edc..59d8e0f2 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionEffectVendingMachineNoSides.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionEffectVendingMachineNoSides.java @@ -3,7 +3,7 @@ package com.eu.habbo.habbohotel.items.interactions; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.types.RoomAvatar; import gnu.trove.set.hash.THashSet; import java.sql.ResultSet; @@ -21,8 +21,8 @@ public class InteractionEffectVendingMachineNoSides extends InteractionVendingMa } @Override - public void giveVendingMachineItem(Room room, RoomUnit unit) { - room.giveEffect(unit, this.getBaseItem().getRandomVendingItem(), 30); + public void giveVendingMachineItem(Room room, RoomAvatar roomAvatar) { + room.giveEffect(roomAvatar, this.getBaseItem().getRandomVendingItem(), 30); } @Override diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionExternalImage.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionExternalImage.java index f6fa36e8..7be45959 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionExternalImage.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionExternalImage.java @@ -3,14 +3,14 @@ package com.eu.habbo.habbohotel.items.interactions; import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.ServerMessage; import java.sql.ResultSet; import java.sql.SQLException; -public class InteractionExternalImage extends HabboItem { +public class InteractionExternalImage extends RoomItem { public InteractionExternalImage(ResultSet set, Item baseItem) throws SQLException { super(set, baseItem); } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionFXBox.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionFXBox.java index daf5ab50..59bcf230 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionFXBox.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionFXBox.java @@ -5,7 +5,7 @@ import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.users.HabboGender; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.outgoing.rooms.items.RemoveFloorItemComposer; import com.eu.habbo.threading.runnables.QueryDeleteHabboItem; @@ -55,7 +55,7 @@ public class InteractionFXBox extends InteractionDefault { this.setExtradata("1"); room.updateItemState(this); room.removeHabboItem(this); - HabboItem item = this; + RoomItem item = this; Emulator.getThreading().run(() -> { new QueryDeleteHabboItem(item.getId()).run(); room.sendComposer(new RemoveFloorItemComposer(item).compose()); diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionFireworks.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionFireworks.java index 22f4071d..6fa14604 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionFireworks.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionFireworks.java @@ -7,7 +7,7 @@ import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomLayout; import com.eu.habbo.habbohotel.rooms.RoomTile; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.habbohotel.wired.WiredEffectType; import com.eu.habbo.threading.runnables.RoomUnitWalkToLocation; @@ -71,12 +71,12 @@ public class InteractionFireworks extends InteractionDefault { if (!this.canToggle(client.getHabbo(), room)) { RoomTile closestTile = null; for (RoomTile tile : room.getLayout().getTilesAround(room.getLayout().getTile(this.getX(), this.getY()))) { - if (tile.isWalkable() && (closestTile == null || closestTile.distance(client.getHabbo().getRoomUnit().getCurrentLocation()) > tile.distance(client.getHabbo().getRoomUnit().getCurrentLocation()))) { + if (tile.isWalkable() && (closestTile == null || closestTile.distance(client.getHabbo().getRoomUnit().getCurrentPosition()) > tile.distance(client.getHabbo().getRoomUnit().getCurrentPosition()))) { closestTile = tile; } } - if (closestTile != null && !closestTile.equals(client.getHabbo().getRoomUnit().getCurrentLocation())) { + if (closestTile != null && !closestTile.equals(client.getHabbo().getRoomUnit().getCurrentPosition())) { List onSuccess = new ArrayList<>(); onSuccess.add(() -> { try { @@ -117,7 +117,7 @@ public class InteractionFireworks extends InteractionDefault { public boolean canToggle(Habbo habbo, Room room) { return room.hasRights(habbo) || RoomLayout.tilesAdjecent( room.getLayout().getTile(this.getX(), this.getY()), - habbo.getRoomUnit().getCurrentLocation() + habbo.getRoomUnit().getCurrentPosition() ); } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionGate.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionGate.java index 9646940b..c0fdc759 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionGate.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionGate.java @@ -4,15 +4,15 @@ import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.wired.WiredEffectType; import com.eu.habbo.messages.ServerMessage; import java.sql.ResultSet; import java.sql.SQLException; -public class InteractionGate extends HabboItem { +public class InteractionGate extends RoomItem { public InteractionGate(ResultSet set, Item baseItem) throws SQLException { super(set, baseItem); } @@ -46,7 +46,7 @@ public class InteractionGate extends HabboItem { // If a Habbo is standing on a tile occupied by the gate, the gate shouldn't open/close for (RoomTile tile : room.getLayout().getTilesAt(room.getLayout().getTile(this.getX(), this.getY()), this.getBaseItem().getWidth(), this.getBaseItem().getLength(), this.getRotation())) - if (room.hasHabbosAt(tile.getX(), tile.getY())) + if (room.getRoomUnitManager().hasHabbosAt(tile)) return; // Gate closed = 0, open = 1 diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionGift.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionGift.java index 712c6c4d..42bc59a1 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionGift.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionGift.java @@ -4,8 +4,8 @@ import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.ServerMessage; import gnu.trove.set.hash.THashSet; import lombok.Getter; @@ -15,7 +15,7 @@ import java.sql.ResultSet; import java.sql.SQLException; @Slf4j -public class InteractionGift extends HabboItem { +public class InteractionGift extends RoomItem { public boolean explode = false; private int[] itemId; @Getter @@ -121,8 +121,8 @@ public class InteractionGift extends HabboItem { } } - public THashSet loadItems() { - THashSet items = new THashSet<>(); + public THashSet loadItems() { + THashSet items = new THashSet<>(); for (int anItemId : this.itemId) { if (anItemId == 0) continue; diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionGuildFurni.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionGuildFurni.java index 3ba1afc6..cc34a193 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionGuildFurni.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionGuildFurni.java @@ -4,7 +4,7 @@ import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.guilds.Guild; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.messages.ServerMessage; import gnu.trove.set.hash.THashSet; diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionGuildGate.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionGuildGate.java index 7e836dab..f7a5d4b0 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionGuildGate.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionGuildGate.java @@ -7,7 +7,7 @@ import com.eu.habbo.habbohotel.items.interactions.interfaces.ConditionalGate; import com.eu.habbo.habbohotel.permissions.Permission; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.threading.runnables.CloseGate; diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionGymEquipment.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionGymEquipment.java index 008b4279..307f2fd6 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionGymEquipment.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionGymEquipment.java @@ -2,13 +2,16 @@ package com.eu.habbo.habbohotel.items.interactions; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.achievements.AchievementManager; -import com.eu.habbo.habbohotel.bots.Bot; import com.eu.habbo.habbohotel.items.ICycleable; import com.eu.habbo.habbohotel.items.Item; -import com.eu.habbo.habbohotel.rooms.*; +import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.RoomTile; +import com.eu.habbo.habbohotel.rooms.entities.RoomRotation; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnitType; import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.habbohotel.users.HabboGender; -import com.eu.habbo.habbohotel.users.HabboItem; import java.sql.ResultSet; import java.sql.SQLException; @@ -27,7 +30,7 @@ public class InteractionGymEquipment extends InteractionEffectTile implements IC @Override public boolean canWalkOn(RoomUnit roomUnit, Room room, Object[] objects) { - return this.roomUnitId == -1 && super.canWalkOn(roomUnit, room, objects) && (roomUnit.getRoomUnitType().equals(RoomUnitType.USER) || roomUnit.getRoomUnitType().equals(RoomUnitType.BOT)); + return this.roomUnitId == -1 && super.canWalkOn(roomUnit, room, objects) && (roomUnit.getRoomUnitType().equals(RoomUnitType.HABBO) || roomUnit.getRoomUnitType().equals(RoomUnitType.BOT)); } @Override @@ -40,12 +43,12 @@ public class InteractionGymEquipment extends InteractionEffectTile implements IC super.onWalkOn(roomUnit, room, objects); if (this.forceRotation()) { - roomUnit.setRotation(RoomUserRotation.fromValue(this.getRotation())); + roomUnit.setRotation(RoomRotation.fromValue(this.getRotation())); roomUnit.setCanRotate(false); } - this.roomUnitId = roomUnit.getId(); + this.roomUnitId = roomUnit.getVirtualId(); - if (roomUnit.getRoomUnitType() == RoomUnitType.USER) { + if (roomUnit.getRoomUnitType() == RoomUnitType.HABBO) { Habbo habbo = room.getHabbo(roomUnit); if (habbo != null) { @@ -64,7 +67,7 @@ public class InteractionGymEquipment extends InteractionEffectTile implements IC if (roomUnit != null) { Habbo habbo = room.getHabbo(roomUnit); - HabboItem topItem = room.getTopItemAt(roomUnit.getCurrentLocation().getX(), roomUnit.getCurrentLocation().getY()); + RoomItem topItem = room.getTopItemAt(roomUnit.getCurrentPosition().getX(), roomUnit.getCurrentPosition().getY()); int nextEffectM = 0; int nextEffectF = 0; int nextEffectDuration = -1; @@ -126,12 +129,12 @@ public class InteractionGymEquipment extends InteractionEffectTile implements IC super.setRotation(rotation); if (this.forceRotation() && this.roomUnitId != -1) { - Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(this.getRoomId()); + Room room = Emulator.getGameEnvironment().getRoomManager().getActiveRoomById(this.getRoomId()); if (room != null) { RoomUnit roomUnit = this.getCurrentRoomUnit(room); if (roomUnit != null) { - roomUnit.setRotation(RoomUserRotation.fromValue(rotation)); + roomUnit.setRotation(RoomRotation.fromValue(rotation)); room.updateRoomUnit(roomUnit); } } @@ -172,16 +175,6 @@ public class InteractionGymEquipment extends InteractionEffectTile implements IC } private RoomUnit getCurrentRoomUnit(Room room) { - Habbo habbo = room.getHabboByRoomUnitId(this.roomUnitId); - if (habbo != null) { - return habbo.getRoomUnit(); - } else { - Bot bot = room.getBotByRoomUnitId(this.roomUnitId); - if (bot != null) { - return bot.getRoomUnit(); - } - } - - return null; + return room.getRoomUnitManager().getCurrentRoomUnits().get(this.roomUnitId); } } \ No newline at end of file diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionHanditem.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionHanditem.java index 7c7599f0..181698a7 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionHanditem.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionHanditem.java @@ -5,8 +5,10 @@ import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomLayout; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.types.RoomAvatar; +import com.eu.habbo.messages.outgoing.rooms.users.CarryObjectMessageComposer; import java.sql.ResultSet; import java.sql.SQLException; @@ -24,8 +26,8 @@ public class InteractionHanditem extends InteractionDefault { public void onClick(GameClient client, Room room, Object[] objects) throws Exception { super.onClick(client, room, objects); - if (RoomLayout.tilesAdjecent(client.getHabbo().getRoomUnit().getCurrentLocation(), room.getLayout().getTile(this.getX(), this.getY())) || - (client.getHabbo().getRoomUnit().getCurrentLocation().getX() == this.getX() && client.getHabbo().getRoomUnit().getCurrentLocation().getY() == this.getY())) { + if (RoomLayout.tilesAdjecent(client.getHabbo().getRoomUnit().getCurrentPosition(), room.getLayout().getTile(this.getX(), this.getY())) || + (client.getHabbo().getRoomUnit().getCurrentPosition().getX() == this.getX() && client.getHabbo().getRoomUnit().getCurrentPosition().getY() == this.getY())) { this.handle(room, client.getHabbo().getRoomUnit()); } } @@ -35,8 +37,13 @@ public class InteractionHanditem extends InteractionDefault { if (!this.getExtradata().equals("0")) return; - HabboItem instance = this; - room.giveHandItem(roomUnit, this.getBaseItem().getRandomVendingItem()); + if(!(roomUnit instanceof RoomAvatar roomAvatar)) { + return; + } + + RoomItem instance = this; + roomAvatar.setHandItem(this.getBaseItem().getRandomVendingItem()); + room.sendComposer(new CarryObjectMessageComposer(roomAvatar).compose()); if (this.getBaseItem().getStateCount() > 1) { this.setExtradata("1"); diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionHanditemTile.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionHanditemTile.java index aa1eb152..13e5d5d6 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionHanditemTile.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionHanditemTile.java @@ -3,7 +3,7 @@ package com.eu.habbo.habbohotel.items.interactions; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import java.sql.ResultSet; import java.sql.SQLException; @@ -21,7 +21,7 @@ public class InteractionHanditemTile extends InteractionHanditem { public void onWalkOn(RoomUnit roomUnit, Room room, Object[] objects) { InteractionHanditemTile instance = this; Emulator.getThreading().run(() -> { - if (roomUnit.getCurrentLocation().getX() == instance.getX() && roomUnit.getCurrentLocation().getY() == instance.getY()) { + if (roomUnit.getCurrentPosition().getX() == instance.getX() && roomUnit.getCurrentPosition().getY() == instance.getY()) { instance.handle(room, roomUnit); } }, 3000); diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionHopper.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionHopper.java index f20c26d6..9e3ab63a 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionHopper.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionHopper.java @@ -5,15 +5,15 @@ import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.threading.runnables.hopper.HopperActionOne; import java.sql.ResultSet; import java.sql.SQLException; -public class InteractionHopper extends HabboItem { +public class InteractionHopper extends RoomItem { public InteractionHopper(ResultSet set, Item baseItem) throws SQLException { super(set, baseItem); this.setExtradata("0"); @@ -52,7 +52,7 @@ public class InteractionHopper extends HabboItem { super.onClick(client, room, objects); if (room != null) { - RoomTile loc = HabboItem.getSquareInFront(room.getLayout(), this); + RoomTile loc = RoomItem.getSquareInFront(room.getLayout(), this); if (loc != null) { if (this.canUseTeleport(client, loc, room)) { client.getHabbo().getRoomUnit().setTeleporting(true); @@ -77,7 +77,7 @@ public class InteractionHopper extends HabboItem { if (!this.getExtradata().equals("0")) { this.setExtradata("0"); - Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(this.getRoomId()); + Room room = Emulator.getGameEnvironment().getRoomManager().getActiveRoomById(this.getRoomId()); if (room != null) { room.updateItemState(this); } @@ -86,16 +86,22 @@ public class InteractionHopper extends HabboItem { } protected boolean canUseTeleport(GameClient client, RoomTile front, Room room) { - if (client.getHabbo().getRoomUnit().getX() != front.getX()) + if (client.getHabbo().getRoomUnit().getCurrentPosition().getX() != front.getX()) return false; - if (client.getHabbo().getRoomUnit().getY() != front.getY()) + if (client.getHabbo().getRoomUnit().getCurrentPosition().getY() != front.getY()) return false; if (client.getHabbo().getRoomUnit().isTeleporting()) return false; - if (!room.getHabbosAt(this.getX(), this.getY()).isEmpty()) + RoomTile tile = room.getLayout().getTile(this.getX(), this.getY()); + + if(tile == null) { + return false; + } + + if (room.getRoomUnitManager().hasHabbosAt(tile)) return false; return this.getExtradata().equals("0"); diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionInformationTerminal.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionInformationTerminal.java index d8e5fa5c..a8c215f7 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionInformationTerminal.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionInformationTerminal.java @@ -2,7 +2,7 @@ package com.eu.habbo.habbohotel.items.interactions; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.messages.outgoing.habboway.nux.InClientLinkMessageComposer; import gnu.trove.map.hash.THashMap; diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionJukeBox.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionJukeBox.java index dec7b52a..32550f6e 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionJukeBox.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionJukeBox.java @@ -3,14 +3,14 @@ package com.eu.habbo.habbohotel.items.interactions; import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.ServerMessage; import java.sql.ResultSet; import java.sql.SQLException; -public class InteractionJukeBox extends HabboItem { +public class InteractionJukeBox extends RoomItem { public InteractionJukeBox(ResultSet set, Item baseItem) throws SQLException { super(set, baseItem); } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionLoveLock.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionLoveLock.java index 2369b288..c676a9a4 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionLoveLock.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionLoveLock.java @@ -6,9 +6,9 @@ import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomLayout; import com.eu.habbo.habbohotel.rooms.RoomTile; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.messages.outgoing.rooms.items.lovelock.FriendFurniStartConfirmationMessageComposer; @@ -16,7 +16,7 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.util.Calendar; -public class InteractionLoveLock extends HabboItem { +public class InteractionLoveLock extends RoomItem { public int userOneId; public int userTwoId; @@ -77,13 +77,13 @@ public class InteractionLoveLock extends HabboItem { if (client == null) return; - if (RoomLayout.tilesAdjecent(client.getHabbo().getRoomUnit().getCurrentLocation(), room.getLayout().getTile(this.getX(), this.getY()))) { + if (RoomLayout.tilesAdjecent(client.getHabbo().getRoomUnit().getCurrentPosition(), room.getLayout().getTile(this.getX(), this.getY()))) { if (this.userOneId == 0) { this.userOneId = client.getHabbo().getHabboInfo().getId(); client.sendResponse(new FriendFurniStartConfirmationMessageComposer(this)); } else { if (this.userOneId != client.getHabbo().getHabboInfo().getId()) { - Habbo habbo = room.getHabbo(this.userOneId); + Habbo habbo = room.getRoomUnitManager().getRoomHabboById(this.userOneId); if (habbo != null) { this.userTwoId = client.getHabbo().getHabboInfo().getId(); @@ -96,7 +96,7 @@ public class InteractionLoveLock extends HabboItem { public boolean lock(Habbo userOne, Habbo userTwo, Room room) { RoomTile tile = room.getLayout().getTile(this.getX(), this.getY()); - if (RoomLayout.tilesAdjecent(userOne.getRoomUnit().getCurrentLocation(), tile) && RoomLayout.tilesAdjecent(userTwo.getRoomUnit().getCurrentLocation(), tile)) { + if (RoomLayout.tilesAdjecent(userOne.getRoomUnit().getCurrentPosition(), tile) && RoomLayout.tilesAdjecent(userTwo.getRoomUnit().getCurrentPosition(), tile)) { String data = "1"; data += "\t"; data += userOne.getHabboInfo().getUsername(); diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionMannequin.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionMannequin.java index 84adbbb1..18a26b93 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionMannequin.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionMannequin.java @@ -4,8 +4,8 @@ import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.habbohotel.users.clothingvalidation.ClothingValidationManager; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.messages.outgoing.rooms.users.UserChangeMessageComposer; @@ -14,7 +14,7 @@ import com.eu.habbo.messages.outgoing.users.UserObjectComposer; import java.sql.ResultSet; import java.sql.SQLException; -public class InteractionMannequin extends HabboItem { +public class InteractionMannequin extends RoomItem { public InteractionMannequin(ResultSet set, Item baseItem) throws SQLException { super(set, baseItem); } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionMonsterCrackable.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionMonsterCrackable.java index 44f024db..9940030a 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionMonsterCrackable.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionMonsterCrackable.java @@ -33,7 +33,7 @@ public class InteractionMonsterCrackable extends InteractionCrackable implements @Override public void onClick(GameClient client, Room room, Object[] objects) throws Exception { - if (room.isPublicRoom()) this.respawn = true; + if (room.getRoomInfo().isPublicRoom()) this.respawn = true; super.onClick(client, room, objects); } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionMoodLight.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionMoodLight.java index 0830cad5..bd2c79cd 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionMoodLight.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionMoodLight.java @@ -4,14 +4,15 @@ import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomMoodlightData; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.messages.ServerMessage; +import gnu.trove.map.TIntObjectMap; import java.sql.ResultSet; import java.sql.SQLException; -public class InteractionMoodLight extends HabboItem { +public class InteractionMoodLight extends RoomItem { public InteractionMoodLight(ResultSet set, Item baseItem) throws SQLException { super(set, baseItem); } @@ -46,7 +47,7 @@ public class InteractionMoodLight extends HabboItem { @Override public void onPlace(Room room) { if (room != null) { - for (RoomMoodlightData data : room.getMoodlightData().valueCollection()) { + for (RoomMoodlightData data : ((TIntObjectMap) room.getRoomInfo().getMoodLightData()).valueCollection()) { if (data.isEnabled()) { this.setExtradata(data.toString()); this.needsUpdate(true); diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionMultiHeight.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionMultiHeight.java index ddce7f99..29582b62 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionMultiHeight.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionMultiHeight.java @@ -2,10 +2,14 @@ package com.eu.habbo.habbohotel.items.interactions; import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.items.Item; -import com.eu.habbo.habbohotel.rooms.*; +import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.RoomTile; +import com.eu.habbo.habbohotel.rooms.RoomUnitStatus; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnitType; import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.habbohotel.users.HabboGender; -import com.eu.habbo.habbohotel.users.HabboItem; import com.eu.habbo.habbohotel.wired.WiredEffectType; import com.eu.habbo.messages.ServerMessage; import gnu.trove.set.hash.THashSet; @@ -14,7 +18,7 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.util.Collection; -public class InteractionMultiHeight extends HabboItem { +public class InteractionMultiHeight extends RoomItem { public InteractionMultiHeight(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { super(id, userId, item, extradata, limitedStack, limitedSells); } @@ -53,7 +57,7 @@ public class InteractionMultiHeight extends HabboItem { } if (objects[0] instanceof Integer && room != null) { - HabboItem topItem = room.getTopItemAt(this.getX(), this.getY()); + RoomItem topItem = room.getTopItemAt(this.getX(), this.getY()); if (topItem != null && !topItem.equals(this)) { // multiheight items cannot change height even if there is a stackable item on top - no items allowed on top return; } @@ -76,7 +80,7 @@ public class InteractionMultiHeight extends HabboItem { THashSet occupiedTiles = room.getLayout().getTilesAt(room.getLayout().getTile(this.getX(), this.getY()), this.getBaseItem().getWidth(), this.getBaseItem().getLength(), this.getRotation()); for(RoomTile tile : occupiedTiles) { - Collection unitsOnItem = room.getRoomUnitsAt(room.getLayout().getTile(tile.getX(), tile.getY())); + Collection unitsOnItem = room.getRoomUnitManager().getRoomUnitsAt(room.getLayout().getTile(tile.getX(), tile.getY())); for (RoomUnit unit : unitsOnItem) { if (unit.hasStatus(RoomUnitStatus.MOVE) && unit.getGoalLocation() != tile) @@ -84,11 +88,11 @@ public class InteractionMultiHeight extends HabboItem { if (this.getBaseItem().allowSit() || unit.hasStatus(RoomUnitStatus.SIT)) { unit.setSitUpdate(true); - unit.statusUpdate(true); + unit.setStatusUpdateNeeded(true); } else { - unit.setZ(unit.getCurrentLocation().getStackHeight()); - unit.setPreviousLocationZ(unit.getZ()); - unit.statusUpdate(true); + unit.setCurrentZ(unit.getCurrentPosition().getStackHeight()); + unit.setPreviousLocationZ(unit.getCurrentZ()); + unit.setStatusUpdateNeeded(true); } } } @@ -105,7 +109,7 @@ public class InteractionMultiHeight extends HabboItem { if (roomUnit != null && (this.getBaseItem().getEffectF() > 0 || this.getBaseItem().getEffectM() > 0) - && roomUnit.getRoomUnitType().equals(RoomUnitType.USER)) { + && roomUnit.getRoomUnitType().equals(RoomUnitType.HABBO)) { Habbo habbo = room.getHabbo(roomUnit); if (habbo != null) { @@ -127,7 +131,7 @@ public class InteractionMultiHeight extends HabboItem { if (roomUnit != null && (this.getBaseItem().getEffectF() > 0 || this.getBaseItem().getEffectM() > 0) - && roomUnit.getRoomUnitType().equals(RoomUnitType.USER)) { + && roomUnit.getRoomUnitType().equals(RoomUnitType.HABBO)) { Habbo habbo = room.getHabbo(roomUnit); if (habbo != null) { diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionMusicDisc.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionMusicDisc.java index 39eb0b27..4781c84d 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionMusicDisc.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionMusicDisc.java @@ -2,8 +2,8 @@ package com.eu.habbo.habbohotel.items.interactions; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.ServerMessage; import lombok.extern.slf4j.Slf4j; @@ -11,7 +11,7 @@ import java.sql.ResultSet; import java.sql.SQLException; @Slf4j -public class InteractionMusicDisc extends HabboItem { +public class InteractionMusicDisc extends RoomItem { private int songId; diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionMuteArea.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionMuteArea.java index e5fbd80b..7199df40 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionMuteArea.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionMuteArea.java @@ -6,7 +6,7 @@ import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; import com.eu.habbo.habbohotel.rooms.RoomTileState; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.habbohotel.wired.WiredEffectType; import com.eu.habbo.messages.outgoing.rooms.items.ObjectDataUpdateMessageComposer; import com.eu.habbo.messages.outgoing.rooms.items.ObjectsMessageComposer; @@ -73,7 +73,7 @@ public class InteractionMuteArea extends InteractionCustomValues { } public boolean inSquare(RoomTile location) { - Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(this.getRoomId()); + Room room = Emulator.getGameEnvironment().getRoomManager().getActiveRoomById(this.getRoomId()); if(!this.values.get("state").equals("1")) return false; @@ -124,12 +124,12 @@ public class InteractionMuteArea extends InteractionCustomValues { if(effectItem != null) { TIntObjectMap ownerNames = TCollections.synchronizedMap(new TIntObjectHashMap<>(0)); ownerNames.put(-1, "System"); - THashSet items = new THashSet<>(); + THashSet items = new THashSet<>(); int id = 0; for(RoomTile tile : this.tiles) { id--; - HabboItem item = new InteractionDefault(id, -1, effectItem, "1", 0, 0); + RoomItem item = new InteractionDefault(id, -1, effectItem, "1", 0, 0); item.setX(tile.getX()); item.setY(tile.getY()); item.setZ(tile.relativeHeight()); @@ -138,7 +138,7 @@ public class InteractionMuteArea extends InteractionCustomValues { client.sendResponse(new ObjectsMessageComposer(ownerNames, items)); Emulator.getThreading().run(() -> { - for(HabboItem item : items) { + for(RoomItem item : items) { client.sendResponse(new RemoveFloorItemComposer(item, true)); } }, 3000); diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionObstacle.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionObstacle.java index a782efd5..b1627e31 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionObstacle.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionObstacle.java @@ -5,9 +5,15 @@ import com.eu.habbo.habbohotel.items.ICycleable; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.pets.HorsePet; import com.eu.habbo.habbohotel.pets.Pet; -import com.eu.habbo.habbohotel.rooms.*; +import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.RoomTile; +import com.eu.habbo.habbohotel.rooms.RoomTileState; +import com.eu.habbo.habbohotel.rooms.RoomUnitStatus; +import com.eu.habbo.habbohotel.rooms.entities.RoomEntity; +import com.eu.habbo.habbohotel.rooms.entities.RoomRotation; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; import com.eu.habbo.messages.ServerMessage; import gnu.trove.set.hash.THashSet; @@ -15,7 +21,7 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.util.Objects; -public class InteractionObstacle extends HabboItem implements ICycleable { +public class InteractionObstacle extends RoomItem implements ICycleable { private final THashSet middleTiles; @@ -91,21 +97,21 @@ public class InteractionObstacle extends HabboItem implements ICycleable { Habbo habbo = room.getHabbo(roomUnit); if (habbo == null) { - Pet pet = room.getPet(roomUnit); + Pet pet = room.getRoomUnitManager().getPetByRoomUnit(roomUnit); if (pet instanceof HorsePet && ((HorsePet) pet).getRider() != null) { if (roomUnit.getBodyRotation().getValue() % 2 == 0) { if (this.getRotation() == 2) { - if (roomUnit.getBodyRotation().equals(RoomUserRotation.WEST)) { - ((HorsePet) pet).getRider().getRoomUnit().setGoalLocation(room.getLayout().getTile((short) (roomUnit.getX() - 3), roomUnit.getY())); - } else if (roomUnit.getBodyRotation().equals(RoomUserRotation.EAST)) { - ((HorsePet) pet).getRider().getRoomUnit().setGoalLocation(room.getLayout().getTile((short) (roomUnit.getX() + 3), roomUnit.getY())); + if (roomUnit.getBodyRotation().equals(RoomRotation.WEST)) { + ((HorsePet) pet).getRider().getRoomUnit().setGoalLocation(room.getLayout().getTile((short) (roomUnit.getCurrentPosition().getX() - 3), roomUnit.getCurrentPosition().getY())); + } else if (roomUnit.getBodyRotation().equals(RoomRotation.EAST)) { + ((HorsePet) pet).getRider().getRoomUnit().setGoalLocation(room.getLayout().getTile((short) (roomUnit.getCurrentPosition().getX() + 3), roomUnit.getCurrentPosition().getY())); } } else if (this.getRotation() == 4) { - if (roomUnit.getBodyRotation().equals(RoomUserRotation.NORTH)) { - ((HorsePet) pet).getRider().getRoomUnit().setGoalLocation(room.getLayout().getTile(roomUnit.getX(), (short) (roomUnit.getY() - 3))); - } else if (roomUnit.getBodyRotation().equals(RoomUserRotation.SOUTH)) { - ((HorsePet) pet).getRider().getRoomUnit().setGoalLocation(room.getLayout().getTile(roomUnit.getX(), (short) (roomUnit.getY() + 3))); + if (roomUnit.getBodyRotation().equals(RoomRotation.NORTH)) { + ((HorsePet) pet).getRider().getRoomUnit().setGoalLocation(room.getLayout().getTile(roomUnit.getCurrentPosition().getX(), (short) (roomUnit.getCurrentPosition().getY() - 3))); + } else if (roomUnit.getBodyRotation().equals(RoomRotation.SOUTH)) { + ((HorsePet) pet).getRider().getRoomUnit().setGoalLocation(room.getLayout().getTile(roomUnit.getCurrentPosition().getX(), (short) (roomUnit.getCurrentPosition().getY() + 3))); } } } @@ -120,7 +126,7 @@ public class InteractionObstacle extends HabboItem implements ICycleable { Habbo habbo = room.getHabbo(roomUnit); if (habbo == null) { - Pet pet = room.getPet(roomUnit); + Pet pet = room.getRoomUnitManager().getPetByRoomUnit(roomUnit); if (pet instanceof HorsePet && ((HorsePet) pet).getRider() != null) { pet.getRoomUnit().removeStatus(RoomUnitStatus.JUMP); @@ -174,18 +180,24 @@ public class InteractionObstacle extends HabboItem implements ICycleable { } for(RoomTile tile : this.middleTiles) { - for(RoomUnit unit : tile.getUnits()) { + for(RoomEntity entity : tile.getEntities()) { + if(!(entity instanceof RoomUnit)) { + continue; + } + + RoomUnit unit = (RoomUnit) entity; + if(unit.getPath().size() == 0 && !unit.hasStatus(RoomUnitStatus.MOVE)) { if(unit.getBodyRotation().getValue() != this.getRotation() && Objects.requireNonNull(unit.getBodyRotation().getOpposite()).getValue() != this.getRotation()) continue; - RoomTile tileInfront = room.getLayout().getTileInFront(unit.getCurrentLocation(), unit.getBodyRotation().getValue()); - if(tileInfront.getState() != RoomTileState.INVALID && tileInfront.getState() != RoomTileState.BLOCKED && room.getRoomUnitsAt(tileInfront).size() == 0) { + RoomTile tileInfront = room.getLayout().getTileInFront(unit.getCurrentPosition(), unit.getBodyRotation().getValue()); + if(tileInfront.getState() != RoomTileState.INVALID && tileInfront.getState() != RoomTileState.BLOCKED && room.getRoomUnitManager().getRoomUnitsAt(tileInfront).size() == 0) { unit.setGoalLocation(tileInfront); } else { - RoomTile tileBehind = room.getLayout().getTileInFront(unit.getCurrentLocation(), Objects.requireNonNull(unit.getBodyRotation().getOpposite()).getValue()); - if(tileBehind.getState() != RoomTileState.INVALID && tileBehind.getState() != RoomTileState.BLOCKED && room.getRoomUnitsAt(tileBehind).size() == 0) { + RoomTile tileBehind = room.getLayout().getTileInFront(unit.getCurrentPosition(), Objects.requireNonNull(unit.getBodyRotation().getOpposite()).getValue()); + if(tileBehind.getState() != RoomTileState.INVALID && tileBehind.getState() != RoomTileState.BLOCKED && room.getRoomUnitManager().getRoomUnitsAt(tileBehind).size() == 0) { unit.setGoalLocation(tileBehind); } } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionOneWayGate.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionOneWayGate.java index d2f559cb..365a566c 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionOneWayGate.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionOneWayGate.java @@ -5,8 +5,8 @@ import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.wired.WiredHandler; import com.eu.habbo.habbohotel.wired.WiredTriggerType; import com.eu.habbo.messages.ServerMessage; @@ -18,7 +18,7 @@ import java.sql.SQLException; import java.util.ArrayList; import java.util.List; -public class InteractionOneWayGate extends HabboItem { +public class InteractionOneWayGate extends RoomItem { private boolean walkable = false; public InteractionOneWayGate(ResultSet set, Item baseItem) throws SQLException { @@ -76,48 +76,50 @@ public class InteractionOneWayGate extends HabboItem { if (unit == null) return; - if (tileInfront.getX() == unit.getX() && tileInfront.getY() == unit.getY()) { - if (!currentLocation.hasUnits()) { - List onSuccess = new ArrayList<>(); - List onFail = new ArrayList<>(); + if (tileInfront.getX() == unit.getCurrentPosition().getX()) { + if (tileInfront.getY() == unit.getCurrentPosition().getY()) { + if (!currentLocation.hasUnits()) { + List onSuccess = new ArrayList<>(); + List onFail = new ArrayList<>(); - onSuccess.add(() -> { - unit.setCanLeaveRoomByDoor(false); - walkable = this.getBaseItem().allowWalk(); - RoomTile tile = room.getLayout().getTileInFront(room.getLayout().getTile(this.getX(), this.getY()), this.getRotation() + 4); - unit.setGoalLocation(tile); - Emulator.getThreading().run(new RoomUnitWalkToLocation(unit, tile, room, onFail, onFail)); + onSuccess.add(() -> { + unit.setCanLeaveRoomByDoor(false); + walkable = this.getBaseItem().allowWalk(); + RoomTile tile = room.getLayout().getTileInFront(room.getLayout().getTile(this.getX(), this.getY()), this.getRotation() + 4); + unit.setGoalLocation(tile); + Emulator.getThreading().run(new RoomUnitWalkToLocation(unit, tile, room, onFail, onFail)); - Emulator.getThreading().run(() -> WiredHandler.handle(WiredTriggerType.WALKS_ON_FURNI, unit, room, new Object[]{this}), 500); - }); + Emulator.getThreading().run(() -> WiredHandler.handle(WiredTriggerType.WALKS_ON_FURNI, unit, room, new Object[]{this}), 500); + }); - onFail.add(() -> { - unit.setCanLeaveRoomByDoor(true); - walkable = this.getBaseItem().allowWalk(); + onFail.add(() -> { + unit.setCanLeaveRoomByDoor(true); + walkable = this.getBaseItem().allowWalk(); + room.updateTile(currentLocation); + room.sendComposer(new DiceValueMessageComposer(this.getId(), 0).compose()); + unit.removeOverrideTile(currentLocation); + }); + + walkable = true; room.updateTile(currentLocation); - room.sendComposer(new DiceValueMessageComposer(this.getId(), 0).compose()); - unit.removeOverrideTile(currentLocation); - }); + unit.addOverrideTile(currentLocation); + unit.setGoalLocation(currentLocation); + Emulator.getThreading().run(new RoomUnitWalkToLocation(unit, currentLocation, room, onSuccess, onFail)); + room.sendComposer(new DiceValueMessageComposer(this.getId(), 1).compose()); - walkable = true; - room.updateTile(currentLocation); - unit.addOverrideTile(currentLocation); - unit.setGoalLocation(currentLocation); - Emulator.getThreading().run(new RoomUnitWalkToLocation(unit, currentLocation, room, onSuccess, onFail)); - room.sendComposer(new DiceValueMessageComposer(this.getId(), 1).compose()); - - /* - room.scheduledTasks.add(new Runnable() - { - @Override - public void run() + /* + room.scheduledTasks.add(new Runnable() { - gate.roomUnitID = client.getHabbo().getRoomUnit().getId(); - room.updateTile(gatePosition); - client.getHabbo().getRoomUnit().setGoalLocation(room.getLayout().getTileInFront(room.getLayout().getTile(InteractionOneWayGate.this.getX(), InteractionOneWayGate.this.getY()), InteractionOneWayGate.this.getRotation() + 4)); - } - }); - */ + @Override + public void run() + { + gate.roomUnitID = client.getHabbo().getRoomUnit().getId(); + room.updateTile(gatePosition); + client.getHabbo().getRoomUnit().setGoalLocation(room.getLayout().getTileInFront(room.getLayout().getTile(InteractionOneWayGate.this.getX(), InteractionOneWayGate.this.getY()), InteractionOneWayGate.this.getRotation() + 4)); + } + }); + */ + } } } } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionPostIt.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionPostIt.java index ae9b8872..94e2dd3d 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionPostIt.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionPostIt.java @@ -2,14 +2,14 @@ package com.eu.habbo.habbohotel.items.interactions; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.ServerMessage; import java.sql.ResultSet; import java.sql.SQLException; -public class InteractionPostIt extends HabboItem { +public class InteractionPostIt extends RoomItem { public static String STICKYPOLE_PREFIX_TEXT = ""; public InteractionPostIt(ResultSet set, Item baseItem) throws SQLException { diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionPoster.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionPoster.java index bdb3afd4..c58d0a40 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionPoster.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionPoster.java @@ -2,14 +2,14 @@ package com.eu.habbo.habbohotel.items.interactions; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.ServerMessage; import java.sql.ResultSet; import java.sql.SQLException; -public class InteractionPoster extends HabboItem { +public class InteractionPoster extends RoomItem { public InteractionPoster(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { super(id, userId, item, extradata, limitedStack, limitedSells); } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionPressurePlate.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionPressurePlate.java index 04491166..137466af 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionPressurePlate.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionPressurePlate.java @@ -5,11 +5,12 @@ import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import gnu.trove.set.hash.THashSet; import java.sql.ResultSet; import java.sql.SQLException; +import java.util.HashSet; public class InteractionPressurePlate extends InteractionDefault { public InteractionPressurePlate(ResultSet set, Item baseItem) throws SQLException { @@ -82,7 +83,8 @@ public class InteractionPressurePlate extends InteractionDefault { if (tiles == null) return; for (RoomTile tile : tiles) { - THashSet tileHasHabboOrBot = room.getHabbosAndBotsAt(tile.getX(), tile.getY()); + HashSet tileHasHabboOrBot = (HashSet) room.getRoomUnitManager().getAvatarsAt(tile); + if (tileHasHabboOrBot.isEmpty() && this.requiresAllTilesOccupied()) { occupied = false; break; diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionPushable.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionPushable.java index 008370b8..6e8a1d67 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionPushable.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionPushable.java @@ -3,7 +3,11 @@ package com.eu.habbo.habbohotel.items.interactions; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.items.Item; -import com.eu.habbo.habbohotel.rooms.*; +import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.RoomLayout; +import com.eu.habbo.habbohotel.rooms.RoomTile; +import com.eu.habbo.habbohotel.rooms.entities.RoomRotation; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.threading.runnables.KickBallAction; import java.sql.ResultSet; @@ -43,7 +47,7 @@ public abstract class InteractionPushable extends InteractionDefault { return; int velocity = this.getWalkOffVelocity(roomUnit, room); - RoomUserRotation direction = this.getWalkOffDirection(roomUnit, room); + RoomRotation direction = this.getWalkOffDirection(roomUnit, room); this.onKick(room, roomUnit, velocity, direction); if (velocity > 0) { @@ -60,9 +64,9 @@ public abstract class InteractionPushable extends InteractionDefault { super.onClick(client, room, objects); if (client == null) return; - if (RoomLayout.tilesAdjecent(client.getHabbo().getRoomUnit().getCurrentLocation(), room.getLayout().getTile(this.getX(), this.getY()))) { + if (RoomLayout.tilesAdjecent(client.getHabbo().getRoomUnit().getCurrentPosition(), room.getLayout().getTile(this.getX(), this.getY()))) { int velocity = this.getTackleVelocity(client.getHabbo().getRoomUnit(), room); - RoomUserRotation direction = this.getWalkOnDirection(client.getHabbo().getRoomUnit(), room); + RoomRotation direction = this.getWalkOnDirection(client.getHabbo().getRoomUnit(), room); this.onTackle(room, client.getHabbo().getRoomUnit(), velocity, direction); if (velocity > 0) { @@ -81,7 +85,7 @@ public abstract class InteractionPushable extends InteractionDefault { int velocity; boolean isDrag = false; - RoomUserRotation direction; + RoomRotation direction; if (this.getX() == roomUnit.getGoalLocation().getX() && this.getY() == roomUnit.getGoalLocation().getY()) //User clicked on the tile the ball is on, they want to kick it { @@ -109,54 +113,54 @@ public abstract class InteractionPushable extends InteractionDefault { public abstract int getWalkOnVelocity(RoomUnit roomUnit, Room room); - public abstract RoomUserRotation getWalkOnDirection(RoomUnit roomUnit, Room room); + public abstract RoomRotation getWalkOnDirection(RoomUnit roomUnit, Room room); public abstract int getWalkOffVelocity(RoomUnit roomUnit, Room room); - public abstract RoomUserRotation getWalkOffDirection(RoomUnit roomUnit, Room room); + public abstract RoomRotation getWalkOffDirection(RoomUnit roomUnit, Room room); public abstract int getDragVelocity(RoomUnit roomUnit, Room room); - public abstract RoomUserRotation getDragDirection(RoomUnit roomUnit, Room room); + public abstract RoomRotation getDragDirection(RoomUnit roomUnit, Room room); public abstract int getTackleVelocity(RoomUnit roomUnit, Room room); - public abstract RoomUserRotation getTackleDirection(RoomUnit roomUnit, Room room); + public abstract RoomRotation getTackleDirection(RoomUnit roomUnit, Room room); public abstract int getNextRollDelay(int currentStep, int totalSteps); //The length in milliseconds when the ball should next roll - public abstract RoomUserRotation getBounceDirection(Room room, RoomUserRotation currentDirection); //Returns the new direction to move the ball when the ball cannot move + public abstract RoomRotation getBounceDirection(Room room, RoomRotation currentDirection); //Returns the new direction to move the ball when the ball cannot move public abstract boolean validMove(Room room, RoomTile from, RoomTile to); //Checks if the next move is valid - public abstract void onDrag(Room room, RoomUnit roomUnit, int velocity, RoomUserRotation direction); + public abstract void onDrag(Room room, RoomUnit roomUnit, int velocity, RoomRotation direction); - public abstract void onKick(Room room, RoomUnit roomUnit, int velocity, RoomUserRotation direction); + public abstract void onKick(Room room, RoomUnit roomUnit, int velocity, RoomRotation direction); - public abstract void onTackle(Room room, RoomUnit roomUnit, int velocity, RoomUserRotation direction); + public abstract void onTackle(Room room, RoomUnit roomUnit, int velocity, RoomRotation direction); - public abstract void onMove(Room room, RoomTile from, RoomTile to, RoomUserRotation direction, RoomUnit kicker, int nextRoll, int currentStep, int totalSteps); + public abstract void onMove(Room room, RoomTile from, RoomTile to, RoomRotation direction, RoomUnit kicker, int nextRoll, int currentStep, int totalSteps); - public abstract void onBounce(Room room, RoomUserRotation oldDirection, RoomUserRotation newDirection, RoomUnit kicker); + public abstract void onBounce(Room room, RoomRotation oldDirection, RoomRotation newDirection, RoomUnit kicker); public abstract void onStop(Room room, RoomUnit kicker, int currentStep, int totalSteps); - public abstract boolean canStillMove(Room room, RoomTile from, RoomTile to, RoomUserRotation direction, RoomUnit kicker, int nextRoll, int currentStep, int totalSteps); + public abstract boolean canStillMove(Room room, RoomTile from, RoomTile to, RoomRotation direction, RoomUnit kicker, int nextRoll, int currentStep, int totalSteps); } \ No newline at end of file diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionPuzzleBox.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionPuzzleBox.java index 36250f87..c56f3287 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionPuzzleBox.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionPuzzleBox.java @@ -2,15 +2,19 @@ package com.eu.habbo.habbohotel.items.interactions; import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.items.Item; -import com.eu.habbo.habbohotel.rooms.*; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.RoomTile; +import com.eu.habbo.habbohotel.rooms.RoomTileState; +import com.eu.habbo.habbohotel.rooms.entities.RoomRotation; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.messages.outgoing.rooms.items.FloorItemOnRollerComposer; import java.sql.ResultSet; import java.sql.SQLException; -public class InteractionPuzzleBox extends HabboItem { +public class InteractionPuzzleBox extends RoomItem { public InteractionPuzzleBox(ResultSet set, Item baseItem) throws SQLException { super(set, baseItem); } @@ -22,19 +26,23 @@ public class InteractionPuzzleBox extends HabboItem { @Override public void onClick(GameClient client, Room room, Object[] objects) throws Exception { RoomTile boxLocation = room.getLayout().getTile(this.getX(), this.getY()); - RoomUserRotation rotation = null; + RoomRotation rotation = null; - if (this.getX() == client.getHabbo().getRoomUnit().getX()) { - if (this.getY() == client.getHabbo().getRoomUnit().getY() + 1) { - rotation = RoomUserRotation.SOUTH; - } else if (this.getY() == client.getHabbo().getRoomUnit().getY() - 1) { - rotation = RoomUserRotation.NORTH; + if (this.getX() == client.getHabbo().getRoomUnit().getCurrentPosition().getX()) { + if (this.getY() == client.getHabbo().getRoomUnit().getCurrentPosition().getY() + 1) { + rotation = RoomRotation.SOUTH; + } else { + if (this.getY() == client.getHabbo().getRoomUnit().getCurrentPosition().getY() - 1) { + rotation = RoomRotation.NORTH; + } } - } else if (this.getY() == client.getHabbo().getRoomUnit().getY()) { - if (this.getX() == client.getHabbo().getRoomUnit().getX() + 1) { - rotation = RoomUserRotation.EAST; - } else if (this.getX() == client.getHabbo().getRoomUnit().getX() - 1) { - rotation = RoomUserRotation.WEST; + } else { + if (this.getY() == client.getHabbo().getRoomUnit().getCurrentPosition().getY()) { + if (this.getX() == client.getHabbo().getRoomUnit().getCurrentPosition().getX() + 1) { + rotation = RoomRotation.EAST; + } else if (this.getX() == client.getHabbo().getRoomUnit().getCurrentPosition().getX() - 1) { + rotation = RoomRotation.WEST; + } } } @@ -49,14 +57,14 @@ public class InteractionPuzzleBox extends HabboItem { RoomTile tile = room.getLayout().getTileInFront(room.getLayout().getTile(this.getX(), this.getY()), rotation.getValue()); - if (tile == null || tile.getState() == RoomTileState.INVALID || room.hasHabbosAt(tile.getX(), tile.getY())) { + if (tile == null || tile.getState() == RoomTileState.INVALID || room.getRoomUnitManager().hasHabbosAt(tile)) { return; } - if (!boxLocation.equals(room.getLayout().getTileInFront(client.getHabbo().getRoomUnit().getCurrentLocation(), rotation.getValue()))) + if (!boxLocation.equals(room.getLayout().getTileInFront(client.getHabbo().getRoomUnit().getCurrentPosition(), rotation.getValue()))) return; - HabboItem item = room.getTopItemAt(tile.getX(), tile.getY()); + RoomItem item = room.getTopItemAt(tile.getX(), tile.getY()); if (item != null && !room.getTopItemAt(tile.getX(), tile.getY()).getBaseItem().allowStack()) return; diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionPyramid.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionPyramid.java index 0ec3ce19..d9998149 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionPyramid.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionPyramid.java @@ -4,6 +4,7 @@ import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.RoomTile; import java.sql.ResultSet; import java.sql.SQLException; @@ -24,7 +25,13 @@ public class InteractionPyramid extends InteractionGate { this.setExtradata("0"); if (room != null) { - if (room.getHabbosAt(this.getX(), this.getY()).isEmpty()) { + RoomTile tile = room.getLayout().getTile(this.getX(), this.getY()); + + if(tile == null) { + return; + } + + if (!room.getRoomUnitManager().hasHabbosAt(tile)) { int state = Integer.parseInt(this.getExtradata()); state = Math.abs(state - 1); diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionRentableSpace.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionRentableSpace.java index 73e4053c..f3caa812 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionRentableSpace.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionRentableSpace.java @@ -5,9 +5,9 @@ import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomLayout; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.messages.outgoing.rooms.items.rentablespaces.RentableSpaceStatusMessageComposer; import com.eu.habbo.threading.runnables.ClearRentedSpace; @@ -21,7 +21,7 @@ import java.sql.ResultSet; import java.sql.SQLException; @Slf4j -public class InteractionRentableSpace extends HabboItem { +public class InteractionRentableSpace extends RoomItem { private int renterId; private String renterName; @@ -58,7 +58,7 @@ public class InteractionRentableSpace extends HabboItem { } } else { if (this.getRoomId() > 0) { - Emulator.getThreading().run(new ClearRentedSpace(this, Emulator.getGameEnvironment().getRoomManager().getRoom(this.getRoomId()))); + Emulator.getThreading().run(new ClearRentedSpace(this, Emulator.getGameEnvironment().getRoomManager().getActiveRoomById(this.getRoomId()))); this.renterId = 0; } } @@ -82,7 +82,7 @@ public class InteractionRentableSpace extends HabboItem { if (habbo == null) return true; - if (habbo.getHabboInfo().getId() == room.getId()) + if (habbo.getHabboInfo().getId() == room.getRoomInfo().getId()) return true; if (this.endTimestamp > Emulator.getIntUnixTimestamp()) { @@ -151,21 +151,21 @@ public class InteractionRentableSpace extends HabboItem { public void endRent() { this.setEndTimestamp(0); - Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(this.getRoomId()); + Room room = Emulator.getGameEnvironment().getRoomManager().getActiveRoomById(this.getRoomId()); if (room == null) return; Rectangle rect = RoomLayout.getRectangle(this.getX(), this.getY(), this.getBaseItem().getWidth(), this.getBaseItem().getLength(), this.getRotation()); - THashSet items = new THashSet<>(); + THashSet items = new THashSet<>(); for (int i = rect.x; i < rect.x + rect.getWidth(); i++) { for (int j = rect.y; j < rect.y + rect.getHeight(); j++) { items.addAll(room.getItemsAt(i, j, this.getZ())); } } - for (HabboItem item : items) { + for (RoomItem item : items) { if (item.getUserId() == this.renterId) { room.pickUpItem(item, null); } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionRoller.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionRoller.java index c2e7ea41..b72c0a3f 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionRoller.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionRoller.java @@ -4,8 +4,8 @@ import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.ServerMessage; import gnu.trove.set.hash.THashSet; import org.apache.commons.math3.util.Pair; @@ -14,7 +14,7 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.util.List; -public class InteractionRoller extends HabboItem { +public class InteractionRoller extends RoomItem { public static boolean NO_RULES = false; public static final int DELAY = 400; @@ -68,11 +68,11 @@ public class InteractionRoller extends HabboItem { @Override - public boolean canStackAt(Room room, List>> itemsAtLocation) { + public boolean canStackAt(Room room, List>> itemsAtLocation) { if (NO_RULES) return true; if (itemsAtLocation.isEmpty()) return false; - for (Pair> set : itemsAtLocation) { + for (Pair> set : itemsAtLocation) { if (set.getValue() != null && !set.getValue().isEmpty()) { if (set.getValue().size() > 1) { return false; diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionRoomAds.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionRoomAds.java index 3a977194..a09f2fd5 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionRoomAds.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionRoomAds.java @@ -2,7 +2,7 @@ package com.eu.habbo.habbohotel.items.interactions; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import gnu.trove.map.hash.THashMap; import java.sql.ResultSet; diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionHabboClubGate.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionRoomClubGate.java similarity index 86% rename from src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionHabboClubGate.java rename to src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionRoomClubGate.java index fe76c514..0ed3e3ed 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionHabboClubGate.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionRoomClubGate.java @@ -5,7 +5,7 @@ import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.interfaces.ConditionalGate; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.messages.outgoing.generic.alerts.CustomUserNotificationMessageComposer; import com.eu.habbo.threading.runnables.CloseGate; @@ -13,13 +13,13 @@ import com.eu.habbo.threading.runnables.CloseGate; import java.sql.ResultSet; import java.sql.SQLException; -public class InteractionHabboClubGate extends InteractionDefault implements ConditionalGate { - public InteractionHabboClubGate(ResultSet set, Item baseItem) throws SQLException { +public class InteractionRoomClubGate extends InteractionDefault implements ConditionalGate { + public InteractionRoomClubGate(ResultSet set, Item baseItem) throws SQLException { super(set, baseItem); this.setExtradata("0"); } - public InteractionHabboClubGate(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { + public InteractionRoomClubGate(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { super(id, userId, item, extradata, limitedStack, limitedSells); this.setExtradata("0"); } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionHabboClubHopper.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionRoomClubHopper.java similarity index 79% rename from src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionHabboClubHopper.java rename to src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionRoomClubHopper.java index e4b03e71..51936c4c 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionHabboClubHopper.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionRoomClubHopper.java @@ -9,12 +9,12 @@ import com.eu.habbo.messages.outgoing.generic.alerts.CustomUserNotificationMessa import java.sql.ResultSet; import java.sql.SQLException; -public class InteractionHabboClubHopper extends InteractionHopper { - public InteractionHabboClubHopper(ResultSet set, Item baseItem) throws SQLException { +public class InteractionRoomClubHopper extends InteractionHopper { + public InteractionRoomClubHopper(ResultSet set, Item baseItem) throws SQLException { super(set, baseItem); } - public InteractionHabboClubHopper(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { + public InteractionRoomClubHopper(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { super(id, userId, item, extradata, limitedStack, limitedSells); } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionHabboClubTeleportTile.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionRoomClubTeleportTile.java similarity index 70% rename from src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionHabboClubTeleportTile.java rename to src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionRoomClubTeleportTile.java index 9d1bfb1b..853bf7f1 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionHabboClubTeleportTile.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionRoomClubTeleportTile.java @@ -3,18 +3,18 @@ package com.eu.habbo.habbohotel.items.interactions; import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.users.Habbo; import java.sql.ResultSet; import java.sql.SQLException; -public class InteractionHabboClubTeleportTile extends InteractionTeleportTile { - public InteractionHabboClubTeleportTile(ResultSet set, Item baseItem) throws SQLException { +public class InteractionRoomClubTeleportTile extends InteractionTeleportTile { + public InteractionRoomClubTeleportTile(ResultSet set, Item baseItem) throws SQLException { super(set, baseItem); } - public InteractionHabboClubTeleportTile(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { + public InteractionRoomClubTeleportTile(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { super(id, userId, item, extradata, limitedStack, limitedSells); } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionSnowboardSlope.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionSnowboardSlope.java index 987bea3a..724a4b00 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionSnowboardSlope.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionSnowboardSlope.java @@ -7,9 +7,10 @@ import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomLayout; import com.eu.habbo.habbohotel.rooms.RoomTile; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.types.RoomAvatar; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; import gnu.trove.set.hash.THashSet; import java.awt.*; @@ -34,34 +35,34 @@ public class InteractionSnowboardSlope extends InteractionMultiHeight { public void onWalkOff(RoomUnit roomUnit, Room room, Object[] objects) throws Exception { super.onWalkOff(roomUnit, room, objects); - if (roomUnit.getEffectId() == 97) { - room.giveEffect(roomUnit, 0, -1); + if (roomUnit instanceof RoomAvatar roomAvatar && roomAvatar.getEffectId() == 97) { + room.giveEffect(roomAvatar, 0, -1); } } @Override public void onPlace(Room room) { super.onPlace(room); - THashSet items = room.getRoomSpecialTypes().getItemsOfType(InteractionSnowboardSlope.class); + THashSet items = room.getRoomSpecialTypes().getItemsOfType(InteractionSnowboardSlope.class); Achievement snowboardBuild = Emulator.getGameEnvironment().getAchievementManager().getAchievement("snowBoardBuild"); if (snowboardBuild == null) return; int progress; - Habbo habbo = room.getHabbo(room.getOwnerId()); + Habbo habbo = room.getRoomUnitManager().getRoomHabboById(room.getRoomInfo().getOwnerInfo().getId()); if (habbo != null) { progress = habbo.getHabboStats().getAchievementProgress(snowboardBuild); } else { - progress = AchievementManager.getAchievementProgressForHabbo(room.getOwnerId(), snowboardBuild); + progress = AchievementManager.getAchievementProgressForHabbo(room.getRoomInfo().getOwnerInfo().getId(), snowboardBuild); } progress = Math.max(items.size() - progress, 0); if (progress > 0) { - AchievementManager.progressAchievement(room.getOwnerId(), snowboardBuild); + AchievementManager.progressAchievement(room.getRoomInfo().getOwnerInfo().getId(), snowboardBuild); } } @@ -79,7 +80,7 @@ public class InteractionSnowboardSlope extends InteractionMultiHeight { Rectangle newRect = RoomLayout.getRectangle(newLocation.getX(), newLocation.getY(), this.getBaseItem().getWidth(), this.getBaseItem().getLength(), this.getRotation()); for (Habbo habbo : room.getHabbosOnItem(this)) { - if (habbo.getRoomUnit().getEffectId() == 97 && !newRect.contains(habbo.getRoomUnit().getCurrentLocation().getX(), habbo.getRoomUnit().getCurrentLocation().getY())) { + if (habbo.getRoomUnit().getEffectId() == 97 && !newRect.contains(habbo.getRoomUnit().getCurrentPosition().getX(), habbo.getRoomUnit().getCurrentPosition().getY())) { room.giveEffect(habbo, 0, -1); } } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionSpinningBottle.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionSpinningBottle.java index e3e62bbb..b47baa1b 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionSpinningBottle.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionSpinningBottle.java @@ -5,8 +5,8 @@ import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomLayout; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.plugin.events.furniture.FurnitureDiceRolledEvent; import com.eu.habbo.threading.runnables.RandomSpinningBottleNumber; @@ -14,7 +14,7 @@ import com.eu.habbo.threading.runnables.RandomSpinningBottleNumber; import java.sql.ResultSet; import java.sql.SQLException; -public class InteractionSpinningBottle extends HabboItem { +public class InteractionSpinningBottle extends RoomItem { public InteractionSpinningBottle(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { super(id, userId, item, extradata, limitedStack, limitedSells); } @@ -46,7 +46,7 @@ public class InteractionSpinningBottle extends HabboItem { super.onClick(client, room, objects); if (client != null) { - if (RoomLayout.tilesAdjecent(room.getLayout().getTile(this.getX(), this.getY()), client.getHabbo().getRoomUnit().getCurrentLocation())) { + if (RoomLayout.tilesAdjecent(room.getLayout().getTile(this.getX(), this.getY()), client.getHabbo().getRoomUnit().getCurrentPosition())) { if (!this.getExtradata().equalsIgnoreCase("-1")) { FurnitureDiceRolledEvent event = Emulator.getPluginManager().fireEvent(new FurnitureDiceRolledEvent(this, client.getHabbo(), -1)); diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionStackHelper.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionStackHelper.java index 669a5a69..7c6cd846 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionStackHelper.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionStackHelper.java @@ -2,14 +2,14 @@ package com.eu.habbo.habbohotel.items.interactions; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.ServerMessage; import java.sql.ResultSet; import java.sql.SQLException; -public class InteractionStackHelper extends HabboItem { +public class InteractionStackHelper extends RoomItem { public InteractionStackHelper(ResultSet set, Item baseItem) throws SQLException { super(set, baseItem); } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionSwitch.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionSwitch.java index e1761878..5bac0dc9 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionSwitch.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionSwitch.java @@ -25,7 +25,7 @@ public class InteractionSwitch extends InteractionDefault { @Override public boolean canToggle(Habbo habbo, Room room) { - return RoomLayout.tilesAdjecent(room.getLayout().getTile(this.getX(), this.getY()), habbo.getRoomUnit().getCurrentLocation()); + return RoomLayout.tilesAdjecent(room.getLayout().getTile(this.getX(), this.getY()), habbo.getRoomUnit().getCurrentPosition()); } @Override @@ -46,12 +46,12 @@ public class InteractionSwitch extends InteractionDefault { if (!this.canToggle(client.getHabbo(), room)) { RoomTile closestTile = null; for (RoomTile tile : room.getLayout().getTilesAround(room.getLayout().getTile(this.getX(), this.getY()))) { - if (tile.isWalkable() && (closestTile == null || closestTile.distance(client.getHabbo().getRoomUnit().getCurrentLocation()) > tile.distance(client.getHabbo().getRoomUnit().getCurrentLocation()))) { + if (tile.isWalkable() && (closestTile == null || closestTile.distance(client.getHabbo().getRoomUnit().getCurrentPosition()) > tile.distance(client.getHabbo().getRoomUnit().getCurrentPosition()))) { closestTile = tile; } } - if (closestTile != null && !closestTile.equals(client.getHabbo().getRoomUnit().getCurrentLocation())) { + if (closestTile != null && !closestTile.equals(client.getHabbo().getRoomUnit().getCurrentPosition())) { List onSuccess = new ArrayList<>(); onSuccess.add(() -> { try { diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionSwitchRemoteControl.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionSwitchRemoteControl.java index 37fbce36..2bc51667 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionSwitchRemoteControl.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionSwitchRemoteControl.java @@ -22,7 +22,7 @@ public class InteractionSwitchRemoteControl extends InteractionDefault { @Override public boolean canToggle(Habbo habbo, Room room) { - return RoomLayout.tilesAdjecent(room.getLayout().getTile(this.getX(), this.getY()), habbo.getRoomUnit().getCurrentLocation()); + return RoomLayout.tilesAdjecent(room.getLayout().getTile(this.getX(), this.getY()), habbo.getRoomUnit().getCurrentPosition()); } @Override diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionTeleport.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionTeleport.java index 5e152373..87fda1d2 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionTeleport.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionTeleport.java @@ -5,9 +5,10 @@ import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.types.RoomHabbo; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.threading.runnables.RoomUnitWalkToLocation; import com.eu.habbo.threading.runnables.teleport.TeleportActionOne; @@ -17,7 +18,7 @@ import java.sql.SQLException; import java.util.ArrayList; import java.util.List; -public class InteractionTeleport extends HabboItem { +public class InteractionTeleport extends RoomItem { private int targetId; private int targetRoomId; private int roomUnitID = -1; @@ -45,7 +46,7 @@ public class InteractionTeleport extends HabboItem { @Override public boolean canWalkOn(RoomUnit roomUnit, Room room, Object[] objects) { - return this.getBaseItem().allowWalk() || roomUnit.getId() == this.roomUnitID; + return this.getBaseItem().allowWalk() || roomUnit.getVirtualId() == this.roomUnitID; } @Override @@ -62,67 +63,73 @@ public class InteractionTeleport extends HabboItem { Habbo habbo = client.getHabbo(); - if (habbo == null) + if (habbo == null) { return; + } - RoomUnit unit = habbo.getRoomUnit(); + RoomHabbo roomHabbo = habbo.getRoomUnit(); - if (unit == null) + if (roomHabbo == null) { return; + } - RoomTile currentLocation = room.getLayout().getTile(this.getX(), this.getY()); + RoomTile currentItemLocation = room.getLayout().getTile(this.getX(), this.getY()); - if (currentLocation == null) + if (currentItemLocation == null) { return; + } - RoomTile infrontTile = room.getLayout().getTileInFront(currentLocation, this.getRotation()); + RoomTile inFrontTile = room.getLayout().getTileInFront(currentItemLocation, this.getRotation()); - if (!canUseTeleport(client, room)) + if (!canUseTeleport(client, room)) { return; + } - if (this.roomUnitID == unit.getId() && unit.getCurrentLocation().equals(currentLocation)) { - startTeleport(room, habbo); - walkable = true; + if (this.roomUnitID == roomHabbo.getVirtualId() && roomHabbo.getCurrentPosition().equals(currentItemLocation)) { + this.startTeleport(room, habbo); + this.walkable = true; try { super.onClick(client, room, new Object[]{"TOGGLE_OVERRIDE"}); } catch (Exception e) { e.printStackTrace(); } - } else if (unit.getCurrentLocation().equals(currentLocation) || unit.getCurrentLocation().equals(infrontTile)) { + } else if (roomHabbo.getCurrentPosition().equals(currentItemLocation) || roomHabbo.getCurrentPosition().equals(inFrontTile)) { // set state 1 and walk on item - this.roomUnitID = unit.getId(); + this.roomUnitID = roomHabbo.getVirtualId(); this.setExtradata("1"); room.updateItemState(this); - unit.setGoalLocation(infrontTile); + roomHabbo.setGoalLocation(inFrontTile); List onSuccess = new ArrayList<>(); List onFail = new ArrayList<>(); onSuccess.add(() -> { - room.updateTile(currentLocation); - tryTeleport(client, room); - unit.removeOverrideTile(currentLocation); - unit.setCanLeaveRoomByDoor(true); - walkable = this.getBaseItem().allowWalk(); + room.updateTile(currentItemLocation); + this.tryTeleport(client, room); + roomHabbo.removeOverrideTile(currentItemLocation); + roomHabbo.setCanLeaveRoomByDoor(true); + this.walkable = this.getBaseItem().allowWalk(); }); onFail.add(() -> { - walkable = this.getBaseItem().allowWalk(); - room.updateTile(currentLocation); + this.walkable = this.getBaseItem().allowWalk(); + room.updateTile(currentItemLocation); this.setExtradata("0"); room.updateItemState(this); this.roomUnitID = -1; - unit.removeOverrideTile(currentLocation); - unit.setCanLeaveRoomByDoor(true); + roomHabbo.removeOverrideTile(currentItemLocation); + roomHabbo.setCanLeaveRoomByDoor(true); }); - walkable = true; - room.updateTile(currentLocation); - unit.addOverrideTile(currentLocation); - unit.setGoalLocation(currentLocation); - unit.setCanLeaveRoomByDoor(false); - Emulator.getThreading().run(new RoomUnitWalkToLocation(unit, currentLocation, room, onSuccess, onFail)); + this.walkable = true; + + room.updateTile(currentItemLocation); + roomHabbo.addOverrideTile(currentItemLocation); + roomHabbo.setGoalLocation(currentItemLocation); + roomHabbo.setCanLeaveRoomByDoor(false); + + Emulator.getThreading().run(new RoomUnitWalkToLocation(roomHabbo, currentItemLocation, room, onSuccess, onFail)); } else { // walk to teleport and interact List onSuccess = new ArrayList<>(); @@ -130,8 +137,8 @@ public class InteractionTeleport extends HabboItem { onSuccess.add(() -> tryTeleport(client, room)); - unit.setGoalLocation(infrontTile); - Emulator.getThreading().run(new RoomUnitWalkToLocation(unit, infrontTile, room, onSuccess, onFail)); + roomHabbo.setGoalLocation(inFrontTile); + Emulator.getThreading().run(new RoomUnitWalkToLocation(roomHabbo, inFrontTile, room, onSuccess, onFail)); } } @@ -151,7 +158,7 @@ public class InteractionTeleport extends HabboItem { if (!this.getExtradata().equals("0")) { this.setExtradata("0"); - Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(this.getRoomId()); + Room room = Emulator.getGameEnvironment().getRoomManager().getActiveRoomById(this.getRoomId()); if (room != null) { room.updateItem(this); } @@ -192,13 +199,15 @@ public class InteractionTeleport extends HabboItem { Habbo habbo = client.getHabbo(); - if (habbo == null) + if (habbo == null) { return false; + } RoomUnit unit = habbo.getRoomUnit(); - if (unit == null) + if (unit == null) { return false; + } return habbo.getHabboInfo().getRiding() == null; } @@ -209,7 +218,7 @@ public class InteractionTeleport extends HabboItem { public void startTeleport(Room room, Habbo habbo, int delay) { if (habbo.getRoomUnit().isTeleporting()) { - walkable = this.getBaseItem().allowWalk(); + this.walkable = this.getBaseItem().allowWalk(); return; } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionTeleportTile.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionTeleportTile.java index e8b90bbf..c81a255f 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionTeleportTile.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionTeleportTile.java @@ -2,7 +2,7 @@ package com.eu.habbo.habbohotel.items.interactions; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.users.Habbo; import java.sql.ResultSet; @@ -37,7 +37,7 @@ public class InteractionTeleportTile extends InteractionTeleport { return; if (!habbo.getRoomUnit().isTeleporting()) { - habbo.getRoomUnit().setGoalLocation(habbo.getRoomUnit().getCurrentLocation()); + habbo.getRoomUnit().setGoalLocation(habbo.getRoomUnit().getCurrentPosition()); this.startTeleport(room, habbo, 1000); } } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionTileEffectProvider.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionTileEffectProvider.java index b8c1d313..3b642d99 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionTileEffectProvider.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionTileEffectProvider.java @@ -3,7 +3,8 @@ package com.eu.habbo.habbohotel.items.interactions; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.types.RoomHabbo; import gnu.trove.map.hash.THashMap; import java.sql.ResultSet; @@ -37,9 +38,13 @@ public class InteractionTileEffectProvider extends InteractionCustomValues { public void onWalkOn(RoomUnit roomUnit, final Room room, Object[] objects) throws Exception { super.onWalkOn(roomUnit, room, objects); + if(!(roomUnit instanceof RoomHabbo roomHabbo)) { + return; + } + int effectId = Integer.parseInt(this.values.get("effectId")); - if (roomUnit.getEffectId() == effectId) { + if (roomHabbo.getEffectId() == effectId) { effectId = 0; } @@ -52,6 +57,6 @@ public class InteractionTileEffectProvider extends InteractionCustomValues { room.updateItem(proxy); }, 500); - room.giveEffect(roomUnit, effectId, -1); + room.giveEffect(roomHabbo, effectId, -1); } } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionTrap.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionTrap.java index 1ea1eb16..3ba91af7 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionTrap.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionTrap.java @@ -3,8 +3,8 @@ package com.eu.habbo.habbohotel.items.interactions; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.rooms.RoomUnitType; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnitType; import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.habbohotel.users.HabboGender; @@ -35,7 +35,7 @@ public class InteractionTrap extends InteractionDefault { } if (this.getBaseItem().getEffectF() > 0 || this.getBaseItem().getEffectM() > 0) { - if (roomUnit.getRoomUnitType().equals(RoomUnitType.USER)) { + if (roomUnit.getRoomUnitType().equals(RoomUnitType.HABBO)) { if (habbo.getHabboInfo().getGender().equals(HabboGender.M) && this.getBaseItem().getEffectM() > 0 && habbo.getRoomUnit().getEffectId() != this.getBaseItem().getEffectM()) { room.giveEffect(habbo, this.getBaseItem().getEffectM(), -1); diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionVendingMachine.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionVendingMachine.java index 6bccfc83..a8b1dd04 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionVendingMachine.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionVendingMachine.java @@ -3,9 +3,15 @@ package com.eu.habbo.habbohotel.items.interactions; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.items.Item; -import com.eu.habbo.habbohotel.rooms.*; +import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.RoomTile; +import com.eu.habbo.habbohotel.rooms.RoomTileState; +import com.eu.habbo.habbohotel.rooms.RoomUnitStatus; +import com.eu.habbo.habbohotel.rooms.entities.RoomRotation; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.types.RoomAvatar; import com.eu.habbo.habbohotel.users.HabboGender; -import com.eu.habbo.habbohotel.users.HabboItem; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.threading.runnables.RoomUnitGiveHanditem; import com.eu.habbo.threading.runnables.RoomUnitWalkToLocation; @@ -17,7 +23,7 @@ import java.sql.SQLException; import java.util.ArrayList; import java.util.List; -public class InteractionVendingMachine extends HabboItem { +public class InteractionVendingMachine extends RoomItem { public InteractionVendingMachine(ResultSet set, Item baseItem) throws SQLException { super(set, baseItem); this.setExtradata("0"); @@ -56,7 +62,7 @@ public class InteractionVendingMachine extends HabboItem { boolean inActivatorSpace = false; for(RoomTile ignored : activatorTiles) { - if(unit.getCurrentLocation().is(unit.getX(), unit.getY())) { + if(unit.getCurrentPosition().is(unit.getCurrentPosition().getX(), unit.getCurrentPosition().getY())) { inActivatorSpace = true; } } @@ -67,6 +73,10 @@ public class InteractionVendingMachine extends HabboItem { } private void useVendingMachine(GameClient client, Room room, RoomUnit unit) { + if(!(unit instanceof RoomAvatar roomAvatar)) { + return; + } + this.setExtradata("1"); room.updateItem(this); @@ -76,13 +86,13 @@ public class InteractionVendingMachine extends HabboItem { e.printStackTrace(); } - if(!unit.isWalking() && !unit.hasStatus(RoomUnitStatus.SIT) && !unit.hasStatus(RoomUnitStatus.LAY)) { - this.rotateToMachine(unit); + if(!roomAvatar.isWalking() && !roomAvatar.hasStatus(RoomUnitStatus.SIT) && !roomAvatar.hasStatus(RoomUnitStatus.LAY)) { + this.rotateToMachine(roomAvatar); } Emulator.getThreading().run(() -> { - giveVendingMachineItem(room, unit); + giveVendingMachineItem(room, roomAvatar); if (this.getBaseItem().getEffectM() > 0 && client.getHabbo().getHabboInfo().getGender() == HabboGender.M) room.giveEffect(client.getHabbo(), this.getBaseItem().getEffectM(), -1); @@ -93,8 +103,8 @@ public class InteractionVendingMachine extends HabboItem { }, 1500); } - public void giveVendingMachineItem(Room room, RoomUnit unit) { - Emulator.getThreading().run(new RoomUnitGiveHanditem(unit, room, this.getBaseItem().getRandomVendingItem())); + public void giveVendingMachineItem(Room room, RoomAvatar roomAvatar) { + Emulator.getThreading().run(new RoomUnitGiveHanditem(roomAvatar, room, this.getBaseItem().getRandomVendingItem())); } @Override @@ -113,7 +123,7 @@ public class InteractionVendingMachine extends HabboItem { boolean inActivatorSpace = false; for(RoomTile tile : activatorTiles) { - if(unit.getCurrentLocation().is(tile.getX(), tile.getY())) { + if(unit.getCurrentPosition().is(tile.getX(), tile.getY())) { inActivatorSpace = true; } } @@ -121,7 +131,7 @@ public class InteractionVendingMachine extends HabboItem { if(!inActivatorSpace) { RoomTile tileToWalkTo = null; for(RoomTile tile : activatorTiles) { - if((tile.getState() == RoomTileState.OPEN || tile.getState() == RoomTileState.SIT) && (tileToWalkTo == null || tileToWalkTo.distance(unit.getCurrentLocation()) > tile.distance(unit.getCurrentLocation()))) { + if((tile.getState() == RoomTileState.OPEN || tile.getState() == RoomTileState.SIT) && (tileToWalkTo == null || tileToWalkTo.distance(unit.getCurrentPosition()) > tile.distance(unit.getCurrentPosition()))) { tileToWalkTo = tile; } } @@ -151,7 +161,7 @@ public class InteractionVendingMachine extends HabboItem { super.run(); if (this.getExtradata().equals("1")) { this.setExtradata("0"); - Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(this.getRoomId()); + Room room = Emulator.getGameEnvironment().getRoomManager().getActiveRoomById(this.getRoomId()); if (room != null) { room.updateItem(this); } @@ -174,11 +184,11 @@ public class InteractionVendingMachine extends HabboItem { } private void rotateToMachine(RoomUnit unit) { - RoomUserRotation rotation = RoomUserRotation.values()[Rotation.Calculate(unit.getX(), unit.getY(), this.getX(), this.getY())]; + RoomRotation rotation = RoomRotation.values()[Rotation.Calculate(unit.getCurrentPosition().getX(), unit.getCurrentPosition().getY(), this.getX(), this.getY())]; if(Math.abs(unit.getBodyRotation().getValue() - rotation.getValue()) > 1) { unit.setRotation(rotation); - unit.statusUpdate(true); + unit.setStatusUpdateNeeded(true); } } } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionVoteCounter.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionVoteCounter.java index a28b30b4..e15150a0 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionVoteCounter.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionVoteCounter.java @@ -3,8 +3,8 @@ package com.eu.habbo.habbohotel.items.interactions; import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.habbohotel.wired.WiredEffectType; import com.eu.habbo.messages.ServerMessage; @@ -13,7 +13,7 @@ import java.sql.SQLException; import java.util.ArrayList; import java.util.List; -public class InteractionVoteCounter extends HabboItem { +public class InteractionVoteCounter extends RoomItem { private boolean frozen; private int votes; diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionWater.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionWater.java index 062e4034..438bf391 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionWater.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionWater.java @@ -3,9 +3,14 @@ package com.eu.habbo.habbohotel.items.interactions; import com.eu.habbo.habbohotel.bots.Bot; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.pets.Pet; -import com.eu.habbo.habbohotel.rooms.*; +import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.RoomLayout; +import com.eu.habbo.habbohotel.rooms.RoomTile; +import com.eu.habbo.habbohotel.rooms.RoomUnitStatus; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnitType; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; import gnu.trove.set.hash.THashSet; import org.apache.commons.math3.util.Pair; @@ -78,7 +83,7 @@ public class InteractionWater extends InteractionDefault { if(roomUnit == null) return; roomUnit.setSwimming(true); - Pet pet = room.getPet(roomUnit); + Pet pet = room.getRoomUnitManager().getPetByRoomUnit(roomUnit); if (pet == null) return; @@ -95,7 +100,7 @@ public class InteractionWater extends InteractionDefault { super.onWalkOff(roomUnit, room, objects); if ( roomUnit.getRoomUnitType() != RoomUnitType.PET) return; - Pet pet = room.getPet(roomUnit); + Pet pet = room.getRoomUnitManager().getPetByRoomUnit(roomUnit); if (pet == null) return; @@ -113,9 +118,9 @@ public class InteractionWater extends InteractionDefault { } @Override - public boolean canStackAt(Room room, List>> itemsAtLocation) { - for (Pair> set : itemsAtLocation) { - for (HabboItem item : set.getValue()) { + public boolean canStackAt(Room room, List>> itemsAtLocation) { + for (Pair> set : itemsAtLocation) { + for (RoomItem item : set.getValue()) { if(item != this) return false; } @@ -128,7 +133,7 @@ public class InteractionWater extends InteractionDefault { public boolean canWalkOn(RoomUnit roomUnit, Room room, Object[] objects) { if (!super.canWalkOn(roomUnit, room, objects)) return false; - Pet pet = room.getPet(roomUnit); + Pet pet = room.getRoomUnitManager().getPetByRoomUnit(roomUnit); return pet == null || pet.getPetData().isCanSwim(); } @@ -151,7 +156,7 @@ public class InteractionWater extends InteractionDefault { } // Update neighbouring water. - for (HabboItem item : room.getRoomSpecialTypes().getItemsOfType(InteractionWater.class)) { + for (RoomItem item : room.getRoomSpecialTypes().getItemsOfType(InteractionWater.class)) { // We already updated ourself. if (item == this) { continue; @@ -168,7 +173,7 @@ public class InteractionWater extends InteractionDefault { // Update water items we might have missed in the old location. if (targetOld != null) { - for (HabboItem item : room.getRoomSpecialTypes().getItemsOfType(InteractionWaterItem.class)) { + for (RoomItem item : room.getRoomSpecialTypes().getItemsOfType(InteractionWaterItem.class)) { if (targetOld.intersects(item.getRectangle())) { ((InteractionWaterItem) item).update(); } @@ -180,7 +185,7 @@ public class InteractionWater extends InteractionDefault { Rectangle target = this.getRectangle(); // Only update water item furnis that are intersecting with us. - for (HabboItem item : room.getRoomSpecialTypes().getItemsOfType(InteractionWaterItem.class)) { + for (RoomItem item : room.getRoomSpecialTypes().getItemsOfType(InteractionWaterItem.class)) { if (target.intersects(item.getRectangle())) { ((InteractionWaterItem) item).update(); } @@ -280,7 +285,7 @@ public class InteractionWater extends InteractionDefault { } private boolean isValidForMask(Room room, int x, int y, double z, boolean corner) { - for (HabboItem item : room.getItemsAt(x, y, z)) { + for (RoomItem item : room.getItemsAt(x, y, z)) { if (item instanceof InteractionWater water) { // Take out picked up water from the recalculation. diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionWaterItem.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionWaterItem.java index 404e1f32..d479c4ea 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionWaterItem.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionWaterItem.java @@ -5,7 +5,7 @@ import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import gnu.trove.set.hash.THashSet; import java.awt.*; @@ -46,7 +46,7 @@ public class InteractionWaterItem extends InteractionMultiHeight { } public void update() { - Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(this.getRoomId()); + Room room = Emulator.getGameEnvironment().getRoomManager().getActiveRoomById(this.getRoomId()); if (room == null) { return; @@ -60,9 +60,9 @@ public class InteractionWaterItem extends InteractionMultiHeight { for (short x = (short) rectangle.x; x < rectangle.getWidth() + rectangle.x && foundWater; x++) { for (short y = (short) rectangle.y; y < rectangle.getHeight() + rectangle.y && foundWater; y++) { boolean tile = false; - THashSet items = room.getItemsAt(room.getLayout().getTile(x, y)); + THashSet items = room.getItemsAt(room.getLayout().getTile(x, y)); - for (HabboItem item : items) { + for (RoomItem item : items) { if (item instanceof InteractionWater) { tile = true; break; diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionWired.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionWired.java index 095b905a..5b8824e6 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionWired.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionWired.java @@ -6,7 +6,7 @@ import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.wired.WiredSettings; import com.eu.habbo.habbohotel.items.interactions.wired.interfaces.IWiredInteraction; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.wired.WiredHandler; import com.eu.habbo.messages.ClientMessage; import com.eu.habbo.messages.outgoing.MessageComposer; @@ -193,7 +193,7 @@ public abstract class InteractionWired extends InteractionDefault implements IWi this.setExtradata(this.getExtradata().equals("1") ? "0" : "1"); room.sendComposer(new OneWayDoorStatusMessageComposer(this).compose()); if (roomUnit != null) { - this.addUserExecutionCache(roomUnit.getId(), millis); + this.addUserExecutionCache(roomUnit.getVirtualId(), millis); } } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionWiredExtra.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionWiredExtra.java index c29cf0a6..9259b857 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionWiredExtra.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionWiredExtra.java @@ -3,7 +3,7 @@ package com.eu.habbo.habbohotel.items.interactions; import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import java.sql.ResultSet; import java.sql.SQLException; diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionWiredHighscore.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionWiredHighscore.java index d8b3a9dc..a98b9245 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionWiredHighscore.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionWiredHighscore.java @@ -4,8 +4,8 @@ import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.habbohotel.wired.WiredEffectType; import com.eu.habbo.habbohotel.wired.WiredHandler; import com.eu.habbo.habbohotel.wired.WiredTriggerType; @@ -20,7 +20,7 @@ import java.sql.SQLException; import java.util.List; @Slf4j -public class InteractionWiredHighscore extends HabboItem { +public class InteractionWiredHighscore extends RoomItem { public WiredHighscoreScoreType scoreType; diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionYoutubeTV.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionYoutubeTV.java index 4da6bb8f..d3555cb0 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionYoutubeTV.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionYoutubeTV.java @@ -5,17 +5,16 @@ import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.YoutubeManager; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.messages.outgoing.rooms.items.youtube.YoutubeDisplayVideoMessageComposer; -import com.eu.habbo.threading.runnables.YoutubeAdvanceVideo; import java.sql.ResultSet; import java.sql.SQLException; import java.util.concurrent.ScheduledFuture; -public class InteractionYoutubeTV extends HabboItem { +public class InteractionYoutubeTV extends RoomItem { public YoutubeManager.YoutubePlaylist currentPlaylist = null; public YoutubeManager.YoutubeVideo currentVideo = null; public int startedWatchingAt = 0; diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/InteractionGameGate.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/InteractionGameGate.java index b56491bd..10615da4 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/InteractionGameGate.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/InteractionGameGate.java @@ -4,7 +4,7 @@ import com.eu.habbo.habbohotel.games.Game; import com.eu.habbo.habbohotel.games.GameTeamColors; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.messages.ServerMessage; import java.sql.ResultSet; diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/InteractionGameTeamItem.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/InteractionGameTeamItem.java index f52ff6b8..adf89c03 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/InteractionGameTeamItem.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/InteractionGameTeamItem.java @@ -2,12 +2,12 @@ package com.eu.habbo.habbohotel.items.interactions.games; import com.eu.habbo.habbohotel.games.GameTeamColors; import com.eu.habbo.habbohotel.items.Item; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import java.sql.ResultSet; import java.sql.SQLException; -public abstract class InteractionGameTeamItem extends HabboItem { +public abstract class InteractionGameTeamItem extends RoomItem { public final GameTeamColors teamColor; protected InteractionGameTeamItem(ResultSet set, Item baseItem, GameTeamColors teamColor) throws SQLException { diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/InteractionGameTimer.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/InteractionGameTimer.java index 161cea9b..0cb454db 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/InteractionGameTimer.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/InteractionGameTimer.java @@ -8,8 +8,8 @@ import com.eu.habbo.habbohotel.games.wired.WiredGame; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.permissions.Permission; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.habbohotel.wired.WiredEffectType; import com.eu.habbo.habbohotel.wired.WiredHandler; import com.eu.habbo.habbohotel.wired.WiredTriggerType; @@ -24,7 +24,7 @@ import java.sql.SQLException; import java.util.Arrays; @Slf4j -public class InteractionGameTimer extends HabboItem implements Runnable { +public class InteractionGameTimer extends RoomItem implements Runnable { private int[] TIMER_INTERVAL_STEPS = new int[] { 30, 60, 120, 180, 300, 600 }; diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/battlebanzai/InteractionBattleBanzaiPuck.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/battlebanzai/InteractionBattleBanzaiPuck.java index 0882cb0b..9a718558 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/battlebanzai/InteractionBattleBanzaiPuck.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/battlebanzai/InteractionBattleBanzaiPuck.java @@ -6,8 +6,10 @@ import com.eu.habbo.habbohotel.games.battlebanzai.BattleBanzaiGame; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionPushable; import com.eu.habbo.habbohotel.rooms.*; +import com.eu.habbo.habbohotel.rooms.entities.RoomRotation; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import java.sql.ResultSet; import java.sql.SQLException; @@ -27,7 +29,7 @@ public class InteractionBattleBanzaiPuck extends InteractionPushable { } @Override - public RoomUserRotation getWalkOnDirection(RoomUnit roomUnit, Room room) { + public RoomRotation getWalkOnDirection(RoomUnit roomUnit, Room room) { return roomUnit.getBodyRotation(); } @@ -37,7 +39,7 @@ public class InteractionBattleBanzaiPuck extends InteractionPushable { } @Override - public RoomUserRotation getWalkOffDirection(RoomUnit roomUnit, Room room) { + public RoomRotation getWalkOffDirection(RoomUnit roomUnit, Room room) { return roomUnit.getBodyRotation(); } @@ -47,7 +49,7 @@ public class InteractionBattleBanzaiPuck extends InteractionPushable { } @Override - public RoomUserRotation getDragDirection(RoomUnit roomUnit, Room room) { + public RoomRotation getDragDirection(RoomUnit roomUnit, Room room) { return roomUnit.getBodyRotation(); } @@ -57,7 +59,7 @@ public class InteractionBattleBanzaiPuck extends InteractionPushable { } @Override - public RoomUserRotation getTackleDirection(RoomUnit roomUnit, Room room) { + public RoomRotation getTackleDirection(RoomUnit roomUnit, Room room) { return roomUnit.getBodyRotation(); } @@ -67,52 +69,52 @@ public class InteractionBattleBanzaiPuck extends InteractionPushable { } @Override - public RoomUserRotation getBounceDirection(Room room, RoomUserRotation currentDirection) { + public RoomRotation getBounceDirection(Room room, RoomRotation currentDirection) { switch (currentDirection) { default: case NORTH: - return RoomUserRotation.SOUTH; + return RoomRotation.SOUTH; case NORTH_EAST: - if (this.validMove(room, room.getLayout().getTile(this.getX(), this.getY()), room.getLayout().getTileInFront(room.getLayout().getTile(this.getX(), this.getY()), RoomUserRotation.NORTH_WEST.getValue()))) - return RoomUserRotation.NORTH_WEST; - else if (this.validMove(room, room.getLayout().getTile(this.getX(), this.getY()), room.getLayout().getTileInFront(room.getLayout().getTile(this.getX(), this.getY()), RoomUserRotation.SOUTH_EAST.getValue()))) - return RoomUserRotation.SOUTH_EAST; + if (this.validMove(room, room.getLayout().getTile(this.getX(), this.getY()), room.getLayout().getTileInFront(room.getLayout().getTile(this.getX(), this.getY()), RoomRotation.NORTH_WEST.getValue()))) + return RoomRotation.NORTH_WEST; + else if (this.validMove(room, room.getLayout().getTile(this.getX(), this.getY()), room.getLayout().getTileInFront(room.getLayout().getTile(this.getX(), this.getY()), RoomRotation.SOUTH_EAST.getValue()))) + return RoomRotation.SOUTH_EAST; else - return RoomUserRotation.SOUTH_WEST; + return RoomRotation.SOUTH_WEST; case EAST: - return RoomUserRotation.WEST; + return RoomRotation.WEST; case SOUTH_EAST: - if (this.validMove(room, room.getLayout().getTile(this.getX(), this.getY()), room.getLayout().getTileInFront(room.getLayout().getTile(this.getX(), this.getY()), RoomUserRotation.SOUTH_WEST.getValue()))) - return RoomUserRotation.SOUTH_WEST; - else if (this.validMove(room, room.getLayout().getTile(this.getX(), this.getY()), room.getLayout().getTileInFront(room.getLayout().getTile(this.getX(), this.getY()), RoomUserRotation.NORTH_EAST.getValue()))) - return RoomUserRotation.NORTH_EAST; + if (this.validMove(room, room.getLayout().getTile(this.getX(), this.getY()), room.getLayout().getTileInFront(room.getLayout().getTile(this.getX(), this.getY()), RoomRotation.SOUTH_WEST.getValue()))) + return RoomRotation.SOUTH_WEST; + else if (this.validMove(room, room.getLayout().getTile(this.getX(), this.getY()), room.getLayout().getTileInFront(room.getLayout().getTile(this.getX(), this.getY()), RoomRotation.NORTH_EAST.getValue()))) + return RoomRotation.NORTH_EAST; else - return RoomUserRotation.NORTH_WEST; + return RoomRotation.NORTH_WEST; case SOUTH: - return RoomUserRotation.NORTH; + return RoomRotation.NORTH; case SOUTH_WEST: - if (this.validMove(room, room.getLayout().getTile(this.getX(), this.getY()), room.getLayout().getTileInFront(room.getLayout().getTile(this.getX(), this.getY()), RoomUserRotation.SOUTH_EAST.getValue()))) - return RoomUserRotation.SOUTH_EAST; - else if (this.validMove(room, room.getLayout().getTile(this.getX(), this.getY()), room.getLayout().getTileInFront(room.getLayout().getTile(this.getX(), this.getY()), RoomUserRotation.NORTH_WEST.getValue()))) - return RoomUserRotation.NORTH_WEST; + if (this.validMove(room, room.getLayout().getTile(this.getX(), this.getY()), room.getLayout().getTileInFront(room.getLayout().getTile(this.getX(), this.getY()), RoomRotation.SOUTH_EAST.getValue()))) + return RoomRotation.SOUTH_EAST; + else if (this.validMove(room, room.getLayout().getTile(this.getX(), this.getY()), room.getLayout().getTileInFront(room.getLayout().getTile(this.getX(), this.getY()), RoomRotation.NORTH_WEST.getValue()))) + return RoomRotation.NORTH_WEST; else - return RoomUserRotation.NORTH_EAST; + return RoomRotation.NORTH_EAST; case WEST: - return RoomUserRotation.EAST; + return RoomRotation.EAST; case NORTH_WEST: - if (this.validMove(room, room.getLayout().getTile(this.getX(), this.getY()), room.getLayout().getTileInFront(room.getLayout().getTile(this.getX(), this.getY()), RoomUserRotation.NORTH_EAST.getValue()))) - return RoomUserRotation.NORTH_EAST; - else if (this.validMove(room, room.getLayout().getTile(this.getX(), this.getY()), room.getLayout().getTileInFront(room.getLayout().getTile(this.getX(), this.getY()), RoomUserRotation.SOUTH_WEST.getValue()))) - return RoomUserRotation.SOUTH_WEST; + if (this.validMove(room, room.getLayout().getTile(this.getX(), this.getY()), room.getLayout().getTileInFront(room.getLayout().getTile(this.getX(), this.getY()), RoomRotation.NORTH_EAST.getValue()))) + return RoomRotation.NORTH_EAST; + else if (this.validMove(room, room.getLayout().getTile(this.getX(), this.getY()), room.getLayout().getTileInFront(room.getLayout().getTile(this.getX(), this.getY()), RoomRotation.SOUTH_WEST.getValue()))) + return RoomRotation.SOUTH_WEST; else - return RoomUserRotation.SOUTH_EAST; + return RoomRotation.SOUTH_EAST; } } @@ -124,29 +126,29 @@ public class InteractionBattleBanzaiPuck extends InteractionPushable { @Override public boolean validMove(Room room, RoomTile from, RoomTile to) { if (to == null) return false; - HabboItem topItem = room.getTopItemAt(to.getX(), to.getY(), this); + RoomItem topItem = room.getTopItemAt(to.getX(), to.getY(), this); return !(!room.getLayout().tileWalkable(to.getX(), to.getY()) || (topItem != null && (!topItem.getBaseItem().allowStack() || topItem.getBaseItem().allowSit() || topItem.getBaseItem().allowLay()))); //return !(!room.getLayout().tileWalkable(to.x, to.y) || (topItem != null && (!topItem.getBaseItem().setAllowStack() || topItem.getBaseItem().allowSit() || topItem.getBaseItem().allowLay()))); } @Override - public void onDrag(Room room, RoomUnit roomUnit, int velocity, RoomUserRotation direction) { + public void onDrag(Room room, RoomUnit roomUnit, int velocity, RoomRotation direction) { } @Override - public void onKick(Room room, RoomUnit roomUnit, int velocity, RoomUserRotation direction) { + public void onKick(Room room, RoomUnit roomUnit, int velocity, RoomRotation direction) { } @Override - public void onTackle(Room room, RoomUnit roomUnit, int velocity, RoomUserRotation direction) { + public void onTackle(Room room, RoomUnit roomUnit, int velocity, RoomRotation direction) { } @Override - public void onMove(Room room, RoomTile from, RoomTile to, RoomUserRotation direction, RoomUnit kicker, int nextRoll, int currentStep, int totalSteps) { + public void onMove(Room room, RoomTile from, RoomTile to, RoomRotation direction, RoomUnit kicker, int nextRoll, int currentStep, int totalSteps) { Habbo habbo = room.getHabbo(kicker); if (habbo != null) { @@ -154,7 +156,7 @@ public class InteractionBattleBanzaiPuck extends InteractionPushable { if (game != null) { GameTeam team = game.getTeamForHabbo(habbo); if (team != null) { - HabboItem item = room.getTopItemAt(to.getX(), to.getY()); + RoomItem item = room.getTopItemAt(to.getX(), to.getY()); try { item.onWalkOn(kicker, room, null); } catch (Exception e) { @@ -169,7 +171,7 @@ public class InteractionBattleBanzaiPuck extends InteractionPushable { } @Override - public void onBounce(Room room, RoomUserRotation oldDirection, RoomUserRotation newDirection, RoomUnit kicker) { + public void onBounce(Room room, RoomRotation oldDirection, RoomRotation newDirection, RoomUnit kicker) { } @@ -179,7 +181,7 @@ public class InteractionBattleBanzaiPuck extends InteractionPushable { } @Override - public boolean canStillMove(Room room, RoomTile from, RoomTile to, RoomUserRotation direction, RoomUnit kicker, int nextRoll, int currentStep, int totalSteps) { + public boolean canStillMove(Room room, RoomTile from, RoomTile to, RoomRotation direction, RoomUnit kicker, int nextRoll, int currentStep, int totalSteps) { return to.getState() == RoomTileState.OPEN && to.isWalkable(); } } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/battlebanzai/InteractionBattleBanzaiSphere.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/battlebanzai/InteractionBattleBanzaiSphere.java index 77954520..0009d8b1 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/battlebanzai/InteractionBattleBanzaiSphere.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/battlebanzai/InteractionBattleBanzaiSphere.java @@ -2,14 +2,14 @@ package com.eu.habbo.habbohotel.items.interactions.games.battlebanzai; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.ServerMessage; import java.sql.ResultSet; import java.sql.SQLException; -public class InteractionBattleBanzaiSphere extends HabboItem { +public class InteractionBattleBanzaiSphere extends RoomItem { public InteractionBattleBanzaiSphere(ResultSet set, Item baseItem) throws SQLException { super(set, baseItem); this.setExtradata("0"); diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/battlebanzai/InteractionBattleBanzaiTeleporter.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/battlebanzai/InteractionBattleBanzaiTeleporter.java index 5b7580a7..11109f6e 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/battlebanzai/InteractionBattleBanzaiTeleporter.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/battlebanzai/InteractionBattleBanzaiTeleporter.java @@ -4,16 +4,16 @@ import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; import com.eu.habbo.habbohotel.rooms.RoomUnitStatus; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.threading.runnables.BanzaiRandomTeleport; import java.sql.ResultSet; import java.sql.SQLException; -public class InteractionBattleBanzaiTeleporter extends HabboItem { +public class InteractionBattleBanzaiTeleporter extends RoomItem { public InteractionBattleBanzaiTeleporter(ResultSet set, Item baseItem) throws SQLException { super(set, baseItem); this.setExtradata("0"); @@ -57,13 +57,13 @@ public class InteractionBattleBanzaiTeleporter extends HabboItem { super.onWalkOn(roomUnit, room, objects); if(objects.length < 3) { - HabboItem target = room.getRoomSpecialTypes().getRandomTeleporter(null, this); + RoomItem target = room.getRoomSpecialTypes().getRandomTeleporter(null, this); if (target == null) return; this.setExtradata("1"); room.updateItemState(this); roomUnit.removeStatus(RoomUnitStatus.MOVE); - roomUnit.setGoalLocation(roomUnit.getCurrentLocation()); + roomUnit.setGoalLocation(roomUnit.getCurrentPosition()); roomUnit.setCanWalk(false); Emulator.getThreading().run(new BanzaiRandomTeleport(this, target, roomUnit, room), 500); } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/battlebanzai/InteractionBattleBanzaiTile.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/battlebanzai/InteractionBattleBanzaiTile.java index d2583d9e..96d55a83 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/battlebanzai/InteractionBattleBanzaiTile.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/battlebanzai/InteractionBattleBanzaiTile.java @@ -5,9 +5,9 @@ import com.eu.habbo.habbohotel.games.battlebanzai.BattleBanzaiGame; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.ServerMessage; import gnu.trove.set.hash.THashSet; import org.apache.commons.math3.util.Pair; @@ -16,7 +16,7 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.util.List; -public class InteractionBattleBanzaiTile extends HabboItem { +public class InteractionBattleBanzaiTile extends RoomItem { public InteractionBattleBanzaiTile(ResultSet set, Item baseItem) throws SQLException { super(set, baseItem); this.setExtradata("0"); @@ -92,8 +92,8 @@ public class InteractionBattleBanzaiTile extends HabboItem { } @Override - public boolean canStackAt(Room room, List>> itemsAtLocation) { - for (Pair> set : itemsAtLocation) { + public boolean canStackAt(Room room, List>> itemsAtLocation) { + for (Pair> set : itemsAtLocation) { if (set.getValue() != null && !set.getValue().isEmpty()) return false; } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/battlebanzai/gates/InteractionBattleBanzaiGate.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/battlebanzai/gates/InteractionBattleBanzaiGate.java index cbc343df..f6ec238e 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/battlebanzai/gates/InteractionBattleBanzaiGate.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/battlebanzai/gates/InteractionBattleBanzaiGate.java @@ -9,7 +9,7 @@ import com.eu.habbo.habbohotel.games.battlebanzai.BattleBanzaiGame; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.games.InteractionGameGate; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import java.sql.ResultSet; import java.sql.SQLException; @@ -35,7 +35,7 @@ public class InteractionBattleBanzaiGate extends InteractionGameGate { @Override public boolean isWalkable() { - Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(this.getRoomId()); + Room room = Emulator.getGameEnvironment().getRoomManager().getActiveRoomById(this.getRoomId()); if (room == null) return false; diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/battlebanzai/scoreboards/InteractionBattleBanzaiScoreboard.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/battlebanzai/scoreboards/InteractionBattleBanzaiScoreboard.java index f34584b4..ffb02954 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/battlebanzai/scoreboards/InteractionBattleBanzaiScoreboard.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/battlebanzai/scoreboards/InteractionBattleBanzaiScoreboard.java @@ -4,7 +4,7 @@ import com.eu.habbo.habbohotel.games.GameTeamColors; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.games.InteractionGameScoreboard; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import java.sql.ResultSet; import java.sql.SQLException; diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/football/InteractionFootball.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/football/InteractionFootball.java index 09a45a03..aae57b11 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/football/InteractionFootball.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/football/InteractionFootball.java @@ -6,8 +6,12 @@ import com.eu.habbo.habbohotel.games.football.FootballGame; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionPushable; import com.eu.habbo.habbohotel.items.interactions.games.football.goals.InteractionFootballGoal; -import com.eu.habbo.habbohotel.rooms.*; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.RoomTile; +import com.eu.habbo.habbohotel.rooms.RoomTileState; +import com.eu.habbo.habbohotel.rooms.entities.RoomRotation; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.messages.outgoing.rooms.items.OneWayDoorStatusMessageComposer; import com.eu.habbo.util.pathfinding.Rotation; @@ -29,10 +33,10 @@ public class InteractionFootball extends InteractionPushable { @Override public int getWalkOnVelocity(RoomUnit roomUnit, Room room) { - if (roomUnit.getPath().isEmpty() && roomUnit.tilesWalked() == 2 && this.getExtradata().equals("1")) + if (roomUnit.getPath().isEmpty() && roomUnit.getTilesMoved() == 2 && this.getExtradata().equals("1")) return 0; - if (roomUnit.getPath().isEmpty() && roomUnit.tilesWalked() == 1) + if (roomUnit.getPath().isEmpty() && roomUnit.getTilesMoved() == 1) return 6; return 1; @@ -40,7 +44,7 @@ public class InteractionFootball extends InteractionPushable { @Override public int getWalkOffVelocity(RoomUnit roomUnit, Room room) { - if (roomUnit.getPath().isEmpty() && roomUnit.tilesWalked() == 0) + if (roomUnit.getPath().isEmpty() && roomUnit.getTilesMoved() == 0) return 6; return 1; @@ -48,7 +52,7 @@ public class InteractionFootball extends InteractionPushable { @Override public int getDragVelocity(RoomUnit roomUnit, Room room) { - if (roomUnit.getPath().isEmpty() && roomUnit.tilesWalked() == 2) + if (roomUnit.getPath().isEmpty() && roomUnit.getTilesMoved() == 2) return 0; return 1; @@ -61,22 +65,22 @@ public class InteractionFootball extends InteractionPushable { @Override - public RoomUserRotation getWalkOnDirection(RoomUnit roomUnit, Room room) { + public RoomRotation getWalkOnDirection(RoomUnit roomUnit, Room room) { return roomUnit.getBodyRotation(); } @Override - public RoomUserRotation getWalkOffDirection(RoomUnit roomUnit, Room room) { + public RoomRotation getWalkOffDirection(RoomUnit roomUnit, Room room) { RoomTile peek = roomUnit.getPath().peek(); RoomTile nextWalkTile = peek != null ? room.getLayout().getTile(peek.getX(), peek.getY()) : roomUnit.getGoalLocation(); - return RoomUserRotation.values()[(RoomUserRotation.values().length + Rotation.Calculate(roomUnit.getX(), roomUnit.getY(), nextWalkTile.getX(), nextWalkTile.getY()) + 4) % 8]; + return RoomRotation.values()[(RoomRotation.values().length + Rotation.Calculate(roomUnit.getCurrentPosition().getX(), roomUnit.getCurrentPosition().getY(), nextWalkTile.getX(), nextWalkTile.getY()) + 4) % 8]; } - public RoomUserRotation getDragDirection(RoomUnit roomUnit, Room room) { + public RoomRotation getDragDirection(RoomUnit roomUnit, Room room) { return roomUnit.getBodyRotation(); } - public RoomUserRotation getTackleDirection(RoomUnit roomUnit, Room room) { + public RoomRotation getTackleDirection(RoomUnit roomUnit, Room room) { return roomUnit.getBodyRotation(); } @@ -92,52 +96,52 @@ public class InteractionFootball extends InteractionPushable { } @Override - public RoomUserRotation getBounceDirection(Room room, RoomUserRotation currentDirection) { + public RoomRotation getBounceDirection(Room room, RoomRotation currentDirection) { switch (currentDirection) { default: case NORTH: - return RoomUserRotation.SOUTH; + return RoomRotation.SOUTH; case NORTH_EAST: - if (this.validMove(room, room.getLayout().getTile(this.getX(), this.getY()), room.getLayout().getTileInFront(room.getLayout().getTile(this.getX(), this.getY()), RoomUserRotation.NORTH_WEST.getValue()))) - return RoomUserRotation.NORTH_WEST; - else if (this.validMove(room, room.getLayout().getTile(this.getX(), this.getY()), room.getLayout().getTileInFront(room.getLayout().getTile(this.getX(), this.getY()), RoomUserRotation.SOUTH_EAST.getValue()))) - return RoomUserRotation.SOUTH_EAST; + if (this.validMove(room, room.getLayout().getTile(this.getX(), this.getY()), room.getLayout().getTileInFront(room.getLayout().getTile(this.getX(), this.getY()), RoomRotation.NORTH_WEST.getValue()))) + return RoomRotation.NORTH_WEST; + else if (this.validMove(room, room.getLayout().getTile(this.getX(), this.getY()), room.getLayout().getTileInFront(room.getLayout().getTile(this.getX(), this.getY()), RoomRotation.SOUTH_EAST.getValue()))) + return RoomRotation.SOUTH_EAST; else - return RoomUserRotation.SOUTH_WEST; + return RoomRotation.SOUTH_WEST; case EAST: - return RoomUserRotation.WEST; + return RoomRotation.WEST; case SOUTH_EAST: - if (this.validMove(room, room.getLayout().getTile(this.getX(), this.getY()), room.getLayout().getTileInFront(room.getLayout().getTile(this.getX(), this.getY()), RoomUserRotation.SOUTH_WEST.getValue()))) - return RoomUserRotation.SOUTH_WEST; - else if (this.validMove(room, room.getLayout().getTile(this.getX(), this.getY()), room.getLayout().getTileInFront(room.getLayout().getTile(this.getX(), this.getY()), RoomUserRotation.NORTH_EAST.getValue()))) - return RoomUserRotation.NORTH_EAST; + if (this.validMove(room, room.getLayout().getTile(this.getX(), this.getY()), room.getLayout().getTileInFront(room.getLayout().getTile(this.getX(), this.getY()), RoomRotation.SOUTH_WEST.getValue()))) + return RoomRotation.SOUTH_WEST; + else if (this.validMove(room, room.getLayout().getTile(this.getX(), this.getY()), room.getLayout().getTileInFront(room.getLayout().getTile(this.getX(), this.getY()), RoomRotation.NORTH_EAST.getValue()))) + return RoomRotation.NORTH_EAST; else - return RoomUserRotation.NORTH_WEST; + return RoomRotation.NORTH_WEST; case SOUTH: - return RoomUserRotation.NORTH; + return RoomRotation.NORTH; case SOUTH_WEST: - if (this.validMove(room, room.getLayout().getTile(this.getX(), this.getY()), room.getLayout().getTileInFront(room.getLayout().getTile(this.getX(), this.getY()), RoomUserRotation.SOUTH_EAST.getValue()))) - return RoomUserRotation.SOUTH_EAST; - else if (this.validMove(room, room.getLayout().getTile(this.getX(), this.getY()), room.getLayout().getTileInFront(room.getLayout().getTile(this.getX(), this.getY()), RoomUserRotation.NORTH_WEST.getValue()))) - return RoomUserRotation.NORTH_WEST; + if (this.validMove(room, room.getLayout().getTile(this.getX(), this.getY()), room.getLayout().getTileInFront(room.getLayout().getTile(this.getX(), this.getY()), RoomRotation.SOUTH_EAST.getValue()))) + return RoomRotation.SOUTH_EAST; + else if (this.validMove(room, room.getLayout().getTile(this.getX(), this.getY()), room.getLayout().getTileInFront(room.getLayout().getTile(this.getX(), this.getY()), RoomRotation.NORTH_WEST.getValue()))) + return RoomRotation.NORTH_WEST; else - return RoomUserRotation.NORTH_EAST; + return RoomRotation.NORTH_EAST; case WEST: - return RoomUserRotation.EAST; + return RoomRotation.EAST; case NORTH_WEST: - if (this.validMove(room, room.getLayout().getTile(this.getX(), this.getY()), room.getLayout().getTileInFront(room.getLayout().getTile(this.getX(), this.getY()), RoomUserRotation.NORTH_EAST.getValue()))) - return RoomUserRotation.NORTH_EAST; - else if (this.validMove(room, room.getLayout().getTile(this.getX(), this.getY()), room.getLayout().getTileInFront(room.getLayout().getTile(this.getX(), this.getY()), RoomUserRotation.SOUTH_WEST.getValue()))) - return RoomUserRotation.SOUTH_WEST; + if (this.validMove(room, room.getLayout().getTile(this.getX(), this.getY()), room.getLayout().getTileInFront(room.getLayout().getTile(this.getX(), this.getY()), RoomRotation.NORTH_EAST.getValue()))) + return RoomRotation.NORTH_EAST; + else if (this.validMove(room, room.getLayout().getTile(this.getX(), this.getY()), room.getLayout().getTileInFront(room.getLayout().getTile(this.getX(), this.getY()), RoomRotation.SOUTH_WEST.getValue()))) + return RoomRotation.SOUTH_WEST; else - return RoomUserRotation.SOUTH_EAST; + return RoomRotation.SOUTH_EAST; } } @@ -145,7 +149,7 @@ public class InteractionFootball extends InteractionPushable { @Override public boolean validMove(Room room, RoomTile from, RoomTile to) { if (to == null || to.getState() == RoomTileState.INVALID) return false; - HabboItem topItem = room.getTopItemAt(to.getX(), to.getY(), this); + RoomItem topItem = room.getTopItemAt(to.getX(), to.getY(), this); // Move is valid if there isnt any furni yet if (topItem == null) { @@ -186,22 +190,22 @@ public class InteractionFootball extends InteractionPushable { //Events @Override - public void onDrag(Room room, RoomUnit roomUnit, int velocity, RoomUserRotation direction) { + public void onDrag(Room room, RoomUnit roomUnit, int velocity, RoomRotation direction) { } @Override - public void onKick(Room room, RoomUnit roomUnit, int velocity, RoomUserRotation direction) { + public void onKick(Room room, RoomUnit roomUnit, int velocity, RoomRotation direction) { } @Override - public void onTackle(Room room, RoomUnit roomUnit, int velocity, RoomUserRotation direction) { + public void onTackle(Room room, RoomUnit roomUnit, int velocity, RoomRotation direction) { } @Override - public void onMove(Room room, RoomTile from, RoomTile to, RoomUserRotation direction, RoomUnit kicker, int nextRoll, int currentStep, int totalSteps) { + public void onMove(Room room, RoomTile from, RoomTile to, RoomRotation direction, RoomUnit kicker, int nextRoll, int currentStep, int totalSteps) { FootballGame game = (FootballGame) room.getGame(FootballGame.class); if (game == null) { try { @@ -211,8 +215,8 @@ public class InteractionFootball extends InteractionPushable { return; } } - HabboItem currentTopItem = room.getTopItemAt(from.getX(), from.getY(), this); - HabboItem topItem = room.getTopItemAt(to.getX(), to.getY(), this); + RoomItem currentTopItem = room.getTopItemAt(from.getX(), from.getY(), this); + RoomItem topItem = room.getTopItemAt(to.getX(), to.getY(), this); if ((topItem != null) && ((currentTopItem == null) || (currentTopItem.getId() != topItem.getId())) && topItem instanceof InteractionFootballGoal interactionFootballGoal) { GameTeamColors color = interactionFootballGoal.teamColor; game.onScore(kicker, color); @@ -223,7 +227,7 @@ public class InteractionFootball extends InteractionPushable { } @Override - public void onBounce(Room room, RoomUserRotation oldDirection, RoomUserRotation newDirection, RoomUnit kicker) { + public void onBounce(Room room, RoomRotation oldDirection, RoomRotation newDirection, RoomUnit kicker) { } @@ -234,9 +238,9 @@ public class InteractionFootball extends InteractionPushable { } @Override - public boolean canStillMove(Room room, RoomTile from, RoomTile to, RoomUserRotation direction, RoomUnit kicker, int nextRoll, int currentStep, int totalSteps) { - HabboItem topItem = room.getTopItemAt(from.getX(), from.getY(), this); - return !((Emulator.getRandom().nextInt(10) >= 3 && room.hasHabbosAt(to.getX(), to.getY())) || (topItem != null && topItem.getBaseItem().getName().startsWith("fball_goal_") && currentStep != 1)); + public boolean canStillMove(Room room, RoomTile from, RoomTile to, RoomRotation direction, RoomUnit kicker, int nextRoll, int currentStep, int totalSteps) { + RoomItem topItem = room.getTopItemAt(from.getX(), from.getY(), this); + return !((Emulator.getRandom().nextInt(10) >= 3 && room.getRoomUnitManager().hasHabbosAt(to)) || (topItem != null && topItem.getBaseItem().getName().startsWith("fball_goal_") && currentStep != 1)); } @Override diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/football/InteractionFootballGate.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/football/InteractionFootballGate.java index 50a232ec..f18d6e7d 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/football/InteractionFootballGate.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/football/InteractionFootballGate.java @@ -3,10 +3,10 @@ package com.eu.habbo.habbohotel.items.interactions.games.football; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.habbohotel.users.HabboGender; -import com.eu.habbo.habbohotel.users.HabboItem; import com.eu.habbo.habbohotel.users.clothingvalidation.ClothingValidationManager; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.messages.outgoing.rooms.users.UserChangeMessageComposer; @@ -20,7 +20,7 @@ import com.eu.habbo.util.figure.FigureUtil; import java.sql.ResultSet; import java.sql.SQLException; -public class InteractionFootballGate extends HabboItem { +public class InteractionFootballGate extends RoomItem { private static final String CACHE_KEY = "fball_gate_look"; private String figureM; private String figureF; @@ -67,8 +67,8 @@ public class InteractionFootballGate extends HabboItem { habbo.getHabboInfo().setLook((String) habbo.getHabboStats().getCache().get(CACHE_KEY)); habbo.getHabboStats().getCache().remove(CACHE_KEY); habbo.getClient().sendResponse(new FigureUpdateComposer(habbo)); - if (habbo.getHabboInfo().getCurrentRoom() != null) { - habbo.getHabboInfo().getCurrentRoom().sendComposer(new UserChangeMessageComposer(habbo).compose()); + if (habbo.getRoomUnit().getRoom() != null) { + habbo.getRoomUnit().getRoom().sendComposer(new UserChangeMessageComposer(habbo).compose()); } } } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/football/goals/InteractionFootballGoal.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/football/goals/InteractionFootballGoal.java index 443bb720..e50163c7 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/football/goals/InteractionFootballGoal.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/football/goals/InteractionFootballGoal.java @@ -4,7 +4,7 @@ import com.eu.habbo.habbohotel.games.GameTeamColors; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.games.InteractionGameTeamItem; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.messages.ServerMessage; import java.sql.ResultSet; diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/football/scoreboards/InteractionFootballScoreboard.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/football/scoreboards/InteractionFootballScoreboard.java index dba5f039..ed3862e7 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/football/scoreboards/InteractionFootballScoreboard.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/football/scoreboards/InteractionFootballScoreboard.java @@ -6,7 +6,7 @@ import com.eu.habbo.habbohotel.games.GameTeamColors; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.games.InteractionGameScoreboard; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.wired.WiredEffectType; import java.sql.ResultSet; @@ -61,7 +61,7 @@ public class InteractionFootballScoreboard extends InteractionGameScoreboard { this.setExtradata(this.score + ""); this.needsUpdate(true); - Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(this.getRoomId()); + Room room = Emulator.getGameEnvironment().getRoomManager().getActiveRoomById(this.getRoomId()); if (room != null) { room.updateItem(this); } @@ -87,7 +87,7 @@ public class InteractionFootballScoreboard extends InteractionGameScoreboard { this.setExtradata(this.score + ""); this.needsUpdate(true); - Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(this.getRoomId()); + Room room = Emulator.getGameEnvironment().getRoomManager().getActiveRoomById(this.getRoomId()); if (room != null) { room.updateItem(this); } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/freeze/InteractionFreezeBlock.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/freeze/InteractionFreezeBlock.java index 673e6e83..59942cf4 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/freeze/InteractionFreezeBlock.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/freeze/InteractionFreezeBlock.java @@ -8,16 +8,16 @@ import com.eu.habbo.habbohotel.games.freeze.FreezeGame; import com.eu.habbo.habbohotel.games.freeze.FreezeGamePlayer; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.ServerMessage; import gnu.trove.set.hash.THashSet; import java.sql.ResultSet; import java.sql.SQLException; -public class InteractionFreezeBlock extends HabboItem { +public class InteractionFreezeBlock extends RoomItem { public InteractionFreezeBlock(ResultSet set, Item baseItem) throws SQLException { super(set, baseItem); this.setExtradata("0"); @@ -33,10 +33,10 @@ public class InteractionFreezeBlock extends HabboItem { if (client == null) return; - HabboItem item = null; - THashSet items = room.getItemsAt(room.getLayout().getTile(this.getX(), this.getY())); + RoomItem item = null; + THashSet items = room.getItemsAt(room.getLayout().getTile(this.getX(), this.getY())); - for (HabboItem i : items) { + for (RoomItem i : items) { if (i instanceof InteractionFreezeTile) { if (item == null || i.getZ() <= item.getZ()) { item = i; diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/freeze/InteractionFreezeExitTile.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/freeze/InteractionFreezeExitTile.java index de76eeef..52337257 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/freeze/InteractionFreezeExitTile.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/freeze/InteractionFreezeExitTile.java @@ -2,14 +2,14 @@ package com.eu.habbo.habbohotel.items.interactions.games.freeze; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.ServerMessage; import java.sql.ResultSet; import java.sql.SQLException; -public class InteractionFreezeExitTile extends HabboItem { +public class InteractionFreezeExitTile extends RoomItem { public InteractionFreezeExitTile(ResultSet set, Item baseItem) throws SQLException { super(set, baseItem); this.setExtradata("0"); diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/freeze/InteractionFreezeTile.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/freeze/InteractionFreezeTile.java index d46b3c82..2c768abf 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/freeze/InteractionFreezeTile.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/freeze/InteractionFreezeTile.java @@ -5,8 +5,8 @@ import com.eu.habbo.habbohotel.games.freeze.FreezeGame; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.messages.ServerMessage; import gnu.trove.set.hash.THashSet; import org.apache.commons.math3.util.Pair; @@ -15,7 +15,7 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.util.List; -public class InteractionFreezeTile extends HabboItem { +public class InteractionFreezeTile extends RoomItem { public InteractionFreezeTile(ResultSet set, Item baseItem) throws SQLException { super(set, baseItem); this.setExtradata("0"); @@ -41,7 +41,7 @@ public class InteractionFreezeTile extends HabboItem { if (client == null) return; - if (client.getHabbo().getRoomUnit().getCurrentLocation().getX() == this.getX() && client.getHabbo().getRoomUnit().getCurrentLocation().getY() == this.getY()) { + if (client.getHabbo().getRoomUnit().getCurrentPosition().getX() == this.getX() && client.getHabbo().getRoomUnit().getCurrentPosition().getY() == this.getY()) { FreezeGame game = (FreezeGame) room.getGame(FreezeGame.class); if (game != null) @@ -74,8 +74,8 @@ public class InteractionFreezeTile extends HabboItem { @Override - public boolean canStackAt(Room room, List>> itemsAtLocation) { - for (Pair> set : itemsAtLocation) { + public boolean canStackAt(Room room, List>> itemsAtLocation) { + for (Pair> set : itemsAtLocation) { if (set.getValue() != null && !set.getValue().isEmpty()) return false; } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/freeze/gates/InteractionFreezeGate.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/freeze/gates/InteractionFreezeGate.java index e135e7d1..38ab21f9 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/freeze/gates/InteractionFreezeGate.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/freeze/gates/InteractionFreezeGate.java @@ -9,7 +9,7 @@ import com.eu.habbo.habbohotel.games.freeze.FreezeGame; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.games.InteractionGameGate; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import java.sql.ResultSet; import java.sql.SQLException; @@ -34,7 +34,7 @@ public class InteractionFreezeGate extends InteractionGameGate { @Override public boolean isWalkable() { - Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(this.getRoomId()); + Room room = Emulator.getGameEnvironment().getRoomManager().getActiveRoomById(this.getRoomId()); if (room == null) return false; diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/freeze/scoreboards/InteractionFreezeScoreboard.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/freeze/scoreboards/InteractionFreezeScoreboard.java index 5f8d510d..66cab607 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/freeze/scoreboards/InteractionFreezeScoreboard.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/freeze/scoreboards/InteractionFreezeScoreboard.java @@ -4,7 +4,7 @@ import com.eu.habbo.habbohotel.games.GameTeamColors; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.games.InteractionGameScoreboard; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import java.sql.ResultSet; import java.sql.SQLException; diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/tag/InteractionTagField.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/tag/InteractionTagField.java index 53c8dd7b..3fffa883 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/tag/InteractionTagField.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/tag/InteractionTagField.java @@ -4,15 +4,15 @@ import com.eu.habbo.habbohotel.games.Game; import com.eu.habbo.habbohotel.games.tag.TagGame; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.ServerMessage; import java.sql.ResultSet; import java.sql.SQLException; -public abstract class InteractionTagField extends HabboItem { +public abstract class InteractionTagField extends RoomItem { public Class gameClazz; public InteractionTagField(ResultSet set, Item baseItem, Class gameClazz) throws SQLException { diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/tag/InteractionTagPole.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/tag/InteractionTagPole.java index d9aa71c6..e1f04890 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/tag/InteractionTagPole.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/tag/InteractionTagPole.java @@ -2,14 +2,14 @@ package com.eu.habbo.habbohotel.items.interactions.games.tag; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.ServerMessage; import java.sql.ResultSet; import java.sql.SQLException; -public class InteractionTagPole extends HabboItem { +public class InteractionTagPole extends RoomItem { public InteractionTagPole(ResultSet set, Item baseItem) throws SQLException { super(set, baseItem); } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/tag/icetag/InteractionIceTagField.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/tag/icetag/InteractionIceTagField.java index 75d25b2b..7e5c6855 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/tag/icetag/InteractionIceTagField.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/tag/icetag/InteractionIceTagField.java @@ -6,7 +6,7 @@ import com.eu.habbo.habbohotel.games.tag.IceTagGame; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.games.tag.InteractionTagField; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.users.Habbo; import java.sql.ResultSet; diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/tag/rollerskate/InteractionRollerskateField.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/tag/rollerskate/InteractionRollerskateField.java index c25374c9..ed035ad4 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/tag/rollerskate/InteractionRollerskateField.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/tag/rollerskate/InteractionRollerskateField.java @@ -6,7 +6,7 @@ import com.eu.habbo.habbohotel.games.tag.RollerskateGame; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.games.tag.InteractionTagField; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.users.Habbo; import java.sql.ResultSet; diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/interfaces/ConditionalGate.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/interfaces/ConditionalGate.java index 58eea046..6672f7ee 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/interfaces/ConditionalGate.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/interfaces/ConditionalGate.java @@ -1,7 +1,7 @@ package com.eu.habbo.habbohotel.items.interactions.interfaces; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; public interface ConditionalGate { void onRejected(RoomUnit roomUnit, Room room, Object[] objects); diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/pets/InteractionMonsterPlantSeed.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/pets/InteractionMonsterPlantSeed.java index b92511cd..b3304ea5 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/pets/InteractionMonsterPlantSeed.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/pets/InteractionMonsterPlantSeed.java @@ -4,14 +4,14 @@ import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.ServerMessage; import java.sql.ResultSet; import java.sql.SQLException; -public class InteractionMonsterPlantSeed extends HabboItem { +public class InteractionMonsterPlantSeed extends RoomItem { public InteractionMonsterPlantSeed(ResultSet set, Item baseItem) throws SQLException { super(set, baseItem); diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/pets/InteractionNest.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/pets/InteractionNest.java index 9cd0adf5..dcd7e9a7 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/pets/InteractionNest.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/pets/InteractionNest.java @@ -6,16 +6,16 @@ import com.eu.habbo.habbohotel.pets.Pet; import com.eu.habbo.habbohotel.pets.PetTasks; import com.eu.habbo.habbohotel.pets.RideablePet; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; import com.eu.habbo.habbohotel.rooms.RoomUnitStatus; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.messages.outgoing.rooms.users.UserUpdateComposer; import java.sql.ResultSet; import java.sql.SQLException; -public class InteractionNest extends HabboItem { +public class InteractionNest extends RoomItem { public InteractionNest(ResultSet set, Item baseItem) throws SQLException { super(set, baseItem); } @@ -56,7 +56,7 @@ public class InteractionNest extends HabboItem { public void onWalkOn(RoomUnit roomUnit, Room room, Object[] objects) throws Exception { super.onWalkOn(roomUnit, room, objects); - Pet pet = room.getPet(roomUnit); + Pet pet = room.getRoomUnitManager().getPetByRoomUnit(roomUnit); if (pet == null) return; @@ -72,7 +72,7 @@ public class InteractionNest extends HabboItem { pet.setTask(PetTasks.NEST); pet.getRoomUnit().setGoalLocation(room.getLayout().getTile(this.getX(), this.getY())); - pet.getRoomUnit().clearStatus(); + pet.getRoomUnit().clearStatuses(); pet.getRoomUnit().removeStatus(RoomUnitStatus.MOVE); pet.getRoomUnit().setStatus(RoomUnitStatus.LAY, room.getStackHeight(this.getX(), this.getY(), false) + ""); room.sendComposer(new UserUpdateComposer(roomUnit).compose()); diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/pets/InteractionPetBreedingNest.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/pets/InteractionPetBreedingNest.java index 87eabfe3..e23d338e 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/pets/InteractionPetBreedingNest.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/pets/InteractionPetBreedingNest.java @@ -7,9 +7,9 @@ import com.eu.habbo.habbohotel.pets.Pet; import com.eu.habbo.habbohotel.pets.PetManager; import com.eu.habbo.habbohotel.pets.PetTasks; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.messages.outgoing.rooms.pets.PerkAllowancesComposer; import com.eu.habbo.messages.outgoing.rooms.pets.breeding.ConfirmBreedingRequestComposer; @@ -19,7 +19,7 @@ import com.eu.habbo.threading.runnables.QueryDeleteHabboItem; import java.sql.ResultSet; import java.sql.SQLException; -public class InteractionPetBreedingNest extends HabboItem { +public class InteractionPetBreedingNest extends RoomItem { private Pet petOne = null; private Pet petTwo = null; @@ -33,7 +33,7 @@ public class InteractionPetBreedingNest extends HabboItem { @Override public boolean canWalkOn(RoomUnit roomUnit, Room room, Object[] objects) { - return room.getPet(roomUnit) != null && !this.boxFull(); + return room.getRoomUnitManager().getPetByRoomUnit(roomUnit) != null && !this.boxFull(); } @Override @@ -57,14 +57,14 @@ public class InteractionPetBreedingNest extends HabboItem { @Override public void onWalkOn(RoomUnit roomUnit, Room room, Object[] objects) { - Pet pet = room.getPet(roomUnit); + Pet pet = room.getRoomUnitManager().getPetByRoomUnit(roomUnit); if (pet != null && !this.boxFull()) { this.addPet(pet); if (this.boxFull()) { - Habbo ownerPetOne = room.getHabbo(this.petOne.getUserId()); - Habbo ownerPetTwo = room.getHabbo(this.petTwo.getUserId()); + Habbo ownerPetOne = room.getRoomUnitManager().getRoomHabboById(this.petOne.getUserId()); + Habbo ownerPetTwo = room.getRoomUnitManager().getRoomHabboById(this.petTwo.getUserId()); if (ownerPetOne != null && ownerPetTwo != null && this.petOne.getPetData().getType() == this.petTwo.getPetData().getType() && this.petOne.getPetData().getOffspringType() != -1) { ownerPetTwo.getClient().sendResponse(new ConfirmBreedingRequestComposer(this.getId(), this.petOne.getPetData().getOffspringType(), this.petOne, ownerPetOne.getHabboInfo().getUsername(), this.petTwo, ownerPetTwo.getHabboInfo().getUsername())); @@ -109,13 +109,13 @@ public class InteractionPetBreedingNest extends HabboItem { public void stopBreeding(Habbo habbo) { this.setExtradata("0"); - habbo.getHabboInfo().getCurrentRoom().updateItem(this); + habbo.getRoomUnit().getRoom().updateItem(this); if (this.petOne != null) { habbo.getClient().sendResponse(new PerkAllowancesComposer(this.getId(), PerkAllowancesComposer.CLOSE_WIDGET, "")); } if (this.petTwo.getUserId() != habbo.getHabboInfo().getId()) { - Habbo owner = this.petTwo.getRoom().getHabbo(this.petTwo.getUserId()); + Habbo owner = this.petTwo.getRoom().getRoomUnitManager().getRoomHabboById(this.petTwo.getUserId()); if (owner != null) { owner.getClient().sendResponse(new PerkAllowancesComposer(this.getId(), PerkAllowancesComposer.CLOSE_WIDGET, "")); } @@ -143,18 +143,20 @@ public class InteractionPetBreedingNest extends HabboItem { Emulator.getThreading().run(new QueryDeleteHabboItem(this.getId())); this.setExtradata("2"); - habbo.getHabboInfo().getCurrentRoom().updateItem(this); + habbo.getRoomUnit().getRoom().updateItem(this); - HabboItem box = this; + RoomItem box = this; Emulator.getThreading().run(() -> { Pet offspring = Emulator.getGameEnvironment().getPetManager().createPet(petOne.getPetData().getOffspringType(), (int) Math.min(Math.round(Math.max(1d, PetManager.getNormalDistributionForBreeding(petOne.getLevel(), petTwo.getLevel()).sample())), 20), name, habbo.getClient()); - habbo.getHabboInfo().getCurrentRoom().placePet(offspring, box.getX(), box.getY(), box.getZ()); + + + habbo.getRoomUnit().getRoom().getRoomUnitManager().placePet(offspring, habbo.getRoomUnit().getRoom(), box.getX(), box.getY(), box.getZ()); offspring.setNeedsUpdate(true); offspring.run(); InteractionPetBreedingNest.this.freePets(); - habbo.getHabboInfo().getCurrentRoom().removeHabboItem(box); + habbo.getRoomUnit().getRoom().removeHabboItem(box); habbo.getClient().sendResponse(new NestBreedingSuccessComposer(offspring.getId(), Emulator.getGameEnvironment().getPetManager().getRarityForOffspring(offspring))); if (box.getBaseItem().getName().startsWith("pet_breeding_")) { diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/pets/InteractionPetDrink.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/pets/InteractionPetDrink.java index 96a0932e..e5762342 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/pets/InteractionPetDrink.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/pets/InteractionPetDrink.java @@ -6,7 +6,12 @@ import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionDefault; import com.eu.habbo.habbohotel.pets.Pet; -import com.eu.habbo.habbohotel.rooms.*; +import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.RoomLayout; +import com.eu.habbo.habbohotel.rooms.RoomTile; +import com.eu.habbo.habbohotel.rooms.RoomUnitStatus; +import com.eu.habbo.habbohotel.rooms.entities.RoomRotation; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.threading.runnables.PetClearPosture; import com.eu.habbo.threading.runnables.RoomUnitWalkToLocation; @@ -32,7 +37,7 @@ public class InteractionPetDrink extends InteractionDefault { @Override public boolean canToggle(Habbo habbo, Room room) { - return RoomLayout.tilesAdjecent(room.getLayout().getTile(this.getX(), this.getY()), habbo.getRoomUnit().getCurrentLocation()); + return RoomLayout.tilesAdjecent(room.getLayout().getTile(this.getX(), this.getY()), habbo.getRoomUnit().getCurrentPosition()); } @Override @@ -43,12 +48,12 @@ public class InteractionPetDrink extends InteractionDefault { if (!this.canToggle(client.getHabbo(), room)) { RoomTile closestTile = null; for (RoomTile tile : room.getLayout().getTilesAround(room.getLayout().getTile(this.getX(), this.getY()))) { - if (tile.isWalkable() && (closestTile == null || closestTile.distance(client.getHabbo().getRoomUnit().getCurrentLocation()) > tile.distance(client.getHabbo().getRoomUnit().getCurrentLocation()))) { + if (tile.isWalkable() && (closestTile == null || closestTile.distance(client.getHabbo().getRoomUnit().getCurrentPosition()) > tile.distance(client.getHabbo().getRoomUnit().getCurrentPosition()))) { closestTile = tile; } } - if (closestTile != null && !closestTile.equals(client.getHabbo().getRoomUnit().getCurrentLocation())) { + if (closestTile != null && !closestTile.equals(client.getHabbo().getRoomUnit().getCurrentPosition())) { List onSuccess = new ArrayList<>(); onSuccess.add(() -> this.change(room, this.getBaseItem().getStateCount() - 1)); @@ -66,20 +71,20 @@ public class InteractionPetDrink extends InteractionDefault { if (this.getExtradata() == null || this.getExtradata().isEmpty()) this.setExtradata("0"); - Pet pet = room.getPet(roomUnit); + Pet pet = room.getRoomUnitManager().getPetByRoomUnit(roomUnit); if (pet != null && pet.getPetData().haveDrinkItem(this) && pet.levelThirst >= 35) { pet.clearPosture(); pet.getRoomUnit().setGoalLocation(room.getLayout().getTile(this.getX(), this.getY())); - pet.getRoomUnit().setRotation(RoomUserRotation.values()[this.getRotation()]); - pet.getRoomUnit().clearStatus(); - pet.getRoomUnit().setStatus(RoomUnitStatus.EAT, pet.getRoomUnit().getCurrentLocation().getStackHeight() + ""); + pet.getRoomUnit().setRotation(RoomRotation.values()[this.getRotation()]); + pet.getRoomUnit().clearStatuses(); + pet.getRoomUnit().setStatus(RoomUnitStatus.EAT, pet.getRoomUnit().getCurrentPosition().getStackHeight() + ""); pet.setPacketUpdate(true); Emulator.getThreading().run(() -> { pet.addThirst(-75); this.change(room, -1); - pet.getRoomUnit().clearStatus(); + pet.getRoomUnit().clearStatuses(); new PetClearPosture(pet, RoomUnitStatus.EAT, null, true); pet.setPacketUpdate(true); }, 1000); diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/pets/InteractionPetFood.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/pets/InteractionPetFood.java index 92bf9bc3..8b9e5388 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/pets/InteractionPetFood.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/pets/InteractionPetFood.java @@ -6,9 +6,9 @@ import com.eu.habbo.habbohotel.items.interactions.InteractionDefault; import com.eu.habbo.habbohotel.pets.Pet; import com.eu.habbo.habbohotel.pets.PetTasks; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; import com.eu.habbo.habbohotel.rooms.RoomUnitStatus; -import com.eu.habbo.habbohotel.rooms.RoomUserRotation; +import com.eu.habbo.habbohotel.rooms.entities.RoomRotation; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.messages.outgoing.rooms.users.UserUpdateComposer; import com.eu.habbo.threading.runnables.PetEatAction; @@ -31,15 +31,15 @@ public class InteractionPetFood extends InteractionDefault { if (this.getExtradata().length() == 0) this.setExtradata("0"); - Pet pet = room.getPet(roomUnit); + Pet pet = room.getRoomUnitManager().getPetByRoomUnit(roomUnit); if (pet != null) { if (pet.getPetData().haveFoodItem(this)) { if (pet.levelHunger >= 35) { pet.setTask(PetTasks.EAT); pet.getRoomUnit().setGoalLocation(room.getLayout().getTile(this.getX(), this.getY())); - pet.getRoomUnit().setRotation(RoomUserRotation.values()[this.getRotation()]); - pet.getRoomUnit().clearStatus(); + pet.getRoomUnit().setRotation(RoomRotation.values()[this.getRotation()]); + pet.getRoomUnit().clearStatuses(); pet.getRoomUnit().removeStatus(RoomUnitStatus.MOVE); pet.getRoomUnit().setStatus(RoomUnitStatus.EAT, "0"); room.sendComposer(new UserUpdateComposer(roomUnit).compose()); diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/pets/InteractionPetToy.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/pets/InteractionPetToy.java index fef842ea..a3af6600 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/pets/InteractionPetToy.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/pets/InteractionPetToy.java @@ -6,8 +6,13 @@ import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionDefault; import com.eu.habbo.habbohotel.pets.Pet; import com.eu.habbo.habbohotel.pets.PetTasks; -import com.eu.habbo.habbohotel.rooms.*; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.RoomTile; +import com.eu.habbo.habbohotel.rooms.RoomUnitStatus; +import com.eu.habbo.habbohotel.rooms.entities.RoomRotation; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnitType; import com.eu.habbo.threading.runnables.PetClearPosture; import java.sql.ResultSet; @@ -31,8 +36,8 @@ public class InteractionPetToy extends InteractionDefault { this.setExtradata("0"); room.updateItem(this); - for (Pet pet : room.getPetsAt(oldLocation)) { - pet.getRoomUnit().clearStatus(); + for (Pet pet : room.getRoomUnitManager().getPetsAt(oldLocation)) { + pet.getRoomUnit().clearStatuses(); pet.setPacketUpdate(true); } } @@ -41,7 +46,7 @@ public class InteractionPetToy extends InteractionDefault { this.setExtradata("0"); for (Pet pet : room.getPetsOnItem(this)) { - pet.getRoomUnit().clearStatus(); + pet.getRoomUnit().clearStatuses(); pet.setPacketUpdate(true); } } @@ -50,7 +55,7 @@ public class InteractionPetToy extends InteractionDefault { public void onWalkOn(RoomUnit roomUnit, Room room, Object[] objects) throws Exception { super.onWalkOn(roomUnit, room, objects); - Pet pet = room.getPet(roomUnit); + Pet pet = room.getRoomUnitManager().getPetByRoomUnit(roomUnit); if (pet != null && pet.getPetData().haveToyItem(this.getBaseItem()) && this.getOccupyingTiles(room.getLayout()).contains(pet.getRoomUnit().getGoalLocation())) { if (pet.getEnergy() <= 35) { @@ -59,16 +64,16 @@ public class InteractionPetToy extends InteractionDefault { pet.setTask(PetTasks.PLAY); pet.getRoomUnit().setGoalLocation(room.getLayout().getTile(this.getX(), this.getY())); - pet.getRoomUnit().setRotation(RoomUserRotation.values()[this.getRotation()]); - pet.getRoomUnit().clearStatus(); - pet.getRoomUnit().setStatus(RoomUnitStatus.PLAY, pet.getRoomUnit().getCurrentLocation().getStackHeight() + ""); + pet.getRoomUnit().setRotation(RoomRotation.values()[this.getRotation()]); + pet.getRoomUnit().clearStatuses(); + pet.getRoomUnit().setStatus(RoomUnitStatus.PLAY, pet.getRoomUnit().getCurrentPosition().getStackHeight() + ""); pet.setPacketUpdate(true); - HabboItem item = this; + RoomItem item = this; Emulator.getThreading().run(() -> { pet.addHappiness(25); item.setExtradata("0"); room.updateItem(item); - pet.getRoomUnit().clearStatus(); + pet.getRoomUnit().clearStatuses(); new PetClearPosture(pet, RoomUnitStatus.PLAY, null, true).run(); pet.setPacketUpdate(true); }, ((long)(Emulator.getRandom().nextInt(20) * 500) + 2500)); @@ -81,19 +86,19 @@ public class InteractionPetToy extends InteractionDefault { public void onWalkOff(RoomUnit roomUnit, Room room, Object[] objects) throws Exception { super.onWalkOff(roomUnit, room, objects); - Pet pet = room.getPet(roomUnit); + Pet pet = room.getRoomUnitManager().getPetByRoomUnit(roomUnit); if (pet != null) { this.setExtradata("0"); room.updateItem(this); - pet.getRoomUnit().clearStatus(); + pet.getRoomUnit().clearStatuses(); pet.setPacketUpdate(true); } } @Override public boolean canWalkOn(RoomUnit roomUnit, Room room, Object[] objects) { - Pet pet = room.getPet(roomUnit); + Pet pet = room.getRoomUnitManager().getPetByRoomUnit(roomUnit); return roomUnit.getRoomUnitType() == RoomUnitType.PET && pet != null && pet.getPetData().haveToyItem(this.getBaseItem()); } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/pets/InteractionPetTrampoline.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/pets/InteractionPetTrampoline.java index 9c16421f..cadb17a2 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/pets/InteractionPetTrampoline.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/pets/InteractionPetTrampoline.java @@ -6,7 +6,11 @@ import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionDefault; import com.eu.habbo.habbohotel.pets.Pet; import com.eu.habbo.habbohotel.pets.PetTasks; -import com.eu.habbo.habbohotel.rooms.*; +import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.RoomTile; +import com.eu.habbo.habbohotel.rooms.RoomUnitStatus; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnitType; import com.eu.habbo.threading.runnables.PetClearPosture; import java.sql.ResultSet; @@ -31,7 +35,7 @@ public class InteractionPetTrampoline extends InteractionDefault { this.setExtradata("0"); room.updateItem(this); - for (Pet pet : room.getPetsAt(oldLocation)) { + for (Pet pet : room.getRoomUnitManager().getPetsAt(oldLocation)) { pet.getRoomUnit().removeStatus(RoomUnitStatus.JUMP); pet.setPacketUpdate(true); } @@ -51,7 +55,7 @@ public class InteractionPetTrampoline extends InteractionDefault { public void onWalkOn(RoomUnit roomUnit, Room room, Object[] objects) throws Exception { super.onWalkOn(roomUnit, room, objects); - Pet pet = room.getPet(roomUnit); + Pet pet = room.getRoomUnitManager().getPetByRoomUnit(roomUnit); if (pet != null && pet.getPetData().haveToyItem(this.getBaseItem()) && this.getOccupyingTiles(room.getLayout()).contains(pet.getRoomUnit().getGoalLocation())) { if (pet.getEnergy() <= 35) { @@ -78,7 +82,7 @@ public class InteractionPetTrampoline extends InteractionDefault { public void onWalkOff(RoomUnit roomUnit, Room room, Object[] objects) throws Exception { super.onWalkOff(roomUnit, room, objects); - Pet pet = room.getPet(roomUnit); + Pet pet = room.getRoomUnitManager().getPetByRoomUnit(roomUnit); if (pet != null) { this.setExtradata("0"); @@ -90,7 +94,7 @@ public class InteractionPetTrampoline extends InteractionDefault { @Override public boolean canWalkOn(RoomUnit roomUnit, Room room, Object[] objects) { - Pet pet = room.getPet(roomUnit); + Pet pet = room.getRoomUnitManager().getPetByRoomUnit(roomUnit); return roomUnit.getRoomUnitType() == RoomUnitType.PET && pet != null && pet.getPetData().haveToyItem(this.getBaseItem()); } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/pets/InteractionPetTree.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/pets/InteractionPetTree.java index 7ff78077..2be0541d 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/pets/InteractionPetTree.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/pets/InteractionPetTree.java @@ -4,7 +4,12 @@ import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionDefault; import com.eu.habbo.habbohotel.pets.Pet; -import com.eu.habbo.habbohotel.rooms.*; +import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.RoomTile; +import com.eu.habbo.habbohotel.rooms.RoomUnitStatus; +import com.eu.habbo.habbohotel.rooms.entities.RoomRotation; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnitType; import com.eu.habbo.threading.runnables.PetClearPosture; import java.sql.ResultSet; @@ -21,15 +26,15 @@ public class InteractionPetTree extends InteractionDefault { @Override public void onMove(Room room, RoomTile oldLocation, RoomTile newLocation) { - for (Pet pet : room.getPetsAt(oldLocation)) { - pet.getRoomUnit().clearStatus(); + for (Pet pet : room.getRoomUnitManager().getPetsAt(oldLocation)) { + pet.getRoomUnit().clearStatuses(); pet.setPacketUpdate(true); } } @Override public void onPickUp(Room room) { for (Pet pet : room.getPetsOnItem(this)) { - pet.getRoomUnit().clearStatus(); + pet.getRoomUnit().clearStatuses(); pet.setPacketUpdate(true); } } @@ -38,7 +43,7 @@ public class InteractionPetTree extends InteractionDefault { public void onWalkOn(RoomUnit roomUnit, Room room, Object[] objects) throws Exception { super.onWalkOn(roomUnit, room, objects); - Pet pet = room.getPet(roomUnit); + Pet pet = room.getRoomUnitManager().getPetByRoomUnit(roomUnit); if (pet != null && pet.getPetData().haveToyItem(this.getBaseItem()) && this.getOccupyingTiles(room.getLayout()).contains(pet.getRoomUnit().getGoalLocation())) { RoomUnitStatus task = switch (pet.getTask()) { case RING_OF_FIRE -> RoomUnitStatus.RINGOFFIRE; @@ -49,17 +54,17 @@ public class InteractionPetTree extends InteractionDefault { if (pet.getEnergy() >= 35 && task != RoomUnitStatus.HANG) { pet.getRoomUnit().setCanWalk(false); - pet.getRoomUnit().setRotation(RoomUserRotation.values()[this.getRotation()]); - pet.getRoomUnit().clearStatus(); - pet.getRoomUnit().setStatus(task, pet.getRoomUnit().getCurrentLocation().getStackHeight() + ""); + pet.getRoomUnit().setRotation(RoomRotation.values()[this.getRotation()]); + pet.getRoomUnit().clearStatuses(); + pet.getRoomUnit().setStatus(task, pet.getRoomUnit().getCurrentPosition().getStackHeight() + ""); pet.setPacketUpdate(true); RoomUnitStatus finalTask = task; Emulator.getThreading().run(() -> { pet.addHappiness(25); - pet.getRoomUnit().clearStatus(); + pet.getRoomUnit().clearStatuses(); new PetClearPosture(pet, finalTask, null, true); - if (this.getOccupyingTiles(room.getLayout()).contains(pet.getRoomUnit().getCurrentLocation())) { - pet.getRoomUnit().setStatus(RoomUnitStatus.HANG, pet.getRoomUnit().getCurrentLocation().getStackHeight() + ""); + if (this.getOccupyingTiles(room.getLayout()).contains(pet.getRoomUnit().getCurrentPosition())) { + pet.getRoomUnit().setStatus(RoomUnitStatus.HANG, pet.getRoomUnit().getCurrentPosition().getStackHeight() + ""); } else { pet.clearPosture(); } @@ -67,9 +72,9 @@ public class InteractionPetTree extends InteractionDefault { pet.setPacketUpdate(true); }, (long) 2500 + (Emulator.getRandom().nextInt(20) * 500)); } else { - pet.getRoomUnit().setRotation(RoomUserRotation.values()[this.getRotation()]); - pet.getRoomUnit().clearStatus(); - pet.getRoomUnit().setStatus(RoomUnitStatus.HANG, pet.getRoomUnit().getCurrentLocation().getStackHeight() + ""); + pet.getRoomUnit().setRotation(RoomRotation.values()[this.getRotation()]); + pet.getRoomUnit().clearStatuses(); + pet.getRoomUnit().setStatus(RoomUnitStatus.HANG, pet.getRoomUnit().getCurrentPosition().getStackHeight() + ""); pet.setPacketUpdate(true); } } @@ -79,17 +84,17 @@ public class InteractionPetTree extends InteractionDefault { public void onWalkOff(RoomUnit roomUnit, Room room, Object[] objects) throws Exception { super.onWalkOff(roomUnit, room, objects); - Pet pet = room.getPet(roomUnit); + Pet pet = room.getRoomUnitManager().getPetByRoomUnit(roomUnit); if (pet != null) { - pet.getRoomUnit().clearStatus(); + pet.getRoomUnit().clearStatuses(); pet.setPacketUpdate(true); } } @Override public boolean canWalkOn(RoomUnit roomUnit, Room room, Object[] objects) { - Pet pet = room.getPet(roomUnit); + Pet pet = room.getRoomUnitManager().getPetByRoomUnit(roomUnit); return roomUnit.getRoomUnitType() == RoomUnitType.PET && pet != null && pet.getPetData().haveToyItem(this.getBaseItem()); } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/totems/InteractionTotemHead.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/totems/InteractionTotemHead.java index a016a1a2..ff39f9ab 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/totems/InteractionTotemHead.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/totems/InteractionTotemHead.java @@ -5,7 +5,7 @@ import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionDefault; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.habbohotel.wired.WiredEffectType; import java.sql.ResultSet; @@ -50,7 +50,7 @@ public class InteractionTotemHead extends InteractionDefault { private void update(Room room, RoomTile tile) { InteractionTotemLegs legs = null; - for(HabboItem item : room.getItemsAt(tile)) { + for(RoomItem item : room.getItemsAt(tile)) { if(item instanceof InteractionTotemLegs && item.getZ() < this.getZ()) legs = (InteractionTotemLegs)item; } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/totems/InteractionTotemLegs.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/totems/InteractionTotemLegs.java index f12a5193..1dcf58f6 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/totems/InteractionTotemLegs.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/totems/InteractionTotemLegs.java @@ -5,7 +5,7 @@ import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionDefault; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.habbohotel.wired.WiredEffectType; import java.sql.ResultSet; @@ -41,7 +41,7 @@ public class InteractionTotemLegs extends InteractionDefault { } private void updateHead(Room room, RoomTile tile) { - for(HabboItem item : room.getItemsAt(tile)) { + for(RoomItem item : room.getItemsAt(tile)) { if(item instanceof InteractionTotemHead && item.getZ() > this.getZ()) ((InteractionTotemHead)item).updateTotemState(room); } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/totems/InteractionTotemPlanet.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/totems/InteractionTotemPlanet.java index 6c9ddb3f..52103f5f 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/totems/InteractionTotemPlanet.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/totems/InteractionTotemPlanet.java @@ -4,7 +4,7 @@ import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionDefault; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import gnu.trove.set.hash.THashSet; import java.sql.ResultSet; @@ -39,9 +39,9 @@ public class InteractionTotemPlanet extends InteractionDefault { InteractionTotemLegs legs = null; InteractionTotemHead head = null; - THashSet items = room.getItemsAt(room.getLayout().getTile(this.getX(), this.getY())); + THashSet items = room.getItemsAt(room.getLayout().getTile(this.getX(), this.getY())); - for(HabboItem item : items) { + for(RoomItem item : items) { if(item instanceof InteractionTotemLegs && item.getZ() < this.getZ()) legs = (InteractionTotemLegs)item; } @@ -51,7 +51,7 @@ public class InteractionTotemPlanet extends InteractionDefault { return; } - for(HabboItem item : items) { + for(RoomItem item : items) { if(item instanceof InteractionTotemHead && item.getZ() > legs.getZ()) head = (InteractionTotemHead)item; } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/WiredSettings.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/WiredSettings.java index 7f720678..a4e799bd 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/WiredSettings.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/WiredSettings.java @@ -2,7 +2,7 @@ package com.eu.habbo.habbohotel.items.interactions.wired; import com.eu.habbo.habbohotel.items.interactions.wired.interfaces.IWiredSettings; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.habbohotel.wired.WiredMatchFurniSetting; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; @@ -53,15 +53,15 @@ public class WiredSettings implements IWiredSettings { this.selectionType = 0; } - public HashSet getItems(Room room) { - HashSet items = new HashSet<>(); + public HashSet getItems(Room room) { + HashSet items = new HashSet<>(); if(this.itemIds.size() == 0) { return items; } for(int i = 0; i < this.itemIds.size(); i++) { - HabboItem item = room.getHabboItem(this.itemIds.get(i)); + RoomItem item = room.getHabboItem(this.itemIds.get(i)); if(item == null || item.getRoomId() == 0) { this.itemIds.remove(i); diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionDateRangeActive.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionDateRangeActive.java index ccf676b8..ceb229a5 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionDateRangeActive.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionDateRangeActive.java @@ -4,7 +4,7 @@ import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredCondition; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.wired.WiredConditionType; import java.sql.ResultSet; diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionFurniHaveFurni.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionFurniHaveFurni.java index 04df4150..97bab4d9 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionFurniHaveFurni.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionFurniHaveFurni.java @@ -1,21 +1,15 @@ package com.eu.habbo.habbohotel.items.interactions.wired.conditions; -import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredCondition; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.wired.WiredConditionType; -import com.eu.habbo.habbohotel.wired.WiredHandler; import gnu.trove.set.hash.THashSet; import java.sql.ResultSet; import java.sql.SQLException; -import java.util.Arrays; -import java.util.List; -import java.util.Objects; public class WiredConditionFurniHaveFurni extends InteractionWiredCondition { public final int PARAM_ALL_FURNI = 0; diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionFurniHaveHabbo.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionFurniHaveRoom.java similarity index 62% rename from src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionFurniHaveHabbo.java rename to src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionFurniHaveRoom.java index be5d9169..96732a4c 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionFurniHaveHabbo.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionFurniHaveRoom.java @@ -1,31 +1,26 @@ package com.eu.habbo.habbohotel.items.interactions.wired.conditions; -import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.bots.Bot; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredCondition; import com.eu.habbo.habbohotel.pets.Pet; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; import com.eu.habbo.habbohotel.wired.WiredConditionType; -import com.eu.habbo.habbohotel.wired.WiredHandler; import gnu.trove.set.hash.THashSet; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Collection; -import java.util.List; -import java.util.stream.Collectors; -public class WiredConditionFurniHaveHabbo extends InteractionWiredCondition { - public WiredConditionFurniHaveHabbo(ResultSet set, Item baseItem) throws SQLException { +public class WiredConditionFurniHaveRoom extends InteractionWiredCondition { + public WiredConditionFurniHaveRoom(ResultSet set, Item baseItem) throws SQLException { super(set, baseItem); } - public WiredConditionFurniHaveHabbo(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { + public WiredConditionFurniHaveRoom(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { super(id, userId, item, extradata, limitedStack, limitedSells); } @@ -35,15 +30,15 @@ public class WiredConditionFurniHaveHabbo extends InteractionWiredCondition { return true; } - Collection habbos = room.getHabbos(); - Collection bots = room.getCurrentBots().valueCollection(); - Collection pets = room.getCurrentPets().valueCollection(); + Collection habbos = room.getRoomUnitManager().getRoomHabbos(); + Collection bots = room.getRoomUnitManager().getCurrentRoomBots().values(); + Collection pets = room.getRoomUnitManager().getCurrentRoomPets().values(); return this.getWiredSettings().getItems(room).stream().allMatch(item -> { THashSet occupiedTiles = room.getLayout().getTilesAt(room.getLayout().getTile(item.getX(), item.getY()), item.getBaseItem().getWidth(), item.getBaseItem().getLength(), item.getRotation()); - return habbos.stream().anyMatch(character -> occupiedTiles.contains(character.getRoomUnit().getCurrentLocation())) || - bots.stream().anyMatch(character -> occupiedTiles.contains(character.getRoomUnit().getCurrentLocation())) || - pets.stream().anyMatch(character -> occupiedTiles.contains(character.getRoomUnit().getCurrentLocation())); + return habbos.stream().anyMatch(character -> occupiedTiles.contains(character.getRoomUnit().getCurrentPosition())) || + bots.stream().anyMatch(character -> occupiedTiles.contains(character.getRoomUnit().getCurrentPosition())) || + pets.stream().anyMatch(character -> occupiedTiles.contains(character.getRoomUnit().getCurrentPosition())); }); } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionFurniTypeMatch.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionFurniTypeMatch.java index ee9721db..cf5f08b3 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionFurniTypeMatch.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionFurniTypeMatch.java @@ -1,19 +1,14 @@ package com.eu.habbo.habbohotel.items.interactions.wired.conditions; -import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredCondition; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.habbohotel.wired.WiredConditionType; -import com.eu.habbo.habbohotel.wired.WiredHandler; -import gnu.trove.set.hash.THashSet; import java.sql.ResultSet; import java.sql.SQLException; -import java.util.List; -import java.util.stream.Collectors; public class WiredConditionFurniTypeMatch extends InteractionWiredCondition { public WiredConditionFurniTypeMatch(ResultSet set, Item baseItem) throws SQLException { @@ -34,7 +29,7 @@ public class WiredConditionFurniTypeMatch extends InteractionWiredCondition { return true; } - if (stuff[0] instanceof HabboItem triggeringItem) { + if (stuff[0] instanceof RoomItem triggeringItem) { return this.getWiredSettings().getItems(room).stream().anyMatch(item -> item == triggeringItem); } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionGroupMember.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionGroupMember.java index af4e452f..42513d4b 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionGroupMember.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionGroupMember.java @@ -2,12 +2,10 @@ package com.eu.habbo.habbohotel.items.interactions.wired.conditions; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredCondition; -import com.eu.habbo.habbohotel.items.interactions.wired.WiredSettings; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.habbohotel.wired.WiredConditionType; -import com.eu.habbo.messages.ServerMessage; import java.sql.ResultSet; import java.sql.SQLException; @@ -23,13 +21,13 @@ public class WiredConditionGroupMember extends InteractionWiredCondition { @Override public boolean execute(RoomUnit roomUnit, Room room, Object[] stuff) { - if (room.getGuildId() == 0) { + if (room.getRoomInfo().getGuild().getId() == 0) { return false; } Habbo habbo = room.getHabbo(roomUnit); - return habbo != null && habbo.getHabboStats().hasGuild(room.getGuildId()); + return habbo != null && habbo.getHabboStats().hasGuild(room.getRoomInfo().getGuild().getId()); } @Override diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionLessTimeElapsed.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionLessTimeElapsed.java index 71868641..f3de4bfe 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionLessTimeElapsed.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionLessTimeElapsed.java @@ -3,12 +3,9 @@ package com.eu.habbo.habbohotel.items.interactions.wired.conditions; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredCondition; -import com.eu.habbo.habbohotel.items.interactions.wired.WiredSettings; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.wired.WiredConditionType; -import com.eu.habbo.habbohotel.wired.WiredHandler; -import com.eu.habbo.messages.ServerMessage; import java.sql.ResultSet; import java.sql.SQLException; diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionMatchStatePosition.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionMatchStatePosition.java index 08b983f8..d5d4c95a 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionMatchStatePosition.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionMatchStatePosition.java @@ -4,8 +4,8 @@ import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredCondition; import com.eu.habbo.habbohotel.items.interactions.wired.interfaces.InteractionWiredMatchFurniSettings; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.habbohotel.wired.WiredConditionType; import com.eu.habbo.habbohotel.wired.WiredMatchFurniSetting; import lombok.Getter; @@ -41,7 +41,7 @@ public class WiredConditionMatchStatePosition extends InteractionWiredCondition boolean rotation = this.getWiredSettings().getIntegerParams().get(PARAM_ROTATION) == 1; this.matchSettings = this.getWiredSettings().getMatchParams(); - for(HabboItem item : this.getWiredSettings().getItems(room)) { + for(RoomItem item : this.getWiredSettings().getItems(room)) { WiredMatchFurniSetting furniSettings = this.matchSettings.stream().filter(settings -> settings.getItem_id() == item.getId()).findAny().orElse(null); if(furniSettings == null) { @@ -83,7 +83,7 @@ public class WiredConditionMatchStatePosition extends InteractionWiredCondition public void saveAdditionalData(Room room) { List matchSettings = new ArrayList<>(); - for (HabboItem item : this.getWiredSettings().getItems(room)) { + for (RoomItem item : this.getWiredSettings().getItems(room)) { WiredMatchFurniSetting settings = new WiredMatchFurniSetting(item.getId(), item.getExtradata(), item.getRotation(), item.getX(), item.getY()); matchSettings.add(settings); } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionMoreTimeElapsed.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionMoreTimeElapsed.java index e8bf6b64..e22a6d4e 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionMoreTimeElapsed.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionMoreTimeElapsed.java @@ -4,10 +4,8 @@ import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredCondition; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.wired.WiredConditionType; -import com.eu.habbo.habbohotel.wired.WiredHandler; -import com.eu.habbo.messages.incoming.wired.WiredSaveException; import java.sql.ResultSet; import java.sql.SQLException; diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotFurniHaveFurni.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotFurniHaveFurni.java index bc9a9e1b..a79043d7 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotFurniHaveFurni.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotFurniHaveFurni.java @@ -1,21 +1,16 @@ package com.eu.habbo.habbohotel.items.interactions.wired.conditions; -import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredCondition; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.wired.WiredConditionOperator; import com.eu.habbo.habbohotel.wired.WiredConditionType; -import com.eu.habbo.habbohotel.wired.WiredHandler; import gnu.trove.set.hash.THashSet; import java.sql.ResultSet; import java.sql.SQLException; -import java.util.List; -import java.util.stream.Collectors; public class WiredConditionNotFurniHaveFurni extends InteractionWiredCondition { public final int PARAM_ALL_FURNI = 0; diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotFurniHaveHabbo.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotFurniHaveRoom.java similarity index 62% rename from src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotFurniHaveHabbo.java rename to src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotFurniHaveRoom.java index 912c1d71..cd64c515 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotFurniHaveHabbo.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotFurniHaveRoom.java @@ -1,31 +1,26 @@ package com.eu.habbo.habbohotel.items.interactions.wired.conditions; -import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.bots.Bot; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredCondition; import com.eu.habbo.habbohotel.pets.Pet; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; import com.eu.habbo.habbohotel.wired.WiredConditionType; -import com.eu.habbo.habbohotel.wired.WiredHandler; import gnu.trove.set.hash.THashSet; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Collection; -import java.util.List; -import java.util.stream.Collectors; -public class WiredConditionNotFurniHaveHabbo extends InteractionWiredCondition { - public WiredConditionNotFurniHaveHabbo(ResultSet set, Item baseItem) throws SQLException { +public class WiredConditionNotFurniHaveRoom extends InteractionWiredCondition { + public WiredConditionNotFurniHaveRoom(ResultSet set, Item baseItem) throws SQLException { super(set, baseItem); } - public WiredConditionNotFurniHaveHabbo(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { + public WiredConditionNotFurniHaveRoom(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { super(id, userId, item, extradata, limitedStack, limitedSells); } @@ -35,15 +30,15 @@ public class WiredConditionNotFurniHaveHabbo extends InteractionWiredCondition { return true; } - Collection habbos = room.getHabbos(); - Collection bots = room.getCurrentBots().valueCollection(); - Collection pets = room.getCurrentPets().valueCollection(); + Collection habbos = room.getRoomUnitManager().getRoomHabbos(); + Collection bots = room.getRoomUnitManager().getCurrentRoomBots().values(); + Collection pets = room.getRoomUnitManager().getCurrentRoomPets().values(); return this.getWiredSettings().getItems(room).stream().noneMatch(item -> { THashSet occupiedTiles = room.getLayout().getTilesAt(room.getLayout().getTile(item.getX(), item.getY()), item.getBaseItem().getWidth(), item.getBaseItem().getLength(), item.getRotation()); - return habbos.stream().anyMatch(character -> occupiedTiles.contains(character.getRoomUnit().getCurrentLocation())) || - bots.stream().anyMatch(character -> occupiedTiles.contains(character.getRoomUnit().getCurrentLocation())) || - pets.stream().anyMatch(character -> occupiedTiles.contains(character.getRoomUnit().getCurrentLocation())); + return habbos.stream().anyMatch(character -> occupiedTiles.contains(character.getRoomUnit().getCurrentPosition())) || + bots.stream().anyMatch(character -> occupiedTiles.contains(character.getRoomUnit().getCurrentPosition())) || + pets.stream().anyMatch(character -> occupiedTiles.contains(character.getRoomUnit().getCurrentPosition())); }); } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotFurniTypeMatch.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotFurniTypeMatch.java index c5252b66..41a5c697 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotFurniTypeMatch.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotFurniTypeMatch.java @@ -1,23 +1,19 @@ package com.eu.habbo.habbohotel.items.interactions.wired.conditions; -import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredCondition; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.habbohotel.wired.WiredConditionType; -import com.eu.habbo.habbohotel.wired.WiredHandler; import gnu.trove.set.hash.THashSet; import java.sql.ResultSet; import java.sql.SQLException; -import java.util.List; -import java.util.stream.Collectors; public class WiredConditionNotFurniTypeMatch extends InteractionWiredCondition { public static final WiredConditionType type = WiredConditionType.NOT_STUFF_IS; - private final THashSet items = new THashSet<>(); + private final THashSet items = new THashSet<>(); public WiredConditionNotFurniTypeMatch(ResultSet set, Item baseItem) throws SQLException { super(set, baseItem); @@ -37,7 +33,7 @@ public class WiredConditionNotFurniTypeMatch extends InteractionWiredCondition { return true; } - if (stuff[0] instanceof HabboItem triggeringItem) { + if (stuff[0] instanceof RoomItem triggeringItem) { return this.getWiredSettings().getItems(room).stream().noneMatch(item -> item == triggeringItem); } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotInGroup.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotInGroup.java index c9f6e0c3..c5e3e487 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotInGroup.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotInGroup.java @@ -2,12 +2,10 @@ package com.eu.habbo.habbohotel.items.interactions.wired.conditions; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredCondition; -import com.eu.habbo.habbohotel.items.interactions.wired.WiredSettings; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.habbohotel.wired.WiredConditionType; -import com.eu.habbo.messages.ServerMessage; import java.sql.ResultSet; import java.sql.SQLException; @@ -23,12 +21,12 @@ public class WiredConditionNotInGroup extends InteractionWiredCondition { @Override public boolean execute(RoomUnit roomUnit, Room room, Object[] stuff) { - if (room.getGuildId() == 0) + if (room.getRoomInfo().getGuild().getId() == 0) return false; Habbo habbo = room.getHabbo(roomUnit); - return habbo == null || !habbo.getHabboStats().hasGuild(room.getGuildId()); + return habbo == null || !habbo.getHabboStats().hasGuild(room.getRoomInfo().getGuild().getId()); } @Override diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotInTeam.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotInTeam.java index 54e33e17..50023f9f 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotInTeam.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotInTeam.java @@ -3,13 +3,10 @@ package com.eu.habbo.habbohotel.items.interactions.wired.conditions; import com.eu.habbo.habbohotel.games.GameTeamColors; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredCondition; -import com.eu.habbo.habbohotel.items.interactions.wired.WiredSettings; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.habbohotel.wired.WiredConditionType; -import com.eu.habbo.habbohotel.wired.WiredHandler; -import com.eu.habbo.messages.ServerMessage; import java.sql.ResultSet; import java.sql.SQLException; diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotMatchStatePosition.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotMatchStatePosition.java index 1586a471..9f0378d0 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotMatchStatePosition.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotMatchStatePosition.java @@ -2,7 +2,7 @@ package com.eu.habbo.habbohotel.items.interactions.wired.conditions; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.wired.WiredConditionType; import java.sql.ResultSet; diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotHabboCount.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotRoomCount.java similarity index 52% rename from src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotHabboCount.java rename to src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotRoomCount.java index 134623ff..0573a042 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotHabboCount.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotRoomCount.java @@ -1,23 +1,19 @@ package com.eu.habbo.habbohotel.items.interactions.wired.conditions; import com.eu.habbo.habbohotel.items.Item; -import com.eu.habbo.habbohotel.items.interactions.InteractionWiredCondition; -import com.eu.habbo.habbohotel.items.interactions.wired.WiredSettings; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.wired.WiredConditionType; -import com.eu.habbo.habbohotel.wired.WiredHandler; -import com.eu.habbo.messages.ServerMessage; import java.sql.ResultSet; import java.sql.SQLException; -public class WiredConditionNotHabboCount extends WiredConditionHabboCount { - public WiredConditionNotHabboCount(ResultSet set, Item baseItem) throws SQLException { +public class WiredConditionNotRoomCount extends WiredConditionRoomCount { + public WiredConditionNotRoomCount(ResultSet set, Item baseItem) throws SQLException { super(set, baseItem); } - public WiredConditionNotHabboCount(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { + public WiredConditionNotRoomCount(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { super(id, userId, item, extradata, limitedStack, limitedSells); } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotHabboHasEffect.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotRoomHasEffect.java similarity index 52% rename from src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotHabboHasEffect.java rename to src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotRoomHasEffect.java index 5f77d51d..68b0983d 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotHabboHasEffect.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotRoomHasEffect.java @@ -1,23 +1,19 @@ package com.eu.habbo.habbohotel.items.interactions.wired.conditions; import com.eu.habbo.habbohotel.items.Item; -import com.eu.habbo.habbohotel.items.interactions.InteractionWiredCondition; -import com.eu.habbo.habbohotel.items.interactions.wired.WiredSettings; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.wired.WiredConditionType; -import com.eu.habbo.habbohotel.wired.WiredHandler; -import com.eu.habbo.messages.ServerMessage; import java.sql.ResultSet; import java.sql.SQLException; -public class WiredConditionNotHabboHasEffect extends WiredConditionHabboHasEffect { - public WiredConditionNotHabboHasEffect(ResultSet set, Item baseItem) throws SQLException { +public class WiredConditionNotRoomHasEffect extends WiredConditionRoomHasEffect { + public WiredConditionNotRoomHasEffect(ResultSet set, Item baseItem) throws SQLException { super(set, baseItem); } - public WiredConditionNotHabboHasEffect(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { + public WiredConditionNotRoomHasEffect(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { super(id, userId, item, extradata, limitedStack, limitedSells); } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotHabboWearsBadge.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotRoomWearsBadge.java similarity index 67% rename from src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotHabboWearsBadge.java rename to src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotRoomWearsBadge.java index 7d02d83c..f95791d6 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotHabboWearsBadge.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotRoomWearsBadge.java @@ -2,22 +2,22 @@ package com.eu.habbo.habbohotel.items.interactions.wired.conditions; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.wired.WiredConditionType; import java.sql.ResultSet; import java.sql.SQLException; -public class WiredConditionNotHabboWearsBadge extends WiredConditionHabboWearsBadge { +public class WiredConditionNotRoomWearsBadge extends WiredConditionRoomWearsBadge { public static final WiredConditionType type = WiredConditionType.NOT_ACTOR_WEARS_BADGE; protected String badge = ""; - public WiredConditionNotHabboWearsBadge(ResultSet set, Item baseItem) throws SQLException { + public WiredConditionNotRoomWearsBadge(ResultSet set, Item baseItem) throws SQLException { super(set, baseItem); } - public WiredConditionNotHabboWearsBadge(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { + public WiredConditionNotRoomWearsBadge(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { super(id, userId, item, extradata, limitedStack, limitedSells); } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotTriggerOnFurni.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotTriggerOnFurni.java index c00d00c3..54fd82c7 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotTriggerOnFurni.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotTriggerOnFurni.java @@ -2,7 +2,7 @@ package com.eu.habbo.habbohotel.items.interactions.wired.conditions; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.wired.WiredConditionType; import java.sql.ResultSet; diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionHabboCount.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionRoomCount.java similarity index 70% rename from src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionHabboCount.java rename to src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionRoomCount.java index 6ac364e6..227e5ff0 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionHabboCount.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionRoomCount.java @@ -2,25 +2,22 @@ package com.eu.habbo.habbohotel.items.interactions.wired.conditions; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredCondition; -import com.eu.habbo.habbohotel.items.interactions.wired.WiredSettings; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.wired.WiredConditionType; -import com.eu.habbo.habbohotel.wired.WiredHandler; -import com.eu.habbo.messages.ServerMessage; import java.sql.ResultSet; import java.sql.SQLException; -public class WiredConditionHabboCount extends InteractionWiredCondition { +public class WiredConditionRoomCount extends InteractionWiredCondition { public final int PARAM_LOWER_LIMIT = 0; public final int PARAM_UPPER_LIMIT = 1; - public WiredConditionHabboCount(ResultSet set, Item baseItem) throws SQLException { + public WiredConditionRoomCount(ResultSet set, Item baseItem) throws SQLException { super(set, baseItem); } - public WiredConditionHabboCount(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { + public WiredConditionRoomCount(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { super(id, userId, item, extradata, limitedStack, limitedSells); } @@ -28,7 +25,7 @@ public class WiredConditionHabboCount extends InteractionWiredCondition { public boolean execute(RoomUnit roomUnit, Room room, Object[] stuff) { int lowerLimit = this.getWiredSettings().getIntegerParams().get(PARAM_LOWER_LIMIT); int upperLimit = this.getWiredSettings().getIntegerParams().get(PARAM_UPPER_LIMIT); - int userCount = room.getUserCount(); + int userCount = room.getRoomUnitManager().getRoomHabbosCount(); return userCount >= lowerLimit && userCount <= upperLimit; } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionHabboHasEffect.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionRoomHasEffect.java similarity index 63% rename from src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionHabboHasEffect.java rename to src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionRoomHasEffect.java index 77026560..a9dcf93d 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionHabboHasEffect.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionRoomHasEffect.java @@ -2,36 +2,34 @@ package com.eu.habbo.habbohotel.items.interactions.wired.conditions; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredCondition; -import com.eu.habbo.habbohotel.items.interactions.wired.WiredSettings; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.types.RoomAvatar; import com.eu.habbo.habbohotel.wired.WiredConditionType; -import com.eu.habbo.habbohotel.wired.WiredHandler; -import com.eu.habbo.messages.ServerMessage; import java.sql.ResultSet; import java.sql.SQLException; -public class WiredConditionHabboHasEffect extends InteractionWiredCondition { +public class WiredConditionRoomHasEffect extends InteractionWiredCondition { public final int PARAM_EFFECT_ID = 0; - public WiredConditionHabboHasEffect(ResultSet set, Item baseItem) throws SQLException { + public WiredConditionRoomHasEffect(ResultSet set, Item baseItem) throws SQLException { super(set, baseItem); } - public WiredConditionHabboHasEffect(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { + public WiredConditionRoomHasEffect(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { super(id, userId, item, extradata, limitedStack, limitedSells); } @Override public boolean execute(RoomUnit roomUnit, Room room, Object[] stuff) { - if (roomUnit == null) { + if (roomUnit == null || !(roomUnit instanceof RoomAvatar roomAvatar)) { return false; } int effectId = this.getWiredSettings().getIntegerParams().get(PARAM_EFFECT_ID); - return roomUnit.getEffectId() == effectId; + return roomAvatar.getEffectId() == effectId; } @Override diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionHabboHasHandItem.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionRoomHasHandItem.java similarity index 66% rename from src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionHabboHasHandItem.java rename to src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionRoomHasHandItem.java index 6e725e58..63a4f242 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionHabboHasHandItem.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionRoomHasHandItem.java @@ -3,7 +3,8 @@ package com.eu.habbo.habbohotel.items.interactions.wired.conditions; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredCondition; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.types.RoomAvatar; import com.eu.habbo.habbohotel.wired.WiredConditionType; import lombok.extern.slf4j.Slf4j; @@ -11,26 +12,26 @@ import java.sql.ResultSet; import java.sql.SQLException; @Slf4j -public class WiredConditionHabboHasHandItem extends InteractionWiredCondition { +public class WiredConditionRoomHasHandItem extends InteractionWiredCondition { public final int PARAM_HAND_ITEM_ID = 0; - public WiredConditionHabboHasHandItem(ResultSet set, Item baseItem) throws SQLException { + public WiredConditionRoomHasHandItem(ResultSet set, Item baseItem) throws SQLException { super(set, baseItem); } - public WiredConditionHabboHasHandItem(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { + public WiredConditionRoomHasHandItem(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { super(id, userId, item, extradata, limitedStack, limitedSells); } @Override public boolean execute(RoomUnit roomUnit, Room room, Object[] stuff) { - if (roomUnit == null) { + if (roomUnit == null || !(roomUnit instanceof RoomAvatar roomAvatar)) { return false; } int handItemId = this.getWiredSettings().getIntegerParams().get(PARAM_HAND_ITEM_ID); - return roomUnit.getHandItem() == handItemId; + return roomAvatar.getHandItem() == handItemId; } @Override diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionHabboWearsBadge.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionRoomWearsBadge.java similarity index 73% rename from src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionHabboWearsBadge.java rename to src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionRoomWearsBadge.java index 14035fa3..0a627c63 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionHabboWearsBadge.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionRoomWearsBadge.java @@ -2,24 +2,21 @@ package com.eu.habbo.habbohotel.items.interactions.wired.conditions; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredCondition; -import com.eu.habbo.habbohotel.items.interactions.wired.WiredSettings; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.habbohotel.users.HabboBadge; import com.eu.habbo.habbohotel.wired.WiredConditionType; -import com.eu.habbo.habbohotel.wired.WiredHandler; -import com.eu.habbo.messages.ServerMessage; import java.sql.ResultSet; import java.sql.SQLException; -public class WiredConditionHabboWearsBadge extends InteractionWiredCondition { - public WiredConditionHabboWearsBadge(ResultSet set, Item baseItem) throws SQLException { +public class WiredConditionRoomWearsBadge extends InteractionWiredCondition { + public WiredConditionRoomWearsBadge(ResultSet set, Item baseItem) throws SQLException { super(set, baseItem); } - public WiredConditionHabboWearsBadge(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { + public WiredConditionRoomWearsBadge(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { super(id, userId, item, extradata, limitedStack, limitedSells); } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionTeamMember.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionTeamMember.java index 7ad53922..d51889bd 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionTeamMember.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionTeamMember.java @@ -3,13 +3,10 @@ package com.eu.habbo.habbohotel.items.interactions.wired.conditions; import com.eu.habbo.habbohotel.games.GameTeamColors; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredCondition; -import com.eu.habbo.habbohotel.items.interactions.wired.WiredSettings; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.habbohotel.wired.WiredConditionType; -import com.eu.habbo.habbohotel.wired.WiredHandler; -import com.eu.habbo.messages.ServerMessage; import java.sql.ResultSet; import java.sql.SQLException; diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionTriggerOnFurni.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionTriggerOnFurni.java index 802325e2..63957d88 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionTriggerOnFurni.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionTriggerOnFurni.java @@ -1,20 +1,16 @@ package com.eu.habbo.habbohotel.items.interactions.wired.conditions; -import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredCondition; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.wired.WiredConditionOperator; import com.eu.habbo.habbohotel.wired.WiredConditionType; -import com.eu.habbo.habbohotel.wired.WiredHandler; import gnu.trove.set.hash.THashSet; import java.sql.ResultSet; import java.sql.SQLException; -import java.util.List; -import java.util.stream.Collectors; public class WiredConditionTriggerOnFurni extends InteractionWiredCondition { public WiredConditionTriggerOnFurni(ResultSet set, Item baseItem) throws SQLException { @@ -35,7 +31,7 @@ public class WiredConditionTriggerOnFurni extends InteractionWiredCondition { return false; } - THashSet itemsAtUser = room.getItemsAt(roomUnit.getCurrentLocation()); + THashSet itemsAtUser = room.getItemsAt(roomUnit.getCurrentPosition()); return this.getWiredSettings().getItems(room).stream().anyMatch(itemsAtUser::contains); } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectAlert.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectAlert.java index 2bedaa9f..ac823641 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectAlert.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectAlert.java @@ -3,7 +3,7 @@ package com.eu.habbo.habbohotel.items.interactions.wired.effects; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.users.Habbo; import java.sql.ResultSet; diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectBotClothes.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectBotClothes.java index 2eceb51b..37718273 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectBotClothes.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectBotClothes.java @@ -2,21 +2,15 @@ package com.eu.habbo.habbohotel.items.interactions.wired.effects; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.bots.Bot; -import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredEffect; -import com.eu.habbo.habbohotel.items.interactions.wired.WiredSettings; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.wired.WiredEffectType; -import com.eu.habbo.habbohotel.wired.WiredHandler; -import com.eu.habbo.messages.ServerMessage; -import com.eu.habbo.messages.incoming.wired.WiredSaveException; import java.sql.ResultSet; import java.sql.SQLException; import java.util.List; -import java.util.regex.Pattern; public class WiredEffectBotClothes extends InteractionWiredEffect { public WiredEffectBotClothes(ResultSet set, Item baseItem) throws SQLException { @@ -34,7 +28,7 @@ public class WiredEffectBotClothes extends InteractionWiredEffect { String botName = stringParams[0].substring(0, Math.min(stringParams[0].length(), Emulator.getConfig().getInt("hotel.wired.message.max_length", 100))); String botLook = stringParams[1]; - List bots = room.getBots(botName); + List bots = room.getRoomUnitManager().getBotsByName(botName); if(bots.size() == 0) { return false; diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectBotFollowHabbo.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectBotFollowRoom.java similarity index 65% rename from src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectBotFollowHabbo.java rename to src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectBotFollowRoom.java index d6d63d88..498c1fa3 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectBotFollowHabbo.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectBotFollowRoom.java @@ -1,39 +1,32 @@ package com.eu.habbo.habbohotel.items.interactions.wired.effects; -import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.bots.Bot; -import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredEffect; -import com.eu.habbo.habbohotel.items.interactions.wired.WiredSettings; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.habbohotel.wired.WiredEffectType; -import com.eu.habbo.habbohotel.wired.WiredHandler; -import com.eu.habbo.messages.ServerMessage; -import com.eu.habbo.messages.incoming.wired.WiredSaveException; import java.sql.ResultSet; import java.sql.SQLException; -import java.util.ArrayList; import java.util.List; -public class WiredEffectBotFollowHabbo extends InteractionWiredEffect { +public class WiredEffectBotFollowRoom extends InteractionWiredEffect { public final int PARAM_MODE = 0; - public WiredEffectBotFollowHabbo(ResultSet set, Item baseItem) throws SQLException { + public WiredEffectBotFollowRoom(ResultSet set, Item baseItem) throws SQLException { super(set, baseItem); } - public WiredEffectBotFollowHabbo(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { + public WiredEffectBotFollowRoom(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { super(id, userId, item, extradata, limitedStack, limitedSells); } @Override public boolean execute(RoomUnit roomUnit, Room room, Object[] stuff) { Habbo habbo = room.getHabbo(roomUnit); - List bots = room.getBots(this.getWiredSettings().getStringParam()); + List bots = room.getRoomUnitManager().getBotsByName(this.getWiredSettings().getStringParam()); if (habbo != null && bots.size() == 1) { Bot bot = bots.get(0); diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectBotGiveHandItem.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectBotGiveHandItem.java index 044bc6c0..1cf87079 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectBotGiveHandItem.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectBotGiveHandItem.java @@ -2,19 +2,16 @@ package com.eu.habbo.habbohotel.items.interactions.wired.effects; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.bots.Bot; -import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredEffect; -import com.eu.habbo.habbohotel.items.interactions.wired.WiredSettings; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.types.RoomAvatar; import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.habbohotel.wired.WiredEffectType; import com.eu.habbo.habbohotel.wired.WiredHandler; import com.eu.habbo.habbohotel.wired.WiredTriggerType; -import com.eu.habbo.messages.ServerMessage; -import com.eu.habbo.messages.incoming.wired.WiredSaveException; import com.eu.habbo.threading.runnables.RoomUnitGiveHanditem; import com.eu.habbo.threading.runnables.RoomUnitWalkToLocation; @@ -35,23 +32,29 @@ public class WiredEffectBotGiveHandItem extends InteractionWiredEffect { @Override public boolean execute(RoomUnit roomUnit, Room room, Object[] stuff) { - Habbo habbo = room.getHabbo(roomUnit); - List bots = room.getBots(this.getWiredSettings().getStringParam()); + if(!(roomUnit instanceof RoomAvatar roomAvatar)) { + return false; + } + + Habbo habbo = room.getHabbo(roomAvatar); + List bots = room.getRoomUnitManager().getBotsByName(this.getWiredSettings().getStringParam()); int itemId = this.getWiredSettings().getIntegerParams().get(PARAM_ITEM_ID); if (habbo != null && bots.size() == 1) { Bot bot = bots.get(0); List tasks = new ArrayList<>(); - tasks.add(new RoomUnitGiveHanditem(roomUnit, room, itemId)); + tasks.add(new RoomUnitGiveHanditem(roomAvatar, room, itemId)); tasks.add(new RoomUnitGiveHanditem(bot.getRoomUnit(), room, 0)); tasks.add(() -> { - if(roomUnit.getRoom() != null && roomUnit.getRoom().getId() == room.getId() && roomUnit.getCurrentLocation().distance(bot.getRoomUnit().getCurrentLocation()) < 2) { - WiredHandler.handle(WiredTriggerType.BOT_REACHED_AVTR, bot.getRoomUnit(), room, new Object[]{}); + if(roomAvatar.getRoom() != null) { + if (roomAvatar.getRoom().getRoomInfo().getId() == room.getRoomInfo().getId() && roomAvatar.getCurrentPosition().distance(bot.getRoomUnit().getCurrentPosition()) < 2) { + WiredHandler.handle(WiredTriggerType.BOT_REACHED_AVTR, bot.getRoomUnit(), room, new Object[]{}); + } } }); - RoomTile tile = bot.getRoomUnit().getClosestAdjacentTile(roomUnit.getX(), roomUnit.getY(), true); + RoomTile tile = bot.getRoomUnit().getClosestAdjacentTile(roomAvatar.getCurrentPosition().getX(), roomAvatar.getCurrentPosition().getY(), true); if(tile != null) { bot.getRoomUnit().setGoalLocation(tile); diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectBotTalk.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectBotTalk.java index cf8a33e5..606cf4cc 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectBotTalk.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectBotTalk.java @@ -2,23 +2,18 @@ package com.eu.habbo.habbohotel.items.interactions.wired.effects; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.bots.Bot; -import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredEffect; -import com.eu.habbo.habbohotel.items.interactions.wired.WiredSettings; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.habbohotel.wired.WiredEffectType; import com.eu.habbo.habbohotel.wired.WiredHandler; import com.eu.habbo.habbohotel.wired.WiredTriggerType; -import com.eu.habbo.messages.ServerMessage; -import com.eu.habbo.messages.incoming.wired.WiredSaveException; import java.sql.ResultSet; import java.sql.SQLException; import java.util.List; -import java.util.regex.Pattern; public class WiredEffectBotTalk extends InteractionWiredEffect { public final int PARAM_MODE = 0; @@ -45,14 +40,14 @@ public class WiredEffectBotTalk extends InteractionWiredEffect { .replace(Emulator.getTexts().getValue("wired.variable.credits", "%credits%"), habbo.getHabboInfo().getCredits() + "") .replace(Emulator.getTexts().getValue("wired.variable.pixels", "%pixels%"), habbo.getHabboInfo().getPixels() + "") .replace(Emulator.getTexts().getValue("wired.variable.points", "%points%"), habbo.getHabboInfo().getCurrencyAmount(Emulator.getConfig().getInt("seasonal.primary.type")) + "") - .replace(Emulator.getTexts().getValue("wired.variable.owner", "%owner%"), room.getOwnerName()) + .replace(Emulator.getTexts().getValue("wired.variable.owner", "%owner%"), room.getRoomInfo().getOwnerInfo().getUsername()) .replace(Emulator.getTexts().getValue("wired.variable.item_count", "%item_count%"), room.itemCount() + "") .replace(Emulator.getTexts().getValue("wired.variable.name", "%name%"), botName) - .replace(Emulator.getTexts().getValue("wired.variable.roomname", "%roomname%"), room.getName()) - .replace(Emulator.getTexts().getValue("wired.variable.user_count", "%user_count%"), room.getUserCount() + ""); + .replace(Emulator.getTexts().getValue("wired.variable.roomname", "%roomname%"), room.getRoomInfo().getName()) + .replace(Emulator.getTexts().getValue("wired.variable.user_count", "%user_count%"), room.getRoomUnitManager().getRoomHabbosCount() + ""); } - List bots = room.getBots(botName); + List bots = room.getRoomUnitManager().getBotsByName(botName); if (bots.size() == 1) { Bot bot = bots.get(0); diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectBotTalkToHabbo.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectBotTalkToRoom.java similarity index 79% rename from src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectBotTalkToHabbo.java rename to src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectBotTalkToRoom.java index a70db984..1e4d63c9 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectBotTalkToHabbo.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectBotTalkToRoom.java @@ -2,33 +2,27 @@ package com.eu.habbo.habbohotel.items.interactions.wired.effects; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.bots.Bot; -import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredEffect; -import com.eu.habbo.habbohotel.items.interactions.wired.WiredSettings; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.habbohotel.wired.WiredEffectType; import com.eu.habbo.habbohotel.wired.WiredHandler; import com.eu.habbo.habbohotel.wired.WiredTriggerType; -import com.eu.habbo.messages.ServerMessage; -import com.eu.habbo.messages.incoming.wired.WiredSaveException; import java.sql.ResultSet; import java.sql.SQLException; -import java.util.ArrayList; import java.util.List; -import java.util.regex.Pattern; -public class WiredEffectBotTalkToHabbo extends InteractionWiredEffect { +public class WiredEffectBotTalkToRoom extends InteractionWiredEffect { public final int PARAM_MODE = 0; - public WiredEffectBotTalkToHabbo(ResultSet set, Item baseItem) throws SQLException { + public WiredEffectBotTalkToRoom(ResultSet set, Item baseItem) throws SQLException { super(set, baseItem); } - public WiredEffectBotTalkToHabbo(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { + public WiredEffectBotTalkToRoom(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { super(id, userId, item, extradata, limitedStack, limitedSells); } @@ -46,13 +40,13 @@ public class WiredEffectBotTalkToHabbo extends InteractionWiredEffect { .replace(Emulator.getTexts().getValue("wired.variable.credits", "%credits%"), habbo.getHabboInfo().getCredits() + "") .replace(Emulator.getTexts().getValue("wired.variable.pixels", "%pixels%"), habbo.getHabboInfo().getPixels() + "") .replace(Emulator.getTexts().getValue("wired.variable.points", "%points%"), habbo.getHabboInfo().getCurrencyAmount(Emulator.getConfig().getInt("seasonal.primary.type")) + "") - .replace(Emulator.getTexts().getValue("wired.variable.owner", "%owner%"), room.getOwnerName()) + .replace(Emulator.getTexts().getValue("wired.variable.owner", "%owner%"), room.getRoomInfo().getOwnerInfo().getUsername()) .replace(Emulator.getTexts().getValue("wired.variable.item_count", "%item_count%"), room.itemCount() + "") .replace(Emulator.getTexts().getValue("wired.variable.name", "%name%"), botName) - .replace(Emulator.getTexts().getValue("wired.variable.roomname", "%roomname%"), room.getName()) - .replace(Emulator.getTexts().getValue("wired.variable.user_count", "%user_count%"), room.getUserCount() + ""); + .replace(Emulator.getTexts().getValue("wired.variable.roomname", "%roomname%"), room.getRoomInfo().getName()) + .replace(Emulator.getTexts().getValue("wired.variable.user_count", "%user_count%"), room.getRoomUnitManager().getRoomHabbosCount() + ""); - List bots = room.getBots(botName); + List bots = room.getRoomUnitManager().getBotsByName(botName); if (bots.size() != 1) { return false; diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectBotTeleport.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectBotTeleport.java index 2b0f48f9..74dab41b 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectBotTeleport.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectBotTeleport.java @@ -7,15 +7,14 @@ import com.eu.habbo.habbohotel.items.interactions.InteractionWiredEffect; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; import com.eu.habbo.habbohotel.rooms.RoomTileState; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.types.RoomBot; import com.eu.habbo.habbohotel.wired.WiredEffectType; import com.eu.habbo.habbohotel.wired.WiredHandler; -import com.eu.habbo.messages.incoming.wired.WiredSaveException; import com.eu.habbo.messages.outgoing.rooms.users.AvatarEffectMessageComposer; import com.eu.habbo.threading.runnables.RoomUnitTeleport; import com.eu.habbo.threading.runnables.SendRoomUnitEffectComposer; -import gnu.trove.set.hash.THashSet; import java.sql.ResultSet; import java.sql.SQLException; @@ -38,7 +37,7 @@ public class WiredEffectBotTeleport extends InteractionWiredEffect { } String botName = this.getWiredSettings().getStringParam(); - List bots = room.getBots(botName); + List bots = room.getRoomUnitManager().getBotsByName(botName); if (bots.size() == 0) { return false; @@ -49,13 +48,16 @@ public class WiredEffectBotTeleport extends InteractionWiredEffect { int i = Emulator.getRandom().nextInt(this.getWiredSettings().getItemIds().size()) + 1; int j = 1; - for (HabboItem item : this.getWiredSettings().getItems(room)) { - if (item.getRoomId() != 0 && item.getRoomId() == bot.getRoom().getId()) { - if (i == j) { - teleportUnitToTile(bot.getRoomUnit(), room.getLayout().getTile(item.getX(), item.getY())); - return true; - } else { - j++; + for (RoomItem item : this.getWiredSettings().getItems(room)) { + if (item.getRoomId() != 0) { + Room room1 = bot.getRoom(); + if (item.getRoomId() == room1.getRoomInfo().getId()) { + if (i == j) { + teleportUnitToTile(bot.getRoomUnit(), room.getLayout().getTile(item.getX(), item.getY())); + return true; + } else { + j++; + } } } } @@ -64,22 +66,20 @@ public class WiredEffectBotTeleport extends InteractionWiredEffect { } public static void teleportUnitToTile(RoomUnit roomUnit, RoomTile tile) { - if (roomUnit == null || tile == null || roomUnit.isWiredTeleporting()) + if (roomUnit == null || tile == null || roomUnit.isWiredTeleporting() || !(roomUnit instanceof RoomBot roomBot)) return; - Room room = roomUnit.getRoom(); + Room room = roomBot.getRoom(); if (room == null) { return; } - // makes a temporary effect + roomBot.getRoom().unIdle(roomBot.getRoom().getHabbo(roomBot)); + room.sendComposer(new AvatarEffectMessageComposer(roomBot, 4).compose()); + Emulator.getThreading().run(new SendRoomUnitEffectComposer(room, roomBot), (long) WiredHandler.TELEPORT_DELAY + 1000); - roomUnit.getRoom().unIdle(roomUnit.getRoom().getHabbo(roomUnit)); - room.sendComposer(new AvatarEffectMessageComposer(roomUnit, 4).compose()); - Emulator.getThreading().run(new SendRoomUnitEffectComposer(room, roomUnit), (long) WiredHandler.TELEPORT_DELAY + 1000); - - if (tile == roomUnit.getCurrentLocation()) { + if (tile == roomBot.getCurrentPosition()) { return; } @@ -100,8 +100,8 @@ public class WiredEffectBotTeleport extends InteractionWiredEffect { } } - Emulator.getThreading().run(() -> roomUnit.setWiredTeleporting(true), Math.max(0, WiredHandler.TELEPORT_DELAY - 500)); - Emulator.getThreading().run(new RoomUnitTeleport(roomUnit, room, tile.getX(), tile.getY(), tile.getStackHeight() + (tile.getState() == RoomTileState.SIT ? -0.5 : 0), roomUnit.getEffectId()), WiredHandler.TELEPORT_DELAY); + Emulator.getThreading().run(() -> roomBot.setWiredTeleporting(true), Math.max(0, WiredHandler.TELEPORT_DELAY - 500)); + Emulator.getThreading().run(new RoomUnitTeleport(roomBot, room, tile.getX(), tile.getY(), tile.getStackHeight() + (tile.getState() == RoomTileState.SIT ? -0.5 : 0), roomBot.getEffectId()), WiredHandler.TELEPORT_DELAY); } @Override diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectBotWalkToFurni.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectBotWalkToFurni.java index f0905b3f..2e3d0dc9 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectBotWalkToFurni.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectBotWalkToFurni.java @@ -5,15 +5,12 @@ import com.eu.habbo.habbohotel.bots.Bot; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredEffect; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.wired.WiredEffectType; -import com.eu.habbo.habbohotel.wired.WiredHandler; -import com.eu.habbo.messages.incoming.wired.WiredSaveException; import java.sql.ResultSet; import java.sql.SQLException; -import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @@ -33,26 +30,29 @@ public class WiredEffectBotWalkToFurni extends InteractionWiredEffect { } String botName = this.getWiredSettings().getStringParam(); - List bots = room.getBots(botName); + List bots = room.getRoomUnitManager().getBotsByName(botName); if (bots.size() == 0) { return false; } Bot bot = bots.get(0); - this.getWiredSettings().getItems(room).removeIf(item -> item == null || item.getRoomId() != this.getRoomId() || Emulator.getGameEnvironment().getRoomManager().getRoom(this.getRoomId()).getHabboItem(item.getId()) == null); + this.getWiredSettings().getItems(room).removeIf(item -> item == null || item.getRoomId() != this.getRoomId() || Emulator.getGameEnvironment().getRoomManager().getActiveRoomById(this.getRoomId()).getHabboItem(item.getId()) == null); // Bots shouldn't walk to the tile they are already standing on - List possibleItems = this.getWiredSettings().getItems(room).stream() + List possibleItems = this.getWiredSettings().getItems(room).stream() .filter(item -> !room.getBotsOnItem(item).contains(bot)) .collect(Collectors.toList()); // Get a random tile of possible tiles to walk to if (possibleItems.size() > 0) { - HabboItem item = possibleItems.get(Emulator.getRandom().nextInt(possibleItems.size())); + RoomItem item = possibleItems.get(Emulator.getRandom().nextInt(possibleItems.size())); - if (item.getRoomId() != 0 && item.getRoomId() == bot.getRoom().getId()) { - bot.getRoomUnit().setGoalLocation(room.getLayout().getTile(item.getX(), item.getY())); + if (item.getRoomId() != 0) { + Room room1 = bot.getRoom(); + if (item.getRoomId() == room1.getRoomInfo().getId()) { + bot.getRoomUnit().setGoalLocation(room.getLayout().getTile(item.getX(), item.getY())); + } } } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectChangeFurniDirection.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectChangeFurniDirection.java index 19e5d6cc..faea7fe6 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectChangeFurniDirection.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectChangeFurniDirection.java @@ -3,8 +3,13 @@ package com.eu.habbo.habbohotel.items.interactions.wired.effects; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredEffect; -import com.eu.habbo.habbohotel.rooms.*; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.FurnitureMovementError; +import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.RoomTile; +import com.eu.habbo.habbohotel.rooms.RoomTileState; +import com.eu.habbo.habbohotel.rooms.entities.RoomRotation; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.wired.WiredChangeDirectionSetting; import com.eu.habbo.habbohotel.wired.WiredEffectType; import com.eu.habbo.habbohotel.wired.WiredHandler; @@ -32,7 +37,7 @@ public class WiredEffectChangeFurniDirection extends InteractionWiredEffect { private int defaultBlockActionValue; private boolean requiresUpdate = false; - private final HashMap itemsSettings; + private final HashMap itemsSettings; public WiredEffectChangeFurniDirection(ResultSet set, Item baseItem) throws SQLException { super(set, baseItem); @@ -66,7 +71,7 @@ public class WiredEffectChangeFurniDirection extends InteractionWiredEffect { this.requiresUpdate = true; } - RoomUserRotation startDirection = RoomUserRotation.fromValue(startDirectionValue); + RoomRotation startDirection = RoomRotation.fromValue(startDirectionValue); if(this.requiresUpdate) { for (WiredChangeDirectionSetting setting : this.itemsSettings.values()) { @@ -75,7 +80,7 @@ public class WiredEffectChangeFurniDirection extends InteractionWiredEffect { this.requiresUpdate = false; } - for(HabboItem item : this.getWiredSettings().getItems(room)) { + for(RoomItem item : this.getWiredSettings().getItems(room)) { WiredChangeDirectionSetting setting = this.itemsSettings.computeIfAbsent(item, k -> new WiredChangeDirectionSetting(item.getId(), item.getRotation(), startDirection) ); @@ -108,9 +113,9 @@ public class WiredEffectChangeFurniDirection extends InteractionWiredEffect { THashSet newOccupiedTiles = room.getLayout().getTilesAt(newTargetTile, item.getBaseItem().getWidth(), item.getBaseItem().getLength(), item.getRotation()); for(RoomTile tile : newOccupiedTiles) { - for (RoomUnit _roomUnit : room.getRoomUnits(tile)) { + for (RoomUnit _roomUnit : room.getRoomUnitManager().getRoomUnitsAt(tile)) { hasRoomUnits = true; - if(_roomUnit.getCurrentLocation() == newTargetTile) { + if(_roomUnit.getCurrentPosition() == newTargetTile) { Emulator.getThreading().run(() -> WiredHandler.handle(WiredTriggerType.COLLISION, _roomUnit, room, new Object[]{item})); break; } @@ -139,14 +144,14 @@ public class WiredEffectChangeFurniDirection extends InteractionWiredEffect { } } - private RoomUserRotation nextDirection(RoomUserRotation currentDirection) { + private RoomRotation nextDirection(RoomRotation currentDirection) { return switch (this.getWiredSettings().getIntegerParams().get(PARAM_BLOCKED_ACTION)) { - case ACTION_TURN_BACK -> RoomUserRotation.fromValue(currentDirection.getValue()).getOpposite(); - case ACTION_TURN_LEFT_45 -> RoomUserRotation.counterClockwise(currentDirection); - case ACTION_TURN_LEFT_90 -> RoomUserRotation.counterClockwise(RoomUserRotation.counterClockwise(currentDirection)); - case ACTION_TURN_RIGHT_45 -> RoomUserRotation.clockwise(currentDirection); - case ACTION_TURN_RIGHT_90 -> RoomUserRotation.clockwise(RoomUserRotation.clockwise(currentDirection)); - case ACTION_TURN_RANDOM -> RoomUserRotation.fromValue(Emulator.getRandom().nextInt(8)); + case ACTION_TURN_BACK -> RoomRotation.fromValue(currentDirection.getValue()).getOpposite(); + case ACTION_TURN_LEFT_45 -> RoomRotation.counterClockwise(currentDirection); + case ACTION_TURN_LEFT_90 -> RoomRotation.counterClockwise(RoomRotation.counterClockwise(currentDirection)); + case ACTION_TURN_RIGHT_45 -> RoomRotation.clockwise(currentDirection); + case ACTION_TURN_RIGHT_90 -> RoomRotation.clockwise(RoomRotation.clockwise(currentDirection)); + case ACTION_TURN_RANDOM -> RoomRotation.fromValue(Emulator.getRandom().nextInt(8)); case ACTION_WAIT -> currentDirection; default -> currentDirection; }; diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectGiveEffect.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectGiveEffect.java index d07674f8..8f1b71c5 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectGiveEffect.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectGiveEffect.java @@ -2,7 +2,7 @@ package com.eu.habbo.habbohotel.items.interactions.wired.effects; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import java.sql.ResultSet; import java.sql.SQLException; diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectGiveHandItem.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectGiveHandItem.java index 1bc19834..7f09c624 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectGiveHandItem.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectGiveHandItem.java @@ -2,8 +2,9 @@ package com.eu.habbo.habbohotel.items.interactions.wired.effects; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.users.Habbo; +import com.eu.habbo.messages.outgoing.rooms.users.CarryObjectMessageComposer; import java.sql.ResultSet; import java.sql.SQLException; @@ -29,7 +30,8 @@ public class WiredEffectGiveHandItem extends WiredEffectWhisper { Habbo habbo = room.getHabbo(roomUnit); if (habbo != null) { - room.giveHandItem(habbo, itemId); + habbo.getRoomUnit().setHandItem(itemId); + room.sendComposer(new CarryObjectMessageComposer(habbo.getRoomUnit()).compose()); } } catch (Exception ignored) { } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectGiveHotelviewBonusRarePoints.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectGiveHotelviewBonusRarePoints.java index 8498349e..76e955de 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectGiveHotelviewBonusRarePoints.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectGiveHotelviewBonusRarePoints.java @@ -1,22 +1,14 @@ package com.eu.habbo.habbohotel.items.interactions.wired.effects; import com.eu.habbo.Emulator; -import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.items.Item; -import com.eu.habbo.habbohotel.items.interactions.InteractionWiredEffect; -import com.eu.habbo.habbohotel.items.interactions.wired.WiredSettings; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.wired.WiredEffectType; -import com.eu.habbo.habbohotel.wired.WiredHandler; -import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.messages.outgoing.hotelview.BonusRareInfoMessageComposer; import java.sql.ResultSet; import java.sql.SQLException; -import java.util.ArrayList; -import java.util.List; public class WiredEffectGiveHotelviewBonusRarePoints extends WiredEffectWhisper { public WiredEffectGiveHotelviewBonusRarePoints(ResultSet set, Item baseItem) throws SQLException { diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectGiveHotelviewHofPoints.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectGiveHotelviewHofPoints.java index 514a45ef..f723b244 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectGiveHotelviewHofPoints.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectGiveHotelviewHofPoints.java @@ -1,21 +1,15 @@ package com.eu.habbo.habbohotel.items.interactions.wired.effects; import com.eu.habbo.Emulator; -import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredEffect; -import com.eu.habbo.habbohotel.items.interactions.wired.WiredSettings; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.habbohotel.wired.WiredEffectType; -import com.eu.habbo.habbohotel.wired.WiredHandler; -import com.eu.habbo.messages.ServerMessage; import java.sql.ResultSet; import java.sql.SQLException; -import java.util.ArrayList; -import java.util.List; public class WiredEffectGiveHotelviewHofPoints extends InteractionWiredEffect { public WiredEffectGiveHotelviewHofPoints(ResultSet set, Item baseItem) throws SQLException { diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectGiveRespect.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectGiveRespect.java index 5623dfa1..b2bd2366 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectGiveRespect.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectGiveRespect.java @@ -2,21 +2,15 @@ package com.eu.habbo.habbohotel.items.interactions.wired.effects; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.achievements.AchievementManager; -import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredEffect; -import com.eu.habbo.habbohotel.items.interactions.wired.WiredSettings; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.habbohotel.wired.WiredEffectType; -import com.eu.habbo.habbohotel.wired.WiredHandler; -import com.eu.habbo.messages.ServerMessage; import java.sql.ResultSet; import java.sql.SQLException; -import java.util.ArrayList; -import java.util.List; public class WiredEffectGiveRespect extends InteractionWiredEffect { public WiredEffectGiveRespect(ResultSet set, Item baseItem) throws SQLException { diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectGiveReward.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectGiveReward.java index e9a39f32..9c7b4770 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectGiveReward.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectGiveReward.java @@ -1,28 +1,18 @@ package com.eu.habbo.habbohotel.items.interactions.wired.effects; -import com.eu.habbo.Emulator; -import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredEffect; -import com.eu.habbo.habbohotel.items.interactions.wired.WiredSettings; -import com.eu.habbo.habbohotel.permissions.Permission; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.habbohotel.wired.WiredEffectType; import com.eu.habbo.habbohotel.wired.WiredGiveRewardItem; import com.eu.habbo.habbohotel.wired.WiredHandler; -import com.eu.habbo.messages.ServerMessage; -import com.eu.habbo.messages.incoming.wired.WiredSaveException; -import com.eu.habbo.messages.outgoing.generic.alerts.WiredValidationErrorComposer; import gnu.trove.set.hash.THashSet; import lombok.Getter; import java.sql.ResultSet; import java.sql.SQLException; -import java.util.ArrayList; -import java.util.List; @Getter public class WiredEffectGiveReward extends InteractionWiredEffect { diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectGiveScore.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectGiveScore.java index 97c9c63f..a92d4ce0 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectGiveScore.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectGiveScore.java @@ -1,15 +1,12 @@ package com.eu.habbo.habbohotel.items.interactions.wired.effects; -import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.games.Game; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredEffect; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.habbohotel.wired.WiredEffectType; -import com.eu.habbo.habbohotel.wired.WiredHandler; -import com.eu.habbo.messages.incoming.wired.WiredSaveException; import gnu.trove.iterator.TObjectIntIterator; import gnu.trove.map.TObjectIntMap; import gnu.trove.map.hash.TObjectIntHashMap; diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectGiveScoreToTeam.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectGiveScoreToTeam.java index 2ddf195f..6df99b14 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectGiveScoreToTeam.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectGiveScoreToTeam.java @@ -1,6 +1,5 @@ package com.eu.habbo.habbohotel.items.interactions.wired.effects; -import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.games.Game; import com.eu.habbo.habbohotel.games.GameState; import com.eu.habbo.habbohotel.games.GameTeam; @@ -8,10 +7,8 @@ import com.eu.habbo.habbohotel.games.GameTeamColors; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredEffect; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.wired.WiredEffectType; -import com.eu.habbo.habbohotel.wired.WiredHandler; -import com.eu.habbo.messages.incoming.wired.WiredSaveException; import gnu.trove.map.hash.TIntIntHashMap; import java.sql.ResultSet; diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectJoinTeam.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectJoinTeam.java index 5a1517db..b6605533 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectJoinTeam.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectJoinTeam.java @@ -1,25 +1,17 @@ package com.eu.habbo.habbohotel.items.interactions.wired.effects; -import com.eu.habbo.Emulator; -import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.games.Game; import com.eu.habbo.habbohotel.games.GameTeamColors; import com.eu.habbo.habbohotel.games.wired.WiredGame; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredEffect; -import com.eu.habbo.habbohotel.items.interactions.wired.WiredSettings; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.habbohotel.wired.WiredEffectType; -import com.eu.habbo.habbohotel.wired.WiredHandler; -import com.eu.habbo.messages.ServerMessage; -import com.eu.habbo.messages.incoming.wired.WiredSaveException; import java.sql.ResultSet; import java.sql.SQLException; -import java.util.ArrayList; -import java.util.List; public class WiredEffectJoinTeam extends InteractionWiredEffect { public final int PARAM_TEAM = 0; diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectKickHabbo.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectKickRoom.java similarity index 73% rename from src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectKickHabbo.java rename to src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectKickRoom.java index 2f569106..9ba11734 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectKickHabbo.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectKickRoom.java @@ -1,34 +1,27 @@ package com.eu.habbo.habbohotel.items.interactions.wired.effects; import com.eu.habbo.Emulator; -import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredEffect; -import com.eu.habbo.habbohotel.items.interactions.wired.WiredSettings; import com.eu.habbo.habbohotel.permissions.Permission; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomChatMessage; import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.habbohotel.wired.WiredEffectType; -import com.eu.habbo.habbohotel.wired.WiredHandler; -import com.eu.habbo.messages.ServerMessage; -import com.eu.habbo.messages.incoming.wired.WiredSaveException; import com.eu.habbo.messages.outgoing.rooms.users.WhisperMessageComposer; import com.eu.habbo.threading.runnables.RoomUnitKick; import java.sql.ResultSet; import java.sql.SQLException; -import java.util.ArrayList; -import java.util.List; -public class WiredEffectKickHabbo extends InteractionWiredEffect { - public WiredEffectKickHabbo(ResultSet set, Item baseItem) throws SQLException { +public class WiredEffectKickRoom extends InteractionWiredEffect { + public WiredEffectKickRoom(ResultSet set, Item baseItem) throws SQLException { super(set, baseItem); } - public WiredEffectKickHabbo(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { + public WiredEffectKickRoom(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { super(id, userId, item, extradata, limitedStack, limitedSells); } @@ -45,7 +38,7 @@ public class WiredEffectKickHabbo extends InteractionWiredEffect { return true; } - if (habbo.getHabboInfo().getId() == room.getOwnerId()) { + if (habbo.getHabboInfo().getId() == room.getRoomInfo().getOwnerInfo().getId()) { habbo.whisper(Emulator.getTexts().getValue("hotel.wired.kickexception.owner")); return true; } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectLeaveTeam.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectLeaveTeam.java index fd2a6d83..8bcbbba3 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectLeaveTeam.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectLeaveTeam.java @@ -1,24 +1,16 @@ package com.eu.habbo.habbohotel.items.interactions.wired.effects; -import com.eu.habbo.Emulator; -import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.games.Game; import com.eu.habbo.habbohotel.games.wired.WiredGame; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredEffect; -import com.eu.habbo.habbohotel.items.interactions.wired.WiredSettings; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.habbohotel.wired.WiredEffectType; -import com.eu.habbo.habbohotel.wired.WiredHandler; -import com.eu.habbo.messages.ServerMessage; -import com.eu.habbo.messages.incoming.wired.WiredSaveException; import java.sql.ResultSet; import java.sql.SQLException; -import java.util.ArrayList; -import java.util.List; public class WiredEffectLeaveTeam extends InteractionWiredEffect { public WiredEffectLeaveTeam(ResultSet set, Item baseItem) throws SQLException { diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectMatchFurni.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectMatchFurni.java index 598c4778..db3afbff 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectMatchFurni.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectMatchFurni.java @@ -4,7 +4,8 @@ import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredEffect; import com.eu.habbo.habbohotel.items.interactions.wired.interfaces.InteractionWiredMatchFurniSettings; import com.eu.habbo.habbohotel.rooms.*; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.habbohotel.wired.WiredEffectType; import com.eu.habbo.habbohotel.wired.WiredMatchFurniSetting; import com.eu.habbo.messages.outgoing.rooms.items.FloorItemOnRollerComposer; @@ -44,7 +45,7 @@ public class WiredEffectMatchFurni extends InteractionWiredEffect implements Int boolean rotation = this.getWiredSettings().getIntegerParams().get(PARAM_ROTATION) == 1; this.matchSettings = this.getWiredSettings().getMatchParams(); - for(HabboItem item : this.getWiredSettings().getItems(room)) { + for(RoomItem item : this.getWiredSettings().getItems(room)) { WiredMatchFurniSetting furniSettings = this.matchSettings.stream().filter(settings -> settings.getItem_id() == item.getId()).findAny().orElse(null); if(furniSettings == null) { @@ -97,7 +98,7 @@ public class WiredEffectMatchFurni extends InteractionWiredEffect implements Int public void saveAdditionalData(Room room) { List matchSettings = new ArrayList<>(); - for (HabboItem item : this.getWiredSettings().getItems(room)) { + for (RoomItem item : this.getWiredSettings().getItems(room)) { WiredMatchFurniSetting settings = new WiredMatchFurniSetting(item.getId(), this.checkForWiredResetPermission && item.allowWiredResetState() ? item.getExtradata() : " ", item.getRotation(), item.getX(), item.getY()); matchSettings.add(settings); } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectMoveFurniAway.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectMoveFurniAway.java index d5912f57..4673ffd9 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectMoveFurniAway.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectMoveFurniAway.java @@ -3,8 +3,12 @@ package com.eu.habbo.habbohotel.items.interactions.wired.effects; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredEffect; -import com.eu.habbo.habbohotel.rooms.*; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.FurnitureMovementError; +import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.RoomTile; +import com.eu.habbo.habbohotel.rooms.RoomTileState; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.wired.WiredEffectType; import com.eu.habbo.habbohotel.wired.WiredHandler; import com.eu.habbo.habbohotel.wired.WiredTriggerType; @@ -25,13 +29,13 @@ public class WiredEffectMoveFurniAway extends InteractionWiredEffect { @Override public boolean execute(RoomUnit roomUnit, Room room, Object[] stuff) { - for (HabboItem item : this.getWiredSettings().getItems(room)) { + for (RoomItem item : this.getWiredSettings().getItems(room)) { RoomTile t = room.getLayout().getTile(item.getX(), item.getY()); - RoomUnit target = room.getRoomUnits().stream().min(Comparator.comparingDouble(a -> a.getCurrentLocation().distance(t))).orElse(null); + RoomUnit target = room.getRoomUnitManager().getCurrentRoomUnits().values().stream().min(Comparator.comparingDouble(a -> a.getCurrentPosition().distance(t))).orElse(null); if (target != null) { - if (target.getCurrentLocation().distance(t) <= 1) { + if (target.getCurrentPosition().distance(t) <= 1) { Emulator.getThreading().run(() -> WiredHandler.handle(WiredTriggerType.COLLISION, target, room, new Object[]{item}), 500); continue; } @@ -39,26 +43,30 @@ public class WiredEffectMoveFurniAway extends InteractionWiredEffect { int x = 0; int y = 0; - if (target.getX() == item.getX()) { - if (item.getY() < target.getY()) + if (target.getCurrentPosition().getX() == item.getX()) { + if (item.getY() < target.getCurrentPosition().getY()) y--; else y++; - } else if (target.getY() == item.getY()) { - if (item.getX() < target.getX()) - x--; - else - x++; - } else if (target.getX() - item.getX() > target.getY() - item.getY()) { - if (target.getX() - item.getX() > 0) - x--; - else - x++; } else { - if (target.getY() - item.getY() > 0) - y--; - else - y++; + if (target.getCurrentPosition().getY() == item.getY()) { + if (item.getX() < target.getCurrentPosition().getX()) + x--; + else + x++; + } else { + if (target.getCurrentPosition().getX() - item.getX() > target.getCurrentPosition().getY() - item.getY()) { + if (target.getCurrentPosition().getX() - item.getX() > 0) + x--; + else + x++; + } else { + if (target.getCurrentPosition().getY() - item.getY() > 0) + y--; + else + y++; + } + } } RoomTile newLocation = room.getLayout().getTile((short) (item.getX() + x), (short) (item.getY() + y)); diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectMoveFurniTo.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectMoveFurniTo.java index cabae23c..a6bb37ee 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectMoveFurniTo.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectMoveFurniTo.java @@ -5,8 +5,8 @@ import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredEffect; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.habbohotel.wired.WiredEffectType; import com.eu.habbo.messages.outgoing.rooms.items.FloorItemOnRollerComposer; import gnu.trove.set.hash.THashSet; @@ -40,12 +40,12 @@ public class WiredEffectMoveFurniTo extends InteractionWiredEffect { int spacing = this.getWiredSettings().getIntegerParams().get(PARAM_SPACING); for (Object object : stuff) { - if (object instanceof HabboItem) { + if (object instanceof RoomItem) { int randomItemIndex = Emulator.getRandom().nextInt(this.getWiredSettings().getItemIds().size()); - HabboItem[] items = this.getWiredSettings().getItems(room).toArray(new HabboItem[this.getWiredSettings().getItemIds().size()]); + RoomItem[] items = this.getWiredSettings().getItems(room).toArray(new RoomItem[this.getWiredSettings().getItemIds().size()]); - HabboItem randomItem = items[randomItemIndex]; + RoomItem randomItem = items[randomItemIndex]; if (randomItem != null) { int indexOffset = 0; @@ -53,7 +53,7 @@ public class WiredEffectMoveFurniTo extends InteractionWiredEffect { RoomTile objectTile = room.getLayout().getTile(randomItem.getX(), randomItem.getY()); if (objectTile != null) { - THashSet refreshTiles = room.getLayout().getTilesAt(room.getLayout().getTile(((HabboItem) object).getX(), ((HabboItem) object).getY()), ((HabboItem) object).getBaseItem().getWidth(), ((HabboItem) object).getBaseItem().getLength(), ((HabboItem) object).getRotation()); + THashSet refreshTiles = room.getLayout().getTilesAt(room.getLayout().getTile(((RoomItem) object).getX(), ((RoomItem) object).getY()), ((RoomItem) object).getBaseItem().getWidth(), ((RoomItem) object).getBaseItem().getLength(), ((RoomItem) object).getRotation()); RoomTile tile = room.getLayout().getTileInFront(objectTile, direction, indexOffset); if (tile == null || !tile.getAllowStack()) { @@ -61,8 +61,8 @@ public class WiredEffectMoveFurniTo extends InteractionWiredEffect { tile = room.getLayout().getTileInFront(objectTile, direction, indexOffset); } - room.sendComposer(new FloorItemOnRollerComposer((HabboItem) object, null, tile, tile.getStackHeight() - ((HabboItem) object).getZ(), room).compose()); - refreshTiles.addAll(room.getLayout().getTilesAt(room.getLayout().getTile(((HabboItem) object).getX(), ((HabboItem) object).getY()), ((HabboItem) object).getBaseItem().getWidth(), ((HabboItem) object).getBaseItem().getLength(), ((HabboItem) object).getRotation())); + room.sendComposer(new FloorItemOnRollerComposer((RoomItem) object, null, tile, tile.getStackHeight() - ((RoomItem) object).getZ(), room).compose()); + refreshTiles.addAll(room.getLayout().getTilesAt(room.getLayout().getTile(((RoomItem) object).getX(), ((RoomItem) object).getY()), ((RoomItem) object).getBaseItem().getWidth(), ((RoomItem) object).getBaseItem().getLength(), ((RoomItem) object).getRotation())); room.updateTiles(refreshTiles); } } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectMoveFurniTowards.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectMoveFurniTowards.java index a0b304a4..3e874cbe 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectMoveFurniTowards.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectMoveFurniTowards.java @@ -4,21 +4,19 @@ import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredEffect; import com.eu.habbo.habbohotel.rooms.*; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.RoomRotation; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.wired.WiredEffectType; -import com.eu.habbo.habbohotel.wired.WiredHandler; -import com.eu.habbo.messages.incoming.wired.WiredSaveException; import com.eu.habbo.messages.outgoing.rooms.items.FloorItemOnRollerComposer; import com.eu.habbo.threading.runnables.WiredCollissionRunnable; import gnu.trove.map.hash.THashMap; -import gnu.trove.set.hash.THashSet; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.Collection; import java.util.List; -import java.util.stream.Collectors; /** * Wired effect: move to closest user @@ -27,7 +25,7 @@ import java.util.stream.Collectors; * @author Beny. */ public class WiredEffectMoveFurniTowards extends InteractionWiredEffect { - private THashMap lastDirections; + private THashMap lastDirections; public WiredEffectMoveFurniTowards(ResultSet set, Item baseItem) throws SQLException { super(set, baseItem); @@ -39,15 +37,15 @@ public class WiredEffectMoveFurniTowards extends InteractionWiredEffect { this.lastDirections = new THashMap<>(); } - public List getAvailableDirections(HabboItem item, Room room) { - List availableDirections = new ArrayList<>(); + public List getAvailableDirections(RoomItem item, Room room) { + List availableDirections = new ArrayList<>(); RoomLayout layout = room.getLayout(); RoomTile currentTile = layout.getTile(item.getX(), item.getY()); - RoomUserRotation[] rotations = new RoomUserRotation[]{RoomUserRotation.NORTH, RoomUserRotation.EAST, RoomUserRotation.SOUTH, RoomUserRotation.WEST}; + RoomRotation[] rotations = new RoomRotation[]{RoomRotation.NORTH, RoomRotation.EAST, RoomRotation.SOUTH, RoomRotation.WEST}; - for (RoomUserRotation rot : rotations) { + for (RoomRotation rot : rotations) { RoomTile tile = layout.getTileInFront(currentTile, rot.getValue()); if (tile == null || tile.getState() == RoomTileState.BLOCKED || tile.getState() == RoomTileState.INVALID) @@ -59,7 +57,7 @@ public class WiredEffectMoveFurniTowards extends InteractionWiredEffect { if (room.furnitureFitsAt(tile, item, item.getRotation()) == FurnitureMovementError.INVALID_MOVE) continue; - HabboItem topItem = room.getTopItemAt(tile.getX(), tile.getY()); + RoomItem topItem = room.getTopItemAt(tile.getX(), tile.getY()); if (topItem != null && !topItem.getBaseItem().allowStack()) continue; @@ -77,10 +75,10 @@ public class WiredEffectMoveFurniTowards extends InteractionWiredEffect { return false; } - for (HabboItem item : this.getWiredSettings().getItems(room)) { + for (RoomItem item : this.getWiredSettings().getItems(room)) { // direction the furni will move in - RoomUserRotation moveDirection = null; - RoomUserRotation lastDirection = lastDirections.get(item.getId()); + RoomRotation moveDirection = null; + RoomRotation lastDirection = lastDirections.get(item.getId()); // 1. Check if any user is within 3 tiles from the item RoomUnit target = null; // closest found user @@ -95,9 +93,9 @@ public class WiredEffectMoveFurniTowards extends InteractionWiredEffect { if (target != null) break; - RoomUserRotation[] rotations = new RoomUserRotation[]{RoomUserRotation.NORTH, RoomUserRotation.EAST, RoomUserRotation.SOUTH, RoomUserRotation.WEST}; + RoomRotation[] rotations = new RoomRotation[]{RoomRotation.NORTH, RoomRotation.EAST, RoomRotation.SOUTH, RoomRotation.WEST}; - for (RoomUserRotation rot : rotations) { + for (RoomRotation rot : rotations) { RoomTile startTile = layout.getTile(item.getX(), item.getY()); for (int ii = 0; ii <= i; ii++) { @@ -108,7 +106,7 @@ public class WiredEffectMoveFurniTowards extends InteractionWiredEffect { } if (startTile != null && layout.tileExists(startTile.getX(), startTile.getY())) { - Collection roomUnitsAtTile = room.getRoomUnitsAt(startTile); + Collection roomUnitsAtTile = room.getRoomUnitManager().getRoomUnitsAt(startTile); if (roomUnitsAtTile.size() > 0) { target = roomUnitsAtTile.iterator().next(); if (i == 0) { // i = 0 means right next to it @@ -125,26 +123,30 @@ public class WiredEffectMoveFurniTowards extends InteractionWiredEffect { continue; if (target != null) { - if (target.getX() == item.getX()) { - if (item.getY() < target.getY()) - moveDirection = RoomUserRotation.SOUTH; + if (target.getCurrentPosition().getX() == item.getX()) { + if (item.getY() < target.getCurrentPosition().getY()) + moveDirection = RoomRotation.SOUTH; else - moveDirection = RoomUserRotation.NORTH; - } else if (target.getY() == item.getY()) { - if (item.getX() < target.getX()) - moveDirection = RoomUserRotation.EAST; - else - moveDirection = RoomUserRotation.WEST; - } else if (target.getX() - item.getX() > target.getY() - item.getY()) { - if (target.getX() - item.getX() > 0) - moveDirection = RoomUserRotation.EAST; - else - moveDirection = RoomUserRotation.WEST; + moveDirection = RoomRotation.NORTH; } else { - if (target.getY() - item.getY() > 0) - moveDirection = RoomUserRotation.SOUTH; - else - moveDirection = RoomUserRotation.NORTH; + if (target.getCurrentPosition().getY() == item.getY()) { + if (item.getX() < target.getCurrentPosition().getX()) + moveDirection = RoomRotation.EAST; + else + moveDirection = RoomRotation.WEST; + } else { + if (target.getCurrentPosition().getX() - item.getX() > target.getCurrentPosition().getY() - item.getY()) { + if (target.getCurrentPosition().getX() - item.getX() > 0) + moveDirection = RoomRotation.EAST; + else + moveDirection = RoomRotation.WEST; + } else { + if (target.getCurrentPosition().getY() - item.getY() > 0) + moveDirection = RoomRotation.SOUTH; + else + moveDirection = RoomRotation.NORTH; + } + } } } @@ -160,7 +162,7 @@ public class WiredEffectMoveFurniTowards extends InteractionWiredEffect { 3+ available - move in random direction, but never the opposite */ - List availableDirections = this.getAvailableDirections(item, room); + List availableDirections = this.getAvailableDirections(item, room); if (moveDirection != null && !availableDirections.contains(moveDirection)) moveDirection = null; @@ -174,7 +176,7 @@ public class WiredEffectMoveFurniTowards extends InteractionWiredEffect { if (lastDirection == null) { moveDirection = availableDirections.get(Emulator.getRandom().nextInt(availableDirections.size())); } else { - RoomUserRotation oppositeLast = lastDirection.getOpposite(); + RoomRotation oppositeLast = lastDirection.getOpposite(); if (availableDirections.get(0) == oppositeLast) { moveDirection = availableDirections.get(1); @@ -184,7 +186,7 @@ public class WiredEffectMoveFurniTowards extends InteractionWiredEffect { } } else { if (lastDirection != null) { - RoomUserRotation opposite = lastDirection.getOpposite(); + RoomRotation opposite = lastDirection.getOpposite(); availableDirections.remove(opposite); } moveDirection = availableDirections.get(Emulator.getRandom().nextInt(availableDirections.size())); diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectMoveRotateFurni.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectMoveRotateFurni.java index b9704055..4f5b96f0 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectMoveRotateFurni.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectMoveRotateFurni.java @@ -5,10 +5,10 @@ import com.eu.habbo.habbohotel.items.ICycleable; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredEffect; import com.eu.habbo.habbohotel.rooms.*; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.RoomRotation; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.habbohotel.wired.WiredEffectType; -import com.eu.habbo.habbohotel.wired.WiredHandler; -import com.eu.habbo.messages.incoming.wired.WiredSaveException; import com.eu.habbo.messages.outgoing.rooms.items.FloorItemOnRollerComposer; import gnu.trove.set.hash.THashSet; import lombok.extern.slf4j.Slf4j; @@ -16,8 +16,6 @@ import lombok.extern.slf4j.Slf4j; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Iterator; -import java.util.List; -import java.util.stream.Collectors; @Slf4j public class WiredEffectMoveRotateFurni extends InteractionWiredEffect implements ICycleable { @@ -49,17 +47,17 @@ public class WiredEffectMoveRotateFurni extends InteractionWiredEffect implement int direction = this.getWiredSettings().getIntegerParams().get(PARAM_DIRECTION); int rotation = this.getWiredSettings().getIntegerParams().get(PARAM_ROTATION); - for (HabboItem item : this.getWiredSettings().getItems(room)) { + for (RoomItem item : this.getWiredSettings().getItems(room)) { int newRotation = rotation > 0 ? this.getNewRotation(item, rotation) : item.getRotation(); RoomTile newLocation = room.getLayout().getTile(item.getX(), item.getY()); RoomTile oldLocation = room.getLayout().getTile(item.getX(), item.getY()); double oldZ = item.getZ(); if(direction > 0) { - RoomUserRotation moveDirection = this.getMovementDirection(direction); + RoomRotation moveDirection = this.getMovementDirection(direction); newLocation = room.getLayout().getTile( - (short) (item.getX() + ((moveDirection == RoomUserRotation.WEST || moveDirection == RoomUserRotation.NORTH_WEST || moveDirection == RoomUserRotation.SOUTH_WEST) ? -1 : (((moveDirection == RoomUserRotation.EAST || moveDirection == RoomUserRotation.SOUTH_EAST || moveDirection == RoomUserRotation.NORTH_EAST) ? 1 : 0)))), - (short) (item.getY() + ((moveDirection == RoomUserRotation.NORTH || moveDirection == RoomUserRotation.NORTH_EAST || moveDirection == RoomUserRotation.NORTH_WEST) ? 1 : ((moveDirection == RoomUserRotation.SOUTH || moveDirection == RoomUserRotation.SOUTH_EAST || moveDirection == RoomUserRotation.SOUTH_WEST) ? -1 : 0))) + (short) (item.getX() + ((moveDirection == RoomRotation.WEST || moveDirection == RoomRotation.NORTH_WEST || moveDirection == RoomRotation.SOUTH_WEST) ? -1 : (((moveDirection == RoomRotation.EAST || moveDirection == RoomRotation.SOUTH_EAST || moveDirection == RoomRotation.NORTH_EAST) ? 1 : 0)))), + (short) (item.getY() + ((moveDirection == RoomRotation.NORTH || moveDirection == RoomRotation.NORTH_EAST || moveDirection == RoomRotation.NORTH_WEST) ? 1 : ((moveDirection == RoomRotation.SOUTH || moveDirection == RoomRotation.SOUTH_EAST || moveDirection == RoomRotation.SOUTH_WEST) ? -1 : 0))) ); } @@ -84,7 +82,7 @@ public class WiredEffectMoveRotateFurni extends InteractionWiredEffect implement * @param item HabboItem * @return new rotation */ - private int getNewRotation(HabboItem item, int rotation) { + private int getNewRotation(RoomItem item, int rotation) { if(item.getMaximumRotations() == 2) { return item.getRotation() == 0 ? 4 : 0; @@ -153,26 +151,26 @@ public class WiredEffectMoveRotateFurni extends InteractionWiredEffect implement * * @return direction */ - private RoomUserRotation getMovementDirection(int direction) { - RoomUserRotation movemementDirection = RoomUserRotation.NORTH; + private RoomRotation getMovementDirection(int direction) { + RoomRotation movemementDirection = RoomRotation.NORTH; if (direction == 1) { - movemementDirection = RoomUserRotation.values()[Emulator.getRandom().nextInt(RoomUserRotation.values().length / 2) * 2]; + movemementDirection = RoomRotation.values()[Emulator.getRandom().nextInt(RoomRotation.values().length / 2) * 2]; } else if (direction == 2) { if (Emulator.getRandom().nextInt(2) == 1) { - movemementDirection = RoomUserRotation.EAST; + movemementDirection = RoomRotation.EAST; } else { - movemementDirection = RoomUserRotation.WEST; + movemementDirection = RoomRotation.WEST; } } else if (direction == 3) { if (Emulator.getRandom().nextInt(2) != 1) { - movemementDirection = RoomUserRotation.SOUTH; + movemementDirection = RoomRotation.SOUTH; } } else if (direction == 4) { - movemementDirection = RoomUserRotation.SOUTH; + movemementDirection = RoomRotation.SOUTH; } else if (direction == 5) { - movemementDirection = RoomUserRotation.EAST; + movemementDirection = RoomRotation.EAST; } else if (direction == 7) { - movemementDirection = RoomUserRotation.WEST; + movemementDirection = RoomRotation.WEST; } return movemementDirection; } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectMuteHabbo.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectMuteRoom.java similarity index 84% rename from src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectMuteHabbo.java rename to src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectMuteRoom.java index 1072db61..bd204fd6 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectMuteHabbo.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectMuteRoom.java @@ -6,7 +6,7 @@ import com.eu.habbo.habbohotel.items.interactions.InteractionWiredEffect; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomChatMessage; import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.habbohotel.wired.WiredEffectType; import com.eu.habbo.messages.outgoing.rooms.users.WhisperMessageComposer; @@ -14,14 +14,14 @@ import com.eu.habbo.messages.outgoing.rooms.users.WhisperMessageComposer; import java.sql.ResultSet; import java.sql.SQLException; -public class WiredEffectMuteHabbo extends InteractionWiredEffect { +public class WiredEffectMuteRoom extends InteractionWiredEffect { private final int PARAM_LENGTH = 0; - public WiredEffectMuteHabbo(ResultSet set, Item baseItem) throws SQLException { + public WiredEffectMuteRoom(ResultSet set, Item baseItem) throws SQLException { super(set, baseItem); } - public WiredEffectMuteHabbo(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { + public WiredEffectMuteRoom(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { super(id, userId, item, extradata, limitedStack, limitedSells); } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectResetTimers.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectResetTimers.java index f5f626ef..85d12667 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectResetTimers.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectResetTimers.java @@ -4,9 +4,8 @@ import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredEffect; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.wired.WiredEffectType; -import com.eu.habbo.habbohotel.wired.WiredHandler; import com.eu.habbo.threading.runnables.WiredResetTimers; import java.sql.ResultSet; diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectTeleport.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectTeleport.java index 17ed1868..5dabd8cb 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectTeleport.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectTeleport.java @@ -6,11 +6,11 @@ import com.eu.habbo.habbohotel.items.interactions.InteractionWiredEffect; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; import com.eu.habbo.habbohotel.rooms.RoomTileState; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.types.RoomHabbo; import com.eu.habbo.habbohotel.wired.WiredEffectType; import com.eu.habbo.habbohotel.wired.WiredHandler; -import com.eu.habbo.messages.incoming.wired.WiredSaveException; import com.eu.habbo.messages.outgoing.rooms.users.AvatarEffectMessageComposer; import com.eu.habbo.threading.runnables.RoomUnitTeleport; import com.eu.habbo.threading.runnables.SendRoomUnitEffectComposer; @@ -20,12 +20,11 @@ import java.sql.SQLException; import java.util.ArrayList; import java.util.Collections; import java.util.List; -import java.util.stream.Collectors; public class WiredEffectTeleport extends InteractionWiredEffect { public static final WiredEffectType type = WiredEffectType.TELEPORT; - protected List items; + protected List items; public WiredEffectTeleport(ResultSet set, Item baseItem) throws SQLException { super(set, baseItem); @@ -45,9 +44,9 @@ public class WiredEffectTeleport extends InteractionWiredEffect { int randomItemIndex = Emulator.getRandom().nextInt(this.getWiredSettings().getItemIds().size()); - HabboItem[] items = this.getWiredSettings().getItems(room).toArray(new HabboItem[this.getWiredSettings().getItemIds().size()]); + RoomItem[] items = this.getWiredSettings().getItems(room).toArray(new RoomItem[this.getWiredSettings().getItemIds().size()]); - HabboItem randomItem = items[randomItemIndex]; + RoomItem randomItem = items[randomItemIndex]; teleportUnitToTile(roomUnit, room.getLayout().getTile(randomItem.getX(), randomItem.getY())); @@ -55,10 +54,10 @@ public class WiredEffectTeleport extends InteractionWiredEffect { } public static void teleportUnitToTile(RoomUnit roomUnit, RoomTile tile) { - if (roomUnit == null || tile == null || roomUnit.isWiredTeleporting()) + if (roomUnit == null || tile == null || roomUnit.isWiredTeleporting() || !(roomUnit instanceof RoomHabbo roomHabbo)) return; - Room room = roomUnit.getRoom(); + Room room = roomHabbo.getRoom(); if (room == null) { return; @@ -66,11 +65,11 @@ public class WiredEffectTeleport extends InteractionWiredEffect { // makes a temporary effect - roomUnit.getRoom().unIdle(roomUnit.getRoom().getHabbo(roomUnit)); - room.sendComposer(new AvatarEffectMessageComposer(roomUnit, 4).compose()); - Emulator.getThreading().run(new SendRoomUnitEffectComposer(room, roomUnit), (long) WiredHandler.TELEPORT_DELAY + 1000); + roomHabbo.getRoom().unIdle(roomHabbo.getRoom().getHabbo(roomHabbo)); + room.sendComposer(new AvatarEffectMessageComposer(roomHabbo, 4).compose()); + Emulator.getThreading().run(new SendRoomUnitEffectComposer(room, roomHabbo), (long) WiredHandler.TELEPORT_DELAY + 1000); - if (tile == roomUnit.getCurrentLocation()) { + if (tile == roomHabbo.getCurrentPosition()) { return; } @@ -91,8 +90,8 @@ public class WiredEffectTeleport extends InteractionWiredEffect { } } - Emulator.getThreading().run(() -> { roomUnit.setWiredTeleporting(true); }, Math.max(0, WiredHandler.TELEPORT_DELAY - 500)); - Emulator.getThreading().run(new RoomUnitTeleport(roomUnit, room, tile.getX(), tile.getY(), tile.getStackHeight() + (tile.getState() == RoomTileState.SIT ? -0.5 : 0), roomUnit.getEffectId()), WiredHandler.TELEPORT_DELAY); + Emulator.getThreading().run(() -> { roomHabbo.setWiredTeleporting(true); }, Math.max(0, WiredHandler.TELEPORT_DELAY - 500)); + Emulator.getThreading().run(new RoomUnitTeleport(roomHabbo, room, tile.getX(), tile.getY(), tile.getStackHeight() + (tile.getState() == RoomTileState.SIT ? -0.5 : 0), roomHabbo.getEffectId()), WiredHandler.TELEPORT_DELAY); } @Override diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectToggleFurni.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectToggleFurni.java index b35a7630..9ff7ba88 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectToggleFurni.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectToggleFurni.java @@ -14,12 +14,10 @@ import com.eu.habbo.habbohotel.items.interactions.games.tag.InteractionTagField; import com.eu.habbo.habbohotel.items.interactions.games.tag.InteractionTagPole; import com.eu.habbo.habbohotel.items.interactions.pets.*; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.habbohotel.wired.WiredEffectType; -import com.eu.habbo.messages.incoming.wired.WiredSaveException; -import gnu.trove.set.hash.THashSet; import lombok.extern.slf4j.Slf4j; import java.sql.ResultSet; @@ -29,7 +27,7 @@ import java.util.List; @Slf4j public class WiredEffectToggleFurni extends InteractionWiredEffect { - private static final List> FORBIDDEN_TYPES = new ArrayList<>() { + private static final List> FORBIDDEN_TYPES = new ArrayList<>() { { this.add(InteractionWired.class); this.add(InteractionTeleport.class); @@ -87,7 +85,7 @@ public class WiredEffectToggleFurni extends InteractionWiredEffect { Habbo habbo = room.getHabbo(roomUnit); - for (HabboItem item : this.getWiredSettings().getItems(room)) { + for (RoomItem item : this.getWiredSettings().getItems(room)) { if (item == null || item.getRoomId() == 0 || FORBIDDEN_TYPES.stream().anyMatch(a -> a.isAssignableFrom(item.getClass()))) { continue; diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectToggleRandom.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectToggleRandom.java index 5337bab9..d5e0394a 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectToggleRandom.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectToggleRandom.java @@ -5,7 +5,6 @@ import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.*; import com.eu.habbo.habbohotel.items.interactions.games.InteractionGameGate; import com.eu.habbo.habbohotel.items.interactions.games.InteractionGameScoreboard; -import com.eu.habbo.habbohotel.items.interactions.games.InteractionGameTimer; import com.eu.habbo.habbohotel.items.interactions.games.battlebanzai.InteractionBattleBanzaiTeleporter; import com.eu.habbo.habbohotel.items.interactions.games.battlebanzai.InteractionBattleBanzaiTile; import com.eu.habbo.habbohotel.items.interactions.games.freeze.InteractionFreezeBlock; @@ -15,23 +14,19 @@ import com.eu.habbo.habbohotel.items.interactions.games.tag.InteractionTagField; import com.eu.habbo.habbohotel.items.interactions.games.tag.InteractionTagPole; import com.eu.habbo.habbohotel.items.interactions.pets.*; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.habbohotel.wired.WiredEffectType; -import com.eu.habbo.habbohotel.wired.WiredHandler; -import com.eu.habbo.messages.incoming.wired.WiredSaveException; -import gnu.trove.set.hash.THashSet; import lombok.extern.slf4j.Slf4j; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; -import java.util.stream.Collectors; @Slf4j public class WiredEffectToggleRandom extends InteractionWiredEffect { - private static final List> FORBIDDEN_TYPES = new ArrayList<>() { + private static final List> FORBIDDEN_TYPES = new ArrayList<>() { { this.add(InteractionWired.class); this.add(InteractionTeleport.class); @@ -81,7 +76,7 @@ public class WiredEffectToggleRandom extends InteractionWiredEffect { @Override public boolean execute(RoomUnit roomUnit, Room room, Object[] stuff) { - for (HabboItem item : this.getWiredSettings().getItems(room)) { + for (RoomItem item : this.getWiredSettings().getItems(room)) { if (item.getRoomId() == 0 || FORBIDDEN_TYPES.stream().anyMatch(a -> a.isAssignableFrom(item.getClass()))) { continue; } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectTriggerStacks.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectTriggerStacks.java index 69afc0fb..db60860e 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectTriggerStacks.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectTriggerStacks.java @@ -1,22 +1,17 @@ package com.eu.habbo.habbohotel.items.interactions.wired.effects; -import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredEffect; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.habbohotel.wired.WiredEffectType; import com.eu.habbo.habbohotel.wired.WiredHandler; -import com.eu.habbo.messages.incoming.wired.WiredSaveException; import gnu.trove.set.hash.THashSet; import java.sql.ResultSet; import java.sql.SQLException; -import java.util.ArrayList; -import java.util.List; -import java.util.stream.Collectors; public class WiredEffectTriggerStacks extends InteractionWiredEffect { public WiredEffectTriggerStacks(ResultSet set, Item baseItem) throws SQLException { @@ -41,7 +36,7 @@ public class WiredEffectTriggerStacks extends InteractionWiredEffect { boolean found; - for (HabboItem item : this.getWiredSettings().getItems(room)) { + for (RoomItem item : this.getWiredSettings().getItems(room)) { //if(item instanceof InteractionWiredTrigger) { found = false; diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectWhisper.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectWhisper.java index a131fb72..4cad5227 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectWhisper.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectWhisper.java @@ -6,7 +6,7 @@ import com.eu.habbo.habbohotel.items.interactions.InteractionWiredEffect; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomChatMessage; import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.habbohotel.wired.WiredEffectType; import com.eu.habbo.habbohotel.wired.WiredHandler; @@ -45,7 +45,7 @@ public class WiredEffectWhisper extends InteractionWiredEffect { return true; } } else { - for (Habbo h : room.getHabbos()) { + for (Habbo h : room.getRoomUnitManager().getRoomHabbos()) { h.getClient().sendResponse(new WhisperMessageComposer(new RoomChatMessage(this.getWiredSettings().getStringParam().replace("%user%", h.getHabboInfo().getUsername()).replace("%online_count%", Emulator.getGameEnvironment().getHabboManager().getOnlineCount() + "").replace("%room_count%", Emulator.getGameEnvironment().getRoomManager().getActiveRooms().size() + ""), h, h, RoomChatMessageBubbles.WIRED))); } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/extra/WiredBlob.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/extra/WiredBlob.java index 730abc0c..abfd4af5 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/extra/WiredBlob.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/extra/WiredBlob.java @@ -7,7 +7,7 @@ import com.eu.habbo.habbohotel.games.battlebanzai.BattleBanzaiGame; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionDefault; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.habbohotel.wired.WiredEffectType; import lombok.AllArgsConstructor; diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/extra/WiredExtraRandom.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/extra/WiredExtraRandom.java index a3788f1f..9bf933fd 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/extra/WiredExtraRandom.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/extra/WiredExtraRandom.java @@ -3,9 +3,7 @@ package com.eu.habbo.habbohotel.items.interactions.wired.extra; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredExtra; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.messages.ServerMessage; -import com.eu.habbo.messages.incoming.wired.WiredSaveException; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import java.sql.ResultSet; import java.sql.SQLException; diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/extra/WiredExtraUnseen.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/extra/WiredExtraUnseen.java index 6a9b4a01..d986d04f 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/extra/WiredExtraUnseen.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/extra/WiredExtraUnseen.java @@ -5,9 +5,7 @@ import com.eu.habbo.habbohotel.items.interactions.InteractionWiredEffect; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredExtra; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.messages.ServerMessage; -import com.eu.habbo.messages.incoming.wired.WiredSaveException; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import lombok.Getter; import java.sql.ResultSet; diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/interfaces/IWiredInteraction.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/interfaces/IWiredInteraction.java index fc6f20f9..2653f315 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/interfaces/IWiredInteraction.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/interfaces/IWiredInteraction.java @@ -2,7 +2,7 @@ package com.eu.habbo.habbohotel.items.interactions.wired.interfaces; import com.eu.habbo.habbohotel.items.interactions.wired.WiredSettings; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; public interface IWiredInteraction { WiredSettings getWiredSettings(); void setWiredSettings(WiredSettings value); diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerAtSetTime.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerAtSetTime.java index c03adbdf..67369e34 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerAtSetTime.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerAtSetTime.java @@ -5,8 +5,7 @@ import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredTrigger; import com.eu.habbo.habbohotel.items.interactions.wired.interfaces.WiredTriggerReset; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.wired.WiredHandler; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.wired.WiredTriggerType; import com.eu.habbo.threading.runnables.WiredExecuteTask; @@ -28,7 +27,7 @@ public class WiredTriggerAtSetTime extends InteractionWiredTrigger implements Wi @Override public boolean execute(RoomUnit roomUnit, Room room, Object[] stuff) { - Emulator.getThreading().run(new WiredExecuteTask(this, Emulator.getGameEnvironment().getRoomManager().getRoom(this.getRoomId())), this.getWiredSettings().getIntegerParams().get(PARAM_EXECUTE_TIME) * 500); + Emulator.getThreading().run(new WiredExecuteTask(this, Emulator.getGameEnvironment().getRoomManager().getActiveRoomById(this.getRoomId())), this.getWiredSettings().getIntegerParams().get(PARAM_EXECUTE_TIME) * 500); return true; } @@ -42,7 +41,7 @@ public class WiredTriggerAtSetTime extends InteractionWiredTrigger implements Wi @Override public void resetTimer() { this.taskId++; - Emulator.getThreading().run(new WiredExecuteTask(this, Emulator.getGameEnvironment().getRoomManager().getRoom(this.getRoomId())), this.getWiredSettings().getIntegerParams().get(PARAM_EXECUTE_TIME) * 500); + Emulator.getThreading().run(new WiredExecuteTask(this, Emulator.getGameEnvironment().getRoomManager().getActiveRoomById(this.getRoomId())), this.getWiredSettings().getIntegerParams().get(PARAM_EXECUTE_TIME) * 500); } @Override diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerAtTimeLong.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerAtTimeLong.java index 3e95a175..270e9f98 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerAtTimeLong.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerAtTimeLong.java @@ -5,8 +5,7 @@ import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredTrigger; import com.eu.habbo.habbohotel.items.interactions.wired.interfaces.WiredTriggerReset; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.wired.WiredHandler; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.wired.WiredTriggerType; import com.eu.habbo.threading.runnables.WiredExecuteTask; @@ -28,7 +27,7 @@ public class WiredTriggerAtTimeLong extends InteractionWiredTrigger implements W @Override public boolean execute(RoomUnit roomUnit, Room room, Object[] stuff) { this.taskId = 1; - Emulator.getThreading().run(new WiredExecuteTask(this, Emulator.getGameEnvironment().getRoomManager().getRoom(this.getRoomId())), this.getWiredSettings().getIntegerParams().get(PARAM_EXECUTE_TIME)); + Emulator.getThreading().run(new WiredExecuteTask(this, Emulator.getGameEnvironment().getRoomManager().getActiveRoomById(this.getRoomId())), this.getWiredSettings().getIntegerParams().get(PARAM_EXECUTE_TIME)); return true; } @@ -42,7 +41,7 @@ public class WiredTriggerAtTimeLong extends InteractionWiredTrigger implements W @Override public void resetTimer() { this.taskId++; - Emulator.getThreading().run(new WiredExecuteTask(this, Emulator.getGameEnvironment().getRoomManager().getRoom(this.getRoomId())), this.getWiredSettings().getIntegerParams().get(PARAM_EXECUTE_TIME)); + Emulator.getThreading().run(new WiredExecuteTask(this, Emulator.getGameEnvironment().getRoomManager().getActiveRoomById(this.getRoomId())), this.getWiredSettings().getIntegerParams().get(PARAM_EXECUTE_TIME)); } @Override diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerBotReachedFurni.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerBotReachedFurni.java index 8fab5b26..1ff5b7ea 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerBotReachedFurni.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerBotReachedFurni.java @@ -1,20 +1,15 @@ package com.eu.habbo.habbohotel.items.interactions.wired.triggers; -import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredTrigger; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.users.HabboItem; -import com.eu.habbo.habbohotel.wired.WiredHandler; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.wired.WiredTriggerType; -import gnu.trove.set.hash.THashSet; import lombok.extern.slf4j.Slf4j; import java.sql.ResultSet; import java.sql.SQLException; -import java.util.List; -import java.util.stream.Collectors; @Slf4j public class WiredTriggerBotReachedFurni extends InteractionWiredTrigger { @@ -32,8 +27,8 @@ public class WiredTriggerBotReachedFurni extends InteractionWiredTrigger { return false; } - if (stuff[0] instanceof HabboItem) { - return this.getWiredSettings().getItems(room).contains(stuff[0]) && room.getBots(this.getWiredSettings().getStringParam()).stream().anyMatch(bot -> bot.getRoomUnit() == roomUnit); + if (stuff[0] instanceof RoomItem) { + return this.getWiredSettings().getItems(room).contains(stuff[0]) && room.getRoomUnitManager().getBotsByName(this.getWiredSettings().getStringParam()).stream().anyMatch(bot -> bot.getRoomUnit() == roomUnit); } return false; diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerBotReachedHabbo.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerBotReachedRoom.java similarity index 51% rename from src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerBotReachedHabbo.java rename to src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerBotReachedRoom.java index 8269cef8..2d469a3a 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerBotReachedHabbo.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerBotReachedRoom.java @@ -2,28 +2,25 @@ package com.eu.habbo.habbohotel.items.interactions.wired.triggers; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredTrigger; -import com.eu.habbo.habbohotel.items.interactions.wired.WiredSettings; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.wired.WiredHandler; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.wired.WiredTriggerType; -import com.eu.habbo.messages.ServerMessage; import java.sql.ResultSet; import java.sql.SQLException; -public class WiredTriggerBotReachedHabbo extends InteractionWiredTrigger { - public WiredTriggerBotReachedHabbo(ResultSet set, Item baseItem) throws SQLException { +public class WiredTriggerBotReachedRoom extends InteractionWiredTrigger { + public WiredTriggerBotReachedRoom(ResultSet set, Item baseItem) throws SQLException { super(set, baseItem); } - public WiredTriggerBotReachedHabbo(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { + public WiredTriggerBotReachedRoom(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { super(id, userId, item, extradata, limitedStack, limitedSells); } @Override public boolean execute(RoomUnit roomUnit, Room room, Object[] stuff) { - return room.getBots(this.getWiredSettings().getStringParam()).stream().anyMatch(bot -> bot.getRoomUnit() == roomUnit); + return room.getRoomUnitManager().getBotsByName(this.getWiredSettings().getStringParam()).stream().anyMatch(bot -> bot.getRoomUnit() == roomUnit); } @Override diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerCollision.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerCollision.java index d221039a..bd6233b6 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerCollision.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerCollision.java @@ -2,13 +2,10 @@ package com.eu.habbo.habbohotel.items.interactions.wired.triggers; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredTrigger; -import com.eu.habbo.habbohotel.items.interactions.wired.WiredSettings; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.users.HabboItem; -import com.eu.habbo.habbohotel.wired.WiredHandler; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.habbohotel.wired.WiredTriggerType; -import com.eu.habbo.messages.ServerMessage; import java.sql.ResultSet; import java.sql.SQLException; @@ -26,7 +23,7 @@ public class WiredTriggerCollision extends InteractionWiredTrigger { @Override public boolean execute(RoomUnit roomUnit, Room room, Object[] stuff) { - return stuff.length > 0 && stuff[0] instanceof HabboItem; + return stuff.length > 0 && stuff[0] instanceof RoomItem; } @Override diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerFurniStateToggled.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerFurniStateToggled.java index 5bd49045..539efefe 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerFurniStateToggled.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerFurniStateToggled.java @@ -1,21 +1,15 @@ package com.eu.habbo.habbohotel.items.interactions.wired.triggers; -import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredTrigger; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.habbohotel.wired.WiredEffectType; -import com.eu.habbo.habbohotel.wired.WiredHandler; import com.eu.habbo.habbohotel.wired.WiredTriggerType; -import gnu.trove.set.hash.THashSet; import java.sql.ResultSet; import java.sql.SQLException; -import java.util.List; -import java.util.stream.Collectors; public class WiredTriggerFurniStateToggled extends InteractionWiredTrigger { public WiredTriggerFurniStateToggled(ResultSet set, Item baseItem) throws SQLException { @@ -32,7 +26,7 @@ public class WiredTriggerFurniStateToggled extends InteractionWiredTrigger { return false; } - if (stuff[0] instanceof HabboItem && !(stuff[0] instanceof WiredEffectType)) { + if (stuff[0] instanceof RoomItem && !(stuff[0] instanceof WiredEffectType)) { return this.getWiredSettings().getItems(room).contains(stuff[0]); } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerGameEnds.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerGameEnds.java index 107eb428..875cece9 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerGameEnds.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerGameEnds.java @@ -2,16 +2,12 @@ package com.eu.habbo.habbohotel.items.interactions.wired.triggers; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredTrigger; -import com.eu.habbo.habbohotel.items.interactions.wired.WiredSettings; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.wired.WiredTriggerType; -import com.eu.habbo.messages.ServerMessage; import java.sql.ResultSet; import java.sql.SQLException; -import java.util.ArrayList; -import java.util.List; public class WiredTriggerGameEnds extends InteractionWiredTrigger { public WiredTriggerGameEnds(ResultSet set, Item baseItem) throws SQLException { diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerGameStarts.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerGameStarts.java index 1a377dd5..8f199f99 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerGameStarts.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerGameStarts.java @@ -2,16 +2,12 @@ package com.eu.habbo.habbohotel.items.interactions.wired.triggers; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredTrigger; -import com.eu.habbo.habbohotel.items.interactions.wired.WiredSettings; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.wired.WiredTriggerType; -import com.eu.habbo.messages.ServerMessage; import java.sql.ResultSet; import java.sql.SQLException; -import java.util.ArrayList; -import java.util.List; public class WiredTriggerGameStarts extends InteractionWiredTrigger { public WiredTriggerGameStarts(ResultSet set, Item baseItem) throws SQLException { diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerRepeater.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerRepeater.java index 9338718c..183a13b7 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerRepeater.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerRepeater.java @@ -1,21 +1,17 @@ package com.eu.habbo.habbohotel.items.interactions.wired.triggers; import com.eu.habbo.Emulator; -import com.eu.habbo.habbohotel.items.ICycleable; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredTrigger; import com.eu.habbo.habbohotel.items.interactions.wired.interfaces.IWiredPeriodical; import com.eu.habbo.habbohotel.items.interactions.wired.interfaces.WiredTriggerReset; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.wired.WiredHandler; import com.eu.habbo.habbohotel.wired.WiredTriggerType; -import lombok.Getter; import lombok.Setter; -import java.sql.Connection; -import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; @@ -77,7 +73,7 @@ public class WiredTriggerRepeater extends InteractionWiredTrigger implements IWi public void resetTimer() { this.counter = 0; if (this.getRoomId() != 0) { - Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(this.getRoomId()); + Room room = Emulator.getGameEnvironment().getRoomManager().getActiveRoomById(this.getRoomId()); if (room != null && room.isLoaded()) { WiredHandler.handle(this, null, room, new Object[]{this}); } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerRepeaterLong.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerRepeaterLong.java index 273c5018..f4691557 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerRepeaterLong.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerRepeaterLong.java @@ -1,17 +1,15 @@ package com.eu.habbo.habbohotel.items.interactions.wired.triggers; import com.eu.habbo.Emulator; -import com.eu.habbo.habbohotel.items.ICycleable; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredTrigger; import com.eu.habbo.habbohotel.items.interactions.wired.interfaces.IWiredPeriodical; import com.eu.habbo.habbohotel.items.interactions.wired.interfaces.WiredTriggerReset; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.wired.WiredHandler; import com.eu.habbo.habbohotel.wired.WiredTriggerType; -import lombok.Getter; import lombok.Setter; import java.sql.ResultSet; @@ -74,7 +72,7 @@ public class WiredTriggerRepeaterLong extends InteractionWiredTrigger implements public void resetTimer() { this.counter = 0; if (this.getRoomId() != 0) { - Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(this.getRoomId()); + Room room = Emulator.getGameEnvironment().getRoomManager().getActiveRoomById(this.getRoomId()); if (room != null && room.isLoaded()) { WiredHandler.handle(this, null, room, new Object[]{this}); } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerHabboEntersRoom.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerRoomEntersRoom.java similarity index 74% rename from src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerHabboEntersRoom.java rename to src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerRoomEntersRoom.java index a28b781c..ce382315 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerHabboEntersRoom.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerRoomEntersRoom.java @@ -3,19 +3,19 @@ package com.eu.habbo.habbohotel.items.interactions.wired.triggers; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredTrigger; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.habbohotel.wired.WiredTriggerType; import java.sql.ResultSet; import java.sql.SQLException; -public class WiredTriggerHabboEntersRoom extends InteractionWiredTrigger { - public WiredTriggerHabboEntersRoom(ResultSet set, Item baseItem) throws SQLException { +public class WiredTriggerRoomEntersRoom extends InteractionWiredTrigger { + public WiredTriggerRoomEntersRoom(ResultSet set, Item baseItem) throws SQLException { super(set, baseItem); } - public WiredTriggerHabboEntersRoom(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { + public WiredTriggerRoomEntersRoom(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { super(id, userId, item, extradata, limitedStack, limitedSells); } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerHabboSaysKeyword.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerRoomSaysKeyword.java similarity index 69% rename from src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerHabboSaysKeyword.java rename to src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerRoomSaysKeyword.java index 02c9e9c2..af5897a6 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerHabboSaysKeyword.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerRoomSaysKeyword.java @@ -2,25 +2,22 @@ package com.eu.habbo.habbohotel.items.interactions.wired.triggers; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredTrigger; -import com.eu.habbo.habbohotel.items.interactions.wired.WiredSettings; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.wired.WiredHandler; import com.eu.habbo.habbohotel.wired.WiredTriggerType; -import com.eu.habbo.messages.ServerMessage; import java.sql.ResultSet; import java.sql.SQLException; -public class WiredTriggerHabboSaysKeyword extends InteractionWiredTrigger { +public class WiredTriggerRoomSaysKeyword extends InteractionWiredTrigger { public int PARAM_OWNER_ONLY = 0; - public WiredTriggerHabboSaysKeyword(ResultSet set, Item baseItem) throws SQLException { + public WiredTriggerRoomSaysKeyword(ResultSet set, Item baseItem) throws SQLException { super(set, baseItem); } - public WiredTriggerHabboSaysKeyword(int id, int userId, Item item, String extraData, int limitedStack, int limitedSells) { + public WiredTriggerRoomSaysKeyword(int id, int userId, Item item, String extraData, int limitedStack, int limitedSells) { super(id, userId, item, extraData, limitedStack, limitedSells); } @@ -35,7 +32,7 @@ public class WiredTriggerHabboSaysKeyword extends InteractionWiredTrigger { if (stuff[0] instanceof String) { if (((String) stuff[0]).toLowerCase().contains(this.getWiredSettings().getStringParam().toLowerCase())) { Habbo habbo = room.getHabbo(roomUnit); - return !ownerOnly || (habbo != null && room.getOwnerId() == habbo.getHabboInfo().getId()); + return !ownerOnly || (habbo != null && room.getRoomInfo().getOwnerInfo().getId() == habbo.getHabboInfo().getId()); } } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerHabboWalkOffFurni.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerRoomWalkOffFurni.java similarity index 58% rename from src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerHabboWalkOffFurni.java rename to src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerRoomWalkOffFurni.java index fb9a92c2..8c944f28 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerHabboWalkOffFurni.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerRoomWalkOffFurni.java @@ -1,26 +1,21 @@ package com.eu.habbo.habbohotel.items.interactions.wired.triggers; -import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredTrigger; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.users.HabboItem; -import com.eu.habbo.habbohotel.wired.WiredHandler; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.habbohotel.wired.WiredTriggerType; -import gnu.trove.set.hash.THashSet; import java.sql.ResultSet; import java.sql.SQLException; -import java.util.List; -import java.util.stream.Collectors; -public class WiredTriggerHabboWalkOffFurni extends InteractionWiredTrigger { - public WiredTriggerHabboWalkOffFurni(ResultSet set, Item baseItem) throws SQLException { +public class WiredTriggerRoomWalkOffFurni extends InteractionWiredTrigger { + public WiredTriggerRoomWalkOffFurni(ResultSet set, Item baseItem) throws SQLException { super(set, baseItem); } - public WiredTriggerHabboWalkOffFurni(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { + public WiredTriggerRoomWalkOffFurni(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { super(id, userId, item, extradata, limitedStack, limitedSells); } @@ -30,7 +25,7 @@ public class WiredTriggerHabboWalkOffFurni extends InteractionWiredTrigger { return false; } - if (stuff[0] instanceof HabboItem) { + if (stuff[0] instanceof RoomItem) { return this.getWiredSettings().getItems(room).contains(stuff[0]); } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerHabboWalkOnFurni.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerRoomWalkOnFurni.java similarity index 64% rename from src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerHabboWalkOnFurni.java rename to src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerRoomWalkOnFurni.java index eee9e932..b17b3179 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerHabboWalkOnFurni.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerRoomWalkOnFurni.java @@ -3,19 +3,19 @@ package com.eu.habbo.habbohotel.items.interactions.wired.triggers; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredTrigger; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.habbohotel.wired.WiredTriggerType; import java.sql.ResultSet; import java.sql.SQLException; -public class WiredTriggerHabboWalkOnFurni extends InteractionWiredTrigger { - public WiredTriggerHabboWalkOnFurni(ResultSet set, Item baseItem) throws SQLException { +public class WiredTriggerRoomWalkOnFurni extends InteractionWiredTrigger { + public WiredTriggerRoomWalkOnFurni(ResultSet set, Item baseItem) throws SQLException { super(set, baseItem); } - public WiredTriggerHabboWalkOnFurni(int id, int userId, Item item, String extraData, int limitedStack, int limitedSells) { + public WiredTriggerRoomWalkOnFurni(int id, int userId, Item item, String extraData, int limitedStack, int limitedSells) { super(id, userId, item, extraData, limitedStack, limitedSells); } @@ -25,7 +25,7 @@ public class WiredTriggerHabboWalkOnFurni extends InteractionWiredTrigger { return false; } - if (stuff[0] instanceof HabboItem) { + if (stuff[0] instanceof RoomItem) { return this.getWiredSettings().getItems(room).contains(stuff[0]); } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerScoreAchieved.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerScoreAchieved.java index 24ff6810..a580c991 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerScoreAchieved.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerScoreAchieved.java @@ -2,12 +2,9 @@ package com.eu.habbo.habbohotel.items.interactions.wired.triggers; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredTrigger; -import com.eu.habbo.habbohotel.items.interactions.wired.WiredSettings; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.wired.WiredHandler; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.wired.WiredTriggerType; -import com.eu.habbo.messages.ServerMessage; import java.sql.ResultSet; import java.sql.SQLException; diff --git a/src/main/java/com/eu/habbo/habbohotel/messenger/MessengerBuddy.java b/src/main/java/com/eu/habbo/habbohotel/messenger/MessengerBuddy.java index 05ccdc3a..aacaedbc 100644 --- a/src/main/java/com/eu/habbo/habbohotel/messenger/MessengerBuddy.java +++ b/src/main/java/com/eu/habbo/habbohotel/messenger/MessengerBuddy.java @@ -57,7 +57,7 @@ public class MessengerBuddy implements Runnable, ISerialize { Habbo habbo = Emulator.getGameServer().getGameClientManager().getHabbo(this.username); if (habbo != null) { - this.inRoom = habbo.getHabboInfo().getCurrentRoom() != null; + this.inRoom = habbo.getRoomUnit().getRoom() != null; } } } catch (SQLException e) { @@ -98,7 +98,7 @@ public class MessengerBuddy implements Runnable, ISerialize { this.look = habbo.getHabboInfo().getLook(); this.relation = 0; this.userOne = userOne; - this.inRoom = habbo.getHabboInfo().getCurrentRoom() != null; + this.inRoom = habbo.getRoomUnit().getRoom() != null; } public void setOnline(boolean value) { diff --git a/src/main/java/com/eu/habbo/habbohotel/modtool/ModToolIssue.java b/src/main/java/com/eu/habbo/habbohotel/modtool/ModToolIssue.java index a3dfbd23..b0b25d56 100644 --- a/src/main/java/com/eu/habbo/habbohotel/modtool/ModToolIssue.java +++ b/src/main/java/com/eu/habbo/habbohotel/modtool/ModToolIssue.java @@ -1,7 +1,7 @@ package com.eu.habbo.habbohotel.modtool; import com.eu.habbo.Emulator; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.ISerialize; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.threading.runnables.UpdateModToolIssue; @@ -29,7 +29,7 @@ public class ModToolIssue implements ISerialize { public int groupId = -1; public int threadId = -1; public int commentId = -1; - public HabboItem photoItem = null; + public RoomItem photoItem = null; public ModToolIssue(ResultSet set) throws SQLException { this.id = set.getInt("id"); diff --git a/src/main/java/com/eu/habbo/habbohotel/modtool/ModToolManager.java b/src/main/java/com/eu/habbo/habbohotel/modtool/ModToolManager.java index 96ea6976..651513a1 100644 --- a/src/main/java/com/eu/habbo/habbohotel/modtool/ModToolManager.java +++ b/src/main/java/com/eu/habbo/habbohotel/modtool/ModToolManager.java @@ -320,7 +320,7 @@ public class ModToolManager { "DESC LIMIT ?) x " + (groupUser ? "GROUP BY user_id" : "") + ";")) { - statement.setInt(1, room.getId()); + statement.setInt(1, room.getRoomInfo().getId()); if (fromTimestamp > 0) statement.setInt(2, fromTimestamp); @@ -402,8 +402,8 @@ public class ModToolManager { public void kick(Habbo moderator, Habbo target, String message) { if (moderator.hasRight(Permission.ACC_SUPPORTTOOL) && !target.hasRight(Permission.ACC_UNKICKABLE)) { - if (target.getHabboInfo().getCurrentRoom() != null) { - Emulator.getGameEnvironment().getRoomManager().leaveRoom(target, target.getHabboInfo().getCurrentRoom()); + if (target.getRoomUnit().getRoom() != null) { + Emulator.getGameEnvironment().getRoomManager().leaveRoom(target, target.getRoomUnit().getRoom()); } this.alert(moderator, target, message, SupportUserAlertedReason.KICKED); } @@ -472,18 +472,19 @@ public class ModToolManager { Emulator.getPluginManager().fireEvent(roomActionEvent); if (roomActionEvent.isChangeTitle()) { - room.setName(Emulator.getTexts().getValue("hotel.room.inappropriate.title")); + String name = Emulator.getTexts().getValue("hotel.room.inappropriate.title"); + room.getRoomInfo().setName(name); room.setNeedsUpdate(true); } if (roomActionEvent.isLockDoor()) { - room.setState(RoomState.LOCKED); + room.getRoomInfo().setState(RoomState.LOCKED); room.setNeedsUpdate(true); } if (roomActionEvent.isKickUsers()) { - for (Habbo habbo : room.getHabbos()) { - if (!(habbo.hasRight(Permission.ACC_UNKICKABLE) || habbo.hasRight(Permission.ACC_SUPPORTTOOL) || room.isOwner(habbo))) { + for (Habbo habbo : room.getRoomUnitManager().getRoomHabbos()) { + if (!(habbo.hasRight(Permission.ACC_UNKICKABLE) || habbo.hasRight(Permission.ACC_SUPPORTTOOL) || room.getRoomInfo().isRoomOwner(habbo))) { room.kickHabbo(habbo, false); } } diff --git a/src/main/java/com/eu/habbo/habbohotel/navigation/NavigatorManager.java b/src/main/java/com/eu/habbo/habbohotel/navigation/NavigatorManager.java index daccc52f..f69b33a8 100644 --- a/src/main/java/com/eu/habbo/habbohotel/navigation/NavigatorManager.java +++ b/src/main/java/com/eu/habbo/habbohotel/navigation/NavigatorManager.java @@ -56,7 +56,7 @@ public class NavigatorManager { NavigatorPublicCategory category = this.publicCategories.get(set.getInt("public_cat_id")); if (category != null) { - Room room = Emulator.getGameEnvironment().getRoomManager().loadRoom(set.getInt("room_id")); + Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(set.getInt("room_id")); if (room != null) { category.addRoom(room); diff --git a/src/main/java/com/eu/habbo/habbohotel/navigation/NavigatorPublicCategory.java b/src/main/java/com/eu/habbo/habbohotel/navigation/NavigatorPublicCategory.java index 02ae1c44..f433d227 100644 --- a/src/main/java/com/eu/habbo/habbohotel/navigation/NavigatorPublicCategory.java +++ b/src/main/java/com/eu/habbo/habbohotel/navigation/NavigatorPublicCategory.java @@ -31,6 +31,6 @@ public class NavigatorPublicCategory { public void removeRoom(Room room) { this.rooms.remove(room); - room.preventUncaching = room.isPublicRoom(); + room.preventUncaching = room.getRoomInfo().isPublicRoom(); } } \ No newline at end of file diff --git a/src/main/java/com/eu/habbo/habbohotel/navigation/SearchResultList.java b/src/main/java/com/eu/habbo/habbohotel/navigation/SearchResultList.java index 0419d7c8..511597e3 100644 --- a/src/main/java/com/eu/habbo/habbohotel/navigation/SearchResultList.java +++ b/src/main/java/com/eu/habbo/habbohotel/navigation/SearchResultList.java @@ -38,7 +38,7 @@ public class SearchResultList implements ISerialize, Comparable toRemove = new ArrayList<>(); for (Room room : this.rooms) { - if (room.getState() == RoomState.INVISIBLE) { + if (room.getRoomInfo().getState() == RoomState.INVISIBLE) { toRemove.add(room); } } diff --git a/src/main/java/com/eu/habbo/habbohotel/pets/MonsterplantPet.java b/src/main/java/com/eu/habbo/habbohotel/pets/MonsterplantPet.java index daee7dab..2b378fa4 100644 --- a/src/main/java/com/eu/habbo/habbohotel/pets/MonsterplantPet.java +++ b/src/main/java/com/eu/habbo/habbohotel/pets/MonsterplantPet.java @@ -4,8 +4,8 @@ import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.achievements.AchievementManager; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.rooms.RoomUnitStatus; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.messages.outgoing.inventory.FurniListInvalidateComposer; import com.eu.habbo.messages.outgoing.inventory.UnseenItemsComposer; @@ -19,7 +19,6 @@ import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; -import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.Map; @@ -146,9 +145,9 @@ public class MonsterplantPet extends Pet implements IPetLook { @Override public void cycle() { - if (this.room != null && this.roomUnit != null) { + if (this.room != null && this.getRoomUnit() != null) { if (this.isDead()) { - this.roomUnit.removeStatus(RoomUnitStatus.GESTURE); + this.getRoomUnit().removeStatus(RoomUnitStatus.GESTURE); if (!this.hasDied) { AchievementManager.progressAchievement(Emulator.getGameEnvironment().getHabboManager().getHabbo(this.userId), Emulator.getGameEnvironment().getAchievementManager().getAchievement("MonsterPlantGardenOfDeath")); @@ -157,15 +156,15 @@ public class MonsterplantPet extends Pet implements IPetLook { this.setNeedsUpdate(true); } - this.roomUnit.clearStatus(); - this.roomUnit.setStatus(RoomUnitStatus.RIP, ""); + this.getRoomUnit().clearStatuses(); + this.getRoomUnit().setStatus(RoomUnitStatus.RIP, ""); this.setPacketUpdate(true); } else { int difference = Emulator.getIntUnixTimestamp() - this.created + 1; if (difference >= GROW_TIME) { this.growthStage = 7; boolean clear = false; - for (RoomUnitStatus s : this.roomUnit.getStatus().keySet()) { + for (RoomUnitStatus s : this.getRoomUnit().getStatuses().keySet()) { if (s.equals(RoomUnitStatus.GROW)) { clear = true; break; @@ -173,7 +172,7 @@ public class MonsterplantPet extends Pet implements IPetLook { } if (clear) { - this.roomUnit.clearStatus(); + this.getRoomUnit().clearStatuses(); this.setPacketUpdate(true); } } else { @@ -181,8 +180,8 @@ public class MonsterplantPet extends Pet implements IPetLook { if (g > this.growthStage) { this.growthStage = g; - this.roomUnit.clearStatus(); - this.roomUnit.setStatus(RoomUnitStatus.fromString("grw" + this.growthStage), ""); + this.getRoomUnit().clearStatuses(); + this.getRoomUnit().setStatus(RoomUnitStatus.fromString("grw" + this.growthStage), ""); this.setPacketUpdate(true); } } @@ -315,11 +314,11 @@ public class MonsterplantPet extends Pet implements IPetLook { this.getRoomUnit().removeStatus(RoomUnitStatus.GESTURE); pet.getRoomUnit().removeStatus(RoomUnitStatus.GESTURE); - Habbo ownerOne = this.room.getHabbo(this.getUserId()); + Habbo ownerOne = this.room.getRoomUnitManager().getRoomHabboById(this.getUserId()); Habbo ownerTwo = null; if (this.getUserId() != pet.getUserId()) { - ownerTwo = this.room.getHabbo(pet.getUserId()); + ownerTwo = this.room.getRoomUnitManager().getRoomHabboById(pet.getUserId()); } Item seedBase; @@ -331,7 +330,7 @@ public class MonsterplantPet extends Pet implements IPetLook { } if (seedBase != null) { - HabboItem seed; + RoomItem seed; if (ownerOne != null) { AchievementManager.progressAchievement(ownerOne, Emulator.getGameEnvironment().getAchievementManager().getAchievement("MonsterPlantBreeder"), 1); seed = Emulator.getGameEnvironment().getItemManager().createItem(ownerOne.getHabboInfo().getId(), seedBase, 0, 0, ""); diff --git a/src/main/java/com/eu/habbo/habbohotel/pets/Pet.java b/src/main/java/com/eu/habbo/habbohotel/pets/Pet.java index 56cd7ceb..8b804076 100644 --- a/src/main/java/com/eu/habbo/habbohotel/pets/Pet.java +++ b/src/main/java/com/eu/habbo/habbohotel/pets/Pet.java @@ -4,8 +4,9 @@ import com.eu.habbo.Emulator; import com.eu.habbo.database.DatabaseConstants; import com.eu.habbo.habbohotel.achievements.AchievementManager; import com.eu.habbo.habbohotel.rooms.*; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; +import com.eu.habbo.habbohotel.units.Unit; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; import com.eu.habbo.messages.ISerialize; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.messages.outgoing.rooms.pets.PetExperienceComposer; @@ -27,7 +28,7 @@ import java.util.TimeZone; import static com.eu.habbo.database.DatabaseConstants.CAUGHT_SQL_EXCEPTION; @Slf4j -public class Pet implements ISerialize, Runnable { +public class Pet extends Unit implements ISerialize, Runnable { @Getter @Setter @@ -83,9 +84,6 @@ public class Pet implements ISerialize, Runnable { @Getter @Setter protected int level; - @Getter - @Setter - RoomUnit roomUnit; /** * The chat timeout of the pet. @@ -137,7 +135,6 @@ public class Pet implements ISerialize, Runnable { * @throws SQLException if an error occurs while reading from the result set */ public Pet(ResultSet set) throws SQLException { - super(); this.id = set.getInt("id"); this.userId = set.getInt(DatabaseConstants.USER_ID); this.room = null; @@ -197,8 +194,8 @@ public class Pet implements ISerialize, Runnable { * @param message the message to be said */ protected void say(String message) { - if (this.roomUnit != null && this.room != null && !message.isEmpty()) { - RoomChatMessage chatMessage = new RoomChatMessage(message, this.roomUnit, RoomChatMessageBubbles.NORMAL); + if (this.getRoomUnit() != null && this.room != null && !message.isEmpty()) { + RoomChatMessage chatMessage = new RoomChatMessage(message, this.getRoomUnit(), RoomChatMessageBubbles.NORMAL); PetTalkEvent talkEvent = new PetTalkEvent(this, chatMessage); if (!Emulator.getPluginManager().fireEvent(talkEvent).isCancelled()) { this.room.petChat(new ChatMessageComposer(chatMessage).compose()); @@ -285,14 +282,14 @@ public class Pet implements ISerialize, Runnable { try (Connection connection = Emulator.getDatabase().getDataSource().getConnection()) { if (this.id > 0) { try (PreparedStatement statement = connection.prepareStatement("UPDATE users_pets SET room_id = ?, experience = ?, energy = ?, respect = ?, x = ?, y = ?, z = ?, rot = ?, hunger = ?, thirst = ?, happiness = ?, created = ? WHERE id = ?")) { - statement.setInt(1, (this.room == null ? 0 : this.room.getId())); + statement.setInt(1, (this.room == null ? 0 : this.room.getRoomInfo().getId())); statement.setInt(2, this.experience); statement.setInt(3, this.energy); statement.setInt(4, this.respect); - statement.setInt(5, this.roomUnit != null ? this.roomUnit.getX() : 0); - statement.setInt(6, this.roomUnit != null ? this.roomUnit.getY() : 0); - statement.setDouble(7, this.roomUnit != null ? this.roomUnit.getZ() : 0.0); - statement.setInt(8, this.roomUnit != null ? this.roomUnit.getBodyRotation().getValue() : 0); + statement.setInt(5, this.getRoomUnit() != null ? this.getRoomUnit().getCurrentPosition().getX() : 0); + statement.setInt(6, this.getRoomUnit() != null ? this.getRoomUnit().getCurrentPosition().getY() : 0); + statement.setDouble(7, this.getRoomUnit() != null ? this.getRoomUnit().getCurrentZ() : 0.0); + statement.setInt(8, this.getRoomUnit() != null ? this.getRoomUnit().getBodyRotation().getValue() : 0); statement.setInt(9, this.levelHunger); statement.setInt(10, this.levelThirst); statement.setInt(11, this.happiness); @@ -338,9 +335,9 @@ public class Pet implements ISerialize, Runnable { this.idleCommandTicks++; int time = Emulator.getIntUnixTimestamp(); - if (this.roomUnit != null && this.task != PetTasks.RIDE) { - if (time - this.gestureTickTimeout > 5 && this.roomUnit.hasStatus(RoomUnitStatus.GESTURE)) { - this.roomUnit.removeStatus(RoomUnitStatus.GESTURE); + if (this.getRoomUnit() != null && this.task != PetTasks.RIDE) { + if (time - this.gestureTickTimeout > 5 && this.getRoomUnit().hasStatus(RoomUnitStatus.GESTURE)) { + this.getRoomUnit().removeStatus(RoomUnitStatus.GESTURE); this.setPacketUpdate(true); } @@ -357,12 +354,12 @@ public class Pet implements ISerialize, Runnable { } } - if (!this.roomUnit.isWalking()) { - if (this.roomUnit.getWalkTimeOut() < time && this.canWalk()) { + if (!this.getRoomUnit().isWalking()) { + if (this.getRoomUnit().getWalkTimeOut() < time && this.canWalk()) { RoomTile tile = this.room.getRandomWalkableTile(); if (tile != null) { - this.roomUnit.setGoalLocation(tile); + this.getRoomUnit().setGoalLocation(tile); } } @@ -377,11 +374,11 @@ public class Pet implements ISerialize, Runnable { this.addHappiness(1); if (this.energy == PetManager.maxEnergy(this.level)) { - this.roomUnit.removeStatus(RoomUnitStatus.LAY); - this.roomUnit.setCanWalk(true); - this.roomUnit.setGoalLocation(this.room.getRandomWalkableTile()); + this.getRoomUnit().removeStatus(RoomUnitStatus.LAY); + this.getRoomUnit().setCanWalk(true); + this.getRoomUnit().setGoalLocation(this.room.getRandomWalkableTile()); this.task = null; - this.roomUnit.setStatus(RoomUnitStatus.GESTURE, PetGestures.ENERGY.getKey()); + this.getRoomUnit().setStatus(RoomUnitStatus.GESTURE, PetGestures.ENERGY.getKey()); this.gestureTickTimeout = time; } } /* this is regeneration, add back if needed @@ -404,7 +401,7 @@ public class Pet implements ISerialize, Runnable { this.getRoomUnit().setCanWalk(true); } } else { - this.roomUnit.setWalkTimeOut(20 + time); + this.getRoomUnit().setWalkTimeOut(20 + time); if (this.energy >= 2) this.addEnergy(-1); @@ -495,26 +492,26 @@ public class Pet implements ISerialize, Runnable { public void clearPosture() { THashMap keys = new THashMap<>(); - if (this.roomUnit.hasStatus(RoomUnitStatus.MOVE)) - keys.put(RoomUnitStatus.MOVE, this.roomUnit.getStatus(RoomUnitStatus.MOVE)); + if (this.getRoomUnit().hasStatus(RoomUnitStatus.MOVE)) + keys.put(RoomUnitStatus.MOVE, this.getRoomUnit().getStatus(RoomUnitStatus.MOVE)); - if (this.roomUnit.hasStatus(RoomUnitStatus.SIT)) - keys.put(RoomUnitStatus.SIT, this.roomUnit.getStatus(RoomUnitStatus.SIT)); + if (this.getRoomUnit().hasStatus(RoomUnitStatus.SIT)) + keys.put(RoomUnitStatus.SIT, this.getRoomUnit().getStatus(RoomUnitStatus.SIT)); - if (this.roomUnit.hasStatus(RoomUnitStatus.LAY)) - keys.put(RoomUnitStatus.LAY, this.roomUnit.getStatus(RoomUnitStatus.LAY)); + if (this.getRoomUnit().hasStatus(RoomUnitStatus.LAY)) + keys.put(RoomUnitStatus.LAY, this.getRoomUnit().getStatus(RoomUnitStatus.LAY)); - if (this.roomUnit.hasStatus(RoomUnitStatus.GESTURE)) - keys.put(RoomUnitStatus.GESTURE, this.roomUnit.getStatus(RoomUnitStatus.GESTURE)); + if (this.getRoomUnit().hasStatus(RoomUnitStatus.GESTURE)) + keys.put(RoomUnitStatus.GESTURE, this.getRoomUnit().getStatus(RoomUnitStatus.GESTURE)); if (this.task == null) { - boolean isDead = this.roomUnit.hasStatus(RoomUnitStatus.RIP); + boolean isDead = this.getRoomUnit().hasStatus(RoomUnitStatus.RIP); - this.roomUnit.clearStatus(); + this.getRoomUnit().clearStatuses(); - if (isDead) this.roomUnit.setStatus(RoomUnitStatus.RIP, ""); + if (isDead) this.getRoomUnit().setStatus(RoomUnitStatus.RIP, ""); for (Map.Entry entry : keys.entrySet()) { - this.roomUnit.setStatus(entry.getKey(), entry.getValue()); + this.getRoomUnit().setStatus(entry.getKey(), entry.getValue()); } if (!keys.isEmpty()) this.setPacketUpdate(true); @@ -529,26 +526,26 @@ public class Pet implements ISerialize, Runnable { public void updateGesture(int time) { this.gestureTickTimeout = time; if (this.energy < 30) { - this.roomUnit.setStatus(RoomUnitStatus.GESTURE, PetGestures.TIRED.getKey()); + this.getRoomUnit().setStatus(RoomUnitStatus.GESTURE, PetGestures.TIRED.getKey()); this.findNest(); } else if (this.happiness == 100) { - this.roomUnit.setStatus(RoomUnitStatus.GESTURE, PetGestures.LOVE.getKey()); + this.getRoomUnit().setStatus(RoomUnitStatus.GESTURE, PetGestures.LOVE.getKey()); } else if (this.happiness >= 90) { this.randomHappyAction(); - this.roomUnit.setStatus(RoomUnitStatus.GESTURE, PetGestures.HAPPY.getKey()); + this.getRoomUnit().setStatus(RoomUnitStatus.GESTURE, PetGestures.HAPPY.getKey()); } else if (this.happiness <= 5) { this.randomSadAction(); - this.roomUnit.setStatus(RoomUnitStatus.GESTURE, PetGestures.SAD.getKey()); + this.getRoomUnit().setStatus(RoomUnitStatus.GESTURE, PetGestures.SAD.getKey()); } else if (this.levelHunger > 80) { - this.roomUnit.setStatus(RoomUnitStatus.GESTURE, PetGestures.HUNGRY.getKey()); + this.getRoomUnit().setStatus(RoomUnitStatus.GESTURE, PetGestures.HUNGRY.getKey()); this.eat(); } else if (this.levelThirst > 80) { - this.roomUnit.setStatus(RoomUnitStatus.GESTURE, PetGestures.THIRSTY.getKey()); + this.getRoomUnit().setStatus(RoomUnitStatus.GESTURE, PetGestures.THIRSTY.getKey()); this.drink(); } else if (this.idleCommandTicks > 240) { this.idleCommandTicks = 0; - this.roomUnit.setStatus(RoomUnitStatus.GESTURE, PetGestures.QUESTION.getKey()); + this.getRoomUnit().setStatus(RoomUnitStatus.GESTURE, PetGestures.QUESTION.getKey()); } } @@ -578,12 +575,12 @@ public class Pet implements ISerialize, Runnable { */ public void findNest() { - HabboItem item = this.petData.randomNest(this.room.getRoomSpecialTypes().getNests()); - this.roomUnit.setCanWalk(true); + RoomItem item = this.petData.randomNest(this.room.getRoomSpecialTypes().getNests()); + this.getRoomUnit().setCanWalk(true); if (item != null) { - this.roomUnit.setGoalLocation(this.room.getLayout().getTile(item.getX(), item.getY())); + this.getRoomUnit().setGoalLocation(this.room.getLayout().getTile(item.getX(), item.getY())); } else { - this.roomUnit.setStatus(RoomUnitStatus.LAY, this.room.getStackHeight(this.roomUnit.getX(), this.roomUnit.getY(), false) + ""); + this.getRoomUnit().setStatus(RoomUnitStatus.LAY, this.room.getStackHeight(this.getRoomUnit().getCurrentPosition().getX(), this.getRoomUnit().getCurrentPosition().getY(), false) + ""); this.say(this.petData.randomVocal(PetVocalsType.SLEEPING)); this.task = PetTasks.DOWN; } @@ -593,16 +590,16 @@ public class Pet implements ISerialize, Runnable { * Makes the pet drink. */ public boolean drink() { - HabboItem item = this.petData.randomDrinkItem(this.room.getRoomSpecialTypes().getPetDrinks()); + RoomItem item = this.petData.randomDrinkItem(this.room.getRoomSpecialTypes().getPetDrinks()); if (item != null) { - this.roomUnit.setCanWalk(true); - if (this.getRoomUnit().getCurrentLocation().distance(this.room.getLayout().getTile(item.getX(), item.getY())) == 0) { + this.getRoomUnit().setCanWalk(true); + if (this.getRoomUnit().getCurrentPosition().distance(this.room.getLayout().getTile(item.getX(), item.getY())) == 0) { try { item.onWalkOn(this.getRoomUnit(), this.getRoom(), null); } catch (Exception ignored) { } } else { - this.roomUnit.setGoalLocation(this.room.getLayout().getTile(item.getX(), item.getY())); + this.getRoomUnit().setGoalLocation(this.room.getLayout().getTile(item.getX(), item.getY())); } } return item != null; @@ -612,10 +609,10 @@ public class Pet implements ISerialize, Runnable { * Makes the pet eat. */ public void eat() { - HabboItem item = this.petData.randomFoodItem(this.room.getRoomSpecialTypes().getPetFoods()); + RoomItem item = this.petData.randomFoodItem(this.room.getRoomSpecialTypes().getPetFoods()); if (item != null) { - this.roomUnit.setCanWalk(true); - this.roomUnit.setGoalLocation(this.room.getLayout().getTile(item.getX(), item.getY())); + this.getRoomUnit().setCanWalk(true); + this.getRoomUnit().setGoalLocation(this.room.getLayout().getTile(item.getX(), item.getY())); } } @@ -625,17 +622,17 @@ public class Pet implements ISerialize, Runnable { * @return true if a toy was found, false otherwise */ public boolean findToy() { - HabboItem item = this.petData.randomToyItem(this.room.getRoomSpecialTypes().getPetToys()); + RoomItem item = this.petData.randomToyItem(this.room.getRoomSpecialTypes().getPetToys()); if (item != null) { - this.roomUnit.setCanWalk(true); - if (this.getRoomUnit().getCurrentLocation().distance(this.room.getLayout().getTile(item.getX(), item.getY())) == 0) { + this.getRoomUnit().setCanWalk(true); + if (this.getRoomUnit().getCurrentPosition().distance(this.room.getLayout().getTile(item.getX(), item.getY())) == 0) { try { item.onWalkOn(this.getRoomUnit(), this.getRoom(), null); } catch (Exception ignored) { } return true; } - this.roomUnit.setGoalLocation(this.room.getLayout().getTile(item.getX(), item.getY())); + this.getRoomUnit().setGoalLocation(this.room.getLayout().getTile(item.getX(), item.getY())); return true; } @@ -649,20 +646,20 @@ public class Pet implements ISerialize, Runnable { * @param type the type of item to search for * @return true if an item was found, false otherwise */ - public boolean findPetItem(PetTasks task, Class type) { - HabboItem item = this.petData.randomToyHabboItem(this.room.getRoomSpecialTypes().getItemsOfType(type)); + public boolean findPetItem(PetTasks task, Class type) { + RoomItem item = this.petData.randomToyHabboItem(this.room.getRoomSpecialTypes().getItemsOfType(type)); if (item != null) { - this.roomUnit.setCanWalk(true); + this.getRoomUnit().setCanWalk(true); this.setTask(task); - if (this.getRoomUnit().getCurrentLocation().distance(this.room.getLayout().getTile(item.getX(), item.getY())) == 0) { + if (this.getRoomUnit().getCurrentPosition().distance(this.room.getLayout().getTile(item.getX(), item.getY())) == 0) { try { item.onWalkOn(this.getRoomUnit(), this.getRoom(), null); } catch (Exception ignored) { } return true; } - this.roomUnit.setGoalLocation(this.room.getLayout().getTile(item.getX(), item.getY())); + this.getRoomUnit().setGoalLocation(this.room.getLayout().getTile(item.getX(), item.getY())); return true; } return false; @@ -673,7 +670,7 @@ public class Pet implements ISerialize, Runnable { */ public void randomHappyAction() { if (this.petData.getActionsHappy().length > 0) { - this.roomUnit.setStatus(RoomUnitStatus.fromString(this.petData.getActionsHappy()[Emulator.getRandom().nextInt(this.petData.getActionsHappy().length)]), ""); + this.getRoomUnit().setStatus(RoomUnitStatus.fromString(this.petData.getActionsHappy()[Emulator.getRandom().nextInt(this.petData.getActionsHappy().length)]), ""); } } @@ -682,7 +679,7 @@ public class Pet implements ISerialize, Runnable { */ public void randomSadAction() { if (this.petData.getActionsTired().length > 0) { - this.roomUnit.setStatus(RoomUnitStatus.fromString(this.petData.getActionsTired()[Emulator.getRandom().nextInt(this.petData.getActionsTired().length)]), ""); + this.getRoomUnit().setStatus(RoomUnitStatus.fromString(this.petData.getActionsTired()[Emulator.getRandom().nextInt(this.petData.getActionsTired().length)]), ""); } } @@ -691,7 +688,7 @@ public class Pet implements ISerialize, Runnable { */ public void randomAction() { if (this.petData.getActionsRandom().length > 0) { - this.roomUnit.setStatus(RoomUnitStatus.fromString(this.petData.getActionsRandom()[Emulator.getRandom().nextInt(this.petData.getActionsRandom().length)]), ""); + this.getRoomUnit().setStatus(RoomUnitStatus.fromString(this.petData.getActionsRandom()[Emulator.getRandom().nextInt(this.petData.getActionsRandom().length)]), ""); } } @@ -726,7 +723,7 @@ public class Pet implements ISerialize, Runnable { this.level++; this.say(this.petData.randomVocal(PetVocalsType.LEVEL_UP)); this.addHappiness(100); - this.roomUnit.setStatus(RoomUnitStatus.GESTURE, "exp"); + this.getRoomUnit().setStatus(RoomUnitStatus.GESTURE, "exp"); this.gestureTickTimeout = Emulator.getIntUnixTimestamp(); AchievementManager.progressAchievement(Emulator.getGameEnvironment().getHabboManager().getHabbo(this.userId), Emulator.getGameEnvironment().getAchievementManager().getAchievement("PetLevelUp")); this.room.sendComposer(new PetLevelUpdatedComposer(this).compose()); @@ -767,9 +764,9 @@ public class Pet implements ISerialize, Runnable { */ public void freeCommand() { this.task = null; - this.roomUnit.setGoalLocation(this.getRoomUnit().getCurrentLocation()); - this.roomUnit.clearStatus(); - this.roomUnit.setCanWalk(true); + this.getRoomUnit().setGoalLocation(this.getRoomUnit().getCurrentPosition()); + this.getRoomUnit().clearStatuses(); + this.getRoomUnit().setCanWalk(true); this.say(this.petData.randomVocal(PetVocalsType.GENERIC_NEUTRAL)); } @@ -786,7 +783,7 @@ public class Pet implements ISerialize, Runnable { if (habbo != null) { habbo.getHabboStats().decreasePetRespectPointsToGive(); - habbo.getHabboInfo().getCurrentRoom().sendComposer(new PetRespectNotificationComposer(this).compose()); + habbo.getRoomUnit().getRoom().sendComposer(new PetRespectNotificationComposer(this).compose()); AchievementManager.progressAchievement(habbo, Emulator.getGameEnvironment().getAchievementManager().getAchievement("PetRespectGiver")); } @@ -810,16 +807,16 @@ public class Pet implements ISerialize, Runnable { */ public void removeFromRoom(boolean dontSendPackets) { - if (this.roomUnit != null && this.roomUnit.getCurrentLocation() != null) { - this.roomUnit.getCurrentLocation().removeUnit(this.roomUnit); + if (this.getRoomUnit() != null && this.getRoomUnit().getCurrentPosition() != null) { + this.getRoomUnit().getCurrentPosition().removeUnit(this.getRoomUnit()); } if (!dontSendPackets) { - room.sendComposer(new UserRemoveMessageComposer(this.roomUnit).compose()); - room.removePet(this.id); + room.sendComposer(new UserRemoveMessageComposer(this.getRoomUnit()).compose()); + room.getRoomUnitManager().removePet(this.id); } - this.roomUnit = null; + this.setRoomUnit(null); this.room = null; this.setNeedsUpdate(true); } diff --git a/src/main/java/com/eu/habbo/habbohotel/pets/PetCommand.java b/src/main/java/com/eu/habbo/habbohotel/pets/PetCommand.java index 3fb62674..b09f2bf3 100644 --- a/src/main/java/com/eu/habbo/habbohotel/pets/PetCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/pets/PetCommand.java @@ -59,7 +59,7 @@ public class PetCommand implements Comparable { if (this.action != null && pet.energy > this.energyCost && pet.happiness > this.happinessCost && Emulator.getRandom().nextInt((pet.level - this.level <= 0 ? 2 : pet.level - this.level) + 2) == 0) { if (this.action.petTask != pet.getTask()) { if (this.action.stopsPetWalking) { - pet.getRoomUnit().setGoalLocation(pet.getRoomUnit().getCurrentLocation()); + pet.getRoomUnit().setGoalLocation(pet.getRoomUnit().getCurrentPosition()); } if (this.action.apply(pet, habbo, data)) { for (RoomUnitStatus status : this.action.statusToRemove) { diff --git a/src/main/java/com/eu/habbo/habbohotel/pets/PetData.java b/src/main/java/com/eu/habbo/habbohotel/pets/PetData.java index b9d621b2..5694128f 100644 --- a/src/main/java/com/eu/habbo/habbohotel/pets/PetData.java +++ b/src/main/java/com/eu/habbo/habbohotel/pets/PetData.java @@ -6,7 +6,7 @@ import com.eu.habbo.habbohotel.items.interactions.pets.InteractionNest; import com.eu.habbo.habbohotel.items.interactions.pets.InteractionPetDrink; import com.eu.habbo.habbohotel.items.interactions.pets.InteractionPetFood; import com.eu.habbo.habbohotel.items.interactions.pets.InteractionPetToy; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import gnu.trove.map.hash.THashMap; import gnu.trove.set.hash.THashSet; import lombok.Getter; @@ -93,7 +93,7 @@ public class PetData implements Comparable { } - public boolean haveNest(HabboItem nest) { + public boolean haveNest(RoomItem nest) { return this.haveNest(nest.getBaseItem()); } @@ -103,8 +103,8 @@ public class PetData implements Comparable { } - public HabboItem randomNest(THashSet items) { - List nestList = new ArrayList<>(); + public RoomItem randomNest(THashSet items) { + List nestList = new ArrayList<>(); for (InteractionNest nest : items) { if (this.haveNest(nest)) { @@ -132,7 +132,7 @@ public class PetData implements Comparable { } - public boolean haveFoodItem(HabboItem food) { + public boolean haveFoodItem(RoomItem food) { return this.haveFoodItem(food.getBaseItem()); } @@ -142,8 +142,8 @@ public class PetData implements Comparable { } - public HabboItem randomFoodItem(THashSet items) { - List foodList = new ArrayList<>(); + public RoomItem randomFoodItem(THashSet items) { + List foodList = new ArrayList<>(); for (InteractionPetFood food : items) { if (this.haveFoodItem(food)) { @@ -170,7 +170,7 @@ public class PetData implements Comparable { } - public boolean haveDrinkItem(HabboItem item) { + public boolean haveDrinkItem(RoomItem item) { return this.haveDrinkItem(item.getBaseItem()); } @@ -180,8 +180,8 @@ public class PetData implements Comparable { } - public HabboItem randomDrinkItem(THashSet items) { - List drinkList = new ArrayList<>(); + public RoomItem randomDrinkItem(THashSet items) { + List drinkList = new ArrayList<>(); for (InteractionPetDrink drink : items) { if (this.haveDrinkItem(drink)) { @@ -208,7 +208,7 @@ public class PetData implements Comparable { } - public boolean haveToyItem(HabboItem toy) { + public boolean haveToyItem(RoomItem toy) { return this.haveToyItem(toy.getBaseItem()); } @@ -218,8 +218,8 @@ public class PetData implements Comparable { } - public HabboItem randomToyItem(THashSet toys) { - List toyList = new ArrayList<>(); + public RoomItem randomToyItem(THashSet toys) { + List toyList = new ArrayList<>(); for (InteractionPetToy toy : toys) { if (this.haveToyItem(toy)) { @@ -235,10 +235,10 @@ public class PetData implements Comparable { return null; } - public HabboItem randomToyHabboItem(THashSet items) { - List itemList = new ArrayList<>(); + public RoomItem randomToyHabboItem(THashSet items) { + List itemList = new ArrayList<>(); - for (HabboItem item : items) { + for (RoomItem item : items) { if (this.haveToyItem(item)) { itemList.add(item); } diff --git a/src/main/java/com/eu/habbo/habbohotel/pets/PetManager.java b/src/main/java/com/eu/habbo/habbohotel/pets/PetManager.java index ea7f570c..dbaf0664 100644 --- a/src/main/java/com/eu/habbo/habbohotel/pets/PetManager.java +++ b/src/main/java/com/eu/habbo/habbohotel/pets/PetManager.java @@ -7,7 +7,7 @@ import com.eu.habbo.habbohotel.items.interactions.pets.*; import com.eu.habbo.habbohotel.pets.actions.*; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.types.RoomPet; import com.eu.habbo.habbohotel.users.Habbo; import gnu.trove.map.TIntIntMap; import gnu.trove.map.hash.THashMap; @@ -443,8 +443,8 @@ public class PetManager { pet.setUserId(habbo.getHabboInfo().getId()); pet.setRoom(room); - pet.setRoomUnit(new RoomUnit()); - pet.getRoomUnit().setPathFinderRoom(room); + pet.setRoomUnit(new RoomPet()); + pet.getRoomUnit().setRoom(room); pet.setNeedsUpdate(true); pet.run(); return pet; @@ -462,8 +462,8 @@ public class PetManager { pet.setUserId(habbo.getHabboInfo().getId()); pet.setRoom(room); - pet.setRoomUnit(new RoomUnit()); - pet.getRoomUnit().setPathFinderRoom(room); + pet.setRoomUnit(new RoomPet()); + pet.getRoomUnit().setRoom(room); pet.setNeedsUpdate(true); pet.run(); @@ -482,8 +482,8 @@ public class PetManager { pet.setUserId(habbo.getHabboInfo().getId()); pet.setRoom(room); - pet.setRoomUnit(new RoomUnit()); - pet.getRoomUnit().setPathFinderRoom(room); + pet.setRoomUnit(new RoomPet()); + pet.getRoomUnit().setRoom(room); pet.setNeedsUpdate(true); pet.run(); diff --git a/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionBreed.java b/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionBreed.java index 7eb182de..1dc07ba1 100644 --- a/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionBreed.java +++ b/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionBreed.java @@ -4,8 +4,8 @@ import com.eu.habbo.habbohotel.items.interactions.pets.InteractionPetBreedingNes import com.eu.habbo.habbohotel.pets.Pet; import com.eu.habbo.habbohotel.pets.PetAction; import com.eu.habbo.habbohotel.pets.PetTasks; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; import com.eu.habbo.messages.outgoing.rooms.pets.breeding.GoToBreedingNestFailureComposer; import org.apache.commons.lang3.StringUtils; @@ -17,7 +17,7 @@ public class ActionBreed extends PetAction { @Override public boolean apply(Pet pet, Habbo habbo, String[] data) { InteractionPetBreedingNest nest = null; - for (HabboItem item : pet.getRoom().getRoomSpecialTypes().getItemsOfType(InteractionPetBreedingNest.class)) { + for (RoomItem item : pet.getRoom().getRoomSpecialTypes().getItemsOfType(InteractionPetBreedingNest.class)) { if (StringUtils.containsIgnoreCase(item.getBaseItem().getName(), pet.getPetData().getName()) && !((InteractionPetBreedingNest) item).boxFull()) { nest = (InteractionPetBreedingNest) item; break; diff --git a/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionCroak.java b/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionCroak.java index 1301d7e3..8ae9d0d3 100644 --- a/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionCroak.java +++ b/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionCroak.java @@ -2,9 +2,7 @@ package com.eu.habbo.habbohotel.pets.actions; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.pets.Pet; -import com.eu.habbo.habbohotel.pets.PetAction; import com.eu.habbo.habbohotel.pets.PetTasks; -import com.eu.habbo.habbohotel.pets.PetVocalsType; import com.eu.habbo.habbohotel.rooms.RoomUnitStatus; import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.threading.runnables.PetClearPosture; @@ -17,7 +15,7 @@ public class ActionCroak extends ActionVocals { @Override public boolean apply(Pet pet, Habbo habbo, String[] data) { - pet.getRoomUnit().setStatus(RoomUnitStatus.CROAK, pet.getRoomUnit().getCurrentLocation().getStackHeight() + ""); + pet.getRoomUnit().setStatus(RoomUnitStatus.CROAK, pet.getRoomUnit().getCurrentPosition().getStackHeight() + ""); Emulator.getThreading().run(new PetClearPosture(pet, RoomUnitStatus.CROAK, null, false), this.minimumActionDuration); diff --git a/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionDip.java b/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionDip.java index 9e86ee9a..be7df55a 100644 --- a/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionDip.java +++ b/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionDip.java @@ -5,8 +5,8 @@ import com.eu.habbo.habbohotel.items.interactions.InteractionWater; import com.eu.habbo.habbohotel.pets.Pet; import com.eu.habbo.habbohotel.pets.PetAction; import com.eu.habbo.habbohotel.pets.PetVocalsType; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; import gnu.trove.set.hash.THashSet; public class ActionDip extends PetAction { @@ -16,13 +16,13 @@ public class ActionDip extends PetAction { @Override public boolean apply(Pet pet, Habbo habbo, String[] data) { - THashSet waterItems = pet.getRoom().getRoomSpecialTypes().getItemsOfType(InteractionWater.class); + THashSet waterItems = pet.getRoom().getRoomSpecialTypes().getItemsOfType(InteractionWater.class); if (waterItems.isEmpty()) { return false; } - HabboItem waterPatch = (HabboItem) waterItems.toArray()[Emulator.getRandom().nextInt(waterItems.size())]; + RoomItem waterPatch = (RoomItem) waterItems.toArray()[Emulator.getRandom().nextInt(waterItems.size())]; pet.getRoomUnit().setGoalLocation(pet.getRoom().getLayout().getTile(waterPatch.getX(), waterPatch.getY())); diff --git a/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionDown.java b/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionDown.java index dbdff378..e3cc23c2 100644 --- a/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionDown.java +++ b/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionDown.java @@ -20,11 +20,11 @@ public class ActionDown extends PetAction { @Override public boolean apply(Pet pet, Habbo habbo, String[] data) { if (pet.getTask() != PetTasks.DOWN && !pet.getRoomUnit().hasStatus(RoomUnitStatus.LAY)) { - pet.getRoomUnit().setCmdLay(true); - pet.getRoomUnit().setStatus(RoomUnitStatus.LAY, pet.getRoomUnit().getCurrentLocation().getStackHeight() + ""); + pet.getRoomUnit().setCmdLayEnabled(true); + pet.getRoomUnit().setStatus(RoomUnitStatus.LAY, pet.getRoomUnit().getCurrentPosition().getStackHeight() + ""); Emulator.getThreading().run(() -> { - pet.getRoomUnit().setCmdLay(false); + pet.getRoomUnit().setCmdLayEnabled(false); pet.clearPosture(); }, this.minimumActionDuration); diff --git a/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionHang.java b/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionHang.java index 0d610ee5..44fcd2f1 100644 --- a/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionHang.java +++ b/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionHang.java @@ -21,7 +21,7 @@ public class ActionHang extends PetAction { boolean findTree = pet.findPetItem(PetTasks.HANG, InteractionPetTree.class); if (!findTree && pet.getPetData().getToyItems().stream().noneMatch(item -> item.getInteractionType().getType() == InteractionPetTree.class)) { pet.getRoomUnit().setCanWalk(false); - pet.getRoomUnit().setStatus(RoomUnitStatus.HANG, pet.getRoomUnit().getCurrentLocation().getStackHeight() + ""); + pet.getRoomUnit().setStatus(RoomUnitStatus.HANG, pet.getRoomUnit().getCurrentPosition().getStackHeight() + ""); Emulator.getThreading().run(() -> { pet.getRoomUnit().setCanWalk(true); diff --git a/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionHere.java b/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionHere.java index da0b5948..df982829 100644 --- a/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionHere.java +++ b/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionHere.java @@ -16,7 +16,7 @@ public class ActionHere extends PetAction { @Override public boolean apply(Pet pet, Habbo habbo, String[] data) { - pet.getRoomUnit().setGoalLocation(pet.getRoom().getLayout().getTileInFront(habbo.getRoomUnit().getCurrentLocation(), habbo.getRoomUnit().getBodyRotation().getValue())); + pet.getRoomUnit().setGoalLocation(pet.getRoom().getLayout().getTileInFront(habbo.getRoomUnit().getCurrentPosition(), habbo.getRoomUnit().getBodyRotation().getValue())); pet.getRoomUnit().setCanWalk(true); if (pet.getHappiness() > 50) { diff --git a/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionMoveForward.java b/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionMoveForward.java index abaac92e..98083d2b 100644 --- a/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionMoveForward.java +++ b/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionMoveForward.java @@ -13,7 +13,7 @@ public class ActionMoveForward extends PetAction { @Override public boolean apply(Pet pet, Habbo habbo, String[] data) { - pet.getRoomUnit().setGoalLocation(pet.getRoom().getLayout().getTileInFront(pet.getRoomUnit().getCurrentLocation(), pet.getRoomUnit().getBodyRotation().getValue())); + pet.getRoomUnit().setGoalLocation(pet.getRoom().getLayout().getTileInFront(pet.getRoomUnit().getCurrentPosition(), pet.getRoomUnit().getBodyRotation().getValue())); pet.getRoomUnit().setCanWalk(true); pet.say(pet.getPetData().randomVocal(PetVocalsType.GENERIC_NEUTRAL)); diff --git a/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionPlayDead.java b/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionPlayDead.java index e62ef857..0a41fea3 100644 --- a/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionPlayDead.java +++ b/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionPlayDead.java @@ -18,7 +18,7 @@ public class ActionPlayDead extends PetAction { public boolean apply(Pet pet, Habbo habbo, String[] data) { pet.clearPosture(); - pet.getRoomUnit().setStatus(RoomUnitStatus.DEAD, pet.getRoomUnit().getCurrentLocation().getStackHeight() + ""); + pet.getRoomUnit().setStatus(RoomUnitStatus.DEAD, pet.getRoomUnit().getCurrentPosition().getStackHeight() + ""); if (pet.getHappiness() > 50) pet.say(pet.getPetData().randomVocal(PetVocalsType.PLAYFUL)); diff --git a/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionPlayFootball.java b/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionPlayFootball.java index f5f12c94..10b82412 100644 --- a/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionPlayFootball.java +++ b/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionPlayFootball.java @@ -5,8 +5,8 @@ import com.eu.habbo.habbohotel.pets.Pet; import com.eu.habbo.habbohotel.pets.PetAction; import com.eu.habbo.habbohotel.pets.PetVocalsType; import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; public class ActionPlayFootball extends PetAction { public ActionPlayFootball() { @@ -21,9 +21,9 @@ public class ActionPlayFootball extends PetAction { if(room == null || room.getLayout() == null) return false; - HabboItem foundBall = null; + RoomItem foundBall = null; - for(HabboItem item : room.getFloorItems()) { + for(RoomItem item : room.getFloorItems()) { if(item instanceof InteractionPushable) { foundBall = item; } diff --git a/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionRelax.java b/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionRelax.java index 25b70b38..c9eab174 100644 --- a/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionRelax.java +++ b/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionRelax.java @@ -21,7 +21,7 @@ public class ActionRelax extends PetAction { else pet.say(pet.getPetData().randomVocal(PetVocalsType.GENERIC_NEUTRAL)); - pet.getRoomUnit().setStatus(RoomUnitStatus.RELAX, pet.getRoomUnit().getCurrentLocation().getStackHeight() + ""); + pet.getRoomUnit().setStatus(RoomUnitStatus.RELAX, pet.getRoomUnit().getCurrentPosition().getStackHeight() + ""); return true; } diff --git a/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionRingOfFire.java b/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionRingOfFire.java index fcaaee3f..54278617 100644 --- a/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionRingOfFire.java +++ b/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionRingOfFire.java @@ -21,7 +21,7 @@ public class ActionRingOfFire extends PetAction { boolean findTree = pet.findPetItem(PetTasks.RING_OF_FIRE, InteractionPetTree.class); if (!findTree && pet.getPetData().getToyItems().stream().noneMatch(item -> item.getInteractionType().getType() == InteractionPetTree.class)) { pet.getRoomUnit().setCanWalk(false); - pet.getRoomUnit().setStatus(RoomUnitStatus.RINGOFFIRE, pet.getRoomUnit().getCurrentLocation().getStackHeight() + ""); + pet.getRoomUnit().setStatus(RoomUnitStatus.RINGOFFIRE, pet.getRoomUnit().getCurrentPosition().getStackHeight() + ""); Emulator.getThreading().run(() -> { pet.getRoomUnit().setCanWalk(true); diff --git a/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionRoll.java b/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionRoll.java index 8a757d5f..e2cc9c71 100644 --- a/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionRoll.java +++ b/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionRoll.java @@ -21,7 +21,7 @@ public class ActionRoll extends PetAction { boolean findTree = pet.findPetItem(PetTasks.ROLL, InteractionPetTree.class); if (!findTree && pet.getPetData().getToyItems().stream().noneMatch(item -> item.getInteractionType().getType() == InteractionPetTree.class)) { pet.getRoomUnit().setCanWalk(false); - pet.getRoomUnit().setStatus(RoomUnitStatus.ROLL, pet.getRoomUnit().getCurrentLocation().getStackHeight() + ""); + pet.getRoomUnit().setStatus(RoomUnitStatus.ROLL, pet.getRoomUnit().getCurrentPosition().getStackHeight() + ""); Emulator.getThreading().run(() -> { pet.getRoomUnit().setCanWalk(true); diff --git a/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionSit.java b/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionSit.java index b3ce2f51..905a033a 100644 --- a/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionSit.java +++ b/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionSit.java @@ -21,11 +21,11 @@ public class ActionSit extends PetAction { @Override public boolean apply(Pet pet, Habbo habbo, String[] data) { if (pet.getTask() != PetTasks.SIT && !pet.getRoomUnit().hasStatus(RoomUnitStatus.SIT)) { - pet.getRoomUnit().setCmdSit(true); - pet.getRoomUnit().setStatus(RoomUnitStatus.SIT, pet.getRoomUnit().getCurrentLocation().getStackHeight() + ""); + pet.getRoomUnit().setCmdSitEnabled(true); + pet.getRoomUnit().setStatus(RoomUnitStatus.SIT, pet.getRoomUnit().getCurrentPosition().getStackHeight() + ""); Emulator.getThreading().run(() -> { - pet.getRoomUnit().setCmdSit(false); + pet.getRoomUnit().setCmdSitEnabled(false); pet.clearPosture(); }, this.minimumActionDuration); diff --git a/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionSwing.java b/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionSwing.java index 3ca54d83..52c8706b 100644 --- a/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionSwing.java +++ b/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionSwing.java @@ -21,7 +21,7 @@ public class ActionSwing extends PetAction { boolean findTree = pet.findPetItem(PetTasks.SWING, InteractionPetTree.class); if (!findTree && pet.getPetData().getToyItems().stream().noneMatch(item -> item.getInteractionType().getType() == InteractionPetTree.class)) { pet.getRoomUnit().setCanWalk(false); - pet.getRoomUnit().setStatus(RoomUnitStatus.SWING, pet.getRoomUnit().getCurrentLocation().getStackHeight() + ""); + pet.getRoomUnit().setStatus(RoomUnitStatus.SWING, pet.getRoomUnit().getCurrentPosition().getStackHeight() + ""); Emulator.getThreading().run(() -> { pet.getRoomUnit().setCanWalk(true); diff --git a/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionTurnLeft.java b/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionTurnLeft.java index a04efc81..310e89ca 100644 --- a/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionTurnLeft.java +++ b/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionTurnLeft.java @@ -3,7 +3,7 @@ package com.eu.habbo.habbohotel.pets.actions; import com.eu.habbo.habbohotel.pets.Pet; import com.eu.habbo.habbohotel.pets.PetAction; import com.eu.habbo.habbohotel.pets.PetVocalsType; -import com.eu.habbo.habbohotel.rooms.RoomUserRotation; +import com.eu.habbo.habbohotel.rooms.entities.RoomRotation; import com.eu.habbo.habbohotel.users.Habbo; public class ActionTurnLeft extends PetAction { @@ -13,8 +13,8 @@ public class ActionTurnLeft extends PetAction { @Override public boolean apply(Pet pet, Habbo habbo, String[] data) { - pet.getRoomUnit().setBodyRotation(RoomUserRotation.values()[(pet.getRoomUnit().getBodyRotation().getValue() - 1 < 0 ? 7 : pet.getRoomUnit().getBodyRotation().getValue() - 1)]); - pet.getRoomUnit().setHeadRotation(RoomUserRotation.values()[(pet.getRoomUnit().getHeadRotation().getValue() - 1 < 0 ? 7 : pet.getRoomUnit().getHeadRotation().getValue() - 1)]); + pet.getRoomUnit().setBodyRotation(RoomRotation.values()[(pet.getRoomUnit().getBodyRotation().getValue() - 1 < 0 ? 7 : pet.getRoomUnit().getBodyRotation().getValue() - 1)]); + pet.getRoomUnit().setHeadRotation(RoomRotation.values()[(pet.getRoomUnit().getHeadRotation().getValue() - 1 < 0 ? 7 : pet.getRoomUnit().getHeadRotation().getValue() - 1)]); pet.say(pet.getPetData().randomVocal(PetVocalsType.GENERIC_NEUTRAL)); return true; } diff --git a/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionTurnRight.java b/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionTurnRight.java index 6bb19b73..eac44d4f 100644 --- a/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionTurnRight.java +++ b/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionTurnRight.java @@ -3,7 +3,7 @@ package com.eu.habbo.habbohotel.pets.actions; import com.eu.habbo.habbohotel.pets.Pet; import com.eu.habbo.habbohotel.pets.PetAction; import com.eu.habbo.habbohotel.pets.PetVocalsType; -import com.eu.habbo.habbohotel.rooms.RoomUserRotation; +import com.eu.habbo.habbohotel.rooms.entities.RoomRotation; import com.eu.habbo.habbohotel.users.Habbo; public class ActionTurnRight extends PetAction { @@ -13,8 +13,8 @@ public class ActionTurnRight extends PetAction { @Override public boolean apply(Pet pet, Habbo habbo, String[] data) { - pet.getRoomUnit().setBodyRotation(RoomUserRotation.values()[(pet.getRoomUnit().getBodyRotation().getValue() + 1 > 7 ? 0 : pet.getRoomUnit().getBodyRotation().getValue() + 1)]); - pet.getRoomUnit().setHeadRotation(RoomUserRotation.values()[(pet.getRoomUnit().getHeadRotation().getValue() + 1 > 7 ? 0 : pet.getRoomUnit().getHeadRotation().getValue() + 1)]); + pet.getRoomUnit().setBodyRotation(RoomRotation.values()[(pet.getRoomUnit().getBodyRotation().getValue() + 1 > 7 ? 0 : pet.getRoomUnit().getBodyRotation().getValue() + 1)]); + pet.getRoomUnit().setHeadRotation(RoomRotation.values()[(pet.getRoomUnit().getHeadRotation().getValue() + 1 > 7 ? 0 : pet.getRoomUnit().getHeadRotation().getValue() + 1)]); pet.say(pet.getPetData().randomVocal(PetVocalsType.GENERIC_NEUTRAL)); return true; } diff --git a/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionWave.java b/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionWave.java index 2675d8b6..f761f6f7 100644 --- a/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionWave.java +++ b/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionWave.java @@ -19,7 +19,7 @@ public class ActionWave extends PetAction { @Override public boolean apply(Pet pet, Habbo habbo, String[] data) { - pet.getRoomUnit().setStatus(RoomUnitStatus.WAVE, pet.getRoomUnit().getCurrentLocation().getStackHeight() + ""); + pet.getRoomUnit().setStatus(RoomUnitStatus.WAVE, pet.getRoomUnit().getCurrentPosition().getStackHeight() + ""); Emulator.getThreading().run(new PetClearPosture(pet, RoomUnitStatus.WAVE, null, false), this.minimumActionDuration); if (pet.getHappiness() > 40) { diff --git a/src/main/java/com/eu/habbo/habbohotel/rooms/CustomRoomLayout.java b/src/main/java/com/eu/habbo/habbohotel/rooms/CustomRoomLayout.java index 0399ff1a..e648cf7c 100644 --- a/src/main/java/com/eu/habbo/habbohotel/rooms/CustomRoomLayout.java +++ b/src/main/java/com/eu/habbo/habbohotel/rooms/CustomRoomLayout.java @@ -17,7 +17,7 @@ public class CustomRoomLayout extends RoomLayout implements Runnable { public CustomRoomLayout(ResultSet set, Room room) { super(set, room); - this.roomId = room.getId(); + this.roomId = room.getRoomInfo().getId(); } @Override diff --git a/src/main/java/com/eu/habbo/habbohotel/rooms/Room.java b/src/main/java/com/eu/habbo/habbohotel/rooms/Room.java index 3646cb86..de340115 100644 --- a/src/main/java/com/eu/habbo/habbohotel/rooms/Room.java +++ b/src/main/java/com/eu/habbo/habbohotel/rooms/Room.java @@ -22,14 +22,20 @@ import com.eu.habbo.habbohotel.items.interactions.games.tag.InteractionTagField; import com.eu.habbo.habbohotel.items.interactions.games.tag.InteractionTagPole; import com.eu.habbo.habbohotel.items.interactions.pets.*; import com.eu.habbo.habbohotel.items.interactions.wired.extra.WiredBlob; -import com.eu.habbo.habbohotel.items.interactions.wired.interfaces.IWiredPeriodical; -import com.eu.habbo.habbohotel.items.interactions.wired.triggers.WiredTriggerRepeaterLong; import com.eu.habbo.habbohotel.messenger.MessengerBuddy; import com.eu.habbo.habbohotel.permissions.Permission; import com.eu.habbo.habbohotel.pets.Pet; -import com.eu.habbo.habbohotel.pets.PetManager; import com.eu.habbo.habbohotel.pets.RideablePet; -import com.eu.habbo.habbohotel.users.*; +import com.eu.habbo.habbohotel.rooms.entities.RoomEntity; +import com.eu.habbo.habbohotel.rooms.entities.RoomRotation; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnitType; +import com.eu.habbo.habbohotel.rooms.entities.units.types.RoomAvatar; +import com.eu.habbo.habbohotel.users.DanceType; +import com.eu.habbo.habbohotel.users.Habbo; +import com.eu.habbo.habbohotel.users.HabboInfo; +import com.eu.habbo.habbohotel.users.HabboManager; import com.eu.habbo.habbohotel.wired.WiredHandler; import com.eu.habbo.habbohotel.wired.WiredTriggerType; import com.eu.habbo.messages.ISerialize; @@ -38,15 +44,12 @@ import com.eu.habbo.messages.outgoing.MessageComposer; import com.eu.habbo.messages.outgoing.generic.alerts.GenericErrorComposer; import com.eu.habbo.messages.outgoing.generic.alerts.HabboBroadcastMessageComposer; import com.eu.habbo.messages.outgoing.guilds.HabboGroupDetailsMessageComposer; -import com.eu.habbo.messages.outgoing.hotelview.CloseConnectionMessageComposer; import com.eu.habbo.messages.outgoing.inventory.FurniListInvalidateComposer; -import com.eu.habbo.messages.outgoing.inventory.PetAddedToInventoryComposer; import com.eu.habbo.messages.outgoing.inventory.UnseenItemsComposer; import com.eu.habbo.messages.outgoing.polls.infobus.QuestionAnsweredComposer; import com.eu.habbo.messages.outgoing.polls.infobus.QuestionComposer; import com.eu.habbo.messages.outgoing.rooms.*; import com.eu.habbo.messages.outgoing.rooms.items.*; -import com.eu.habbo.messages.outgoing.rooms.pets.RoomPetComposer; import com.eu.habbo.messages.outgoing.rooms.users.*; import com.eu.habbo.messages.outgoing.users.RemainingMutePeriodComposer; import com.eu.habbo.plugin.Event; @@ -67,7 +70,6 @@ import gnu.trove.map.hash.TIntObjectHashMap; import gnu.trove.set.hash.THashSet; import io.netty.util.internal.ConcurrentSet; import lombok.Getter; -import lombok.Setter; import lombok.extern.slf4j.Slf4j; import org.apache.commons.math3.util.Pair; @@ -82,17 +84,21 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; import java.util.regex.Pattern; -import java.util.stream.Collectors; import static com.eu.habbo.database.DatabaseConstants.CAUGHT_SQL_EXCEPTION; @Slf4j public class Room implements Comparable, ISerialize, Runnable { + @Getter + private final RoomInfo roomInfo; + @Getter + private final RoomUnitManager roomUnitManager; + @Getter + private final RoomItemManager roomItemManager; + private TraxManager traxManager; private static final String CAUGHT_EXCEPTION = "Caught exception"; - - public static final Comparator SORT_SCORE = (o1, o2) -> o2.getScore() - o1.getScore(); - public static final Comparator SORT_ID = (o1, o2) -> o2.getId() - o1.getId(); - private static final TIntObjectHashMap defaultMoodData = new TIntObjectHashMap<>(); + public static final Comparator SORT_SCORE = (o1, o2) -> o2.roomInfo.getScore() - o1.roomInfo.getScore(); + public static final Comparator SORT_ID = (o1, o2) -> o2.roomInfo.getId() - o1.roomInfo.getId(); //Configuration. Loaded from database & updated accordingly. public static boolean HABBO_CHAT_DELAY = false; public static int MAXIMUM_BOTS = 10; @@ -106,259 +112,64 @@ public class Room implements Comparable, ISerialize, Runnable { public static int ROLLERS_MAXIMUM_ROLL_AVATARS = 1; public static boolean MUTEAREA_CAN_WHISPER = false; public static final double MAXIMUM_FURNI_HEIGHT = 40d; - - - static { - for (int i = 1; i <= 3; i++) { - RoomMoodlightData data = RoomMoodlightData.fromString(""); - data.setId(i); - defaultMoodData.put(i, data); - } - } - - public final Object roomUnitLock = new Object(); - public final ConcurrentHashMap> tileCache = new ConcurrentHashMap<>(); + public final ConcurrentHashMap> tileCache = new ConcurrentHashMap<>(); public final List userVotes; - @Getter - private final ConcurrentHashMap currentHabbos = new ConcurrentHashMap<>(3); - @Getter private final TIntObjectMap habboQueue = TCollections.synchronizedMap(new TIntObjectHashMap<>(0)); - @Getter - private final TIntObjectMap currentBots = TCollections.synchronizedMap(new TIntObjectHashMap<>(0)); - @Getter - private final TIntObjectMap currentPets = TCollections.synchronizedMap(new TIntObjectHashMap<>(0)); private final THashSet activeTrades; - @Getter private final TIntArrayList rights; private final TIntIntHashMap mutedHabbos; private final TIntObjectHashMap bannedHabbos; - @Getter private final ConcurrentSet games; - @Getter private final TIntObjectMap furniOwnerNames; - @Getter private final TIntIntMap furniOwnerCount; - @Getter - private final TIntObjectMap moodlightData; - @Getter private final THashSet wordFilterWords; - private final TIntObjectMap roomItems; + private final TIntObjectMap roomItems; private final Object loadLock = new Object(); //Use appropriately. Could potentially cause memory leaks when used incorrectly. public volatile boolean preventUnloading = false; public volatile boolean preventUncaching = false; public final ConcurrentHashMap.KeySetView scheduledComposers = ConcurrentHashMap.newKeySet(); public ConcurrentHashMap.KeySetView scheduledTasks = ConcurrentHashMap.newKeySet(); - @Getter private String wordQuiz = ""; - @Getter private int noVotes = 0; - @Getter private int yesVotes = 0; - @Getter private int wordQuizEnd = 0; public ScheduledFuture roomCycleTask; - @Getter - private final int id; - @Getter - @Setter - private int ownerId; - @Getter - @Setter - private String ownerName; - @Getter - private String name; - @Getter - private String description; - @Getter - @Setter private RoomLayout layout; - private boolean overrideModel; private final String layoutName; - @Getter - private String password; - @Getter - @Setter - private RoomState state; - @Setter - @Getter - private int usersMax; - @Getter - @Setter - private volatile int score; - @Getter - @Setter - private volatile int category; - @Getter - @Setter - private String floorPaint; - @Getter - @Setter - private String wallPaint; - @Getter - @Setter - private String backgroundPaint; - @Getter - @Setter - private int wallSize; - @Getter - @Setter - private int wallHeight; - @Getter - @Setter - private int floorSize; - @Setter - @Getter - private int guildId; - @Getter - @Setter - private String tags; - @Setter - @Getter - private volatile boolean publicRoom; - @Setter - @Getter - private volatile boolean staffPromotedRoom; - @Getter - private volatile boolean allowPets; - @Setter - @Getter - private volatile boolean allowPetsEat; - @Setter - @Getter - private volatile boolean allowWalkthrough; - @Setter - @Getter private volatile boolean allowBotsWalk; - @Setter - @Getter private volatile boolean allowEffects; - @Setter - @Getter - private volatile boolean hideWall; - @Setter - @Getter - private volatile int chatMode; - @Setter - @Getter - private volatile int chatWeight; - @Setter - @Getter - private volatile int chatSpeed; - @Setter - @Getter - private volatile int chatDistance; - @Setter - @Getter - private volatile int chatProtection; - @Setter - @Getter - private volatile int muteOption; - @Setter - @Getter - private volatile int kickOption; - @Setter - @Getter - private volatile int banOption; - @Setter - @Getter - private volatile int pollId; - private volatile boolean promoted; - @Getter - @Setter - private volatile int tradeMode; - private volatile boolean moveDiagonally; - private volatile boolean jukeboxActive; - private volatile boolean hideWired; - @Getter private RoomPromotion promotion; - @Setter private volatile boolean needsUpdate; - @Getter private volatile boolean loaded; - @Getter private volatile boolean preLoaded; - private int idleCycles; - private volatile int unitCounter; - @Getter - private volatile int rollerSpeed; + private int roomIdleCycles; private final int muteTime = Emulator.getConfig().getInt("hotel.flood.mute.time", 30); private long rollerCycle = System.currentTimeMillis(); - @Setter - @Getter private volatile int lastTimerReset = Emulator.getIntUnixTimestamp(); - @Setter - @Getter private volatile boolean muted; - @Getter private RoomSpecialTypes roomSpecialTypes; - @Getter - private TraxManager traxManager; private boolean cycleOdd; - @Getter private long cycleTimestamp; - @Getter - @Setter - private ScheduledFuture wiredPeriodicalCycle; - @Getter - @Setter final HashMap triggersOnRoom; - @Getter - @Setter - private int periodicalTick; public Room(ResultSet set) throws SQLException { - this.id = set.getInt("id"); - this.ownerId = set.getInt("owner_id"); - this.ownerName = set.getString("owner_name"); - this.name = set.getString("name"); - this.description = set.getString("description"); - this.password = set.getString("password"); - this.state = RoomState.valueOf(set.getString("state").toUpperCase()); - this.usersMax = set.getInt("users_max"); - this.score = set.getInt("score"); - this.category = set.getInt("category"); - this.floorPaint = set.getString("paper_floor"); - this.wallPaint = set.getString("paper_wall"); - this.backgroundPaint = set.getString("paper_landscape"); - this.wallSize = set.getInt("thickness_wall"); - this.wallHeight = set.getInt("wall_height"); - this.floorSize = set.getInt("thickness_floor"); - this.tags = set.getString("tags"); - this.publicRoom = set.getBoolean("is_public"); - this.staffPromotedRoom = set.getBoolean("is_staff_picked"); - this.allowPets = set.getBoolean("allow_other_pets"); - this.allowPetsEat = set.getBoolean("allow_other_pets_eat"); - this.allowWalkthrough = set.getBoolean("allow_walkthrough"); - this.hideWall = set.getBoolean("allow_hidewall"); - this.chatMode = set.getInt("chat_mode"); - this.chatWeight = set.getInt("chat_weight"); - this.chatSpeed = set.getInt("chat_speed"); - this.chatDistance = set.getInt("chat_hearing_distance"); - this.chatProtection = set.getInt("chat_protection"); - this.muteOption = set.getInt("who_can_mute"); - this.kickOption = set.getInt("who_can_kick"); - this.banOption = set.getInt("who_can_ban"); - this.pollId = set.getInt("poll_id"); - this.guildId = set.getInt("guild_id"); - this.rollerSpeed = set.getInt("roller_speed"); - this.overrideModel = set.getString("override_model").equals("1"); - this.layoutName = set.getString("model"); - this.promoted = set.getString("promoted").equals("1"); - this.jukeboxActive = set.getString("jukebox_active").equals("1"); - this.hideWired = set.getString("hidewired").equals("1"); + this.roomInfo = new RoomInfo(set); + this.roomUnitManager = new RoomUnitManager(this.roomInfo.getId()); + this.roomItemManager = new RoomItemManager(); + this.layoutName = set.getString("model"); this.bannedHabbos = new TIntObjectHashMap<>(); try (Connection connection = Emulator.getDatabase().getDataSource().getConnection(); PreparedStatement statement = connection.prepareStatement("SELECT * FROM room_promotions WHERE room_id = ? AND end_timestamp > ? LIMIT 1")) { - if (this.promoted) { - statement.setInt(1, this.id); + if (this.roomInfo.isPromoted()) { + statement.setInt(1, this.roomInfo.getId()); statement.setInt(2, Emulator.getIntUnixTimestamp()); try (ResultSet promotionSet = statement.executeQuery()) { - this.promoted = false; + this.roomInfo.setPromoted(false); if (promotionSet.next()) { - this.promoted = true; + this.roomInfo.setPromoted(true); this.promotion = new RoomPromotion(this, promotionSet); } } @@ -369,9 +180,6 @@ public class Room implements Comparable, ISerialize, Runnable { log.error(CAUGHT_SQL_EXCEPTION, e); } - this.tradeMode = set.getInt("trade_mode"); - this.moveDiagonally = set.getString("move_diagonally").equals("1"); - this.preLoaded = true; this.allowBotsWalk = true; this.allowEffects = true; @@ -379,12 +187,6 @@ public class Room implements Comparable, ISerialize, Runnable { this.furniOwnerCount = TCollections.synchronizedMap(new TIntIntHashMap(0)); this.roomItems = TCollections.synchronizedMap(new TIntObjectHashMap<>(0)); this.wordFilterWords = new THashSet<>(0); - this.moodlightData = new TIntObjectHashMap<>(defaultMoodData); - - for (String s : set.getString("moodlight_data").split(";")) { - RoomMoodlightData data = RoomMoodlightData.fromString(s); - this.moodlightData.put(data.getId(), data); - } this.mutedHabbos = new TIntIntHashMap(); this.games = new ConcurrentSet<>(); @@ -394,7 +196,6 @@ public class Room implements Comparable, ISerialize, Runnable { this.userVotes = new ArrayList<>(); this.triggersOnRoom = new HashMap<>(); - this.periodicalTick = 0; } public synchronized void loadData() { @@ -405,12 +206,7 @@ public class Room implements Comparable, ISerialize, Runnable { this.preLoaded = false; try (Connection connection = Emulator.getDatabase().getDataSource().getConnection()) { - synchronized (this.roomUnitLock) { - this.unitCounter = 0; - this.currentHabbos.clear(); - this.currentPets.clear(); - this.currentBots.clear(); - } + this.roomUnitManager.clear(); this.roomSpecialTypes = new RoomSpecialTypes(); @@ -418,12 +214,10 @@ public class Room implements Comparable, ISerialize, Runnable { this.loadRights(connection); this.loadItems(connection); this.loadHeightmap(); - this.loadBots(connection); - this.loadPets(connection); + this.roomUnitManager.load(connection); this.loadWordFilter(connection); - this.startPeriodicalCycle(); - this.idleCycles = 0; + this.roomIdleCycles = 0; this.loaded = true; this.roomCycleTask = Emulator.getThreading().getService().scheduleAtFixedRate(this, 500, 500, TimeUnit.MILLISECONDS); @@ -433,14 +227,14 @@ public class Room implements Comparable, ISerialize, Runnable { this.traxManager = new TraxManager(this); - if (this.jukeboxActive) { + if (this.roomInfo.isJukeboxEnabled()) { this.traxManager.play(0); - for (HabboItem item : this.roomSpecialTypes.getItemsOfType(InteractionJukeBox.class)) { + for (RoomItem item : this.roomSpecialTypes.getItemsOfType(InteractionJukeBox.class)) { this.updateItem(item.setExtradata("1")); } } - for (HabboItem item : this.roomSpecialTypes.getItemsOfType(InteractionFireworks.class)) { + for (RoomItem item : this.roomSpecialTypes.getItemsOfType(InteractionFireworks.class)) { this.updateItem(item.setExtradata("1")); } } @@ -451,7 +245,7 @@ public class Room implements Comparable, ISerialize, Runnable { private synchronized void loadLayout() { try { if (this.layout == null) { - if (this.overrideModel) { + if (this.roomInfo.isModelOverridden()) { this.layout = Emulator.getGameEnvironment().getRoomManager().loadCustomLayout(this); } else { this.layout = Emulator.getGameEnvironment().getRoomManager().loadLayout(this.layoutName, this); @@ -474,7 +268,7 @@ public class Room implements Comparable, ISerialize, Runnable { } } } else { - log.error("Unknown Room Layout for Room (ID: {})", this.id); + log.error("Unknown Room Layout for Room (ID: {})", this.roomInfo.getId()); } } catch (Exception e) { log.error(CAUGHT_EXCEPTION, e); @@ -485,7 +279,7 @@ public class Room implements Comparable, ISerialize, Runnable { this.roomItems.clear(); try (PreparedStatement statement = connection.prepareStatement("SELECT * FROM items WHERE room_id = ?")) { - statement.setInt(1, this.id); + statement.setInt(1, this.roomInfo.getId()); try (ResultSet set = statement.executeQuery()) { while (set.next()) { this.addHabboItem(Emulator.getGameEnvironment().getItemManager().loadHabboItem(set)); @@ -498,105 +292,7 @@ public class Room implements Comparable, ISerialize, Runnable { } if (this.itemCount() > Room.MAXIMUM_FURNI) { - log.error("Room ID: {} has exceeded the furniture limit ({} > {}).", this.getId(), this.itemCount(), Room.MAXIMUM_FURNI); - } - } - - private synchronized void loadWiredData(Connection connection) { - try (PreparedStatement statement = connection.prepareStatement("SELECT id, wired_data FROM items WHERE room_id = ? AND wired_data<>''")) { - statement.setInt(1, this.id); - - try (ResultSet set = statement.executeQuery()) { - while (set.next()) { - try { - HabboItem item = this.getHabboItem(set.getInt("id")); - - if (item instanceof InteractionWired interactionWired) { - interactionWired.loadWiredSettings(set); - } - } catch (Exception e) { - log.error(CAUGHT_EXCEPTION, e); - } - } - } - } catch (SQLException e) { - log.error(CAUGHT_SQL_EXCEPTION, e); - } catch (Exception e) { - log.error(CAUGHT_EXCEPTION, e); - } - } - - private synchronized void loadBots(Connection connection) { - this.currentBots.clear(); - - try (PreparedStatement statement = connection.prepareStatement("SELECT users.username AS owner_name, bots.* FROM bots INNER JOIN users ON bots.user_id = users.id WHERE room_id = ?")) { - statement.setInt(1, this.id); - try (ResultSet set = statement.executeQuery()) { - while (set.next()) { - Bot b = Emulator.getGameEnvironment().getBotManager().loadBot(set); - - if (b != null) { - b.setRoom(this); - b.setRoomUnit(new RoomUnit()); - b.getRoomUnit().setPathFinderRoom(this); - b.getRoomUnit().setLocation(this.layout.getTile((short) set.getInt("x"), (short) set.getInt("y"))); - if (b.getRoomUnit().getCurrentLocation() == null || b.getRoomUnit().getCurrentLocation().getState() == RoomTileState.INVALID) { - b.getRoomUnit().setZ(this.getLayout().getDoorTile().getStackHeight()); - b.getRoomUnit().setLocation(this.getLayout().getDoorTile()); - b.getRoomUnit().setRotation(RoomUserRotation.fromValue(this.getLayout().getDoorDirection())); - } else { - b.getRoomUnit().setZ(set.getDouble("z")); - b.getRoomUnit().setPreviousLocationZ(set.getDouble("z")); - b.getRoomUnit().setRotation(RoomUserRotation.values()[set.getInt("rot")]); - } - b.getRoomUnit().setRoomUnitType(RoomUnitType.BOT); - b.getRoomUnit().setDanceType(DanceType.values()[set.getInt("dance")]); - b.getRoomUnit().setInRoom(true); - this.giveEffect(b.getRoomUnit(), set.getInt("effect"), Integer.MAX_VALUE); - this.addBot(b); - } - } - } - } catch (SQLException e) { - log.error(CAUGHT_SQL_EXCEPTION, e); - } catch (Exception e) { - log.error(CAUGHT_EXCEPTION, e); - } - } - - private synchronized void loadPets(Connection connection) { - - this.currentPets.clear(); - - try (PreparedStatement statement = connection.prepareStatement("SELECT users.username as pet_owner_name, users_pets.* FROM users_pets INNER JOIN users ON users_pets.user_id = users.id WHERE room_id = ?")) { - statement.setInt(1, this.id); - try (ResultSet set = statement.executeQuery()) { - while (set.next()) { - Pet pet = PetManager.loadPet(set); - pet.setRoom(this); - pet.setRoomUnit(new RoomUnit()); - pet.getRoomUnit().setPathFinderRoom(this); - pet.getRoomUnit().setLocation(this.layout.getTile((short) set.getInt("x"), (short) set.getInt("y"))); - if (pet.getRoomUnit().getCurrentLocation() == null || pet.getRoomUnit().getCurrentLocation().getState() == RoomTileState.INVALID) { - pet.getRoomUnit().setZ(this.getLayout().getDoorTile().getStackHeight()); - pet.getRoomUnit().setLocation(this.getLayout().getDoorTile()); - pet.getRoomUnit().setRotation(RoomUserRotation.fromValue(this.getLayout().getDoorDirection())); - } else { - pet.getRoomUnit().setZ(set.getDouble("z")); - pet.getRoomUnit().setRotation(RoomUserRotation.values()[set.getInt("rot")]); - } - pet.getRoomUnit().setRoomUnitType(RoomUnitType.PET); - pet.getRoomUnit().setCanWalk(true); - this.addPet(pet); - - this.getFurniOwnerNames().put(pet.getUserId(), set.getString("pet_owner_name")); - - } - } - } catch (SQLException e) { - log.error(CAUGHT_SQL_EXCEPTION, e); - } catch (Exception e) { - log.error(CAUGHT_EXCEPTION, e); + log.error("Room ID: {} has exceeded the furniture limit ({} > {}).", this.roomInfo.getId(), this.itemCount(), Room.MAXIMUM_FURNI); } } @@ -604,7 +300,7 @@ public class Room implements Comparable, ISerialize, Runnable { this.wordFilterWords.clear(); try (PreparedStatement statement = connection.prepareStatement("SELECT * FROM room_wordfilter WHERE room_id = ?")) { - statement.setInt(1, this.id); + statement.setInt(1, this.roomInfo.getId()); try (ResultSet set = statement.executeQuery()) { while (set.next()) { this.wordFilterWords.add(set.getString("word")); @@ -638,18 +334,18 @@ public class Room implements Comparable, ISerialize, Runnable { return this.calculateTileState(tile, null); } - private RoomTileState calculateTileState(RoomTile tile, HabboItem exclude) { + private RoomTileState calculateTileState(RoomTile tile, RoomItem exclude) { if (tile == null || tile.getState() == RoomTileState.INVALID) return RoomTileState.INVALID; RoomTileState result = RoomTileState.OPEN; - THashSet items = this.getItemsAt(tile); + THashSet items = this.getItemsAt(tile); if (items == null) return RoomTileState.INVALID; - HabboItem tallestItem = null; + RoomItem tallestItem = null; - for (HabboItem item : items) { + for (RoomItem item : items) { if (exclude != null && item == exclude) continue; if (item.getBaseItem().allowLay()) { @@ -666,7 +362,7 @@ public class Room implements Comparable, ISerialize, Runnable { return result; } - private RoomTileState checkStateForItem(HabboItem item, RoomTile tile) { + private RoomTileState checkStateForItem(RoomItem item, RoomTile tile) { RoomTileState result = RoomTileState.BLOCKED; if (item.isWalkable()) { @@ -693,14 +389,14 @@ public class Room implements Comparable, ISerialize, Runnable { boolean walkable = this.layout.tileWalkable(x, y); RoomTile tile = this.getLayout().getTile(x, y); - if ((walkable && tile != null) && (tile.hasUnits() && !this.allowWalkthrough)) { + if ((walkable && tile != null) && (tile.hasUnits() && !this.roomInfo.isAllowWalkthrough())) { walkable = false; } return walkable; } - public void pickUpItem(HabboItem item, Habbo picker) { + public void pickUpItem(RoomItem item, Habbo picker) { if (item == null) return; @@ -737,7 +433,7 @@ public class Room implements Comparable, ISerialize, Runnable { this.sendComposer(new HeightMapUpdateMessageComposer(this, updatedTiles).compose()); this.updateTiles(updatedTiles); updatedTiles.forEach(tile -> { - this.updateHabbosAt(tile.getX(), tile.getY()); + this.updateHabbosAt(tile); this.updateBotsAt(tile.getX(), tile.getY()); }); } else if (item.getBaseItem().getType() == FurnitureType.WALL) { @@ -753,34 +449,26 @@ public class Room implements Comparable, ISerialize, Runnable { Emulator.getThreading().run(item); } - public void updateHabbosAt(Rectangle rectangle) { - for (short i = (short) rectangle.x; i < rectangle.x + rectangle.width; i++) { - for (short j = (short) rectangle.y; j < rectangle.y + rectangle.height; j++) { - this.updateHabbosAt(i, j); - } - } - } - public void updateHabbo(Habbo habbo) { this.updateRoomUnit(habbo.getRoomUnit()); } public void updateRoomUnit(RoomUnit roomUnit) { - HabboItem item = this.getTopItemAt(roomUnit.getX(), roomUnit.getY()); + RoomItem item = this.getTopItemAt(roomUnit.getCurrentPosition().getX(), roomUnit.getCurrentPosition().getY()); - if ((item == null && !roomUnit.isCmdSit()) || (item != null && !item.getBaseItem().allowSit())) + if ((item == null && !roomUnit.isCmdSitEnabled()) || (item != null && !item.getBaseItem().allowSit())) roomUnit.removeStatus(RoomUnitStatus.SIT); - double oldZ = roomUnit.getZ(); + double oldZ = roomUnit.getCurrentZ(); if (item != null) { if (item.getBaseItem().allowSit()) { - roomUnit.setZ(item.getZ()); + roomUnit.setCurrentZ(item.getZ()); } else { - roomUnit.setZ(item.getZ() + Item.getCurrentHeight(item)); + roomUnit.setCurrentZ(item.getZ() + Item.getCurrentHeight(item)); } - if (oldZ != roomUnit.getZ()) { + if (oldZ != roomUnit.getCurrentZ()) { this.scheduledTasks.add(() -> { try { item.onWalkOn(roomUnit, Room.this, null); @@ -794,66 +482,67 @@ public class Room implements Comparable, ISerialize, Runnable { this.sendComposer(new UserUpdateComposer(roomUnit).compose()); } - public void updateHabbosAt(short x, short y) { - this.updateHabbosAt(x, y, this.getHabbosAt(x, y)); + public void updateHabbosAt(RoomTile tile) { + this.updateHabbosAt(tile.getX(), tile.getY(), new ArrayList<>(this.roomUnitManager.getHabbosAt(tile))); } public void updateHabbosAt(short x, short y, List habbos) { - HabboItem item = this.getTopItemAt(x, y); + RoomItem item = this.getTopItemAt(x, y); for (Habbo habbo : habbos) { - double oldZ = habbo.getRoomUnit().getZ(); - RoomUserRotation oldRotation = habbo.getRoomUnit().getBodyRotation(); - double z = habbo.getRoomUnit().getCurrentLocation().getStackHeight(); + double oldZ = habbo.getRoomUnit().getCurrentZ(); + RoomRotation oldRotation = habbo.getRoomUnit().getBodyRotation(); + double z = habbo.getRoomUnit().getCurrentPosition().getStackHeight(); boolean updated = false; - if (habbo.getRoomUnit().hasStatus(RoomUnitStatus.SIT) && ((item == null && !habbo.getRoomUnit().isCmdSit()) || (item != null && !item.getBaseItem().allowSit()))) { + if (habbo.getRoomUnit().hasStatus(RoomUnitStatus.SIT) && ((item == null && !habbo.getRoomUnit().isCmdSitEnabled()) || (item != null && !item.getBaseItem().allowSit()))) { habbo.getRoomUnit().removeStatus(RoomUnitStatus.SIT); updated = true; } - if (habbo.getRoomUnit().hasStatus(RoomUnitStatus.LAY) && ((item == null && !habbo.getRoomUnit().isCmdLay()) || (item != null && !item.getBaseItem().allowLay()))) { + if (habbo.getRoomUnit().hasStatus(RoomUnitStatus.LAY) && ((item == null && !habbo.getRoomUnit().isCmdLayEnabled()) || (item != null && !item.getBaseItem().allowLay()))) { habbo.getRoomUnit().removeStatus(RoomUnitStatus.LAY); updated = true; } if (item != null && (item.getBaseItem().allowSit() || item.getBaseItem().allowLay())) { - habbo.getRoomUnit().setZ(item.getZ()); + habbo.getRoomUnit().setCurrentZ(item.getZ()); habbo.getRoomUnit().setPreviousLocationZ(item.getZ()); - habbo.getRoomUnit().setRotation(RoomUserRotation.fromValue(item.getRotation())); + habbo.getRoomUnit().setRotation(RoomRotation.fromValue(item.getRotation())); } else { - habbo.getRoomUnit().setZ(z); + habbo.getRoomUnit().setCurrentZ(z); habbo.getRoomUnit().setPreviousLocationZ(z); } - if (habbo.getRoomUnit().getCurrentLocation().is(x, y) && (oldZ != z || updated || oldRotation != habbo.getRoomUnit().getBodyRotation())) { - habbo.getRoomUnit().statusUpdate(true); + if (habbo.getRoomUnit().getCurrentPosition().is(x, y) && (oldZ != z || updated || oldRotation != habbo.getRoomUnit().getBodyRotation())) { + habbo.getRoomUnit().setStatusUpdateNeeded(true); } } } public void updateBotsAt(short x, short y) { - HabboItem topItem = this.getTopItemAt(x, y); + RoomItem topItem = this.getTopItemAt(x, y); THashSet roomUnits = new THashSet<>(); - this.getBotsAt(this.layout.getTile(x, y)).forEach(bot -> { + RoomTile tile = this.layout.getTile(x, y); + this.roomUnitManager.getBotsAt(tile).forEach(bot -> { if (topItem != null) { if (topItem.getBaseItem().allowSit()) { - bot.getRoomUnit().setZ(topItem.getZ()); + bot.getRoomUnit().setCurrentZ(topItem.getZ()); bot.getRoomUnit().setPreviousLocationZ(topItem.getZ()); - bot.getRoomUnit().setRotation(RoomUserRotation.fromValue(topItem.getRotation())); + bot.getRoomUnit().setRotation(RoomRotation.fromValue(topItem.getRotation())); } else { - bot.getRoomUnit().setZ(topItem.getZ() + Item.getCurrentHeight(topItem)); + bot.getRoomUnit().setCurrentZ(topItem.getZ() + Item.getCurrentHeight(topItem)); if (topItem.getBaseItem().allowLay()) { bot.getRoomUnit().setStatus(RoomUnitStatus.LAY, (topItem.getZ() + topItem.getBaseItem().getHeight()) + ""); } } } else { - bot.getRoomUnit().setZ(bot.getRoomUnit().getCurrentLocation().getStackHeight()); - bot.getRoomUnit().setPreviousLocationZ(bot.getRoomUnit().getCurrentLocation().getStackHeight()); + bot.getRoomUnit().setCurrentZ(bot.getRoomUnit().getCurrentPosition().getStackHeight()); + bot.getRoomUnit().setPreviousLocationZ(bot.getRoomUnit().getCurrentPosition().getStackHeight()); } roomUnits.add(bot.getRoomUnit()); }); @@ -863,27 +552,6 @@ public class Room implements Comparable, ISerialize, Runnable { } } - public void pickupPetsForHabbo(Habbo habbo) { - THashSet pets = new THashSet<>(); - - synchronized (this.currentPets) { - for (Pet pet : this.currentPets.valueCollection()) { - if (pet.getUserId() == habbo.getHabboInfo().getId()) { - pets.add(pet); - } - } - } - - for (Pet pet : pets) { - pet.removeFromRoom(); - Emulator.getThreading().run(pet); - habbo.getInventory().getPetsComponent().addPet(pet); - habbo.getClient().sendResponse(new PetAddedToInventoryComposer(pet)); - this.currentPets.remove(pet.getId()); - } - - } - public void startTrade(Habbo userOne, Habbo userTwo) { RoomTrade trade = new RoomTrade(userOne, userTwo, this); synchronized (this.activeTrades) { @@ -919,10 +587,6 @@ public class Room implements Comparable, ISerialize, Runnable { if (Emulator.getPluginManager().fireEvent(new RoomUnloadingEvent(this)).isCancelled()) return; - if(this.wiredPeriodicalCycle != null) { - this.wiredPeriodicalCycle.cancel(true); - } - if (this.loaded) { try { @@ -950,10 +614,10 @@ public class Room implements Comparable, ISerialize, Runnable { } this.games.clear(); - removeAllPets(ownerId); + this.roomUnitManager.removeAllPetsExceptRoomOwner(); synchronized (this.roomItems) { - TIntObjectIterator iterator = this.roomItems.iterator(); + TIntObjectIterator iterator = this.roomItems.iterator(); for (int i = this.roomItems.size(); i-- > 0; ) { @@ -980,31 +644,7 @@ public class Room implements Comparable, ISerialize, Runnable { this.habboQueue.clear(); } - - for (Habbo habbo : this.currentHabbos.values()) { - Emulator.getGameEnvironment().getRoomManager().leaveRoom(habbo, this); - } - - this.sendComposer(new CloseConnectionMessageComposer().compose()); - - this.currentHabbos.clear(); - - - TIntObjectIterator botIterator = this.currentBots.iterator(); - - for (int i = this.currentBots.size(); i-- > 0; ) { - try { - botIterator.advance(); - botIterator.value().needsUpdate(true); - Emulator.getThreading().run(botIterator.value()); - } catch (NoSuchElementException e) { - log.error(CAUGHT_EXCEPTION, e); - break; - } - } - - this.currentBots.clear(); - this.currentPets.clear(); + this.roomUnitManager.dispose(this); } catch (Exception e) { log.error(CAUGHT_EXCEPTION, e); } @@ -1027,34 +667,36 @@ public class Room implements Comparable, ISerialize, Runnable { @Override public int compareTo(Room o) { - if (o.getUserCount() != this.getUserCount()) { - return o.getCurrentHabbos().size() - this.getCurrentHabbos().size(); + if (o.roomUnitManager.getRoomHabbosCount() != this.roomUnitManager.getRoomHabbosCount()) { + return o.roomUnitManager.getCurrentRoomHabbos().size() - this.roomUnitManager.getCurrentRoomHabbos().size(); } - return this.id - o.id; + return this.roomInfo.getId() - o.roomInfo.getId(); } @Override public void serialize(ServerMessage message) { - message.appendInt(this.id); - message.appendString(this.name); - if (this.isPublicRoom()) { + message.appendInt(this.roomInfo.getId()); + message.appendString(this.roomInfo.getName()); + + if (this.roomInfo.isPublicRoom()) { message.appendInt(0); message.appendString(""); } else { - message.appendInt(this.ownerId); - message.appendString(this.ownerName); + message.appendInt(this.roomInfo.getOwnerInfo().getId()); + message.appendString(this.roomInfo.getOwnerInfo().getUsername()); } - message.appendInt(this.state.ordinal()); - message.appendInt(this.getUserCount()); - message.appendInt(this.usersMax); - message.appendString(this.description); - message.appendInt(0); - message.appendInt(this.score); - message.appendInt(0); - message.appendInt(this.category); - String[] tags = Arrays.stream(this.tags.split(";")).filter(t -> !t.isEmpty()).toArray(String[]::new); + message.appendInt(this.roomInfo.getState().ordinal()); + message.appendInt(this.roomUnitManager.getRoomHabbosCount()); + message.appendInt(this.roomInfo.getMaxUsers()); + message.appendString(this.roomInfo.getDescription()); + message.appendInt(this.roomInfo.getTradeMode()); + message.appendInt(this.roomInfo.getScore()); + message.appendInt(0); + message.appendInt(this.roomInfo.getCategory().getId()); + + String[] tags = Arrays.stream(this.roomInfo.getTags().split(";")).filter(t -> !t.isEmpty()).toArray(String[]::new); message.appendInt(tags.length); for (String s : tags) { message.appendString(s); @@ -1062,41 +704,36 @@ public class Room implements Comparable, ISerialize, Runnable { int base = 0; - if (this.getGuildId() > 0) { + if (this.roomInfo.hasGuild()) { base = base | 2; } - if (this.isPromoted()) { + if (this.roomInfo.isPromoted()) { base = base | 4; } - if (!this.isPublicRoom()) { + if (!this.roomInfo.isPublicRoom()) { base = base | 8; } + if (this.roomInfo.isAllowPets()) { + base = base | 16; + } message.appendInt(base); - if (this.getGuildId() > 0) { - Guild g = Emulator.getGameEnvironment().getGuildManager().getGuild(this.getGuildId()); - if (g != null) { - message.appendInt(g.getId()); - message.appendString(g.getName()); - message.appendString(g.getBadge()); - } else { - message.appendInt(0); - message.appendString(""); - message.appendString(""); - } + if (this.roomInfo.hasGuild()) { + message.appendInt(this.roomInfo.getGuild().getId()); + message.appendString(this.roomInfo.getGuild().getName()); + message.appendString(this.roomInfo.getGuild().getBadge()); } - if (this.promoted) { + if (this.roomInfo.isPromoted()) { message.appendString(this.promotion.getTitle()); message.appendString(this.promotion.getDescription()); message.appendInt((this.promotion.getEndTimestamp() - Emulator.getIntUnixTimestamp()) / 60); } - } @Override @@ -1116,57 +753,8 @@ public class Room implements Comparable, ISerialize, Runnable { public void save() { if (this.needsUpdate) { - try (Connection connection = Emulator.getDatabase().getDataSource().getConnection(); PreparedStatement statement = connection.prepareStatement("UPDATE rooms SET name = ?, description = ?, password = ?, state = ?, users_max = ?, category = ?, score = ?, paper_floor = ?, paper_wall = ?, paper_landscape = ?, thickness_wall = ?, wall_height = ?, thickness_floor = ?, moodlight_data = ?, tags = ?, allow_other_pets = ?, allow_other_pets_eat = ?, allow_walkthrough = ?, allow_hidewall = ?, chat_mode = ?, chat_weight = ?, chat_speed = ?, chat_hearing_distance = ?, chat_protection =?, who_can_mute = ?, who_can_kick = ?, who_can_ban = ?, poll_id = ?, guild_id = ?, roller_speed = ?, override_model = ?, is_staff_picked = ?, promoted = ?, trade_mode = ?, move_diagonally = ?, owner_id = ?, owner_name = ?, jukebox_active = ?, hidewired = ? WHERE id = ?")) { - statement.setString(1, this.name); - statement.setString(2, this.description); - statement.setString(3, this.password); - statement.setString(4, this.state.name().toLowerCase()); - statement.setInt(5, this.usersMax); - statement.setInt(6, this.category); - statement.setInt(7, this.score); - statement.setString(8, this.floorPaint); - statement.setString(9, this.wallPaint); - statement.setString(10, this.backgroundPaint); - statement.setInt(11, this.wallSize); - statement.setInt(12, this.wallHeight); - statement.setInt(13, this.floorSize); - StringBuilder moodLightData = new StringBuilder(); - - int id = 1; - for (RoomMoodlightData data : this.moodlightData.valueCollection()) { - data.setId(id); - moodLightData.append(data).append(";"); - id++; - } - - statement.setString(14, moodLightData.toString()); - statement.setString(15, this.tags); - statement.setString(16, this.allowPets ? "1" : "0"); - statement.setString(17, this.allowPetsEat ? "1" : "0"); - statement.setString(18, this.allowWalkthrough ? "1" : "0"); - statement.setString(19, this.hideWall ? "1" : "0"); - statement.setInt(20, this.chatMode); - statement.setInt(21, this.chatWeight); - statement.setInt(22, this.chatSpeed); - statement.setInt(23, this.chatDistance); - statement.setInt(24, this.chatProtection); - statement.setInt(25, this.muteOption); - statement.setInt(26, this.kickOption); - statement.setInt(27, this.banOption); - statement.setInt(28, this.pollId); - statement.setInt(29, this.guildId); - statement.setInt(30, this.rollerSpeed); - statement.setString(31, this.overrideModel ? "1" : "0"); - statement.setString(32, this.staffPromotedRoom ? "1" : "0"); - statement.setString(33, this.promoted ? "1" : "0"); - statement.setInt(34, this.tradeMode); - statement.setString(35, this.moveDiagonally ? "1" : "0"); - statement.setInt(36, this.ownerId); - statement.setString(37, this.ownerName); - statement.setString(38, this.jukeboxActive ? "1" : "0"); - statement.setString(39, this.hideWired ? "1" : "0"); - statement.setInt(40, this.id); - statement.executeUpdate(); + try (Connection connection = Emulator.getDatabase().getDataSource().getConnection()) { + this.roomInfo.update(connection); this.needsUpdate = false; } catch (SQLException e) { log.error(CAUGHT_SQL_EXCEPTION, e); @@ -1174,10 +762,10 @@ public class Room implements Comparable, ISerialize, Runnable { } } - private void updateDatabaseUserCount() { + public void updateDatabaseUserCount() { try (Connection connection = Emulator.getDatabase().getDataSource().getConnection(); PreparedStatement statement = connection.prepareStatement("UPDATE rooms SET users = ? WHERE id = ? LIMIT 1")) { - statement.setInt(1, this.currentHabbos.size()); - statement.setInt(2, this.id); + statement.setInt(1, this.roomUnitManager.getRoomHabbosCount()); + statement.setInt(2, this.roomInfo.getId()); statement.executeUpdate(); } catch (SQLException e) { log.error(CAUGHT_SQL_EXCEPTION, e); @@ -1188,8 +776,7 @@ public class Room implements Comparable, ISerialize, Runnable { this.cycleOdd = !this.cycleOdd; this.cycleTimestamp = System.currentTimeMillis(); final boolean[] foundRightHolder = {false}; - - + boolean loaded; synchronized (this.loadLock) { loaded = this.loaded; @@ -1209,8 +796,8 @@ public class Room implements Comparable, ISerialize, Runnable { task.cycle(this); } - if (!this.currentHabbos.isEmpty()) { - this.idleCycles = 0; + if (!this.roomUnitManager.getCurrentRoomHabbos().isEmpty()) { + this.roomIdleCycles = 0; THashSet updatedUnit = new THashSet<>(); ArrayList toKick = new ArrayList<>(); @@ -1219,7 +806,7 @@ public class Room implements Comparable, ISerialize, Runnable { final long millis = System.currentTimeMillis(); - for (Habbo habbo : this.currentHabbos.values()) { + for (Habbo habbo : this.roomUnitManager.getCurrentRoomHabbos().values()) { if (!foundRightHolder[0]) { foundRightHolder[0] = habbo.getRoomUnit().getRightsLevel() != RoomRightLevels.NONE; } @@ -1258,7 +845,7 @@ public class Room implements Comparable, ISerialize, Runnable { } else { habbo.getRoomUnit().increaseIdleTimer(); - if (!this.isOwner(habbo) && habbo.getRoomUnit().getIdleTimer() >= Room.IDLE_CYCLES_KICK) { + if (!this.getRoomInfo().isRoomOwner(habbo) && habbo.getRoomUnit().getIdleTicks() >= Room.IDLE_CYCLES_KICK) { UserExitRoomEvent event = new UserExitRoomEvent(habbo, UserExitRoomEvent.UserExitRoomReason.KICKED_IDLE); Emulator.getPluginManager().fireEvent(event); @@ -1269,10 +856,10 @@ public class Room implements Comparable, ISerialize, Runnable { } } - if (Emulator.getConfig().getBoolean("hotel.rooms.deco_hosting") && this.ownerId != habbo.getHabboInfo().getId()) { + if (Emulator.getConfig().getBoolean("hotel.rooms.deco_hosting") && this.roomInfo.getOwnerInfo().getId() != habbo.getHabboInfo().getId()) { //Check if the time already have 1 minute (120 / 2 = 60s) if (habbo.getRoomUnit().getTimeInRoom() >= 120) { - AchievementManager.progressAchievement(this.ownerId, Emulator.getGameEnvironment().getAchievementManager().getAchievement("RoomDecoHosting")); + AchievementManager.progressAchievement(this.roomInfo.getOwnerInfo().getId(), Emulator.getGameEnvironment().getAchievementManager().getAchievement("RoomDecoHosting")); habbo.getRoomUnit().resetTimeInRoom(); } else { habbo.getRoomUnit().increaseTimeInRoom(); @@ -1300,14 +887,14 @@ public class Room implements Comparable, ISerialize, Runnable { } } - if (!this.currentBots.isEmpty()) { - TIntObjectIterator botIterator = this.currentBots.iterator(); - for (int i = this.currentBots.size(); i-- > 0; ) { + if (!this.roomUnitManager.getCurrentRoomBots().isEmpty()) { + Iterator botIterator = this.roomUnitManager.getCurrentRoomBots().values().iterator(); + + while(botIterator.hasNext()) { try { final Bot bot; try { - botIterator.advance(); - bot = botIterator.value(); + bot = botIterator.next(); } catch (Exception e) { break; } @@ -1318,7 +905,7 @@ public class Room implements Comparable, ISerialize, Runnable { continue; } - botIterator.value().cycle(this.allowBotsWalk); + bot.cycle(this.allowBotsWalk); if (this.cycleRoomUnit(bot.getRoomUnit())) { @@ -1333,17 +920,16 @@ public class Room implements Comparable, ISerialize, Runnable { } } - if (!this.currentPets.isEmpty() && this.allowBotsWalk) { - TIntObjectIterator petIterator = this.currentPets.iterator(); - for (int i = this.currentPets.size(); i-- > 0; ) { + if (!this.roomUnitManager.getCurrentRoomPets().isEmpty() && this.allowBotsWalk) { + Iterator petIterator = this.roomUnitManager.getCurrentRoomPets().values().iterator(); + while(petIterator.hasNext()) { + final Pet pet; try { - petIterator.advance(); - } catch (NoSuchElementException e) { - log.error(CAUGHT_EXCEPTION, e); + pet = petIterator.next(); + } catch (Exception e) { break; } - Pet pet = petIterator.value(); if (this.cycleRoomUnit(pet.getRoomUnit())) { updatedUnit.add(pet.getRoomUnit()); } @@ -1363,7 +949,7 @@ public class Room implements Comparable, ISerialize, Runnable { } - if (this.rollerSpeed != -1 && this.rollerCycle >= this.rollerSpeed) { + if (this.roomInfo.getRollerSpeed() != -1 && this.rollerCycle >= this.roomInfo.getRollerSpeed()) { this.rollerCycle = 0; THashSet messages = new THashSet<>(); @@ -1376,16 +962,16 @@ public class Room implements Comparable, ISerialize, Runnable { this.roomSpecialTypes.getRollers().forEachValue(roller -> { - HabboItem newRoller = null; + RoomItem newRoller = null; RoomTile rollerTile = this.getLayout().getTile(roller.getX(), roller.getY()); if (rollerTile == null) return true; - THashSet itemsOnRoller = new THashSet<>(); + THashSet itemsOnRoller = new THashSet<>(); - for (HabboItem item : getItemsAt(rollerTile)) { + for (RoomItem item : getItemsAt(rollerTile)) { if (item.getZ() >= roller.getZ() + Item.getCurrentHeight(roller)) { itemsOnRoller.add(item); } @@ -1413,19 +999,19 @@ public class Room implements Comparable, ISerialize, Runnable { if (tileInFront.hasUnits()) return true; - THashSet itemsNewTile = new THashSet<>(); + THashSet itemsNewTile = new THashSet<>(); itemsNewTile.addAll(getItemsAt(tileInFront)); itemsNewTile.removeAll(itemsOnRoller); itemsOnRoller.removeIf(item -> item.getX() != roller.getX() || item.getY() != roller.getY() || rollerFurniIds.contains(item.getId())); - HabboItem topItem = Room.this.getTopItemAt(tileInFront.getX(), tileInFront.getY()); + RoomItem topItem = Room.this.getTopItemAt(tileInFront.getX(), tileInFront.getY()); boolean allowUsers = true; boolean allowFurniture = true; boolean stackContainsRoller = false; - for (HabboItem item : itemsNewTile) { + for (RoomItem item : itemsNewTile) { if (!(item.getBaseItem().allowWalk() || item.getBaseItem().allowSit()) && !(item instanceof InteractionGate && item.getExtradata().equals("1"))) { allowUsers = false; } @@ -1465,11 +1051,17 @@ public class Room implements Comparable, ISerialize, Runnable { roomUserRolledEvent = new UserRolledEvent(null, null, null); } - ArrayList unitsOnTile = new ArrayList<>(rollerTile.getUnits()); + ArrayList unitsOnTile = new ArrayList<>(rollerTile.getEntities()); + + for (RoomEntity entity : rollerTile.getEntities()) { + if(!(entity instanceof RoomUnit)) { + continue; + } + + RoomUnit unit = (RoomUnit) entity; - for (RoomUnit unit : rollerTile.getUnits()) { if (unit.getRoomUnitType() == RoomUnitType.PET) { - Pet pet = this.getPet(unit); + Pet pet = this.roomUnitManager.getPetByRoomUnit(unit); if (pet instanceof RideablePet rideablePet && rideablePet.getRider() != null) { unitsOnTile.remove(unit); } @@ -1478,8 +1070,14 @@ public class Room implements Comparable, ISerialize, Runnable { THashSet usersRolledThisTile = new THashSet<>(); - for (RoomUnit unit : unitsOnTile) { - if (rolledUnitIds.contains(unit.getId())) continue; + for (RoomEntity entity : unitsOnTile) { + if(!(entity instanceof RoomUnit)) { + continue; + } + + RoomUnit unit = (RoomUnit) entity; + + if (rolledUnitIds.contains(unit.getVirtualId())) continue; if (usersRolledThisTile.size() >= Room.ROLLERS_MAXIMUM_ROLL_AVATARS) break; @@ -1489,9 +1087,9 @@ public class Room implements Comparable, ISerialize, Runnable { if (unit.hasStatus(RoomUnitStatus.MOVE)) continue; - double newZ = unit.getZ() + zOffset; + double newZ = unit.getCurrentZ() + zOffset; - if (roomUserRolledEvent != null && unit.getRoomUnitType() == RoomUnitType.USER) { + if (roomUserRolledEvent != null && unit.getRoomUnitType() == RoomUnitType.HABBO) { roomUserRolledEvent = new UserRolledEvent(getHabbo(unit), roller, tileInFront); Emulator.getPluginManager().fireEvent(roomUserRolledEvent); @@ -1501,28 +1099,28 @@ public class Room implements Comparable, ISerialize, Runnable { // horse riding boolean isRiding = false; - if (unit.getRoomUnitType() == RoomUnitType.USER) { + if (unit.getRoomUnitType() == RoomUnitType.HABBO) { Habbo rollingHabbo = this.getHabbo(unit); if (rollingHabbo != null && rollingHabbo.getHabboInfo() != null) { RideablePet riding = rollingHabbo.getHabboInfo().getRiding(); if (riding != null) { RoomUnit ridingUnit = riding.getRoomUnit(); - newZ = ridingUnit.getZ() + zOffset; - rolledUnitIds.add(ridingUnit.getId()); + newZ = ridingUnit.getCurrentZ() + zOffset; + rolledUnitIds.add(ridingUnit.getVirtualId()); updatedUnit.remove(ridingUnit); - messages.add(new RoomUnitOnRollerComposer(ridingUnit, roller, ridingUnit.getCurrentLocation(), ridingUnit.getZ(), tileInFront, newZ, room)); + messages.add(new RoomUnitOnRollerComposer(ridingUnit, roller, ridingUnit.getCurrentPosition(), ridingUnit.getCurrentZ(), tileInFront, newZ, room)); isRiding = true; } } } - usersRolledThisTile.add(unit.getId()); - rolledUnitIds.add(unit.getId()); + usersRolledThisTile.add(unit.getVirtualId()); + rolledUnitIds.add(unit.getVirtualId()); updatedUnit.remove(unit); - messages.add(new RoomUnitOnRollerComposer(unit, roller, unit.getCurrentLocation(), unit.getZ() + (isRiding ? 1 : 0), tileInFront, newZ + (isRiding ? 1 : 0), room)); + messages.add(new RoomUnitOnRollerComposer(unit, roller, unit.getCurrentPosition(), unit.getCurrentZ() + (isRiding ? 1 : 0), tileInFront, newZ + (isRiding ? 1 : 0), room)); if (itemsOnRoller.isEmpty()) { - HabboItem item = room.getTopItemAt(tileInFront.getX(), tileInFront.getY()); + RoomItem item = room.getTopItemAt(tileInFront.getX(), tileInFront.getY()); if (item != null && itemsNewTile.contains(item) && !itemsOnRoller.contains(item)) { Emulator.getThreading().run(() -> { @@ -1533,7 +1131,7 @@ public class Room implements Comparable, ISerialize, Runnable { log.error(CAUGHT_EXCEPTION, e); } } - }, this.getRollerSpeed() == 0 ? 250 : InteractionRoller.DELAY); + }, this.roomInfo.getRollerSpeed() == 0 ? 250 : InteractionRoller.DELAY); } } @@ -1558,10 +1156,10 @@ public class Room implements Comparable, ISerialize, Runnable { } if (newRoller == null || topItem == newRoller) { - List sortedItems = new ArrayList<>(itemsOnRoller); + List sortedItems = new ArrayList<>(itemsOnRoller); sortedItems.sort((o1, o2) -> Double.compare(o2.getZ(), o1.getZ())); - for (HabboItem item : sortedItems) { + for (RoomItem item : sortedItems) { if ((item.getX() == roller.getX() && item.getY() == roller.getY() && zOffset <= 0) && (item != roller)) { if (furnitureRolledEvent != null) { furnitureRolledEvent = new FurnitureRolledEvent(item, roller, tileInFront); @@ -1591,7 +1189,7 @@ public class Room implements Comparable, ISerialize, Runnable { int currentTime = (int) (this.cycleTimestamp / 1000); - for (HabboItem pyramid : this.roomSpecialTypes.getItemsOfType(InteractionPyramid.class)) { + for (RoomItem pyramid : this.roomSpecialTypes.getItemsOfType(InteractionPyramid.class)) { if (pyramid instanceof InteractionPyramid interactionPyramid && interactionPyramid.getNextChange() < currentTime) { interactionPyramid.change(this); } @@ -1607,8 +1205,8 @@ public class Room implements Comparable, ISerialize, Runnable { this.traxManager.cycle(); } else { - if (this.idleCycles < 60) - this.idleCycles++; + if (this.roomIdleCycles < 60) + this.roomIdleCycles++; else this.dispose(); } @@ -1617,8 +1215,10 @@ public class Room implements Comparable, ISerialize, Runnable { synchronized (this.habboQueue) { if (!this.habboQueue.isEmpty() && !foundRightHolder[0]) { this.habboQueue.forEachEntry((a, b) -> { - if (b.isOnline() && b.getHabboInfo().getRoomQueueId() == Room.this.getId()) { - b.getClient().sendResponse(new FlatAccessDeniedMessageComposer("")); + if (b.isOnline()) { + if (b.getHabboInfo().getRoomQueueId() == this.roomInfo.getId()) { + b.getClient().sendResponse(new FlatAccessDeniedMessageComposer("")); + } } return true; }); @@ -1636,9 +1236,9 @@ public class Room implements Comparable, ISerialize, Runnable { } } - private boolean cycleRoomUnit(RoomUnit unit) { - boolean update = unit.needsStatusUpdate(); + boolean update = unit.isStatusUpdateNeeded(); + if (unit.hasStatus(RoomUnitStatus.SIGN)) { this.sendComposer(new UserUpdateComposer(unit).compose()); unit.removeStatus(RoomUnitStatus.SIGN); @@ -1655,9 +1255,9 @@ public class Room implements Comparable, ISerialize, Runnable { update = true; } - if (!unit.isWalking() && !unit.isCmdSit()) { - RoomTile thisTile = this.getLayout().getTile(unit.getX(), unit.getY()); - HabboItem topItem = this.getTallestChair(thisTile); + if (!unit.isWalking() && !unit.isCmdSitEnabled()) { + RoomTile thisTile = this.getLayout().getTile(unit.getCurrentPosition().getX(), unit.getCurrentPosition().getY()); + RoomItem topItem = this.getTallestChair(thisTile); if (topItem == null || !topItem.getBaseItem().allowSit()) { if (unit.hasStatus(RoomUnitStatus.SIT)) { @@ -1667,16 +1267,16 @@ public class Room implements Comparable, ISerialize, Runnable { } else if (thisTile.getState() == RoomTileState.SIT && (!unit.hasStatus(RoomUnitStatus.SIT) || unit.isSitUpdate())) { this.dance(unit, DanceType.NONE); unit.setStatus(RoomUnitStatus.SIT, (Item.getCurrentHeight(topItem)) + ""); - unit.setZ(topItem.getZ()); - unit.setRotation(RoomUserRotation.values()[topItem.getRotation()]); + unit.setCurrentZ(topItem.getZ()); + unit.setRotation(RoomRotation.values()[topItem.getRotation()]); unit.setSitUpdate(false); return true; } } } - if (!unit.isWalking() && !unit.isCmdLay()) { - HabboItem topItem = this.getTopItemAt(unit.getX(), unit.getY()); + if (!unit.isWalking() && !unit.isCmdLayEnabled()) { + RoomItem topItem = this.getTopItemAt(unit.getCurrentPosition().getX(), unit.getCurrentPosition().getY()); if (topItem == null || !topItem.getBaseItem().allowLay()) { if (unit.hasStatus(RoomUnitStatus.LAY)) { @@ -1686,12 +1286,12 @@ public class Room implements Comparable, ISerialize, Runnable { } else { if (!unit.hasStatus(RoomUnitStatus.LAY)) { unit.setStatus(RoomUnitStatus.LAY, Item.getCurrentHeight(topItem) + ""); - unit.setRotation(RoomUserRotation.values()[topItem.getRotation() % 4]); + unit.setRotation(RoomRotation.values()[topItem.getRotation() % 4]); if (topItem.getRotation() == 0 || topItem.getRotation() == 4) { - unit.setLocation(this.layout.getTile(unit.getX(), topItem.getY())); + unit.setLocation(this.layout.getTile(unit.getCurrentPosition().getX(), topItem.getY())); } else { - unit.setLocation(this.layout.getTile(topItem.getX(), unit.getY())); + unit.setLocation(this.layout.getTile(topItem.getX(), unit.getCurrentPosition().getY())); } update = true; } @@ -1699,93 +1299,26 @@ public class Room implements Comparable, ISerialize, Runnable { } if (update) { - unit.statusUpdate(false); + unit.setStatusUpdateNeeded(false); } return update; } - public void setName(String name) { - this.name = name; - - if (this.name.length() > 50) { - this.name = this.name.substring(0, 50); - } - - if (this.hasGuild()) { - Guild guild = Emulator.getGameEnvironment().getGuildManager().getGuild(this.guildId); - - if (guild != null) { - guild.setRoomName(name); - } - } - } - - public void setDescription(String description) { - this.description = description; - - if (this.description.length() > 250) { - this.description = this.description.substring(0, 250); - } - } - - public boolean hasCustomLayout() { - return this.overrideModel; - } - - public void setHasCustomLayout(boolean overrideModel) { - this.overrideModel = overrideModel; - } - - public void setPassword(String password) { - this.password = password; - - if (this.password.length() > 20) { - this.password = this.password.substring(0, 20); - } - } - - public boolean moveDiagonally() { - return this.moveDiagonally; - } - - public void moveDiagonally(boolean moveDiagonally) { - this.moveDiagonally = moveDiagonally; - this.layout.moveDiagonally(this.moveDiagonally); + public void setDiagonalMoveEnabled(boolean moveDiagonally) { + this.roomInfo.setDiagonalMoveEnabled(moveDiagonally); + this.layout.moveDiagonally(moveDiagonally); this.needsUpdate = true; } - public boolean hasGuild() { - return this.guildId != 0; - } - - public String getGuildName() { - if (this.hasGuild()) { - Guild guild = Emulator.getGameEnvironment().getGuildManager().getGuild(this.guildId); - - if (guild != null) { - return guild.getName(); - } - } - - return ""; - } - - public void setAllowPets(boolean allowPets) { - this.allowPets = allowPets; - if (!allowPets) { - removeAllPets(ownerId); - } - } - public Color getBackgroundTonerColor() { Color color = new Color(0, 0, 0); - TIntObjectIterator iterator = this.roomItems.iterator(); + TIntObjectIterator iterator = this.roomItems.iterator(); for (int i = this.roomItems.size(); i > 0; i--) { try { iterator.advance(); - HabboItem object = iterator.value(); + RoomItem object = iterator.value(); if (object instanceof InteractionBackgroundToner) { String[] extraData = object.getExtradata().split(":"); @@ -1802,67 +1335,20 @@ public class Room implements Comparable, ISerialize, Runnable { return color; } - public void removeAllPets() { - removeAllPets(-1); - } - - /** - * Removes all pets from the room except if the owner id is excludeUserId - * - * @param excludeUserId Habbo id to keep pets - */ - public void removeAllPets(int excludeUserId) { - ArrayList toRemovePets = new ArrayList<>(); - ArrayList removedPets = new ArrayList<>(); - synchronized (this.currentPets) { - for (Pet pet : this.currentPets.valueCollection()) { - try { - if (pet.getUserId() != excludeUserId) { - toRemovePets.add(pet); - } - - } catch (NoSuchElementException e) { - log.error(CAUGHT_EXCEPTION, e); - break; - } - } - } - - for (Pet pet : toRemovePets) { - removedPets.add(pet); - - pet.removeFromRoom(); - - Habbo habbo = Emulator.getGameEnvironment().getHabboManager().getHabbo(pet.getUserId()); - if (habbo != null) { - habbo.getInventory().getPetsComponent().addPet(pet); - habbo.getClient().sendResponse(new PetAddedToInventoryComposer(pet)); - } - - pet.setNeedsUpdate(true); - pet.run(); - } - - for (Pet pet : removedPets) { - this.currentPets.remove(pet.getId()); - } - } - public void setRollerSpeed(int rollerSpeed) { - this.rollerSpeed = rollerSpeed; + this.roomInfo.setRollerSpeed(rollerSpeed); this.rollerCycle = 0; this.needsUpdate = true; } public String[] filterAnything() { - return new String[]{this.getOwnerName(), this.getGuildName(), this.getDescription(), this.getPromotionDesc()}; + return new String[]{this.roomInfo.getOwnerInfo().getUsername(), this.roomInfo.getGuildName(), this.roomInfo.getDescription(), this.getPromotionDesc()}; } public boolean isPromoted() { - this.promoted = this.promotion != null && this.promotion.getEndTimestamp() > Emulator.getIntUnixTimestamp(); + this.roomInfo.setPromoted(this.promotion != null && this.promotion.getEndTimestamp() > Emulator.getIntUnixTimestamp()); this.needsUpdate = true; - - return this.promoted; + return this.roomInfo.isPromoted(); } public String getPromotionDesc() { @@ -1874,7 +1360,7 @@ public class Room implements Comparable, ISerialize, Runnable { } public void createPromotion(String title, String description, int category) { - this.promoted = true; + this.roomInfo.setPromoted(true); if (this.promotion == null) { this.promotion = new RoomPromotion(this, title, description, Emulator.getIntUnixTimestamp() + (120 * 60), Emulator.getIntUnixTimestamp(), category); @@ -1886,7 +1372,7 @@ public class Room implements Comparable, ISerialize, Runnable { } try (Connection connection = Emulator.getDatabase().getDataSource().getConnection(); PreparedStatement statement = connection.prepareStatement("INSERT INTO room_promotions (room_id, title, description, end_timestamp, start_timestamp, category) VALUES (?, ?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE title = ?, description = ?, end_timestamp = ?, category = ?")) { - statement.setInt(1, this.id); + statement.setInt(1, this.roomInfo.getId()); statement.setString(2, title); statement.setString(3, description); statement.setInt(4, this.promotion.getEndTimestamp()); @@ -1946,14 +1432,6 @@ public class Room implements Comparable, ISerialize, Runnable { return game; } - public int getUserCount() { - return this.currentHabbos.size(); - } - - public Collection getHabbos() { - return this.currentHabbos.values(); - } - public String getFurniOwnerName(int userId) { return this.furniOwnerNames.get(userId); } @@ -1978,7 +1456,7 @@ public class Room implements Comparable, ISerialize, Runnable { return true; } - public void addHabboItem(HabboItem item) { + public void addHabboItem(RoomItem item) { if (item == null) return; @@ -2089,11 +1567,11 @@ public class Room implements Comparable, ISerialize, Runnable { } } - public HabboItem getHabboItem(int id) { + public RoomItem getHabboItem(int id) { if (this.roomItems == null || this.roomSpecialTypes == null) return null; // room not loaded completely - HabboItem item; + RoomItem item; synchronized (this.roomItems) { item = this.roomItems.get(id); } @@ -2141,11 +1619,10 @@ public class Room implements Comparable, ISerialize, Runnable { this.removeHabboItem(this.getHabboItem(id)); } - - public void removeHabboItem(HabboItem item) { + public void removeHabboItem(RoomItem item) { if (item != null) { - HabboItem i; + RoomItem i; synchronized (this.roomItems) { i = this.roomItems.remove(item.getId()); } @@ -2243,27 +1720,18 @@ public class Room implements Comparable, ISerialize, Runnable { } } - public List getFloorItems() { + public List getFloorItems() { return roomItems.valueCollection().stream().filter(i -> i.getBaseItem().getType() == FurnitureType.FLOOR).toList(); } - public List getWallItems() { + public List getWallItems() { return roomItems.valueCollection().stream().filter(i -> i.getBaseItem().getType() == FurnitureType.WALL).toList(); } - public List getPostItNotes() { + public List getPostItNotes() { return roomItems.valueCollection().stream().filter(i -> i.getBaseItem().getInteractionType().getType() == InteractionPostIt.class).toList(); } - public void addHabbo(Habbo habbo) { - synchronized (this.roomUnitLock) { - habbo.getRoomUnit().setId(this.unitCounter); - this.currentHabbos.put(habbo.getHabboInfo().getId(), habbo); - this.unitCounter++; - this.updateDatabaseUserCount(); - } - } - public void kickHabbo(Habbo habbo, boolean alert) { if (alert) { habbo.getClient().sendResponse(new GenericErrorComposer(GenericErrorComposer.KICKED_OUT_OF_THE_ROOM)); @@ -2272,256 +1740,49 @@ public class Room implements Comparable, ISerialize, Runnable { habbo.getRoomUnit().setKicked(true); habbo.getRoomUnit().setGoalLocation(this.layout.getDoorTile()); - if (habbo.getRoomUnit().getPath() == null || habbo.getRoomUnit().getPath().size() <= 1 || this.isPublicRoom()) { + if (habbo.getRoomUnit().getPath() == null || habbo.getRoomUnit().getPath().size() <= 1 || this.roomInfo.isPublicRoom()) { habbo.getRoomUnit().setCanWalk(true); Emulator.getGameEnvironment().getRoomManager().leaveRoom(habbo, this); } } - public void removeHabbo(Habbo habbo) { - removeHabbo(habbo, false); - } - - public void removeHabbo(Habbo habbo, boolean sendRemovePacket) { - if (habbo.getRoomUnit() != null && habbo.getRoomUnit().getCurrentLocation() != null) { - habbo.getRoomUnit().getCurrentLocation().removeUnit(habbo.getRoomUnit()); - } - - synchronized (this.roomUnitLock) { - this.currentHabbos.remove(habbo.getHabboInfo().getId()); - } - - if (sendRemovePacket && habbo.getRoomUnit() != null && !habbo.getRoomUnit().isTeleporting()) { - this.sendComposer(new UserRemoveMessageComposer(habbo.getRoomUnit()).compose()); - } - - if (habbo.getRoomUnit().getCurrentLocation() != null) { - HabboItem item = this.getTopItemAt(habbo.getRoomUnit().getX(), habbo.getRoomUnit().getY()); - - if (item != null) { - try { - item.onWalkOff(habbo.getRoomUnit(), this, new Object[]{}); - } catch (Exception e) { - log.error(CAUGHT_EXCEPTION, e); - } - } - } - - if (habbo.getHabboInfo().getCurrentGame() != null && this.getGame(habbo.getHabboInfo().getCurrentGame()) != null) { - this.getGame(habbo.getHabboInfo().getCurrentGame()).removeHabbo(habbo); - } - - RoomTrade trade = this.getActiveTradeForHabbo(habbo); - - if (trade != null) { - trade.stopTrade(habbo); - } - - if (habbo.getHabboInfo().getId() != this.ownerId) { - this.pickupPetsForHabbo(habbo); - } - - this.updateDatabaseUserCount(); - } - - public void addBot(Bot bot) { - synchronized (this.roomUnitLock) { - bot.getRoomUnit().setId(this.unitCounter); - this.currentBots.put(bot.getId(), bot); - this.unitCounter++; - } - } - - public void addPet(Pet pet) { - synchronized (this.roomUnitLock) { - pet.getRoomUnit().setId(this.unitCounter); - this.currentPets.put(pet.getId(), pet); - this.unitCounter++; - - Habbo habbo = this.getHabbo(pet.getUserId()); - if (habbo != null) { - this.furniOwnerNames.put(pet.getUserId(), this.getHabbo(pet.getUserId()).getHabboInfo().getUsername()); - } - } - } - - public Bot getBot(int botId) { - return this.currentBots.get(botId); - } - - public Bot getBot(RoomUnit roomUnit) { - return getBot(roomUnit.getId()); - } - - public Bot getBotByRoomUnitId(int id) { - synchronized (this.currentBots) { - return currentBots.valueCollection().stream().filter(b -> b.getRoomUnit().getId() == id).findFirst().orElse(null); - } - } - - public List getBots(String name) { - synchronized (this.currentBots) { - return currentBots.valueCollection().stream().filter(b -> b.getName().equalsIgnoreCase(name)).toList(); - - } - } - - public boolean hasBotsAt(final int x, final int y) { - final boolean[] result = {false}; - - synchronized (this.currentBots) { - this.currentBots.forEachValue(object -> { - if (object.getRoomUnit().getX() == x && object.getRoomUnit().getY() == y) { - result[0] = true; - return false; - } - - return true; - }); - } - - return result[0]; - } - - public Pet getPet(int petId) { - return this.currentPets.get(petId); - } - - public Pet getPet(RoomUnit roomUnit) { - return currentPets.valueCollection().stream().filter(p -> p.getRoomUnit() == roomUnit).findFirst().orElse(null); - } - - public boolean removeBot(Bot bot) { - synchronized (this.currentBots) { - if (this.currentBots.containsKey(bot.getId())) { - if (bot.getRoomUnit() != null && bot.getRoomUnit().getCurrentLocation() != null) { - bot.getRoomUnit().getCurrentLocation().removeUnit(bot.getRoomUnit()); - } - - this.currentBots.remove(bot.getId()); - bot.getRoomUnit().setInRoom(false); - bot.setRoom(null); - this.sendComposer(new UserRemoveMessageComposer(bot.getRoomUnit()).compose()); - bot.setRoomUnit(null); - return true; - } - } - - return false; - } - - public void placePet(Pet pet, short x, short y, double z) { - synchronized (this.currentPets) { - RoomTile tile = this.layout.getTile(x, y); - - if (tile == null) { - tile = this.layout.getDoorTile(); - } - - pet.setRoomUnit(new RoomUnit()); - pet.setRoom(this); - pet.getRoomUnit() - .setGoalLocation(tile) - .setLocation(tile) - .setRoomUnitType(RoomUnitType.PET) - .setCanWalk(true) - .setPathFinderRoom(this) - .setPreviousLocationZ(z) - .setZ(z); - - if (pet.getRoomUnit().getCurrentLocation() == null) { - pet.getRoomUnit() - .setLocation(this.getLayout().getDoorTile()) - .setRotation(RoomUserRotation.fromValue(this.getLayout().getDoorDirection())); - } - - pet.setNeedsUpdate(true); - this.furniOwnerNames.put(pet.getUserId(), this.getHabbo(pet.getUserId()).getHabboInfo().getUsername()); - this.addPet(pet); - this.sendComposer(new RoomPetComposer(pet).compose()); - } - } - - public Pet removePet(int petId) { - return this.currentPets.remove(petId); - } - - public boolean hasHabbosAt(int x, int y) { - return getHabbos().stream().anyMatch(h -> h.getRoomUnit().getX() == x && h.getRoomUnit().getY() == y); - } - - public boolean hasPetsAt(int x, int y) { - synchronized (this.currentPets) { - return currentPets.valueCollection().stream().anyMatch(p -> p.getRoomUnit().getX() == x && p.getRoomUnit().getY() == y); - } - } - - public List getPetsAt(RoomTile tile) { - synchronized (this.currentPets) { - return currentPets.valueCollection().stream().filter(p -> p.getRoomUnit().getCurrentLocation().equals(tile)).toList(); - } - } - - public List getBotsAt(RoomTile tile) { - synchronized (this.currentBots) { - return currentBots.valueCollection().stream().filter(b -> b.getRoomUnit().getCurrentLocation().equals(tile)).toList(); - } - } - - public List getHabbosAt(short x, short y) { - return this.getHabbosAt(this.layout.getTile(x, y)); - } - - public List getHabbosAt(RoomTile tile) { - return getHabbos().stream().filter(h -> h.getRoomUnit().getCurrentLocation().equals(tile)).toList(); - } - - public THashSet getHabbosAndBotsAt(short x, short y) { - return this.getHabbosAndBotsAt(this.layout.getTile(x, y)); - } - - public THashSet getHabbosAndBotsAt(RoomTile tile) { - THashSet list = new THashSet<>(); - list.addAll(getBotsAt(tile).stream().map(Bot::getRoomUnit).toList()); - list.addAll(getHabbosAt(tile).stream().map(Habbo::getRoomUnit).toList()); - - return list; - } - - public THashSet getHabbosOnItem(HabboItem item) { + public THashSet getHabbosOnItem(RoomItem item) { THashSet habbos = new THashSet<>(); for (short x = item.getX(); x < item.getX() + item.getBaseItem().getLength(); x++) { for (short y = item.getY(); y < item.getY() + item.getBaseItem().getWidth(); y++) { - habbos.addAll(this.getHabbosAt(x, y)); + RoomTile tile = this.getLayout().getTile(x, y); + habbos.addAll(this.roomUnitManager.getHabbosAt(tile)); } } return habbos; } - public THashSet getBotsOnItem(HabboItem item) { + public THashSet getBotsOnItem(RoomItem item) { THashSet bots = new THashSet<>(); for (short x = item.getX(); x < item.getX() + item.getBaseItem().getLength(); x++) { for (short y = item.getY(); y < item.getY() + item.getBaseItem().getWidth(); y++) { - bots.addAll(this.getBotsAt(this.getLayout().getTile(x, y))); + RoomTile tile = this.getLayout().getTile(x, y); + bots.addAll(this.roomUnitManager.getBotsAt(tile)); } } return bots; } - public THashSet getPetsOnItem(HabboItem item) { + public THashSet getPetsOnItem(RoomItem item) { THashSet pets = new THashSet<>(); for (short x = item.getX(); x < item.getX() + item.getBaseItem().getLength(); x++) { for (short y = item.getY(); y < item.getY() + item.getBaseItem().getWidth(); y++) { - pets.addAll(this.getPetsAt(this.getLayout().getTile(x, y))); + RoomTile tile = this.getLayout().getTile(x, y); + pets.addAll(this.roomUnitManager.getPetsAt(tile)); } } return pets; } - public void teleportHabboToItem(Habbo habbo, HabboItem item) { + public void teleportHabboToItem(Habbo habbo, RoomItem item) { this.teleportRoomUnitToLocation(habbo.getRoomUnit(), item.getX(), item.getY(), item.getZ() + Item.getCurrentHeight(item)); } @@ -2529,7 +1790,7 @@ public class Room implements Comparable, ISerialize, Runnable { this.teleportRoomUnitToLocation(habbo.getRoomUnit(), x, y, 0.0); } - public void teleportRoomUnitToItem(RoomUnit roomUnit, HabboItem item) { + public void teleportRoomUnitToItem(RoomUnit roomUnit, RoomItem item) { this.teleportRoomUnitToLocation(roomUnit, item.getX(), item.getY(), item.getZ() + Item.getCurrentHeight(item)); } @@ -2547,7 +1808,7 @@ public class Room implements Comparable, ISerialize, Runnable { roomUnit.setLocation(tile); roomUnit.setGoalLocation(tile); - roomUnit.setZ(z); + roomUnit.setCurrentZ(z); roomUnit.setPreviousLocationZ(z); this.updateRoomUnit(roomUnit); @@ -2562,7 +1823,7 @@ public class Room implements Comparable, ISerialize, Runnable { } public boolean isMuted(Habbo habbo) { - if (this.isOwner(habbo) || this.hasRights(habbo)) + if (this.getRoomInfo().isRoomOwner(habbo) || this.hasRights(habbo)) return false; if (this.mutedHabbos.containsKey(habbo.getHabboInfo().getId())) { @@ -2581,17 +1842,17 @@ public class Room implements Comparable, ISerialize, Runnable { public void habboEntered(Habbo habbo) { habbo.getRoomUnit().setAnimateWalk(false); - synchronized (this.currentBots) { - if (habbo.getHabboInfo().getId() != this.getOwnerId()) + synchronized (this.roomUnitManager.getCurrentRoomBots()) { + if (habbo.getHabboInfo().getId() != this.roomInfo.getOwnerInfo().getId()) return; - TIntObjectIterator botIterator = this.currentBots.iterator(); + Iterator botIterator = this.roomUnitManager.getCurrentRoomBots().values().iterator(); - for (int i = this.currentBots.size(); i-- > 0; ) { + while (botIterator.hasNext()) { try { - botIterator.advance(); + Bot bot = botIterator.next(); - if (botIterator.value() instanceof VisitorBot visitorBot) { + if (bot instanceof VisitorBot visitorBot) { visitorBot.onUserEnter(habbo); break; } @@ -2601,7 +1862,7 @@ public class Room implements Comparable, ISerialize, Runnable { } } - HabboItem doorTileTopItem = this.getTopItemAt(habbo.getRoomUnit().getX(), habbo.getRoomUnit().getY()); + RoomItem doorTileTopItem = this.getTopItemAt(habbo.getRoomUnit().getCurrentPosition().getX(), habbo.getRoomUnit().getCurrentPosition().getY()); if (doorTileTopItem != null && !(doorTileTopItem instanceof InteractionTeleportTile)) { try { doorTileTopItem.onWalkOn(habbo.getRoomUnit(), this, new Object[]{}); @@ -2634,7 +1895,7 @@ public class Room implements Comparable, ISerialize, Runnable { return; } - if (habbo.getHabboInfo().getCurrentRoom() != this) + if (habbo.getRoomUnit().getRoom() != this) return; long millis = System.currentTimeMillis(); @@ -2662,8 +1923,8 @@ public class Room implements Comparable, ISerialize, Runnable { return; if (!habbo.hasRight(Permission.ACC_NOMUTE) && (!MUTEAREA_CAN_WHISPER || chatType != RoomChatType.WHISPER)) { - for (HabboItem area : this.getRoomSpecialTypes().getItemsOfType(InteractionMuteArea.class)) { - if (((InteractionMuteArea) area).inSquare(habbo.getRoomUnit().getCurrentLocation())) { + for (RoomItem area : this.getRoomSpecialTypes().getItemsOfType(InteractionMuteArea.class)) { + if (((InteractionMuteArea) area).inSquare(habbo.getRoomUnit().getCurrentPosition())) { return; } } @@ -2688,13 +1949,13 @@ public class Room implements Comparable, ISerialize, Runnable { if (chatType != RoomChatType.WHISPER) { if (Emulator.getGameEnvironment().getCommandsManager().handleCommand(habbo.getClient(), roomChatMessage.getUnfilteredMessage())) { - WiredHandler.handle(WiredTriggerType.SAY_COMMAND, habbo.getRoomUnit(), habbo.getHabboInfo().getCurrentRoom(), new Object[]{roomChatMessage.getMessage()}); + WiredHandler.handle(WiredTriggerType.SAY_COMMAND, habbo.getRoomUnit(), habbo.getRoomUnit().getRoom(), new Object[]{roomChatMessage.getMessage()}); roomChatMessage.isCommand = true; return; } if (!ignoreWired) { - if (WiredHandler.handle(WiredTriggerType.SAY_SOMETHING, habbo.getRoomUnit(), habbo.getHabboInfo().getCurrentRoom(), new Object[]{roomChatMessage.getMessage()})) { + if (WiredHandler.handle(WiredTriggerType.SAY_SOMETHING, habbo.getRoomUnit(), habbo.getRoomUnit().getRoom(), new Object[]{roomChatMessage.getMessage()})) { habbo.getClient().sendResponse(new WhisperMessageComposer(new RoomChatMessage(roomChatMessage.getMessage(), habbo, habbo, roomChatMessage.getBubble()))); return; } @@ -2709,7 +1970,7 @@ public class Room implements Comparable, ISerialize, Runnable { final boolean hasRights = this.hasRights(habbo); if (floodRights || !hasRights) { - if (this.chatProtection == 0 || (this.chatProtection == 1 && chatCounter > 4) || (this.chatProtection == 2 && chatCounter > 5)) { + if (this.roomInfo.getChatProtection() == 0 || (this.roomInfo.getChatProtection() == 1 && chatCounter > 4) || (this.roomInfo.getChatProtection() == 2 && chatCounter > 5)) { this.floodMuteHabbo(habbo, muteTime); return; } @@ -2731,7 +1992,7 @@ public class Room implements Comparable, ISerialize, Runnable { } ServerMessage clearPrefixMessage = prefixMessage != null ? new UserNameChangedMessageComposer(habbo).compose() : null; - Rectangle tentRectangle = this.roomSpecialTypes.tentAt(habbo.getRoomUnit().getCurrentLocation()); + Rectangle tentRectangle = this.roomSpecialTypes.tentAt(habbo.getRoomUnit().getCurrentPosition()); String trimmedMessage = roomChatMessage.getMessage().replaceAll("\\s+$", ""); @@ -2750,7 +2011,7 @@ public class Room implements Comparable, ISerialize, Runnable { final ServerMessage message = new WhisperMessageComposer(roomChatMessage).compose(); final ServerMessage staffMessage = new WhisperMessageComposer(staffChatMessage).compose(); - for (Habbo h : this.getHabbos()) { + for (Habbo h : this.roomUnitManager.getRoomHabbos()) { if (h == roomChatMessage.getTargetHabbo() || h == habbo) { if (!h.getHabboStats().userIgnored(habbo.getHabboInfo().getId())) { if (prefixMessage != null) { @@ -2773,11 +2034,11 @@ public class Room implements Comparable, ISerialize, Runnable { ServerMessage message = new ChatMessageComposer(roomChatMessage).compose(); boolean noChatLimit = habbo.hasRight(Permission.ACC_CHAT_NO_LIMIT); - for (Habbo h : this.getHabbos()) { - if ((h.getRoomUnit().getCurrentLocation().distance(habbo.getRoomUnit().getCurrentLocation()) <= this.chatDistance || + for (Habbo h : this.roomUnitManager.getRoomHabbos()) { + if ((h.getRoomUnit().getCurrentPosition().distance(habbo.getRoomUnit().getCurrentPosition()) <= this.roomInfo.getChatDistance() || h.equals(habbo) || this.hasRights(h) || - noChatLimit) && (tentRectangle == null || RoomLayout.tileInSquare(tentRectangle, h.getRoomUnit().getCurrentLocation()))) { + noChatLimit) && (tentRectangle == null || RoomLayout.tileInSquare(tentRectangle, h.getRoomUnit().getCurrentPosition()))) { if (!h.getHabboStats().userIgnored(habbo.getHabboInfo().getId())) { if (prefixMessage != null && !h.getHabboStats().isPreferOldChat()) { h.getClient().sendResponse(prefixMessage); @@ -2795,11 +2056,11 @@ public class Room implements Comparable, ISerialize, Runnable { } else if (chatType == RoomChatType.SHOUT) { ServerMessage message = new ShoutMessageComposer(roomChatMessage).compose(); - for (Habbo h : this.getHabbos()) { + for (Habbo h : this.roomUnitManager.getRoomHabbos()) { // Show the message // If the receiving Habbo has not ignored the sending Habbo // AND the sending Habbo is NOT in a tent OR the receiving Habbo is in the same tent as the sending Habbo - if (!h.getHabboStats().userIgnored(habbo.getHabboInfo().getId()) && (tentRectangle == null || RoomLayout.tileInSquare(tentRectangle, h.getRoomUnit().getCurrentLocation()))) { + if (!h.getHabboStats().userIgnored(habbo.getHabboInfo().getId()) && (tentRectangle == null || RoomLayout.tileInSquare(tentRectangle, h.getRoomUnit().getCurrentPosition()))) { if (prefixMessage != null && !h.getHabboStats().isPreferOldChat()) { h.getClient().sendResponse(prefixMessage); } @@ -2815,13 +2076,12 @@ public class Room implements Comparable, ISerialize, Runnable { } if (chatType == RoomChatType.TALK || chatType == RoomChatType.SHOUT) { - synchronized (this.currentBots) { - TIntObjectIterator botIterator = this.currentBots.iterator(); + synchronized (this.roomUnitManager.getCurrentRoomBots()) { + Iterator botIterator = this.roomUnitManager.getCurrentRoomBots().values().iterator(); - for (int i = this.currentBots.size(); i-- > 0; ) { + while (botIterator.hasNext()) { try { - botIterator.advance(); - Bot bot = botIterator.value(); + Bot bot = botIterator.next(); bot.onUserSay(roomChatMessage); } catch (NoSuchElementException e) { @@ -2832,10 +2092,10 @@ public class Room implements Comparable, ISerialize, Runnable { } if (roomChatMessage.getBubble().triggersTalkingFurniture()) { - THashSet items = this.roomSpecialTypes.getItemsOfType(InteractionTalkingFurniture.class); + THashSet items = this.roomSpecialTypes.getItemsOfType(InteractionTalkingFurniture.class); - for (HabboItem item : items) { - if (this.layout.getTile(item.getX(), item.getY()).distance(habbo.getRoomUnit().getCurrentLocation()) <= Emulator.getConfig().getInt("furniture.talking.range")) { + for (RoomItem item : items) { + if (this.layout.getTile(item.getX(), item.getY()).distance(habbo.getRoomUnit().getCurrentPosition()) <= Emulator.getConfig().getInt("furniture.talking.range")) { int count = Emulator.getConfig().getInt(item.getBaseItem().getName() + ".message.count", 0); if (count > 0) { @@ -2874,7 +2134,7 @@ public class Room implements Comparable, ISerialize, Runnable { * @param tentRectangle The whole tent area from where the sending Habbo is saying something */ private void showTentChatMessageOutsideTentIfPermitted(Habbo receivingHabbo, RoomChatMessage roomChatMessage, Rectangle tentRectangle) { - if (receivingHabbo != null && receivingHabbo.hasRight(Permission.ACC_SEE_TENTCHAT) && tentRectangle != null && !RoomLayout.tileInSquare(tentRectangle, receivingHabbo.getRoomUnit().getCurrentLocation())) { + if (receivingHabbo != null && receivingHabbo.hasRight(Permission.ACC_SEE_TENTCHAT) && tentRectangle != null && !RoomLayout.tileInSquare(tentRectangle, receivingHabbo.getRoomUnit().getCurrentPosition())) { RoomChatMessage staffChatMessage = new RoomChatMessage(roomChatMessage); staffChatMessage.setMessage("[" + Emulator.getTexts().getValue("hotel.room.tent.prefix") + "] " + staffChatMessage.getMessage()); final ServerMessage staffMessage = new WhisperMessageComposer(staffChatMessage).compose(); @@ -2885,11 +2145,11 @@ public class Room implements Comparable, ISerialize, Runnable { public THashSet getLockedTiles() { THashSet lockedTiles = new THashSet<>(); - TIntObjectIterator iterator = this.roomItems.iterator(); + TIntObjectIterator iterator = this.roomItems.iterator(); for (int i = this.roomItems.size(); i-- > 0; ) { - HabboItem item; + RoomItem item; try { iterator.advance(); item = iterator.value(); @@ -2931,7 +2191,7 @@ public class Room implements Comparable, ISerialize, Runnable { } @Deprecated - public THashSet getItemsAt(int x, int y) { + public THashSet getItemsAt(int x, int y) { RoomTile tile = this.getLayout().getTile((short) x, (short) y); if (tile != null) { @@ -2941,26 +2201,26 @@ public class Room implements Comparable, ISerialize, Runnable { return new THashSet<>(0); } - public THashSet getItemsAt(RoomTile tile) { + public THashSet getItemsAt(RoomTile tile) { return getItemsAt(tile, false); } - public THashSet getItemsAt(RoomTile tile, boolean returnOnFirst) { - THashSet items = new THashSet<>(0); + public THashSet getItemsAt(RoomTile tile, boolean returnOnFirst) { + THashSet items = new THashSet<>(0); if (tile == null) return items; if (this.loaded) { - THashSet cachedItems = this.tileCache.get(tile); + THashSet cachedItems = this.tileCache.get(tile); if (cachedItems != null) return cachedItems; } - TIntObjectIterator iterator = this.roomItems.iterator(); + TIntObjectIterator iterator = this.roomItems.iterator(); for (int i = this.roomItems.size(); i-- > 0; ) { - HabboItem item; + RoomItem item; try { iterator.advance(); item = iterator.value(); @@ -3001,10 +2261,10 @@ public class Room implements Comparable, ISerialize, Runnable { return items; } - public THashSet getItemsAt(int x, int y, double minZ) { - THashSet items = new THashSet<>(); + public THashSet getItemsAt(int x, int y, double minZ) { + THashSet items = new THashSet<>(); - for (HabboItem item : this.getItemsAt(x, y)) { + for (RoomItem item : this.getItemsAt(x, y)) { if (item.getZ() < minZ) continue; @@ -3013,10 +2273,10 @@ public class Room implements Comparable, ISerialize, Runnable { return items; } - public THashSet getItemsAt(Class type, int x, int y) { - THashSet items = new THashSet<>(); + public THashSet getItemsAt(Class type, int x, int y) { + THashSet items = new THashSet<>(); - for (HabboItem item : this.getItemsAt(x, y)) { + for (RoomItem item : this.getItemsAt(x, y)) { if (!item.getClass().equals(type)) continue; @@ -3034,19 +2294,27 @@ public class Room implements Comparable, ISerialize, Runnable { return !this.getItemsAt(tile, true).isEmpty(); } - public HabboItem getTopItemAt(int x, int y) { + public RoomItem getTopItemAt(RoomTile tile) { + if(tile == null) { + return null; + } + + return this.getTopItemAt(tile.getX(), tile.getY(), null); + } + + public RoomItem getTopItemAt(int x, int y) { return this.getTopItemAt(x, y, null); } - public HabboItem getTopItemAt(int x, int y, HabboItem exclude) { + public RoomItem getTopItemAt(int x, int y, RoomItem exclude) { RoomTile tile = this.getLayout().getTile((short) x, (short) y); if (tile == null) return null; - HabboItem highestItem = null; + RoomItem highestItem = null; - for (HabboItem item : this.getItemsAt(x, y)) { + for (RoomItem item : this.getItemsAt(x, y)) { if (exclude != null && exclude == item) continue; @@ -3059,14 +2327,14 @@ public class Room implements Comparable, ISerialize, Runnable { return highestItem; } - public HabboItem getTopItemAt(THashSet tiles, HabboItem exclude) { - HabboItem highestItem = null; + public RoomItem getTopItemAt(THashSet tiles, RoomItem exclude) { + RoomItem highestItem = null; for (RoomTile tile : tiles) { if (tile == null) continue; - for (HabboItem item : this.getItemsAt(tile.getX(), tile.getY())) { + for (RoomItem item : this.getItemsAt(tile.getX(), tile.getY())) { if (exclude != null && exclude == item) continue; @@ -3081,7 +2349,7 @@ public class Room implements Comparable, ISerialize, Runnable { } public double getTopHeightAt(int x, int y) { - HabboItem item = this.getTopItemAt(x, y); + RoomItem item = this.getTopItemAt(x, y); if (item != null) { return (item.getZ() + Item.getCurrentHeight(item) - (item.getBaseItem().allowSit() ? 1 : 0)); } else { @@ -3089,12 +2357,12 @@ public class Room implements Comparable, ISerialize, Runnable { } } - public HabboItem getLowestChair(RoomTile tile) { - HabboItem lowestChair = null; + public RoomItem getLowestChair(RoomTile tile) { + RoomItem lowestChair = null; - THashSet items = this.getItemsAt(tile); + THashSet items = this.getItemsAt(tile); if (items != null && !items.isEmpty()) { - for (HabboItem item : items) { + for (RoomItem item : items) { if (!item.getBaseItem().allowSit()) continue; @@ -3109,12 +2377,12 @@ public class Room implements Comparable, ISerialize, Runnable { return lowestChair; } - public HabboItem getTallestChair(RoomTile tile) { - HabboItem lowestChair = null; + public RoomItem getTallestChair(RoomTile tile) { + RoomItem lowestChair = null; - THashSet items = this.getItemsAt(tile); + THashSet items = this.getItemsAt(tile); if (items != null && !items.isEmpty()) { - for (HabboItem item : items) { + for (RoomItem item : items) { if (!item.getBaseItem().allowSit()) continue; @@ -3129,7 +2397,7 @@ public class Room implements Comparable, ISerialize, Runnable { return lowestChair; } - public double getStackHeight(short x, short y, boolean calculateHeightmap, HabboItem exclude) { + public double getStackHeight(short x, short y, boolean calculateHeightmap, RoomItem exclude) { if (x < 0 || y < 0 || this.layout == null) return calculateHeightmap ? Short.MAX_VALUE : 0.0; @@ -3144,16 +2412,16 @@ public class Room implements Comparable, ISerialize, Runnable { double height = this.layout.getHeightAtSquare(x, y); boolean canStack = true; - THashSet stackHelpers = this.getItemsAt(InteractionStackHelper.class, x, y); + THashSet stackHelpers = this.getItemsAt(InteractionStackHelper.class, x, y); - for (HabboItem item : stackHelpers) { + for (RoomItem item : stackHelpers) { if (item == exclude) continue; return calculateHeightmap ? item.getZ() * 256.0D : item.getZ(); } - HabboItem item = this.getTopItemAt(x, y, exclude); + RoomItem item = this.getTopItemAt(x, y, exclude); if (item != null) { canStack = item.getBaseItem().allowStack(); height = item.getZ() + (item.getBaseItem().allowSit() ? 0 : Item.getCurrentHeight(item)); @@ -3171,9 +2439,9 @@ public class Room implements Comparable, ISerialize, Runnable { } public boolean hasObjectTypeAt(Class type, int x, int y) { - THashSet items = this.getItemsAt(x, y); + THashSet items = this.getItemsAt(x, y); - for (HabboItem item : items) { + for (RoomItem item : items) { if (item.getClass() == type) { return true; } @@ -3183,16 +2451,28 @@ public class Room implements Comparable, ISerialize, Runnable { } public boolean canSitOrLayAt(int x, int y) { - if (this.hasHabbosAt(x, y)) + RoomTile tile = this.getLayout().getTile((short) x, (short) y); + + if(tile == null) { + return false; + } + + if (this.roomUnitManager.hasHabbosAt(tile)) return false; - THashSet items = this.getItemsAt(x, y); + THashSet items = this.getItemsAt(x, y); return this.canSitAt(items) || this.canLayAt(items); } public boolean canSitAt(int x, int y) { - if (this.hasHabbosAt(x, y)) + RoomTile tile = this.getLayout().getTile((short) x, (short) y); + + if(tile == null) { + return false; + } + + if (this.roomUnitManager.hasHabbosAt(tile)) return false; return this.canSitAt(this.getItemsAt(x, y)); @@ -3206,11 +2486,11 @@ public class Room implements Comparable, ISerialize, Runnable { if (roomTile.getState() == RoomTileState.INVALID) return false; - HabboItem topItem = null; + RoomItem topItem = null; boolean canWalk = true; - THashSet items = this.getItemsAt(roomTile); + THashSet items = this.getItemsAt(roomTile); if (items != null) { - for (HabboItem item : items) { + for (RoomItem item : items) { if (topItem == null) { topItem = item; } @@ -3230,13 +2510,13 @@ public class Room implements Comparable, ISerialize, Runnable { return canWalk; } - boolean canSitAt(THashSet items) { + boolean canSitAt(THashSet items) { if (items == null) return false; - HabboItem tallestItem = null; + RoomItem tallestItem = null; - for (HabboItem item : items) { + for (RoomItem item : items) { if (tallestItem != null && tallestItem.getZ() + Item.getCurrentHeight(tallestItem) > item.getZ() + Item.getCurrentHeight(item)) continue; @@ -3253,13 +2533,13 @@ public class Room implements Comparable, ISerialize, Runnable { return this.canLayAt(this.getItemsAt(x, y)); } - boolean canLayAt(THashSet items) { + boolean canLayAt(THashSet items) { if (items == null || items.isEmpty()) return true; - HabboItem topItem = null; + RoomItem topItem = null; - for (HabboItem item : items) { + for (RoomItem item : items) { if ((topItem == null || item.getZ() > topItem.getZ())) { topItem = item; } @@ -3280,7 +2560,7 @@ public class Room implements Comparable, ISerialize, Runnable { } public Habbo getHabbo(String username) { - for (Habbo habbo : this.getHabbos()) { + for (Habbo habbo : this.roomUnitManager.getRoomHabbos()) { if (habbo.getHabboInfo().getUsername().equalsIgnoreCase(username)) return habbo; } @@ -3288,20 +2568,16 @@ public class Room implements Comparable, ISerialize, Runnable { } public Habbo getHabbo(RoomUnit roomUnit) { - for (Habbo habbo : this.getHabbos()) { + for (Habbo habbo : this.roomUnitManager.getRoomHabbos()) { if (habbo.getRoomUnit() == roomUnit) return habbo; } return null; } - public Habbo getHabbo(int userId) { - return this.currentHabbos.get(userId); - } - public Habbo getHabboByRoomUnitId(int roomUnitId) { - for (Habbo habbo : this.getHabbos()) { - if (habbo.getRoomUnit().getId() == roomUnitId) + for (Habbo habbo : this.roomUnitManager.getRoomHabbos()) { + if (habbo.getRoomUnit().getVirtualId() == roomUnitId) return habbo; } @@ -3309,7 +2585,7 @@ public class Room implements Comparable, ISerialize, Runnable { } public void sendComposer(ServerMessage message) { - for (Habbo habbo : this.getHabbos()) { + for (Habbo habbo : this.roomUnitManager.getRoomHabbos()) { if (habbo.getClient() == null) continue; habbo.getClient().sendResponse(message); @@ -3317,7 +2593,7 @@ public class Room implements Comparable, ISerialize, Runnable { } public void sendComposerToHabbosWithRights(ServerMessage message) { - for (Habbo habbo : this.getHabbos()) { + for (Habbo habbo : this.roomUnitManager.getRoomHabbos()) { if (this.hasRights(habbo)) { habbo.getClient().sendResponse(message); } @@ -3325,7 +2601,7 @@ public class Room implements Comparable, ISerialize, Runnable { } public void petChat(ServerMessage message) { - for (Habbo habbo : this.getHabbos()) { + for (Habbo habbo : this.roomUnitManager.getRoomHabbos()) { if (!habbo.getHabboStats().isIgnorePets()) habbo.getClient().sendResponse(message); } @@ -3336,7 +2612,7 @@ public class Room implements Comparable, ISerialize, Runnable { return; } - for (Habbo habbo : this.getHabbos()) { + for (Habbo habbo : this.roomUnitManager.getRoomHabbos()) { if (habbo == null) { return ; } if (!habbo.getHabboStats().isIgnoreBots()) habbo.getClient().sendResponse(message); @@ -3346,7 +2622,7 @@ public class Room implements Comparable, ISerialize, Runnable { private void loadRights(Connection connection) { this.rights.clear(); try (PreparedStatement statement = connection.prepareStatement("SELECT user_id FROM room_rights WHERE room_id = ?")) { - statement.setInt(1, this.id); + statement.setInt(1, this.roomInfo.getId()); try (ResultSet set = statement.executeQuery()) { while (set.next()) { this.rights.add(set.getInt(DatabaseConstants.USER_ID)); @@ -3364,7 +2640,7 @@ public class Room implements Comparable, ISerialize, Runnable { try (PreparedStatement statement = connection.prepareStatement("SELECT users.username, users.id, room_bans.* FROM room_bans INNER JOIN users ON room_bans.user_id = users.id WHERE ends > ? AND room_bans.room_id = ?")) { statement.setInt(1, Emulator.getIntUnixTimestamp()); - statement.setInt(2, this.id); + statement.setInt(2, this.roomInfo.getId()); try (ResultSet set = statement.executeQuery()) { while (set.next()) { if (this.bannedHabbos.containsKey(set.getInt(DatabaseConstants.USER_ID))) @@ -3379,13 +2655,15 @@ public class Room implements Comparable, ISerialize, Runnable { } public RoomRightLevels getGuildRightLevel(Habbo habbo) { - if (this.guildId > 0 && habbo.getHabboStats().hasGuild(this.guildId)) { - Guild guild = Emulator.getGameEnvironment().getGuildManager().getGuild(this.guildId); + if(!this.roomInfo.hasGuild()) { + return RoomRightLevels.NONE; + } - if (Emulator.getGameEnvironment().getGuildManager().getOnlyAdmins(guild).get(habbo.getHabboInfo().getId()) != null) + if (habbo.getHabboStats().hasGuild(this.roomInfo.getGuild().getId())) { + if (Emulator.getGameEnvironment().getGuildManager().getOnlyAdmins(this.roomInfo.getGuild()).get(habbo.getHabboInfo().getId()) != null) return RoomRightLevels.GUILD_ADMIN; - if (guild.isRights()) { + if (this.roomInfo.getGuild().isRights()) { return RoomRightLevels.GUILD_RIGHTS; } } @@ -3393,20 +2671,8 @@ public class Room implements Comparable, ISerialize, Runnable { return RoomRightLevels.NONE; } - /** - * @deprecated Deprecated since 2.5.0. Use {@link #getGuildRightLevel(Habbo)} instead. - */ - @Deprecated - public int guildRightLevel(Habbo habbo) { - return this.getGuildRightLevel(habbo).getLevel(); - } - - public boolean isOwner(Habbo habbo) { - return habbo.getHabboInfo().getId() == this.ownerId || habbo.hasRight(Permission.ACC_ANYROOMOWNER); - } - public boolean hasRights(Habbo habbo) { - return this.isOwner(habbo) || this.rights.contains(habbo.getHabboInfo().getId()) || (habbo.getRoomUnit().getRightsLevel() != RoomRightLevels.NONE && this.currentHabbos.containsKey(habbo.getHabboInfo().getId())); + return this.getRoomInfo().isRoomOwner(habbo) || this.rights.contains(habbo.getHabboInfo().getId()) || (habbo.getRoomUnit().getRightsLevel() != RoomRightLevels.NONE && this.roomUnitManager.getCurrentRoomHabbos().containsKey(habbo.getHabboInfo().getId())); } public void giveRights(Habbo habbo) { @@ -3421,7 +2687,7 @@ public class Room implements Comparable, ISerialize, Runnable { if (this.rights.add(userId)) { try (Connection connection = Emulator.getDatabase().getDataSource().getConnection(); PreparedStatement statement = connection.prepareStatement("INSERT INTO room_rights VALUES (?, ?)")) { - statement.setInt(1, this.id); + statement.setInt(1, this.roomInfo.getId()); statement.setInt(2, userId); statement.execute(); } catch (SQLException e) { @@ -3429,14 +2695,14 @@ public class Room implements Comparable, ISerialize, Runnable { } } - Habbo habbo = this.getHabbo(userId); + Habbo habbo = this.roomUnitManager.getRoomHabboById(userId); if (habbo != null) { this.refreshRightsForHabbo(habbo); this.sendComposer(new FlatControllerAddedComposer(this, habbo.getHabboInfo().getId(), habbo.getHabboInfo().getUsername()).compose()); } else { - Habbo owner = Emulator.getGameEnvironment().getHabboManager().getHabbo(this.ownerId); + Habbo owner = Emulator.getGameEnvironment().getHabboManager().getHabbo(this.roomInfo.getOwnerInfo().getId()); if (owner != null) { MessengerBuddy buddy = owner.getMessenger().getFriend(userId); @@ -3449,16 +2715,16 @@ public class Room implements Comparable, ISerialize, Runnable { } public void removeRights(int userId) { - Habbo habbo = this.getHabbo(userId); + Habbo habbo = this.roomUnitManager.getRoomHabboById(userId); - if (Emulator.getPluginManager().fireEvent(new UserRightsTakenEvent(this.getHabbo(this.getOwnerId()), userId, habbo)).isCancelled()) + if (Emulator.getPluginManager().fireEvent(new UserRightsTakenEvent(this.roomUnitManager.getRoomHabboById(this.roomInfo.getOwnerInfo().getId()), userId, habbo)).isCancelled()) return; this.sendComposer(new FlatControllerRemovedComposer(this, userId).compose()); if (this.rights.remove(userId)) { try (Connection connection = Emulator.getDatabase().getDataSource().getConnection(); PreparedStatement statement = connection.prepareStatement("DELETE FROM room_rights WHERE room_id = ? AND user_id = ?")) { - statement.setInt(1, this.id); + statement.setInt(1, this.roomInfo.getId()); statement.setInt(2, userId); statement.execute(); } catch (SQLException e) { @@ -3482,7 +2748,7 @@ public class Room implements Comparable, ISerialize, Runnable { this.rights.clear(); try (Connection connection = Emulator.getDatabase().getDataSource().getConnection(); PreparedStatement statement = connection.prepareStatement("DELETE FROM room_rights WHERE room_id = ?")) { - statement.setInt(1, this.id); + statement.setInt(1, this.roomInfo.getId()); statement.execute(); } catch (SQLException e) { log.error(CAUGHT_SQL_EXCEPTION, e); @@ -3493,15 +2759,15 @@ public class Room implements Comparable, ISerialize, Runnable { void refreshRightsInRoom() { Room room = this; - for (Habbo habbo : this.getHabbos()) { - if (habbo.getHabboInfo().getCurrentRoom() == room) { + for (Habbo habbo : this.roomUnitManager.getRoomHabbos()) { + if (habbo.getRoomUnit().getRoom() == room) { this.refreshRightsForHabbo(habbo); } } } public void refreshRightsForHabbo(Habbo habbo) { - HabboItem item; + RoomItem item; RoomRightLevels flatCtrl = RoomRightLevels.NONE; if (habbo.getHabboStats().isRentingSpace()) { item = this.getHabboItem(habbo.getHabboStats().getRentedItemId()); @@ -3511,19 +2777,19 @@ public class Room implements Comparable, ISerialize, Runnable { } } - if (habbo.hasRight(Permission.ACC_ANYROOMOWNER) || this.isOwner(habbo)) { + if (habbo.hasRight(Permission.ACC_ANYROOMOWNER) || this.getRoomInfo().isRoomOwner(habbo)) { habbo.getClient().sendResponse(new YouAreOwnerMessageComposer()); flatCtrl = RoomRightLevels.MODERATOR; - } else if (this.hasRights(habbo) && !this.hasGuild()) { + } else if (this.hasRights(habbo) && !this.roomInfo.hasGuild()) { flatCtrl = RoomRightLevels.RIGHTS; - } else if (this.hasGuild()) { + } else if (this.roomInfo.hasGuild()) { flatCtrl = this.getGuildRightLevel(habbo); } habbo.getClient().sendResponse(new YouAreControllerMessageComposer(flatCtrl)); habbo.getRoomUnit().setStatus(RoomUnitStatus.FLAT_CONTROL, flatCtrl.getLevel() + ""); habbo.getRoomUnit().setRightsLevel(flatCtrl); - habbo.getRoomUnit().statusUpdate(true); + habbo.getRoomUnit().setStatusUpdateNeeded(true); if (flatCtrl.equals(RoomRightLevels.MODERATOR)) { habbo.getClient().sendResponse(new FlatControllersComposer(this)); @@ -3535,7 +2801,7 @@ public class Room implements Comparable, ISerialize, Runnable { if (!this.rights.isEmpty()) { try (Connection connection = Emulator.getDatabase().getDataSource().getConnection(); PreparedStatement statement = connection.prepareStatement("SELECT users.username AS username, users.id as user_id FROM room_rights INNER JOIN users ON room_rights.user_id = users.id WHERE room_id = ?")) { - statement.setInt(1, this.id); + statement.setInt(1, this.roomInfo.getId()); try (ResultSet set = statement.executeQuery()) { while (set.next()) { rightsMap.put(set.getInt(DatabaseConstants.USER_ID), set.getString("username")); @@ -3587,8 +2853,8 @@ public class Room implements Comparable, ISerialize, Runnable { } this.dance(habbo, DanceType.NONE); - habbo.getRoomUnit().setCmdSit(true); - habbo.getRoomUnit().setBodyRotation(RoomUserRotation.values()[habbo.getRoomUnit().getBodyRotation().getValue() - habbo.getRoomUnit().getBodyRotation().getValue() % 2]); + habbo.getRoomUnit().setCmdSitEnabled(true); + habbo.getRoomUnit().setBodyRotation(RoomRotation.values()[habbo.getRoomUnit().getBodyRotation().getValue() - habbo.getRoomUnit().getBodyRotation().getValue() % 2]); habbo.getRoomUnit().setStatus(RoomUnitStatus.SIT, 0.5 + ""); this.sendComposer(new UserUpdateComposer(habbo.getRoomUnit()).compose()); } @@ -3596,23 +2862,23 @@ public class Room implements Comparable, ISerialize, Runnable { public void makeStand(Habbo habbo) { if (habbo.getRoomUnit() == null) return; - HabboItem item = this.getTopItemAt(habbo.getRoomUnit().getX(), habbo.getRoomUnit().getY()); + RoomItem item = this.getTopItemAt(habbo.getRoomUnit().getCurrentPosition().getX(), habbo.getRoomUnit().getCurrentPosition().getY()); if (item == null || !item.getBaseItem().allowSit() || !item.getBaseItem().allowLay()) { - habbo.getRoomUnit().setCmdStand(true); - habbo.getRoomUnit().setBodyRotation(RoomUserRotation.values()[habbo.getRoomUnit().getBodyRotation().getValue() - habbo.getRoomUnit().getBodyRotation().getValue() % 2]); + habbo.getRoomUnit().setCmdStandEnabled(true); + habbo.getRoomUnit().setBodyRotation(RoomRotation.values()[habbo.getRoomUnit().getBodyRotation().getValue() - habbo.getRoomUnit().getBodyRotation().getValue() % 2]); habbo.getRoomUnit().removeStatus(RoomUnitStatus.SIT); this.sendComposer(new UserUpdateComposer(habbo.getRoomUnit()).compose()); } } public void giveEffect(Habbo habbo, int effectId, int duration, boolean ignoreChecks) { - if (habbo != null && habbo.getRoomUnit() != null && this.currentHabbos.containsKey(habbo.getHabboInfo().getId())) { + if (habbo != null && habbo.getRoomUnit() != null && this.roomUnitManager.getCurrentRoomHabbos().containsKey(habbo.getHabboInfo().getId())) { this.giveEffect(habbo.getRoomUnit(), effectId, duration, ignoreChecks); } } public void giveEffect(Habbo habbo, int effectId, int duration) { - if (habbo != null && habbo.getRoomUnit() != null && this.currentHabbos.containsKey(habbo.getHabboInfo().getId())) { + if (habbo != null && habbo.getRoomUnit() != null && this.roomUnitManager.getCurrentRoomHabbos().containsKey(habbo.getHabboInfo().getId())) { this.giveEffect(habbo.getRoomUnit(), effectId, duration, false); } } @@ -3622,38 +2888,35 @@ public class Room implements Comparable, ISerialize, Runnable { } public void giveEffect(RoomUnit roomUnit, int effectId, int duration, boolean ignoreChecks) { - if (roomUnit == null || roomUnit.getRoom() == null) return; + if (roomUnit == null || !roomUnit.isInRoom() || !(roomUnit instanceof RoomAvatar roomAvatar)) { + return; + } - Habbo habbo = roomUnit.getRoom().getHabbo(roomUnit); + Habbo habbo = this.getRoomUnitManager().getHabboByRoomUnit(roomAvatar); - if (roomUnit.getRoomUnitType() == RoomUnitType.USER && (habbo == null || habbo.getHabboInfo().isInGame() && !ignoreChecks)) { return; } - if (duration == -1 || duration == Integer.MAX_VALUE) { - duration = Integer.MAX_VALUE; - } else { - duration += Emulator.getIntUnixTimestamp(); - } + if (roomAvatar.getRoomUnitType() == RoomUnitType.HABBO && (habbo == null || habbo.getHabboInfo().isInGame() && !ignoreChecks)) { + return; + } - if ((this.allowEffects || ignoreChecks) && !roomUnit.isSwimming()) { - roomUnit.setEffectId(effectId, duration); - this.sendComposer(new AvatarEffectMessageComposer(roomUnit).compose()); - } + if (duration == -1 || duration == Integer.MAX_VALUE) { + duration = Integer.MAX_VALUE; + } else { + duration += Emulator.getIntUnixTimestamp(); + } + + if ((this.allowEffects || ignoreChecks) && !roomAvatar.isSwimming()) { + roomAvatar.setEffectId(effectId); + roomAvatar.setEffectEndTimestamp(duration); + this.sendComposer(new AvatarEffectMessageComposer(roomAvatar).compose()); + } } - public void giveHandItem(Habbo habbo, int handItem) { - this.giveHandItem(habbo.getRoomUnit(), handItem); - } - - public void giveHandItem(RoomUnit roomUnit, int handItem) { - roomUnit.setHandItem(handItem); - this.sendComposer(new CarryObjectMessageComposer(roomUnit).compose()); - } - - public void updateItem(HabboItem item) { + public void updateItem(RoomItem item) { if (!this.isLoaded()) { return; } - if (item != null && item.getRoomId() == this.id && item.getBaseItem() != null) { + if (item != null && item.getRoomId() == this.roomInfo.getId() && item.getBaseItem() != null) { if (item.getBaseItem().getType() == FurnitureType.FLOOR) { this.sendComposer(new ObjectUpdateMessageComposer(item).compose()); this.updateTiles(this.getLayout().getTilesAt(this.layout.getTile(item.getX(), item.getY()), item.getBaseItem().getWidth(), item.getBaseItem().getLength(), item.getRotation())); @@ -3664,7 +2927,7 @@ public class Room implements Comparable, ISerialize, Runnable { } - public void updateItemState(HabboItem item) { + public void updateItemState(RoomItem item) { if (!item.isLimited()) { this.sendComposer(new OneWayDoorStatusMessageComposer(item).compose()); } else { @@ -3689,7 +2952,7 @@ public class Room implements Comparable, ISerialize, Runnable { public int getUserUniqueFurniCount(int userId) { THashSet items = new THashSet<>(); - for (HabboItem item : this.roomItems.valueCollection()) { + for (RoomItem item : this.roomItems.valueCollection()) { if (!items.contains(item.getBaseItem()) && item.getUserId() == userId) items.add(item.getBaseItem()); } @@ -3697,9 +2960,9 @@ public class Room implements Comparable, ISerialize, Runnable { } public void ejectUserFurni(int userId) { - THashSet items = new THashSet<>(); + THashSet items = new THashSet<>(); - TIntObjectIterator iterator = this.roomItems.iterator(); + TIntObjectIterator iterator = this.roomItems.iterator(); for (int i = this.roomItems.size(); i-- > 0; ) { try { @@ -3721,26 +2984,24 @@ public class Room implements Comparable, ISerialize, Runnable { habbo.getClient().sendResponse(new UnseenItemsComposer(items)); } - for (HabboItem i : items) { + for (RoomItem i : items) { this.pickUpItem(i, null); } } - public void ejectUserItem(HabboItem item) { + public void ejectUserItem(RoomItem item) { this.pickUpItem(item, null); } - public void ejectAll() { this.ejectAll(null); } - public void ejectAll(Habbo habbo) { - THashMap> userItemsMap = new THashMap<>(); + THashMap> userItemsMap = new THashMap<>(); synchronized (this.roomItems) { - TIntObjectIterator iterator = this.roomItems.iterator(); + TIntObjectIterator iterator = this.roomItems.iterator(); for (int i = this.roomItems.size(); i-- > 0; ) { try { @@ -3759,8 +3020,8 @@ public class Room implements Comparable, ISerialize, Runnable { } } - for (Map.Entry> entrySet : userItemsMap.entrySet()) { - for (HabboItem i : entrySet.getValue()) { + for (Map.Entry> entrySet : userItemsMap.entrySet()) { + for (RoomItem i : entrySet.getValue()) { this.pickUpItem(i, null); } @@ -3774,10 +3035,10 @@ public class Room implements Comparable, ISerialize, Runnable { } public void refreshGuild(Guild guild) { - if (guild.getRoomId() == this.id) { + if (guild.getRoomId() == this.roomInfo.getId()) { THashSet members = Emulator.getGameEnvironment().getGuildManager().getGuildMembers(guild.getId()); - for (Habbo habbo : this.getHabbos()) { + for (Habbo habbo : this.roomUnitManager.getRoomHabbos()) { Optional member = members.stream().filter(m -> m.getUserId() == habbo.getHabboInfo().getId()).findAny(); if (member.isEmpty()) continue; @@ -3790,8 +3051,8 @@ public class Room implements Comparable, ISerialize, Runnable { } public void refreshGuildColors(Guild guild) { - if (guild.getRoomId() == this.id) { - TIntObjectIterator iterator = this.roomItems.iterator(); + if (guild.getRoomId() == this.roomInfo.getId()) { + TIntObjectIterator iterator = this.roomItems.iterator(); for (int i = this.roomItems.size(); i-- > 0; ) { try { @@ -3800,24 +3061,23 @@ public class Room implements Comparable, ISerialize, Runnable { break; } - HabboItem habboItem = iterator.value(); + RoomItem roomItem = iterator.value(); - if (habboItem instanceof InteractionGuildFurni interactionGuildFurni && interactionGuildFurni.getGuildId() == guild.getId()) { - this.updateItem(habboItem); + if (roomItem instanceof InteractionGuildFurni interactionGuildFurni && interactionGuildFurni.getGuildId() == guild.getId()) { + this.updateItem(roomItem); } } } } public void refreshGuildRightsInRoom() { - for (Habbo habbo : this.getHabbos()) { - if ((habbo.getHabboInfo().getCurrentRoom() == this && habbo.getHabboInfo().getId() != this.ownerId) + for (Habbo habbo : this.roomUnitManager.getRoomHabbos()) { + if ((habbo.getRoomUnit().getRoom() == this && habbo.getHabboInfo().getId() != this.roomInfo.getOwnerInfo().getId()) && (!(habbo.hasRight(Permission.ACC_ANYROOMOWNER) || habbo.hasRight(Permission.ACC_MOVEROTATE)))) this.refreshRightsForHabbo(habbo); } } - public void idle(Habbo habbo) { habbo.getRoomUnit().setIdle(); @@ -3861,7 +3121,7 @@ public class Room implements Comparable, ISerialize, Runnable { try (Connection connection = Emulator.getDatabase().getDataSource().getConnection(); PreparedStatement statement = connection.prepareStatement("INSERT IGNORE INTO room_wordfilter VALUES (?, ?)")) { - statement.setInt(1, this.getId()); + statement.setInt(1, this.roomInfo.getId()); statement.setString(2, word); statement.execute(); } catch (SQLException e) { @@ -3878,7 +3138,7 @@ public class Room implements Comparable, ISerialize, Runnable { this.wordFilterWords.remove(word); try (Connection connection = Emulator.getDatabase().getDataSource().getConnection(); PreparedStatement statement = connection.prepareStatement("DELETE FROM room_wordfilter WHERE room_id = ? AND word = ?")) { - statement.setInt(1, this.getId()); + statement.setInt(1, this.roomInfo.getId()); statement.setString(2, word); statement.execute(); } catch (SQLException e) { @@ -3931,32 +3191,23 @@ public class Room implements Comparable, ISerialize, Runnable { return this.roomItems.size(); } - public void setJukeBoxActive(boolean jukeBoxActive) { - this.jukeboxActive = jukeBoxActive; - this.needsUpdate = true; - } - - public boolean isHideWired() { - return this.hideWired; - } - public void setHideWired(boolean hideWired) { - this.hideWired = hideWired; + this.roomInfo.setHiddenWiredEnabled(hideWired); - if (this.hideWired) { - for (HabboItem item : this.roomSpecialTypes.getTriggers()) { + if (this.roomInfo.isHiddenWiredEnabled()) { + for (RoomItem item : this.roomSpecialTypes.getTriggers()) { this.sendComposer(new RemoveFloorItemComposer(item).compose()); } - for (HabboItem item : this.roomSpecialTypes.getEffects()) { + for (RoomItem item : this.roomSpecialTypes.getEffects()) { this.sendComposer(new RemoveFloorItemComposer(item).compose()); } - for (HabboItem item : this.roomSpecialTypes.getConditions()) { + for (RoomItem item : this.roomSpecialTypes.getConditions()) { this.sendComposer(new RemoveFloorItemComposer(item).compose()); } - for (HabboItem item : this.roomSpecialTypes.getExtras()) { + for (RoomItem item : this.roomSpecialTypes.getExtras()) { this.sendComposer(new RemoveFloorItemComposer(item).compose()); } } else { @@ -3967,7 +3218,7 @@ public class Room implements Comparable, ISerialize, Runnable { } } - public FurnitureMovementError canPlaceFurnitureAt(HabboItem item, Habbo habbo, RoomTile tile, int rotation) { + public FurnitureMovementError canPlaceFurnitureAt(RoomItem item, Habbo habbo, RoomTile tile, int rotation) { if (this.itemCount() >= Room.MAXIMUM_FURNI) { return FurnitureMovementError.MAX_ITEMS; } @@ -3982,7 +3233,7 @@ public class Room implements Comparable, ISerialize, Runnable { } if (habbo.getHabboStats().isRentingSpace()) { - HabboItem rentSpace = this.getHabboItem(habbo.getHabboStats().getRentedItemId()); + RoomItem rentSpace = this.getHabboItem(habbo.getHabboStats().getRentedItemId()); if (rentSpace != null) { if (!RoomLayout.squareInSquare(RoomLayout.getRectangle(rentSpace.getX(), rentSpace.getY(), rentSpace.getBaseItem().getWidth(), rentSpace.getBaseItem().getLength(), rentSpace.getRotation()), RoomLayout.getRectangle(tile.getX(), tile.getY(), item.getBaseItem().getWidth(), item.getBaseItem().getLength(), rotation))) { @@ -3993,7 +3244,7 @@ public class Room implements Comparable, ISerialize, Runnable { } } - for (HabboItem area : this.getRoomSpecialTypes().getItemsOfType(InteractionBuildArea.class)) { + for (RoomItem area : this.getRoomSpecialTypes().getItemsOfType(InteractionBuildArea.class)) { if (((InteractionBuildArea) area).inSquare(tile) && ((InteractionBuildArea) area).isBuilder(habbo.getHabboInfo().getUsername())) { return FurnitureMovementError.NONE; } @@ -4002,11 +3253,11 @@ public class Room implements Comparable, ISerialize, Runnable { return FurnitureMovementError.NO_RIGHTS; } - public FurnitureMovementError furnitureFitsAt(RoomTile tile, HabboItem item, int rotation) { + public FurnitureMovementError furnitureFitsAt(RoomTile tile, RoomItem item, int rotation) { return furnitureFitsAt(tile, item, rotation, true); } - public FurnitureMovementError furnitureFitsAt(RoomTile tile, HabboItem item, int rotation, boolean checkForUnits) { + public FurnitureMovementError furnitureFitsAt(RoomTile tile, RoomItem item, int rotation, boolean checkForUnits) { if (!this.layout.fitsOnMap(tile, item.getBaseItem().getWidth(), item.getBaseItem().getLength(), rotation)) return FurnitureMovementError.INVALID_MOVE; @@ -4017,20 +3268,25 @@ public class Room implements Comparable, ISerialize, Runnable { for (RoomTile t : occupiedTiles) { if (t.getState() == RoomTileState.INVALID) return FurnitureMovementError.INVALID_MOVE; if (!Emulator.getConfig().getBoolean("wired.place.under", false) || (Emulator.getConfig().getBoolean("wired.place.under", false) && !item.isWalkable() && !item.getBaseItem().allowSit() && !item.getBaseItem().allowLay())) { - if (checkForUnits && this.hasHabbosAt(t.getX(), t.getY())) - return FurnitureMovementError.TILE_HAS_HABBOS; - if (checkForUnits && this.hasBotsAt(t.getX(), t.getY())) return FurnitureMovementError.TILE_HAS_BOTS; - if (checkForUnits && this.hasPetsAt(t.getX(), t.getY())) return FurnitureMovementError.TILE_HAS_PETS; + if (checkForUnits) { + if (this.roomUnitManager.hasHabbosAt(t)) return FurnitureMovementError.TILE_HAS_HABBOS; + } + if (checkForUnits) { + if (!this.roomUnitManager.getBotsAt(t).isEmpty()) return FurnitureMovementError.TILE_HAS_BOTS; + } + if (checkForUnits) { + if (this.roomUnitManager.hasPetsAt(t)) return FurnitureMovementError.TILE_HAS_PETS; + } } } - Optional stackHelper = this.getItemsAt(tile).stream().filter(InteractionStackHelper.class::isInstance).findAny(); + Optional stackHelper = this.getItemsAt(tile).stream().filter(InteractionStackHelper.class::isInstance).findAny(); - List>> tileFurniList = new ArrayList<>(); + List>> tileFurniList = new ArrayList<>(); for (RoomTile t : occupiedTiles) { tileFurniList.add(Pair.create(t, this.getItemsAt(t))); - HabboItem topItem = this.getTopItemAt(t.getX(), t.getY(), item); + RoomItem topItem = this.getTopItemAt(t.getX(), t.getY(), item); if (topItem != null && !topItem.getBaseItem().allowStack() && !t.getAllowStack()) { return FurnitureMovementError.CANT_STACK; } @@ -4047,7 +3303,7 @@ public class Room implements Comparable, ISerialize, Runnable { return FurnitureMovementError.NONE; } - public FurnitureMovementError placeFloorFurniAt(HabboItem item, RoomTile tile, int rotation, Habbo owner) { + public FurnitureMovementError placeFloorFurniAt(RoomItem item, RoomTile tile, int rotation, Habbo owner) { boolean pluginHelper = false; if (Emulator.getPluginManager().isRegistered(FurniturePlacedEvent.class, true)) { FurniturePlacedEvent event = Emulator.getPluginManager().fireEvent(new FurniturePlacedEvent(item, owner, tile)); @@ -4093,13 +3349,13 @@ public class Room implements Comparable, ISerialize, Runnable { item.needsUpdate(true); this.addHabboItem(item); - item.setRoomId(this.id); + item.setRoomId(this.roomInfo.getId()); item.onPlace(this); this.updateTiles(occupiedTiles); this.sendComposer(new ObjectAddMessageComposer(item, this.getFurniOwnerName(item.getUserId())).compose()); for (RoomTile t : occupiedTiles) { - this.updateHabbosAt(t.getX(), t.getY()); + this.updateHabbosAt(t); this.updateBotsAt(t.getX(), t.getY()); } @@ -4107,7 +3363,7 @@ public class Room implements Comparable, ISerialize, Runnable { return FurnitureMovementError.NONE; } - public FurnitureMovementError placeWallFurniAt(HabboItem item, String wallPosition, Habbo owner) { + public FurnitureMovementError placeWallFurniAt(RoomItem item, String wallPosition, Habbo owner) { if (!(this.hasRights(owner) || this.getGuildRightLevel(owner).isEqualOrGreaterThan(RoomRightLevels.GUILD_RIGHTS))) { return FurnitureMovementError.NO_RIGHTS; } @@ -4127,21 +3383,21 @@ public class Room implements Comparable, ISerialize, Runnable { this.sendComposer(new ItemAddMessageComposer(item, this.getFurniOwnerName(item.getUserId())).compose()); item.needsUpdate(true); this.addHabboItem(item); - item.setRoomId(this.id); + item.setRoomId(this.roomInfo.getId()); item.onPlace(this); Emulator.getThreading().run(item); return FurnitureMovementError.NONE; } - public FurnitureMovementError moveFurniTo(HabboItem item, RoomTile tile, int rotation, Habbo actor) { + public FurnitureMovementError moveFurniTo(RoomItem item, RoomTile tile, int rotation, Habbo actor) { return moveFurniTo(item, tile, rotation, actor, true, true); } - public FurnitureMovementError moveFurniTo(HabboItem item, RoomTile tile, int rotation, Habbo actor, boolean sendUpdates) { + public FurnitureMovementError moveFurniTo(RoomItem item, RoomTile tile, int rotation, Habbo actor, boolean sendUpdates) { return moveFurniTo(item, tile, rotation, actor, sendUpdates, true); } - public FurnitureMovementError moveFurniTo(HabboItem item, RoomTile tile, int rotation, Habbo actor, boolean sendUpdates, boolean checkForUnits) { + public FurnitureMovementError moveFurniTo(RoomItem item, RoomTile tile, int rotation, Habbo actor, boolean sendUpdates, boolean checkForUnits) { RoomTile oldLocation = this.layout.getTile(item.getX(), item.getY()); boolean pluginHelper = false; @@ -4155,18 +3411,18 @@ public class Room implements Comparable, ISerialize, Runnable { boolean magicTile = item instanceof InteractionStackHelper; - Optional stackHelper = this.getItemsAt(tile).stream().filter(InteractionStackHelper.class::isInstance).findAny(); + Optional stackHelper = this.getItemsAt(tile).stream().filter(InteractionStackHelper.class::isInstance).findAny(); //Check if can be placed at new position THashSet occupiedTiles = this.layout.getTilesAt(tile, item.getBaseItem().getWidth(), item.getBaseItem().getLength(), rotation); THashSet newOccupiedTiles = this.layout.getTilesAt(tile, item.getBaseItem().getWidth(), item.getBaseItem().getLength(), rotation); - HabboItem topItem = this.getTopItemAt(occupiedTiles, null); + RoomItem topItem = this.getTopItemAt(occupiedTiles, null); if ((stackHelper.isEmpty() && !pluginHelper) || item.getBaseItem().getInteractionType().getType() == InteractionWater.class) { if (oldLocation != tile) { for (RoomTile t : occupiedTiles) { - HabboItem tileTopItem = this.getTopItemAt(t.getX(), t.getY()); + RoomItem tileTopItem = this.getTopItemAt(t.getX(), t.getY()); if (!magicTile && (tileTopItem != null && tileTopItem != item ? (t.getState().equals(RoomTileState.INVALID) || !t.getAllowStack() || !tileTopItem.getBaseItem().allowStack() || (tileTopItem.getBaseItem().getInteractionType().getType() == InteractionWater.class && (item.getBaseItem().getInteractionType().getType() != InteractionWaterItem.class || item.getBaseItem().getInteractionType().getType() == InteractionWater.class))) : this.calculateTileState(t, item).equals(RoomTileState.INVALID)) || stackHelper.isPresent() && item.getBaseItem().getInteractionType().getType() == InteractionWater.class) { return FurnitureMovementError.CANT_STACK; @@ -4174,18 +3430,18 @@ public class Room implements Comparable, ISerialize, Runnable { if (!Emulator.getConfig().getBoolean("wired.place.under", false) || (Emulator.getConfig().getBoolean("wired.place.under", false) && !item.isWalkable() && !item.getBaseItem().allowSit())) { if (checkForUnits && !magicTile) { - if (this.hasHabbosAt(t.getX(), t.getY())) + if (this.roomUnitManager.hasHabbosAt(t)) return FurnitureMovementError.TILE_HAS_HABBOS; - if (this.hasBotsAt(t.getX(), t.getY())) + if (!this.roomUnitManager.getBotsAt(t).isEmpty()) return FurnitureMovementError.TILE_HAS_BOTS; - if (this.hasPetsAt(t.getX(), t.getY())) + if (this.roomUnitManager.hasPetsAt(t)) return FurnitureMovementError.TILE_HAS_PETS; } } } } - List>> tileFurniList = new ArrayList<>(); + List>> tileFurniList = new ArrayList<>(); for (RoomTile t : occupiedTiles) { tileFurniList.add(Pair.create(t, this.getItemsAt(t))); } @@ -4282,7 +3538,7 @@ public class Room implements Comparable, ISerialize, Runnable { this.updateHabbosAt( t.getX(), t.getY(), - this.getHabbosAt(t.getX(), t.getY()) + new ArrayList<>(this.roomUnitManager.getHabbosAt(t)) /*.stream() .filter(h -> !h.getRoomUnit().hasStatus(RoomUnitStatus.MOVE) || h.getRoomUnit().getGoal() == t) .collect(Collectors.toCollection(THashSet::new))*/ @@ -4291,7 +3547,7 @@ public class Room implements Comparable, ISerialize, Runnable { } if (Emulator.getConfig().getBoolean("wired.place.under", false)) { for (RoomTile t : newOccupiedTiles) { - for (Habbo h : this.getHabbosAt(t.getX(), t.getY())) { + for (Habbo h : this.roomUnitManager.getHabbosAt(t)) { try { item.onWalkOn(h.getRoomUnit(), this, null); } catch (Exception ignored) { @@ -4303,13 +3559,13 @@ public class Room implements Comparable, ISerialize, Runnable { return FurnitureMovementError.NONE; } - public FurnitureMovementError slideFurniTo(HabboItem item, RoomTile tile, int rotation) { + public FurnitureMovementError slideFurniTo(RoomItem item, RoomTile tile, int rotation) { boolean magicTile = item instanceof InteractionStackHelper; //Check if can be placed at new position THashSet occupiedTiles = this.layout.getTilesAt(tile, item.getBaseItem().getWidth(), item.getBaseItem().getLength(), rotation); - List>> tileFurniList = new ArrayList<>(); + List>> tileFurniList = new ArrayList<>(); for (RoomTile t : occupiedTiles) { tileFurniList.add(Pair.create(t, this.getItemsAt(t))); } @@ -4333,94 +3589,113 @@ public class Room implements Comparable, ISerialize, Runnable { //Update Habbos at old position for (RoomTile t : occupiedTiles) { - this.updateHabbosAt(t.getX(), t.getY()); + this.updateHabbosAt(t); this.updateBotsAt(t.getX(), t.getY()); } return FurnitureMovementError.NONE; } - public THashSet getRoomUnits() { - return getRoomUnits(null); + public TIntObjectMap getHabboQueue() { + return this.habboQueue; } - public THashSet getRoomUnits(RoomTile atTile) { - THashSet units = new THashSet<>(); - - for (Habbo habbo : this.currentHabbos.values()) { - if (habbo != null && habbo.getRoomUnit() != null && habbo.getRoomUnit().getRoom() != null && habbo.getRoomUnit().getRoom().getId() == this.getId() && (atTile == null || habbo.getRoomUnit().getCurrentLocation() == atTile)) { - units.add(habbo.getRoomUnit()); - } - } - - for (Pet pet : this.currentPets.valueCollection()) { - if (pet != null && pet.getRoomUnit() != null && pet.getRoomUnit().getRoom() != null && pet.getRoomUnit().getRoom().getId() == this.getId() && (atTile == null || pet.getRoomUnit().getCurrentLocation() == atTile)) { - units.add(pet.getRoomUnit()); - } - } - - for (Bot bot : this.currentBots.valueCollection()) { - if (bot != null && bot.getRoomUnit() != null && bot.getRoomUnit().getRoom() != null && bot.getRoomUnit().getRoom().getId() == this.getId() && (atTile == null || bot.getRoomUnit().getCurrentLocation() == atTile)) { - units.add(bot.getRoomUnit()); - } - } - - return units; + public TIntArrayList getRights() { + return this.rights; } - public Collection getRoomUnitsAt(RoomTile tile) { - THashSet roomUnits = getRoomUnits(); - return roomUnits.stream().filter(unit -> unit.getCurrentLocation() == tile).collect(Collectors.toSet()); + public ConcurrentSet getGames() { + return this.games; } - private void startPeriodicalCycle() { - this.wiredPeriodicalCycle = Emulator.getThreading().run(() -> { - if(Emulator.isShuttingDown) { - return; - } + public TIntObjectMap getFurniOwnerNames() { + return this.furniOwnerNames; + } - this.startPeriodicalCycle(); + public THashSet getWordFilterWords() { + return this.wordFilterWords; + } - List periodicals = new ArrayList<>(); + public String getWordQuiz() { + return this.wordQuiz; + } - if(this.getRoomSpecialTypes().getTriggers(WiredTriggerType.PERIODICALLY) != null) { - periodicals.addAll(this.getRoomSpecialTypes().getTriggers(WiredTriggerType.PERIODICALLY)); - } - - if(this.getRoomSpecialTypes().getTriggers(WiredTriggerType.PERIODICALLY_LONG) != null) { - periodicals.addAll(this.getRoomSpecialTypes().getTriggers(WiredTriggerType.PERIODICALLY_LONG)); - } + public int getNoVotes() { + return this.noVotes; + } - if(periodicals.isEmpty()) { - return; - } + public int getYesVotes() { + return this.yesVotes; + } - periodicals.parallelStream().forEach(trigger -> { - if(!(trigger instanceof IWiredPeriodical)) { - return; - } + public int getWordQuizEnd() { + return this.wordQuizEnd; + } - RoomTile triggerTile = this.layout.getTile(trigger.getX(), trigger.getY()); + public RoomLayout getLayout() { + return this.layout; + } - if (this.triggersOnRoom.containsKey(triggerTile)) { - if(this.triggersOnRoom.get(triggerTile).getId() != trigger.getId()) { - if(((IWiredPeriodical) this.triggersOnRoom.get(triggerTile)).getInterval() <= ((IWiredPeriodical) trigger).getInterval()) { - return; - } else { - this.triggersOnRoom.put(triggerTile, trigger); - } - } - } else { - this.triggersOnRoom.put(triggerTile, trigger); - } + public boolean isAllowBotsWalk() { + return this.allowBotsWalk; + } - if(this.periodicalTick % (((IWiredPeriodical) trigger).getInterval() / 500) != 0) { - return; - } + public RoomPromotion getPromotion() { + return this.promotion; + } - WiredHandler.handle(trigger, null, this, new Object[]{trigger}); - }); + public boolean isLoaded() { + return this.loaded; + } - ++this.periodicalTick; - }, 500L); + public boolean isPreLoaded() { + return this.preLoaded; + } + + public int getLastTimerReset() { + return this.lastTimerReset; + } + + public boolean isMuted() { + return this.muted; + } + + public RoomSpecialTypes getRoomSpecialTypes() { + return this.roomSpecialTypes; + } + + public TraxManager getTraxManager() { + return this.traxManager; + } + + public long getCycleTimestamp() { + return this.cycleTimestamp; + } + + public HashMap getTriggersOnRoom() { + return this.triggersOnRoom; + } + + public void setLayout(RoomLayout layout) { + this.layout = layout; + } + + public void setAllowBotsWalk(boolean allowBotsWalk) { + this.allowBotsWalk = allowBotsWalk; + } + + public void setAllowEffects(boolean allowEffects) { + this.allowEffects = allowEffects; + } + + public void setNeedsUpdate(boolean needsUpdate) { + this.needsUpdate = needsUpdate; + } + + public void setLastTimerReset(int lastTimerReset) { + this.lastTimerReset = lastTimerReset; + } + + public void setMuted(boolean muted) { + this.muted = muted; } } diff --git a/src/main/java/com/eu/habbo/habbohotel/rooms/RoomChatMessage.java b/src/main/java/com/eu/habbo/habbohotel/rooms/RoomChatMessage.java index f5ae4749..9dde4a35 100644 --- a/src/main/java/com/eu/habbo/habbohotel/rooms/RoomChatMessage.java +++ b/src/main/java/com/eu/habbo/habbohotel/rooms/RoomChatMessage.java @@ -3,6 +3,7 @@ package com.eu.habbo.habbohotel.rooms; import com.eu.habbo.Emulator; import com.eu.habbo.core.DatabaseLoggable; import com.eu.habbo.habbohotel.permissions.Permission; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.messages.ISerialize; import com.eu.habbo.messages.ServerMessage; @@ -48,7 +49,7 @@ public class RoomChatMessage implements Runnable, ISerialize, DatabaseLoggable { public RoomChatMessage(MessageHandler message) { if (message.packet.getMessageId() == Incoming.whisperEvent) { String data = message.packet.readString(); - this.targetHabbo = message.client.getHabbo().getHabboInfo().getCurrentRoom().getHabbo(data.split(" ")[0]); + this.targetHabbo = message.client.getHabbo().getRoomUnit().getRoom().getHabbo(data.split(" ")[0]); this.message = data.substring(data.split(" ")[0].length() + 1); } else { this.message = message.packet.readString(); @@ -69,7 +70,7 @@ public class RoomChatMessage implements Runnable, ISerialize, DatabaseLoggable { } this.habbo = message.client.getHabbo(); - this.roomUnitId = this.habbo.getRoomUnit().getId(); + this.roomUnitId = this.habbo.getRoomUnit().getVirtualId(); this.unfilteredMessage = this.message; this.timestamp = Emulator.getIntUnixTimestamp(); @@ -93,7 +94,7 @@ public class RoomChatMessage implements Runnable, ISerialize, DatabaseLoggable { this.unfilteredMessage = message; this.habbo = null; this.bubble = bubble; - this.roomUnitId = roomUnit.getId(); + this.roomUnitId = roomUnit.getVirtualId(); } public RoomChatMessage(String message, Habbo habbo, RoomChatMessageBubbles bubble) { @@ -102,7 +103,7 @@ public class RoomChatMessage implements Runnable, ISerialize, DatabaseLoggable { this.habbo = habbo; this.bubble = bubble; this.checkEmotion(); - this.roomUnitId = habbo.getRoomUnit().getId(); + this.roomUnitId = habbo.getRoomUnit().getVirtualId(); this.message = this.message.replace("\r", "").replace("\n", ""); if (this.bubble.isOverridable() && this.getHabbo().getHabboStats().getChatColor() != RoomChatMessageBubbles.NORMAL) @@ -116,7 +117,7 @@ public class RoomChatMessage implements Runnable, ISerialize, DatabaseLoggable { this.targetHabbo = targetHabbo; this.bubble = bubble; this.checkEmotion(); - this.roomUnitId = this.habbo.getRoomUnit().getId(); + this.roomUnitId = this.habbo.getRoomUnit().getVirtualId(); this.message = this.message.replace("\r", "").replace("\n", ""); if (this.bubble.isOverridable() && this.getHabbo().getHabboStats().getChatColor() != RoomChatMessageBubbles.NORMAL) @@ -227,8 +228,8 @@ public class RoomChatMessage implements Runnable, ISerialize, DatabaseLoggable { statement.setString(3, this.unfilteredMessage); statement.setInt(4, this.timestamp); - if (this.habbo.getHabboInfo().getCurrentRoom() != null) { - statement.setInt(5, this.habbo.getHabboInfo().getCurrentRoom().getId()); + if (this.habbo.getRoomUnit().getRoom() != null) { + statement.setInt(5, this.habbo.getRoomUnit().getRoom().getRoomInfo().getId()); } else { statement.setInt(5, 0); } diff --git a/src/main/java/com/eu/habbo/habbohotel/rooms/RoomInfo.java b/src/main/java/com/eu/habbo/habbohotel/rooms/RoomInfo.java new file mode 100644 index 00000000..25464bb7 --- /dev/null +++ b/src/main/java/com/eu/habbo/habbohotel/rooms/RoomInfo.java @@ -0,0 +1,242 @@ +package com.eu.habbo.habbohotel.rooms; + +import com.eu.habbo.Emulator; +import com.eu.habbo.habbohotel.guilds.Guild; +import com.eu.habbo.habbohotel.permissions.Permission; +import com.eu.habbo.habbohotel.users.Habbo; +import com.eu.habbo.habbohotel.users.HabboInfo; +import lombok.Getter; +import lombok.Setter; +import lombok.extern.slf4j.Slf4j; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.HashMap; + +import static com.eu.habbo.database.DatabaseConstants.CAUGHT_SQL_EXCEPTION; + +@Getter +@Setter +@Slf4j +public class RoomInfo { + private final int id; + private HabboInfo ownerInfo; + private volatile RoomCategory category; + private String name; + private String description; + private RoomState state; + private int maxUsers; + private String password; + private Guild guild; + private volatile int score; + private String tags; + private String floorPaint; + private String wallPaint; + private String landscapePaint; + private int wallThickness; + private int wallHeight; + private int floorThickness; + private volatile boolean hideWalls; + private volatile boolean allowPets; + private volatile boolean allowPetsEat; + private volatile boolean allowWalkthrough; + private volatile int chatMode; + private volatile int chatWeight; + private volatile int chatSpeed; + private volatile int chatDistance; + private volatile int chatProtection; + private volatile int whoCanMuteOption; + private volatile int whoCanKickOption; + private volatile int whoCanBanOption; + private volatile int tradeMode; + private volatile boolean diagonalMoveEnabled; + private volatile int rollerSpeed; + private int pollId; + private volatile boolean jukeboxEnabled; + private volatile boolean hiddenWiredEnabled; + private volatile boolean staffPicked; + private volatile boolean promoted; + private volatile boolean publicRoom; + private boolean modelOverridden; + private HashMap moodLightData; + private final HashMap defaultMoodData; + + public RoomInfo(ResultSet set) throws SQLException { + this.id = set.getInt("id"); + this.ownerInfo = Emulator.getGameEnvironment().getHabboManager().getHabboInfo(set.getInt("owner_id")); + this.name = set.getString("name"); + this.description = set.getString("description"); + this.category = Emulator.getGameEnvironment().getRoomManager().getCategory(set.getInt("category")); + this.state = RoomState.valueOf(set.getString("state").toUpperCase()); + this.maxUsers = set.getInt("users_max"); + this.password = set.getString("password"); + this.guild = Emulator.getGameEnvironment().getGuildManager().getGuild(set.getInt("guild_id")); + this.score = set.getInt("score"); + this.tags = set.getString("tags"); + + this.floorPaint = set.getString("paper_floor"); + this.wallPaint = set.getString("paper_wall"); + this.landscapePaint = set.getString("paper_landscape"); + this.wallThickness = set.getInt("thickness_wall"); + this.wallHeight = set.getInt("wall_height"); + this.floorThickness = set.getInt("thickness_floor"); + this.hideWalls = set.getBoolean("allow_hidewall"); + + this.allowPets = set.getBoolean("allow_other_pets"); + this.allowPetsEat = set.getBoolean("allow_other_pets_eat"); + this.allowWalkthrough = set.getBoolean("allow_walkthrough"); + + this.chatMode = set.getInt("chat_mode"); + this.chatWeight = set.getInt("chat_weight"); + this.chatSpeed = set.getInt("chat_speed"); + this.chatDistance = set.getInt("chat_hearing_distance"); + this.chatProtection = set.getInt("chat_protection"); + + this.whoCanMuteOption = set.getInt("who_can_mute"); + this.whoCanKickOption = set.getInt("who_can_kick"); + this.whoCanBanOption = set.getInt("who_can_ban"); + this.tradeMode = set.getInt("trade_mode"); + this.diagonalMoveEnabled = set.getBoolean("move_diagonally"); + + this.rollerSpeed = set.getInt("roller_speed"); + + this.pollId = set.getInt("poll_id"); + + this.jukeboxEnabled = set.getBoolean("jukebox_active"); + this.hiddenWiredEnabled = set.getBoolean("hidewired"); + + this.staffPicked = set.getBoolean("is_staff_picked"); + this.promoted = set.getBoolean("promoted"); + this.publicRoom = set.getBoolean("is_public"); + + this.modelOverridden = set.getBoolean("override_model"); + + defaultMoodData = new HashMap<>(); + + for (int i = 1; i <= 3; i++) { + RoomMoodlightData data = RoomMoodlightData.fromString(""); + data.setId(i); + defaultMoodData.put(i, data); + } + + + this.moodLightData = new HashMap<>(); + + for (String s : set.getString("moodlight_data").split(";")) { + RoomMoodlightData data = RoomMoodlightData.fromString(s); + this.moodLightData.put(data.getId(), data); + } + + } + + public void update(Connection connection) { + try (PreparedStatement statement = connection.prepareStatement("UPDATE rooms SET name = ?, description = ?, password = ?, state = ?, users_max = ?, category = ?, score = ?, paper_floor = ?, paper_wall = ?, paper_landscape = ?, thickness_wall = ?, wall_height = ?, thickness_floor = ?, moodlight_data = ?, tags = ?, allow_other_pets = ?, allow_other_pets_eat = ?, allow_walkthrough = ?, allow_hidewall = ?, chat_mode = ?, chat_weight = ?, chat_speed = ?, chat_hearing_distance = ?, chat_protection =?, who_can_mute = ?, who_can_kick = ?, who_can_ban = ?, poll_id = ?, guild_id = ?, roller_speed = ?, override_model = ?, is_staff_picked = ?, promoted = ?, trade_mode = ?, move_diagonally = ?, owner_id = ?, owner_name = ?, jukebox_active = ?, hidewired = ? WHERE id = ?")) { + statement.setString(1, this.name); + statement.setString(2, this.description); + statement.setString(3, this.password); + statement.setString(4, this.state.name().toLowerCase()); + statement.setInt(5, this.maxUsers); + statement.setInt(6, this.category.getId()); + statement.setInt(7, this.score); + statement.setString(8, this.floorPaint); + statement.setString(9, this.wallPaint); + statement.setString(10, this.landscapePaint); + statement.setInt(11, this.wallThickness); + statement.setInt(12, this.wallHeight); + statement.setInt(13, this.floorThickness); + StringBuilder moodLightData = new StringBuilder(); + + int moodLightId = 1; + for (RoomMoodlightData data : this.moodLightData.values()) { + data.setId(moodLightId); + moodLightData.append(data).append(";"); + moodLightId++; + } + + statement.setString(14, moodLightData.toString()); + statement.setString(15, this.tags); + statement.setString(16, this.allowPets ? "1" : "0"); + statement.setString(17, this.allowPetsEat ? "1" : "0"); + statement.setString(18, this.allowWalkthrough ? "1" : "0"); + statement.setString(19, this.hideWalls ? "1" : "0"); + statement.setInt(20, this.chatMode); + statement.setInt(21, this.chatWeight); + statement.setInt(22, this.chatSpeed); + statement.setInt(23, this.chatDistance); + statement.setInt(24, this.chatProtection); + statement.setInt(25, this.whoCanMuteOption); + statement.setInt(26, this.whoCanKickOption); + statement.setInt(27, this.whoCanBanOption); + statement.setInt(28, this.pollId); + statement.setInt(29, (this.hasGuild()) ? this.guild.getId() : 0); + statement.setInt(30, this.rollerSpeed); + statement.setString(31, this.modelOverridden ? "1" : "0"); + statement.setString(32, this.staffPicked ? "1" : "0"); + statement.setString(33, this.promoted ? "1" : "0"); + statement.setInt(34, this.tradeMode); + statement.setString(35, this.diagonalMoveEnabled ? "1" : "0"); + statement.setInt(36, this.ownerInfo.getId()); + statement.setString(37, this.ownerInfo.getUsername()); + statement.setString(38, this.jukeboxEnabled ? "1" : "0"); + statement.setString(39, this.hiddenWiredEnabled ? "1" : "0"); + statement.setInt(40, this.id); + statement.executeUpdate(); + } catch (SQLException e) { + log.error(CAUGHT_SQL_EXCEPTION, e); + } + } + + public boolean hasGuild() { + return this.guild != null; + } + + public String getOwnerName() { + return this.getOwnerInfo().getUsername(); + } + + public boolean isRoomOwner(Habbo owner) { + return this.ownerInfo.getId() == owner.getHabboInfo().getId() || owner.hasRight(Permission.ACC_ANYROOMOWNER); + } + + public String[] filterAnything() { + return new String[]{this.getOwnerInfo().getUsername(), this.getGuildName(), this.getDescription()}; + } + + public String getGuildName() { + if (this.guild == null) { + return ""; + } + + return this.guild.getName(); + } + + public void setName(String name) { + this.name = name; + + if (this.name.length() > 50) { + this.name = this.name.substring(0, 50); + } + + if (this.guild != null) { + this.guild.setRoomName(name); + } + } + + public void setDescription(String description) { + this.description = description; + + if (this.description.length() > 250) { + this.description = this.description.substring(0, 250); + } + } + + public void setPassword(String password) { + this.password = password; + + if (this.password.length() > 20) { + this.password = this.password.substring(0, 20); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/eu/habbo/habbohotel/rooms/RoomItemManager.java b/src/main/java/com/eu/habbo/habbohotel/rooms/RoomItemManager.java new file mode 100644 index 00000000..8873a7bd --- /dev/null +++ b/src/main/java/com/eu/habbo/habbohotel/rooms/RoomItemManager.java @@ -0,0 +1,72 @@ +package com.eu.habbo.habbohotel.rooms; + +import com.eu.habbo.habbohotel.items.ICycleable; +import com.eu.habbo.habbohotel.items.interactions.*; +import com.eu.habbo.habbohotel.items.interactions.games.InteractionGameGate; +import com.eu.habbo.habbohotel.items.interactions.games.InteractionGameScoreboard; +import com.eu.habbo.habbohotel.items.interactions.games.InteractionGameTimer; +import com.eu.habbo.habbohotel.items.interactions.games.battlebanzai.InteractionBattleBanzaiTeleporter; +import com.eu.habbo.habbohotel.items.interactions.games.freeze.InteractionFreezeExitTile; +import com.eu.habbo.habbohotel.items.interactions.pets.InteractionNest; +import com.eu.habbo.habbohotel.items.interactions.pets.InteractionPetDrink; +import com.eu.habbo.habbohotel.items.interactions.pets.InteractionPetFood; +import com.eu.habbo.habbohotel.items.interactions.pets.InteractionPetToy; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; +import com.eu.habbo.habbohotel.rooms.entities.items.types.RoomFloorItem; +import com.eu.habbo.habbohotel.rooms.entities.items.types.RoomWallItem; +import com.eu.habbo.habbohotel.wired.WiredConditionType; +import com.eu.habbo.habbohotel.wired.WiredEffectType; +import com.eu.habbo.habbohotel.wired.WiredTriggerType; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.concurrent.ConcurrentHashMap; + +public class RoomItemManager { + private final ConcurrentHashMap currentItems; + private final HashMap floorItems; + private final HashMap wallItems; + private final HashSet cycleTasks; + private final HashMap> wiredTriggers; + private final HashMap> wiredEffects; + private final HashMap> wiredConditions; + private final HashMap wiredExtras; + private final HashMap nests; + private final HashMap petDrinks; + private final HashMap petFoods; + private final HashMap petToys; + private final HashMap rollers; + private final HashMap gameScoreboards; + private final HashMap gameGates; + private final HashMap gameTimers; + private final HashMap banzaiTeleporters; + private final HashMap freezeExitTile; + public RoomItemManager() { + this.currentItems = new ConcurrentHashMap<>(); + + this.floorItems = new HashMap<>(); + this.wallItems = new HashMap<>(); + + this.cycleTasks = new HashSet<>(0); + + this.wiredTriggers = new HashMap<>(0); + this.wiredEffects = new HashMap<>(0); + this.wiredConditions = new HashMap<>(0); + this.wiredExtras = new HashMap<>(0); + + this.nests = new HashMap<>(0); + this.petDrinks = new HashMap<>(0); + this.petFoods = new HashMap<>(0); + this.petToys = new HashMap<>(0); + + this.rollers = new HashMap<>(0); + + this.gameScoreboards = new HashMap<>(0); + this.gameGates = new HashMap<>(0); + this.gameTimers = new HashMap<>(0); + + this.banzaiTeleporters = new HashMap<>(0); + this.freezeExitTile = new HashMap<>(0); + } +} diff --git a/src/main/java/com/eu/habbo/habbohotel/rooms/RoomLayout.java b/src/main/java/com/eu/habbo/habbohotel/rooms/RoomLayout.java index 379fa44b..935073f7 100644 --- a/src/main/java/com/eu/habbo/habbohotel/rooms/RoomLayout.java +++ b/src/main/java/com/eu/habbo/habbohotel/rooms/RoomLayout.java @@ -1,14 +1,14 @@ package com.eu.habbo.habbohotel.rooms; import com.eu.habbo.Emulator; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import gnu.trove.set.hash.THashSet; import lombok.extern.slf4j.Slf4j; import java.awt.*; import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.*; import java.util.List; +import java.util.*; @Slf4j public class RoomLayout { @@ -304,7 +304,7 @@ public class RoomLayout { continue; } - if (currentAdj.hasUnits() && doorTile.distance(currentAdj) > 2 && (!isWalktroughRetry || !this.room.isAllowWalkthrough() || currentAdj.equals(goalLocation))) { + if (currentAdj.hasUnits() && doorTile.distance(currentAdj) > 2 && (!isWalktroughRetry || !this.room.getRoomInfo().isAllowWalkthrough() || currentAdj.equals(goalLocation))) { closedList.add(currentAdj); openList.remove(currentAdj); continue; @@ -322,7 +322,7 @@ public class RoomLayout { } } - if (this.room.isAllowWalkthrough() && !isWalktroughRetry) { + if (this.room.getRoomInfo().isAllowWalkthrough() && !isWalktroughRetry) { return this.findPath(oldTile, newTile, goalLocation, roomUnit, true); } @@ -590,8 +590,8 @@ public class RoomLayout { public RoomTile getRandomWalkableTilesAround(RoomUnit roomUnit, RoomTile tile, Room room, int radius) { if(!this.tileExists(tile.getX(), tile.getY())) { - tile = this.getTile(roomUnit.getX(), roomUnit.getY()); - room.getBot(roomUnit).needsUpdate(true); + tile = this.getTile(roomUnit.getCurrentPosition().getX(), roomUnit.getCurrentPosition().getY()); + room.getRoomUnitManager().getRoomBotById(roomUnit.getVirtualId()).needsUpdate(true); } List newTiles = new ArrayList<>(); diff --git a/src/main/java/com/eu/habbo/habbohotel/rooms/RoomManager.java b/src/main/java/com/eu/habbo/habbohotel/rooms/RoomManager.java index 17bbb7e8..e442474f 100644 --- a/src/main/java/com/eu/habbo/habbohotel/rooms/RoomManager.java +++ b/src/main/java/com/eu/habbo/habbohotel/rooms/RoomManager.java @@ -22,7 +22,14 @@ import com.eu.habbo.habbohotel.pets.PetData; import com.eu.habbo.habbohotel.pets.PetTasks; import com.eu.habbo.habbohotel.polls.Poll; import com.eu.habbo.habbohotel.polls.PollManager; -import com.eu.habbo.habbohotel.users.*; +import com.eu.habbo.habbohotel.rooms.entities.RoomRotation; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnitType; +import com.eu.habbo.habbohotel.rooms.entities.units.types.RoomHabbo; +import com.eu.habbo.habbohotel.users.DanceType; +import com.eu.habbo.habbohotel.users.Habbo; +import com.eu.habbo.habbohotel.users.HabboInfo; +import com.eu.habbo.habbohotel.users.HabboManager; import com.eu.habbo.habbohotel.wired.WiredHandler; import com.eu.habbo.habbohotel.wired.WiredTriggerType; import com.eu.habbo.messages.incoming.users.NewUserExperienceScriptProceedEvent; @@ -108,7 +115,7 @@ public class RoomManager { public CustomRoomLayout loadCustomLayout(Room room) { CustomRoomLayout layout = null; try (Connection connection = Emulator.getDatabase().getDataSource().getConnection(); PreparedStatement statement = connection.prepareStatement("SELECT * FROM room_models_custom WHERE id = ? LIMIT 1")) { - statement.setInt(1, room.getId()); + statement.setInt(1, room.getRoomInfo().getId()); try (ResultSet set = statement.executeQuery()) { if (set.next()) { layout = new CustomRoomLayout(set, room); @@ -212,10 +219,10 @@ public class RoomManager { return rooms; } - public List getActiveRooms(int categoryId) { + public List getActiveRoomsByCategoryId(int categoryId) { List rooms = new ArrayList<>(); for (Room room : this.activeRooms.values()) { - if (categoryId == room.getCategory() || categoryId == -1) + if (categoryId == room.getRoomInfo().getCategory().getId() || categoryId == -1) rooms.add(room); } Collections.sort(rooms); @@ -226,10 +233,13 @@ public class RoomManager { public ArrayList getRoomsForHabbo(Habbo habbo) { ArrayList rooms = new ArrayList<>(); for (Room room : this.activeRooms.values()) { - if (room.getOwnerId() == habbo.getHabboInfo().getId()) + if (room.getRoomInfo().isRoomOwner(habbo)) { rooms.add(room); + } } + rooms.sort(Room.SORT_ID); + return rooms; } @@ -245,7 +255,7 @@ public class RoomManager { statement.setString(1, username); try (ResultSet set = statement.executeQuery()) { while (set.next()) { - rooms.add(this.loadRoom(set.getInt("id"))); + rooms.add(this.getRoom(set.getInt("id"))); } } } catch (SQLException e) { @@ -255,15 +265,15 @@ public class RoomManager { return rooms; } - public Room loadRoom(int id) { - return loadRoom(id, false); + public Room getRoom(int roomId) { + return getRoom(roomId, false); } - public Room loadRoom(int id, boolean loadData) { + public Room getRoom(int id, boolean loadData) { Room room = null; if (this.activeRooms.containsKey(id)) { - room = this.activeRooms.get(id); + room = this.getActiveRoomById(id); if (loadData && (room.isPreLoaded() && !room.isLoaded())) { room.loadData(); @@ -285,7 +295,7 @@ public class RoomManager { } if (room != null) { - this.activeRooms.put(room.getId(), room); + this.activeRooms.put(room.getRoomInfo().getId(), room); } } catch (SQLException e) { log.error(CAUGHT_SQL_EXCEPTION, e); @@ -295,7 +305,7 @@ public class RoomManager { } - public Room createRoom(int ownerId, String ownerName, String name, String description, String modelName, int usersMax, int categoryId, int tradeType) { + public Room createRoom(int ownerId, String ownerName, String name, String description, String modelName, int maxUsers, int categoryId, int tradeType) { Room room = null; try (Connection connection = Emulator.getDatabase().getDataSource().getConnection(); PreparedStatement statement = connection.prepareStatement( @@ -305,13 +315,13 @@ public class RoomManager { statement.setString(3, name); statement.setString(4, description); statement.setString(5, modelName); - statement.setInt(6, usersMax); + statement.setInt(6, maxUsers); statement.setInt(7, categoryId); statement.setInt(8, tradeType); statement.execute(); try (ResultSet set = statement.getGeneratedKeys()) { if (set.next()) - room = this.loadRoom(set.getInt(1)); + room = this.getRoom(set.getInt(1)); } } catch (SQLException e) { log.error(CAUGHT_SQL_EXCEPTION, e); @@ -320,12 +330,9 @@ public class RoomManager { return room; } - public Room createRoomForHabbo(Habbo habbo, String name, String description, String modelName, int usersMax, int categoryId, int tradeType) { Room room = this.createRoom(habbo.getHabboInfo().getId(), habbo.getHabboInfo().getUsername(), name, description, modelName, usersMax, categoryId, tradeType); - Emulator.getPluginManager().fireEvent(new NavigatorRoomCreatedEvent(habbo, room)); - return room; } @@ -346,8 +353,12 @@ public class RoomManager { public void unloadRoomsForHabbo(Habbo habbo) { List roomsToDispose = new ArrayList<>(); for (Room room : this.activeRooms.values()) { - if (!room.isPublicRoom() && !room.isStaffPromotedRoom() && room.getOwnerId() == habbo.getHabboInfo().getId() && room.getUserCount() == 0 && (this.roomCategories.get(room.getCategory()) == null || !this.roomCategories.get(room.getCategory()).isPublic())) { - roomsToDispose.add(room); + if (!room.getRoomInfo().isPublicRoom()) { + if (!room.getRoomInfo().isStaffPicked() && room.getRoomInfo().getOwnerInfo().getId() == habbo.getHabboInfo().getId()) { + if (room.getRoomUnitManager().getRoomHabbosCount() == 0 && (this.roomCategories.get(room.getRoomInfo().getCategory().getId()) == null || !this.roomCategories.get(room.getRoomInfo().getCategory().getId()).isPublic())) { + roomsToDispose.add(room); + } + } } } @@ -356,22 +367,24 @@ public class RoomManager { continue; room.dispose(); - this.activeRooms.remove(room.getId()); + this.activeRooms.remove(room.getRoomInfo().getId()); } } public void clearInactiveRooms() { THashSet roomsToDispose = new THashSet<>(); for (Room room : this.activeRooms.values()) { - if (!room.isPublicRoom() && !room.isStaffPromotedRoom() && !Emulator.getGameServer().getGameClientManager().containsHabbo(room.getOwnerId()) && room.isPreLoaded()) { - roomsToDispose.add(room); + if (!room.getRoomInfo().isPublicRoom()) { + if (!room.getRoomInfo().isStaffPicked() && !Emulator.getGameServer().getGameClientManager().containsHabbo(room.getRoomInfo().getOwnerInfo().getId()) && room.isPreLoaded()) { + roomsToDispose.add(room); + } } } for (Room room : roomsToDispose) { room.dispose(); - if (room.getUserCount() == 0) - this.activeRooms.remove(room.getId()); + if (room.getRoomUnitManager().getRoomHabbosCount() == 0) + this.activeRooms.remove(room.getRoomInfo().getId()); } } @@ -400,27 +413,27 @@ public class RoomManager { } public void uncacheRoom(Room room) { - this.activeRooms.remove(room.getId()); + this.activeRooms.remove(room.getRoomInfo().getId()); } public void voteForRoom(Habbo habbo, Room room) { - if (habbo.getHabboInfo().getCurrentRoom() != null && room != null && habbo.getHabboInfo().getCurrentRoom() == room) { + if (habbo.getRoomUnit().getRoom() != null && room != null && habbo.getRoomUnit().getRoom() == room) { if (this.hasVotedForRoom(habbo, room)) return; UserVoteRoomEvent event = new UserVoteRoomEvent(room, habbo); if (Emulator.getPluginManager().fireEvent(event).isCancelled()) return; - room.setScore(room.getScore() + 1); + room.getRoomInfo().setScore(room.getRoomInfo().getScore() + 1); room.setNeedsUpdate(true); - habbo.getHabboStats().getVotedRooms().push(room.getId()); - for (Habbo h : room.getHabbos()) { - h.getClient().sendResponse(new RoomRatingComposer(room.getScore(), !this.hasVotedForRoom(h, room))); + habbo.getHabboStats().getVotedRooms().push(room.getRoomInfo().getId()); + for (Habbo h : room.getRoomUnitManager().getRoomHabbos()) { + h.getClient().sendResponse(new RoomRatingComposer(room.getRoomInfo().getScore(), !this.hasVotedForRoom(h, room))); } try (Connection connection = Emulator.getDatabase().getDataSource().getConnection(); PreparedStatement statement = connection.prepareStatement("INSERT INTO room_votes VALUES (?, ?)")) { statement.setInt(1, habbo.getHabboInfo().getId()); - statement.setInt(2, room.getId()); + statement.setInt(2, room.getRoomInfo().getId()); statement.execute(); } catch (SQLException e) { log.error(CAUGHT_SQL_EXCEPTION, e); @@ -429,18 +442,18 @@ public class RoomManager { } boolean hasVotedForRoom(Habbo habbo, Room room) { - if (room.getOwnerId() == habbo.getHabboInfo().getId()) + if (room.getRoomInfo().getOwnerInfo().getId() == habbo.getHabboInfo().getId()) return true; for (int i : habbo.getHabboStats().getVotedRooms().toArray()) { - if (i == room.getId()) + if (i == room.getRoomInfo().getId()) return true; } return false; } - public Room getRoom(int roomId) { + public Room getActiveRoomById(int roomId) { return this.activeRooms.get(roomId); } @@ -452,188 +465,169 @@ public class RoomManager { return this.activeRooms.size(); } - public void enterRoom(Habbo habbo, int roomId, String password) { - this.enterRoom(habbo, roomId, password, false, null); + public void enterRoom(Habbo habbo, int roomId, String password, boolean forceEnter) { + this.enterRoom(habbo, roomId, password, forceEnter, null); } - public void enterRoom(Habbo habbo, int roomId, String password, boolean overrideChecks) { - this.enterRoom(habbo, roomId, password, overrideChecks, null); - } + public void enterRoom(Habbo habbo, int roomId, String password, boolean forceEnter, RoomTile spawnLocation) { + Room room = this.getRoom(roomId, true); - public void enterRoom(Habbo habbo, int roomId, String password, boolean overrideChecks, RoomTile doorLocation) { - Room room = this.loadRoom(roomId, true); - - if (room == null) - return; - - if (habbo.getHabboInfo().getLoadingRoom() != 0 && room.getId() != habbo.getHabboInfo().getLoadingRoom()) { - habbo.getClient().sendResponse(new CloseConnectionMessageComposer()); - habbo.getHabboInfo().setLoadingRoom(0); + if (room == null) { + log.error("User (ID: {}) is trying to enter a corrupted room (ID: {})", habbo.getHabboInfo().getId(), roomId); return; } - if (Emulator.getPluginManager().fireEvent(new UserEnterRoomEvent(habbo, room)).isCancelled() - && habbo.getHabboInfo().getCurrentRoom() == null) { + if (habbo.getRoomUnit().isLoadingRoom() && room.getRoomInfo().getId() != habbo.getRoomUnit().getLoadingRoom().getRoomInfo().getId()) { habbo.getClient().sendResponse(new CloseConnectionMessageComposer()); - habbo.getHabboInfo().setLoadingRoom(0); + habbo.getRoomUnit().setLoadingRoom(null); return; } - if (room.isBanned(habbo) && !habbo.hasRight(Permission.ACC_ANYROOMOWNER) && !habbo.hasRight(Permission.ACC_ENTERANYROOM)) { + //Fire Plugin Event + if (Emulator.getPluginManager().fireEvent(new UserEnterRoomEvent(habbo, room)).isCancelled() && habbo.getRoomUnit().getRoom() == null) { + habbo.getClient().sendResponse(new CloseConnectionMessageComposer()); + habbo.getRoomUnit().setLoadingRoom(null); + return; + } + + //If Habbo is banned AND doesn't have Permissions can't enter to room + if (room.isBanned(habbo) && !room.getRoomInfo().isRoomOwner(habbo) && !habbo.hasRight(Permission.ACC_ENTERANYROOM)) { habbo.getClient().sendResponse(new CantConnectMessageComposer(CantConnectMessageComposer.ROOM_ERROR_BANNED)); return; } + //If room is full AND user doesn't have Permissions can't enter to room + if (room.getRoomUnitManager().getRoomHabbosCount() >= room.getRoomInfo().getMaxUsers() && !room.hasRights(habbo) && !habbo.hasRight(Permission.ACC_FULLROOMS)) { + habbo.getClient().sendResponse(new CantConnectMessageComposer(CantConnectMessageComposer.ROOM_ERROR_GUESTROOM_FULL)); + return; + } + if (habbo.getHabboInfo().getRoomQueueId() != roomId) { - Room queRoom = Emulator.getGameEnvironment().getRoomManager().getRoom(roomId); + Room queRoom = Emulator.getGameEnvironment().getRoomManager().getActiveRoomById(roomId); if (queRoom != null) { queRoom.removeFromQueue(habbo); } } - if (overrideChecks || - room.isOwner(habbo) || - room.getState() == RoomState.OPEN || - habbo.hasRight(Permission.ACC_ANYROOMOWNER) || - habbo.hasRight(Permission.ACC_ENTERANYROOM) || - room.hasRights(habbo) || - (room.getState().equals(RoomState.INVISIBLE) && room.hasRights(habbo)) || - (room.hasGuild() && room.getGuildRightLevel(habbo).isGreaterThan(RoomRightLevels.GUILD_RIGHTS))) { - this.openRoom(habbo, room, doorLocation); - } else if (room.getState() == RoomState.LOCKED) { - boolean rightsFound = false; + /** + * If override checks open room + * If habbo is owner open room + * If room state is 'OPEN' open room + * If habbo has permissions open room + * If habbo has guild rights open room + */ + if (forceEnter || room.getRoomInfo().isRoomOwner(habbo) || room.getRoomInfo().getState() == RoomState.OPEN || habbo.hasRight(Permission.ACC_ENTERANYROOM) || room.hasRights(habbo) || (room.getRoomInfo().getState().equals(RoomState.INVISIBLE) && room.hasRights(habbo)) || (room.getRoomInfo().hasGuild() && room.getGuildRightLevel(habbo).isGreaterThan(RoomRightLevels.GUILD_RIGHTS))) { + this.openRoom(habbo, room, spawnLocation); + } else if (room.getRoomInfo().getState() == RoomState.LOCKED) { + boolean habbosWithRights = false; - synchronized (room.roomUnitLock) { - for (Habbo current : room.getHabbos()) { - if (room.hasRights(current) || current.getHabboInfo().getId() == room.getOwnerId() || (room.hasGuild() && room.getGuildRightLevel(current).isEqualOrGreaterThan(RoomRightLevels.GUILD_RIGHTS))) { + synchronized (room.getRoomUnitManager().roomUnitLock) { + for (Habbo current : room.getRoomUnitManager().getRoomHabbos()) { + if (room.hasRights(current) || current.getHabboInfo().getId() == room.getRoomInfo().getOwnerInfo().getId() || (room.getRoomInfo().hasGuild() && room.getGuildRightLevel(current).isEqualOrGreaterThan(RoomRightLevels.GUILD_RIGHTS))) { current.getClient().sendResponse(new DoorbellMessageComposer(habbo.getHabboInfo().getUsername())); - rightsFound = true; + habbosWithRights = true; } } } - if (!rightsFound) { + if (!habbosWithRights) { habbo.getClient().sendResponse(new FlatAccessDeniedMessageComposer("")); habbo.getClient().sendResponse(new CloseConnectionMessageComposer()); - habbo.getHabboInfo().setLoadingRoom(0); + habbo.getRoomUnit().setLoadingRoom(null); return; } habbo.getHabboInfo().setRoomQueueId(roomId); habbo.getClient().sendResponse(new DoorbellMessageComposer("")); room.addToQueue(habbo); - } else if (room.getState() == RoomState.PASSWORD) { - if (room.getPassword().equalsIgnoreCase(password)) - this.openRoom(habbo, room, doorLocation); + } else if (room.getRoomInfo().getState() == RoomState.PASSWORD) { + if (room.getRoomInfo().getPassword().equalsIgnoreCase(password)) { + this.openRoom(habbo, room, spawnLocation); + } else { habbo.getClient().sendResponse(new GenericErrorComposer(GenericErrorComposer.WRONG_PASSWORD_USED)); habbo.getClient().sendResponse(new CloseConnectionMessageComposer()); - habbo.getHabboInfo().setLoadingRoom(0); + habbo.getRoomUnit().setLoadingRoom(null); } } else { habbo.getClient().sendResponse(new CloseConnectionMessageComposer()); - habbo.getHabboInfo().setLoadingRoom(0); + habbo.getRoomUnit().setLoadingRoom(null); } } - void openRoom(Habbo habbo, Room room, RoomTile doorLocation) { - if (room == null || room.getLayout() == null) + void openRoom(Habbo habbo, Room room, RoomTile spawnLocation) { + if (room.getLayout() == null) { return; + } if (Emulator.getConfig().getBoolean("hotel.room.enter.logs")) { this.logEnter(habbo, room); } if (habbo.getHabboInfo().getRoomQueueId() > 0) { - Room r = Emulator.getGameEnvironment().getRoomManager().getRoom(habbo.getHabboInfo().getRoomQueueId()); + Room queuedRoom = this.getActiveRoomById(habbo.getHabboInfo().getRoomQueueId()); - if (r != null) { - r.removeFromQueue(habbo); + if (queuedRoom != null) { + queuedRoom.removeFromQueue(habbo); } } habbo.getHabboInfo().setRoomQueueId(0); habbo.getClient().sendResponse(new FlatAccessibleMessageComposer("")); - if (habbo.getRoomUnit() != null) { - RoomUnit existingRoom = habbo.getRoomUnit(); - if (existingRoom.getRoom() != null) { - if (existingRoom.getCurrentLocation() != null) - existingRoom.getCurrentLocation().removeUnit(existingRoom); - existingRoom.getRoom().sendComposer(new UserRemoveMessageComposer(existingRoom).compose()); - } - habbo.getRoomUnit().setRoom(null); - } + RoomHabbo roomHabbo = habbo.getRoomUnit(); - habbo.setRoomUnit(new RoomUnit()); + roomHabbo.clear(); + roomHabbo.clearWalking(); - habbo.getRoomUnit().clearStatus(); - if (habbo.getRoomUnit().getCurrentLocation() == null) { - habbo.getRoomUnit().setLocation(doorLocation != null ? doorLocation : room.getLayout().getDoorTile()); - if (habbo.getRoomUnit().getCurrentLocation() != null) - habbo.getRoomUnit().setZ(habbo.getRoomUnit().getCurrentLocation().getStackHeight()); + if (roomHabbo.getCurrentPosition() == null) { + RoomTile spawnTile = spawnLocation == null ? room.getLayout().getDoorTile() : spawnLocation; + RoomRotation spawnDirection = RoomRotation.values()[room.getLayout().getDoorDirection()]; - if (doorLocation == null) { - habbo.getRoomUnit().setBodyRotation(RoomUserRotation.values()[room.getLayout().getDoorDirection()]); - habbo.getRoomUnit().setHeadRotation(RoomUserRotation.values()[room.getLayout().getDoorDirection()]); - } else { - habbo.getRoomUnit().setCanLeaveRoomByDoor(false); - habbo.getRoomUnit().setTeleporting(true); - HabboItem topItem = room.getTopItemAt(doorLocation.getX(), doorLocation.getY()); - if (topItem != null) { - habbo.getRoomUnit().setRotation(RoomUserRotation.values()[topItem.getRotation()]); + if(spawnLocation != null) { + roomHabbo.setCanLeaveRoomByDoor(false); + roomHabbo.setTeleporting(true); + RoomItem topItem = room.getTopItemAt(spawnLocation); + + if(topItem != null) { + spawnDirection = RoomRotation.values()[topItem.getRotation()]; } } - } - habbo.getRoomUnit().setRoomUnitType(RoomUnitType.USER); - if (room.isBanned(habbo)) { - habbo.getClient().sendResponse(new CantConnectMessageComposer(CantConnectMessageComposer.ROOM_ERROR_BANNED)); - return; + this.handleSpawnLocation(roomHabbo, spawnTile, spawnDirection); } - if (room.getUserCount() >= room.getUsersMax() && !habbo.hasRight(Permission.ACC_FULLROOMS) && !room.hasRights(habbo)) { - habbo.getClient().sendResponse(new CantConnectMessageComposer(CantConnectMessageComposer.ROOM_ERROR_GUESTROOM_FULL)); - return; - } - - habbo.getRoomUnit().clearStatus(); - habbo.getRoomUnit().setCmdTeleport(false); - habbo.getClient().sendResponse(new OpenConnectionMessageComposer()); - habbo.getRoomUnit().setInRoom(true); - if (habbo.getHabboInfo().getCurrentRoom() != room && habbo.getHabboInfo().getCurrentRoom() != null) { - habbo.getHabboInfo().getCurrentRoom().removeHabbo(habbo, true); - } else if (!habbo.getHabboStats().isBlockFollowing() && habbo.getHabboInfo().getCurrentRoom() == null) { + roomHabbo.setInRoom(true); + + if (!habbo.getHabboStats().isBlockFollowing() && roomHabbo.getRoom() == null) { habbo.getMessenger().connectionChanged(habbo, true, true); } - if (habbo.getHabboInfo().getLoadingRoom() != 0) { - Room oldRoom = Emulator.getGameEnvironment().getRoomManager().getRoom(habbo.getHabboInfo().getLoadingRoom()); - if (oldRoom != null) { - oldRoom.removeFromQueue(habbo); - } + if (roomHabbo.isLoadingRoom()) { + roomHabbo.getLoadingRoom().removeFromQueue(habbo); + roomHabbo.setLoadingRoom(null); } - habbo.getHabboInfo().setLoadingRoom(room.getId()); + roomHabbo.setLoadingRoom(room); habbo.getClient().sendResponse(new RoomReadyMessageComposer(room)); - if (!room.getWallPaint().equals("0.0")) - habbo.getClient().sendResponse(new RoomPropertyMessageComposer("wallpaper", room.getWallPaint())); + if (!room.getRoomInfo().getWallPaint().equals("0.0")) + habbo.getClient().sendResponse(new RoomPropertyMessageComposer("wallpaper", room.getRoomInfo().getWallPaint())); - if (!room.getFloorPaint().equals("0.0")) - habbo.getClient().sendResponse(new RoomPropertyMessageComposer("floor", room.getFloorPaint())); + if (!room.getRoomInfo().getFloorPaint().equals("0.0")) + habbo.getClient().sendResponse(new RoomPropertyMessageComposer("floor", room.getRoomInfo().getFloorPaint())); - habbo.getClient().sendResponse(new RoomPropertyMessageComposer("landscape", room.getBackgroundPaint())); + habbo.getClient().sendResponse(new RoomPropertyMessageComposer("landscape", room.getRoomInfo().getLandscapePaint())); room.refreshRightsForHabbo(habbo); - habbo.getClient().sendResponse(new RoomRatingComposer(room.getScore(), !this.hasVotedForRoom(habbo, room))); + habbo.getClient().sendResponse(new RoomRatingComposer(room.getRoomInfo().getScore(), !this.hasVotedForRoom(habbo, room))); - habbo.getRoomUnit().setFastWalk(habbo.getRoomUnit().isFastWalk() && habbo.hasCommand("cmd_fastwalk", room.hasRights(habbo))); + roomHabbo.setFastWalkEnabled(roomHabbo.isFastWalkEnabled() && habbo.hasCommand("cmd_fastwalk", room.hasRights(habbo))); if (room.isPromoted()) { habbo.getClient().sendResponse(new RoomEventComposer(room, room.getPromotion())); @@ -641,62 +635,60 @@ public class RoomManager { habbo.getClient().sendResponse(new RoomEventComposer(null, null)); } - if (room.getOwnerId() != habbo.getHabboInfo().getId() && !habbo.getHabboStats().visitedRoom(room.getId())) { - AchievementManager.progressAchievement(habbo, Emulator.getGameEnvironment().getAchievementManager().getAchievement("RoomEntry")); + if (!room.getRoomInfo().isRoomOwner(habbo)) { + if (!habbo.getHabboStats().visitedRoom(room.getRoomInfo().getId())) { + AchievementManager.progressAchievement(habbo, Emulator.getGameEnvironment().getAchievementManager().getAchievement("RoomEntry")); + } } } public void enterRoom(final Habbo habbo, final Room room) { - if (habbo.getHabboInfo().getLoadingRoom() != room.getId()) { - if (habbo.getHabboInfo().getLoadingRoom() != 0) { - habbo.getClient().sendResponse(new CloseConnectionMessageComposer()); - } + if (habbo.getRoomUnit().isLoadingRoom() && room.getRoomInfo().getId() != habbo.getRoomUnit().getLoadingRoom().getRoomInfo().getId()) { + habbo.getClient().sendResponse(new CloseConnectionMessageComposer()); + habbo.getRoomUnit().setLoadingRoom(null); return; } - habbo.getRoomUnit() - .removeStatus(RoomUnitStatus.FLAT_CONTROL) - .setPathFinderRoom(room) - .setHandItem(0) - .setRightsLevel(RoomRightLevels.NONE); + RoomHabbo roomHabbo = habbo.getRoomUnit(); - habbo.getHabboInfo().setLoadingRoom(0) - .setCurrentRoom(room); + roomHabbo.removeStatus(RoomUnitStatus.FLAT_CONTROL); + roomHabbo.setHandItem(0); + roomHabbo.setRightsLevel(RoomRightLevels.NONE); + roomHabbo.setRoom(room); + roomHabbo.setLoadingRoom(null); room.refreshRightsForHabbo(habbo); - if (habbo.getRoomUnit().isKicked() && !habbo.getRoomUnit().canWalk()) { + + if (habbo.getRoomUnit().isKicked() && !habbo.getRoomUnit().isCanWalk()) { habbo.getRoomUnit().setCanWalk(true); } - habbo.getRoomUnit().setKicked(false); - if (habbo.getRoomUnit().getCurrentLocation() == null && !habbo.getRoomUnit().isTeleporting()) { - RoomTile doorTile = room.getLayout().getTile(room.getLayout().getDoorX(), room.getLayout().getDoorY()); + roomHabbo.setKicked(false); + + if (roomHabbo.getCurrentPosition() == null && !habbo.getRoomUnit().isTeleporting()) { + RoomTile doorTile = room.getLayout().getDoorTile(); + RoomRotation doorDirection = RoomRotation.values()[room.getLayout().getDoorDirection()]; if (doorTile != null) { - habbo.getRoomUnit().setLocation(doorTile); - habbo.getRoomUnit().setZ(doorTile.getStackHeight()); + this.handleSpawnLocation(roomHabbo, doorTile, doorDirection); } - - habbo.getRoomUnit().setBodyRotation(RoomUserRotation.values()[room.getLayout().getDoorDirection()]); - habbo.getRoomUnit().setHeadRotation(RoomUserRotation.values()[room.getLayout().getDoorDirection()]); } - habbo.getRoomUnit().setPathFinderRoom(room); - habbo.getRoomUnit().resetIdleTimer(); + roomHabbo.resetIdleTimer(); + roomHabbo.setInvisible(false); - habbo.getRoomUnit().setInvisible(false); - room.addHabbo(habbo); + room.getRoomUnitManager().addRoomUnit(habbo); - List habbos = new ArrayList<>(); - if (!room.getCurrentHabbos().isEmpty()) { + List visibleHabbos = new ArrayList<>(); - Collection habbosToSendEnter = room.getCurrentHabbos().values(); - Collection visibleHabbos = room.getHabbos(); + if (!room.getRoomUnitManager().getCurrentRoomHabbos().isEmpty()) { + Collection habbosToSendEnter = room.getRoomUnitManager().getRoomHabbos(); + Collection allHabbos = room.getRoomUnitManager().getRoomHabbos(); if (Emulator.getPluginManager().isRegistered(HabboAddedToRoomEvent.class, false)) { - HabboAddedToRoomEvent event = Emulator.getPluginManager().fireEvent(new HabboAddedToRoomEvent(habbo, room, habbosToSendEnter, visibleHabbos)); + HabboAddedToRoomEvent event = Emulator.getPluginManager().fireEvent(new HabboAddedToRoomEvent(habbo, room, habbosToSendEnter, allHabbos)); habbosToSendEnter = event.getHabbosToSendEnter(); - visibleHabbos = event.getVisibleHabbos(); + allHabbos = event.getVisibleHabbos(); } habbosToSendEnter.stream().map(Habbo::getClient).filter(Objects::nonNull).forEach(client -> { @@ -704,11 +696,11 @@ public class RoomManager { client.sendResponse(new UserUpdateComposer(habbo.getRoomUnit()).compose()); }); - habbos = visibleHabbos.stream().filter(h -> !h.getRoomUnit().isInvisible()).toList(); + visibleHabbos = allHabbos.stream().filter(h -> !h.getRoomUnit().isInvisible()).toList(); - synchronized (room.roomUnitLock) { - habbo.getClient().sendResponse(new RoomUsersComposer(habbos)); - habbo.getClient().sendResponse(new UserUpdateComposer(habbos)); + synchronized (room.getRoomUnitManager().roomUnitLock) { + habbo.getClient().sendResponse(new RoomUsersComposer(visibleHabbos)); + habbo.getClient().sendResponse(new UserUpdateComposer(visibleHabbos)); } if (habbo.getHabboStats().getGuild() != 0) { @@ -724,23 +716,26 @@ public class RoomManager { } - habbo.getClient().sendResponse(new RoomUsersComposer(room.getCurrentBots().valueCollection(), true)); - if (!room.getCurrentBots().isEmpty()) { - room.getCurrentBots().valueCollection().stream() + habbo.getClient().sendResponse(new RoomUsersComposer(room.getRoomUnitManager().getCurrentRoomBots().values(), true)); + + if (!room.getRoomUnitManager().getCurrentRoomBots().isEmpty()) { + room.getRoomUnitManager().getCurrentRoomBots().values().stream() .filter(b -> !b.getRoomUnit().getDanceType().equals(DanceType.NONE)) .forEach(b -> habbo.getClient().sendResponse(new DanceMessageComposer(b.getRoomUnit()))); - room.getCurrentBots().valueCollection() - .forEach(b -> habbo.getClient().sendResponse(new UserUpdateComposer(b.getRoomUnit(), b.getRoomUnit().getZ()))); + room.getRoomUnitManager().getCurrentRoomBots().values() + .forEach(b -> habbo.getClient().sendResponse(new UserUpdateComposer(b.getRoomUnit(), b.getRoomUnit().getCurrentZ()))); } - habbo.getClient().sendResponse(new RoomEntryInfoMessageComposer(room, room.isOwner(habbo))); + habbo.getClient().sendResponse(new RoomEntryInfoMessageComposer(room, room.getRoomInfo().isRoomOwner(habbo))); habbo.getClient().sendResponse(new RoomVisualizationSettingsComposer(room)); habbo.getClient().sendResponse(new GetGuestRoomResultComposer(room, habbo.getClient().getHabbo(), false, true)); - habbo.getClient().sendResponse(new ItemsComposer(room)); - final THashSet floorItems = new THashSet<>(); - THashSet allFloorItems = new THashSet<>(room.getFloorItems()); + habbo.getClient().sendResponse(new ItemsComposer(room)); + + final THashSet floorItems = new THashSet<>(); + + THashSet allFloorItems = new THashSet<>(room.getFloorItems()); if (Emulator.getPluginManager().isRegistered(RoomFloorItemsLoadEvent.class, true)) { RoomFloorItemsLoadEvent roomFloorItemsLoadEvent = Emulator.getPluginManager().fireEvent(new RoomFloorItemsLoadEvent(habbo, allFloorItems)); @@ -750,7 +745,7 @@ public class RoomManager { } allFloorItems.forEach(object -> { - if (room.isHideWired() && object instanceof InteractionWired) + if (room.getRoomInfo().isHiddenWiredEnabled() && object instanceof InteractionWired) return true; floorItems.add(object); @@ -765,9 +760,9 @@ public class RoomManager { habbo.getClient().sendResponse(new ObjectsMessageComposer(room.getFurniOwnerNames(), floorItems)); floorItems.clear(); - if (!room.getCurrentPets().isEmpty()) { - habbo.getClient().sendResponse(new RoomPetComposer(room.getCurrentPets())); - room.getCurrentPets().valueCollection().forEach(pet -> habbo.getClient().sendResponse(new UserUpdateComposer(pet.getRoomUnit()))); + if (!room.getRoomUnitManager().getCurrentRoomPets().isEmpty()) { + habbo.getClient().sendResponse(new RoomPetComposer(room.getRoomUnitManager().getCurrentRoomPets())); + room.getRoomUnitManager().getCurrentRoomPets().values().forEach(pet -> habbo.getClient().sendResponse(new UserUpdateComposer(pet.getRoomUnit()))); } if (!habbo.getHabboStats().allowTalk()) { @@ -781,45 +776,45 @@ public class RoomManager { } THashMap guildBadges = new THashMap<>(); - for (Habbo roomHabbo : habbos) { - if (roomHabbo.getRoomUnit().getDanceType().getType() > 0) { - habbo.getClient().sendResponse(new DanceMessageComposer(roomHabbo.getRoomUnit())); + for (Habbo visibleHabbo : visibleHabbos) { + if (visibleHabbo.getRoomUnit().getDanceType().getType() > 0) { + habbo.getClient().sendResponse(new DanceMessageComposer(visibleHabbo.getRoomUnit())); } - if (roomHabbo.getRoomUnit().getHandItem() > 0) { - habbo.getClient().sendResponse(new CarryObjectMessageComposer(roomHabbo.getRoomUnit())); + if (visibleHabbo.getRoomUnit().getHandItem() > 0) { + habbo.getClient().sendResponse(new CarryObjectMessageComposer(visibleHabbo.getRoomUnit())); } - if (roomHabbo.getRoomUnit().getEffectId() > 0) { - habbo.getClient().sendResponse(new AvatarEffectMessageComposer(roomHabbo.getRoomUnit())); + if (visibleHabbo.getRoomUnit().getEffectId() > 0) { + habbo.getClient().sendResponse(new AvatarEffectMessageComposer(visibleHabbo.getRoomUnit())); } - if (roomHabbo.getRoomUnit().isIdle()) { - habbo.getClient().sendResponse(new SleepMessageComposer(roomHabbo.getRoomUnit())); + if (visibleHabbo.getRoomUnit().isIdle()) { + habbo.getClient().sendResponse(new SleepMessageComposer(visibleHabbo.getRoomUnit())); } - if (roomHabbo.getHabboStats().userIgnored(habbo.getHabboInfo().getId())) { - roomHabbo.getClient().sendResponse(new IgnoreResultMessageComposer(habbo, IgnoreResultMessageComposer.IGNORED)); + if (visibleHabbo.getHabboStats().userIgnored(habbo.getHabboInfo().getId())) { + visibleHabbo.getClient().sendResponse(new IgnoreResultMessageComposer(habbo, IgnoreResultMessageComposer.IGNORED)); } - if (!roomHabbo.getHabboStats().allowTalk()) { - habbo.getClient().sendResponse(new IgnoreResultMessageComposer(roomHabbo, IgnoreResultMessageComposer.MUTED)); - } else if (habbo.getHabboStats().userIgnored(roomHabbo.getHabboInfo().getId())) { - habbo.getClient().sendResponse(new IgnoreResultMessageComposer(roomHabbo, IgnoreResultMessageComposer.IGNORED)); + if (!visibleHabbo.getHabboStats().allowTalk()) { + habbo.getClient().sendResponse(new IgnoreResultMessageComposer(visibleHabbo, IgnoreResultMessageComposer.MUTED)); + } else if (habbo.getHabboStats().userIgnored(visibleHabbo.getHabboInfo().getId())) { + habbo.getClient().sendResponse(new IgnoreResultMessageComposer(visibleHabbo, IgnoreResultMessageComposer.IGNORED)); } - if (roomHabbo.getHabboStats().getGuild() != 0 && !guildBadges.containsKey(roomHabbo.getHabboStats().getGuild())) { - Guild guild = Emulator.getGameEnvironment().getGuildManager().getGuild(roomHabbo.getHabboStats().getGuild()); + if (visibleHabbo.getHabboStats().getGuild() != 0 && !guildBadges.containsKey(visibleHabbo.getHabboStats().getGuild())) { + Guild guild = Emulator.getGameEnvironment().getGuildManager().getGuild(visibleHabbo.getHabboStats().getGuild()); if (guild != null) { - guildBadges.put(roomHabbo.getHabboStats().getGuild(), guild.getBadge()); + guildBadges.put(visibleHabbo.getHabboStats().getGuild(), guild.getBadge()); } } - if (roomHabbo.getRoomUnit().getRoomUnitType().equals(RoomUnitType.PET)) { + if (visibleHabbo.getRoomUnit().getRoomUnitType().equals(RoomUnitType.PET)) { try { - habbo.getClient().sendResponse(new UserRemoveMessageComposer(roomHabbo.getRoomUnit())); - habbo.getClient().sendResponse(new RoomUserPetComposer(((PetData) roomHabbo.getHabboStats().getCache().get("pet_type")).getType(), (Integer) roomHabbo.getHabboStats().getCache().get("pet_race"), (String) roomHabbo.getHabboStats().getCache().get("pet_color"), roomHabbo)); + habbo.getClient().sendResponse(new UserRemoveMessageComposer(visibleHabbo.getRoomUnit())); + habbo.getClient().sendResponse(new RoomUserPetComposer(((PetData) visibleHabbo.getHabboStats().getCache().get("pet_type")).getType(), (Integer) visibleHabbo.getHabboStats().getCache().get("pet_race"), (String) visibleHabbo.getHabboStats().getCache().get("pet_color"), visibleHabbo)); } catch (Exception ignored) { } @@ -829,7 +824,7 @@ public class RoomManager { habbo.getClient().sendResponse(new HabboGroupBadgesMessageComposer(guildBadges)); if ((room.hasRights(habbo) - || (room.hasGuild() + || (room.getRoomInfo().hasGuild() && room.getGuildRightLevel(habbo).isEqualOrGreaterThan(RoomRightLevels.GUILD_RIGHTS))) && !room.getHabboQueue().isEmpty()) { for (Habbo waiting : room.getHabboQueue().valueCollection()) { @@ -837,11 +832,13 @@ public class RoomManager { } } - if (room.getPollId() > 0 && !PollManager.donePoll(habbo.getClient().getHabbo(), room.getPollId())) { - Poll poll = Emulator.getGameEnvironment().getPollManager().getPoll(room.getPollId()); + if (room.getRoomInfo().getPollId() > 0) { + if (!PollManager.donePoll(habbo.getClient().getHabbo(), room.getRoomInfo().getPollId())) { + Poll poll = Emulator.getGameEnvironment().getPollManager().getPoll(room.getRoomInfo().getPollId()); - if (poll != null) { - habbo.getClient().sendResponse(new PollOfferComposer(poll)); + if (poll != null) { + habbo.getClient().sendResponse(new PollOfferComposer(poll)); + } } } @@ -856,21 +853,23 @@ public class RoomManager { WiredHandler.handle(WiredTriggerType.ENTER_ROOM, habbo.getRoomUnit(), room, null); room.habboEntered(habbo); - if (!habbo.getHabboStats().isNux() && (room.isOwner(habbo) || room.isPublicRoom())) { - NewUserExperienceScriptProceedEvent.handle(habbo); + if (!habbo.getHabboStats().isNux()) { + if (room.getRoomInfo().isRoomOwner(habbo) || room.getRoomInfo().isPublicRoom()) { + NewUserExperienceScriptProceedEvent.handle(habbo); + } } } void logEnter(Habbo habbo, Room room) { habbo.getHabboStats().roomEnterTimestamp = Emulator.getIntUnixTimestamp(); try (Connection connection = Emulator.getDatabase().getDataSource().getConnection(); PreparedStatement statement = connection.prepareStatement("INSERT INTO room_enter_log (room_id, user_id, timestamp) VALUES(?, ?, ?)")) { - statement.setInt(1, room.getId()); + statement.setInt(1, room.getRoomInfo().getId()); statement.setInt(2, habbo.getHabboInfo().getId()); statement.setInt(3, (int) (habbo.getHabboStats().getRoomEnterTimestamp())); statement.execute(); - if (!habbo.getHabboStats().visitedRoom(room.getId())) - habbo.getHabboStats().addVisitRoom(room.getId()); + if (!habbo.getHabboStats().visitedRoom(room.getRoomInfo().getId())) + habbo.getHabboStats().addVisitRoom(room.getRoomInfo().getId()); } catch (SQLException e) { log.error(CAUGHT_SQL_EXCEPTION, e); } @@ -881,20 +880,20 @@ public class RoomManager { } public void leaveRoom(Habbo habbo, Room room, boolean redirectToHotelView) { - if (habbo.getHabboInfo().getCurrentRoom() != null && habbo.getHabboInfo().getCurrentRoom() == room) { - habbo.getRoomUnit().setPathFinderRoom(null); - + if (habbo.getRoomUnit().getRoom() != null && habbo.getRoomUnit().getRoom() == room) { this.logExit(habbo); - room.removeHabbo(habbo, true); + + room.getRoomUnitManager().removeHabbo(habbo, true); if (redirectToHotelView) { habbo.getClient().sendResponse(new CloseConnectionMessageComposer()); } - habbo.getHabboInfo().setCurrentRoom(null); - habbo.getRoomUnit().setKicked(false); - if (room.getOwnerId() != habbo.getHabboInfo().getId()) { - AchievementManager.progressAchievement(room.getOwnerId(), Emulator.getGameEnvironment().getAchievementManager().getAchievement("RoomDecoHosting"), (int) Math.floor((Emulator.getIntUnixTimestamp() - habbo.getHabboStats().roomEnterTimestamp) / 60000.0)); + habbo.getRoomUnit().setPreviousRoom(room); + habbo.getRoomUnit().setRoom(null); + + if (room.getRoomInfo().getOwnerInfo().getId() != habbo.getHabboInfo().getId()) { + AchievementManager.progressAchievement(room.getRoomInfo().getOwnerInfo().getId(), Emulator.getGameEnvironment().getAchievementManager().getAchievement("RoomDecoHosting"), (int) Math.floor((Emulator.getIntUnixTimestamp() - habbo.getHabboStats().roomEnterTimestamp) / 60000.0)); } habbo.getMessenger().connectionChanged(habbo, habbo.isOnline(), false); @@ -910,19 +909,19 @@ public class RoomManager { if (habbo.getHabboInfo().getRiding() != null) { if (habbo.getHabboInfo().getRiding().getRoomUnit() != null) { - habbo.getHabboInfo().getRiding().getRoomUnit().setGoalLocation(habbo.getHabboInfo().getRiding().getRoomUnit().getCurrentLocation()); + habbo.getHabboInfo().getRiding().getRoomUnit().setGoalLocation(habbo.getHabboInfo().getRiding().getRoomUnit().getCurrentPosition()); } habbo.getHabboInfo().getRiding().setTask(PetTasks.FREE); habbo.getHabboInfo().getRiding().setRider(null); habbo.getHabboInfo().setRiding(null); } - Room room = habbo.getHabboInfo().getCurrentRoom(); + Room room = habbo.getRoomUnit().getRoom(); if (room != null) { try (Connection connection = Emulator.getDatabase().getDataSource().getConnection(); PreparedStatement statement = connection.prepareStatement("UPDATE room_enter_log SET exit_timestamp = ? WHERE user_id = ? AND room_id = ? ORDER BY timestamp DESC LIMIT 1")) { statement.setInt(1, Emulator.getIntUnixTimestamp()); statement.setInt(2, habbo.getHabboInfo().getId()); - statement.setInt(3, room.getId()); + statement.setInt(3, room.getRoomInfo().getId()); statement.execute(); } catch (SQLException e) { log.error(CAUGHT_SQL_EXCEPTION, e); @@ -934,7 +933,7 @@ public class RoomManager { Map tagCount = new HashMap<>(); for (Room room : this.activeRooms.values()) { - for (String s : room.getTags().split(";")) { + for (String s : room.getRoomInfo().getTags().split(";")) { int i = 0; if (tagCount.get(s) != null) i++; @@ -946,12 +945,12 @@ public class RoomManager { } public ArrayList getPublicRooms() { - return this.activeRooms.values().stream().filter(Room::isPublicRoom).sorted(Room.SORT_ID) .collect(Collectors.toCollection(ArrayList::new)); + return this.activeRooms.values().stream().filter(room -> room.getRoomInfo().isPublicRoom()).sorted(Room.SORT_ID) .collect(Collectors.toCollection(ArrayList::new)); } public ArrayList getPopularRooms(int count) { return this.activeRooms.values().stream() - .filter(room -> room.getUserCount() > 0 && (!room.isPublicRoom() || RoomManager.SHOW_PUBLIC_IN_POPULAR_TAB)) + .filter(room -> room.getRoomUnitManager().getRoomHabbosCount() > 0 && (!room.getRoomInfo().isPublicRoom() || RoomManager.SHOW_PUBLIC_IN_POPULAR_TAB)) .sorted() .limit(count) .collect(Collectors.toCollection(ArrayList::new)); @@ -959,7 +958,7 @@ public class RoomManager { public List getPopularRooms(int count, int category) { return this.activeRooms.values().stream() - .filter(room -> !room.isPublicRoom() && room.getCategory() == category) + .filter(room -> !room.getRoomInfo().isPublicRoom() && room.getRoomInfo().getCategory().getId() == category) .sorted() .limit(count) .toList(); @@ -969,12 +968,12 @@ public class RoomManager { Map> rooms = new HashMap<>(); for (Room room : this.activeRooms.values()) { - if (!room.isPublicRoom()) { - if (!rooms.containsKey(room.getCategory())) { - rooms.put(room.getCategory(), new ArrayList<>()); + if (!room.getRoomInfo().isPublicRoom()) { + if (!rooms.containsKey(room.getRoomInfo().getCategory().getId())) { + rooms.put(room.getRoomInfo().getCategory().getId(), new ArrayList<>()); } - rooms.get(room.getCategory()).add(room); + rooms.get(room.getRoomInfo().getCategory().getId()).add(room); } } @@ -993,7 +992,7 @@ public class RoomManager { } public List getRoomsWithName(String name) { - List rooms = new ArrayList<>(activeRooms.values().stream().filter(room -> room.getName().equalsIgnoreCase(name)).toList()); + List rooms = new ArrayList<>(activeRooms.values().stream().filter(room -> room.getRoomInfo().getName().equalsIgnoreCase(name)).toList()); if (rooms.size() < 25) { rooms.addAll(this.getOfflineRoomsWithName(name)); @@ -1016,7 +1015,7 @@ public class RoomManager { Room r = new Room(set); rooms.add(r); - this.activeRooms.put(r.getId(), r); + this.activeRooms.put(r.getRoomInfo().getId(), r); } } } catch (SQLException e) { @@ -1030,7 +1029,7 @@ public class RoomManager { ArrayList rooms = new ArrayList<>(); for (Room room : this.activeRooms.values()) { - for (String s : room.getTags().split(";")) { + for (String s : room.getRoomInfo().getTags().split(";")) { if (s.equalsIgnoreCase(tag)) { rooms.add(room); break; @@ -1047,10 +1046,10 @@ public class RoomManager { ArrayList rooms = new ArrayList<>(); for (Room room : this.activeRooms.values()) { - if (room.getGuildId() == 0) + if (room.getRoomInfo().getGuild().getId() == 0) continue; - if (room.getName().toLowerCase().contains(name.toLowerCase())) + if (room.getRoomInfo().getName().toLowerCase().contains(name.toLowerCase())) rooms.add(room); } @@ -1076,7 +1075,7 @@ public class RoomManager { Room r = new Room(set); rooms.add(r); - this.activeRooms.put(r.getId(), r); + this.activeRooms.put(r.getRoomInfo().getId(), r); } } } catch (SQLException e) { @@ -1094,10 +1093,10 @@ public class RoomManager { continue; Habbo friend = Emulator.getGameEnvironment().getHabboManager().getHabbo(buddy.getId()); - if (friend == null || friend.getHabboInfo().getCurrentRoom() == null) + if (friend == null || friend.getRoomUnit().getRoom() == null) continue; - rooms.add(friend.getHabboInfo().getCurrentRoom()); + rooms.add(friend.getRoomUnit().getRoom()); } Collections.sort(rooms); @@ -1139,7 +1138,7 @@ public class RoomManager { if (room == null) { room = new Room(set); - this.activeRooms.put(room.getId(), room); + this.activeRooms.put(room.getRoomInfo().getId(), room); } rooms.add(room); @@ -1158,10 +1157,10 @@ public class RoomManager { final ArrayList rooms = new ArrayList<>(); habbo.getHabboStats().getFavoriteRooms().forEach(value -> { - Room room = RoomManager.this.getRoom(value); + Room room = RoomManager.this.getActiveRoomById(value); if (room != null) { - if (room.getState() == RoomState.INVISIBLE) { + if (room.getRoomInfo().getState() == RoomState.INVISIBLE) { room.loadData(); if (!room.hasRights(habbo)) return true; } @@ -1226,7 +1225,7 @@ public class RoomManager { if (friend == null || friend.getHabboInfo() == null) continue; - Room room = friend.getHabboInfo().getCurrentRoom(); + Room room = friend.getRoomUnit().getRoom(); if (room != null && !rooms.contains(room) && room.hasRights(habbo)) rooms.add(room); if (rooms.size() >= limit) break; @@ -1290,29 +1289,29 @@ public class RoomManager { return activeRooms.values().stream().filter(Room::isPromoted).collect(Collectors.toCollection(ArrayList::new)); } public ArrayList getRoomsStaffPromoted() { - return activeRooms.values().stream().filter(Room::isStaffPromotedRoom).collect(Collectors.toCollection(ArrayList::new)); + return activeRooms.values().stream().filter(room -> room.getRoomInfo().isStaffPicked()).collect(Collectors.toCollection(ArrayList::new)); } public ArrayList filterRoomsByOwner(List rooms, String filter) { - return rooms.stream().filter(r -> r.getOwnerName().equalsIgnoreCase(filter)).collect(Collectors.toCollection(ArrayList::new)); + return rooms.stream().filter(r -> r.getRoomInfo().getOwnerInfo().getUsername().equalsIgnoreCase(filter)).collect(Collectors.toCollection(ArrayList::new)); } public ArrayList filterRoomsByName(List rooms, String filter) { - return rooms.stream().filter(room -> room.getName().toLowerCase().contains(filter.toLowerCase())).collect(Collectors.toCollection(ArrayList::new)); + return rooms.stream().filter(room -> room.getRoomInfo().getName().toLowerCase().contains(filter.toLowerCase())).collect(Collectors.toCollection(ArrayList::new)); } public ArrayList filterRoomsByNameAndDescription(List rooms, String filter) { - return rooms.stream().filter(room -> room.getName().toLowerCase().contains(filter.toLowerCase()) || room.getDescription().toLowerCase().contains(filter.toLowerCase())).collect(Collectors.toCollection(ArrayList::new)); + return rooms.stream().filter(room -> room.getRoomInfo().getName().toLowerCase().contains(filter.toLowerCase()) || room.getRoomInfo().getDescription().toLowerCase().contains(filter.toLowerCase())).collect(Collectors.toCollection(ArrayList::new)); } public ArrayList filterRoomsByTag(List rooms, String filter) { ArrayList r = new ArrayList<>(); for (Room room : rooms) { - if (room.getTags().split(";").length == 0) + if (room.getRoomInfo().getTags().split(";").length == 0) continue; - for (String s : room.getTags().split(";")) { + for (String s : room.getRoomInfo().getTags().split(";")) { if (s.equalsIgnoreCase(filter)) r.add(room); } @@ -1322,8 +1321,8 @@ public class RoomManager { } public ArrayList filterRoomsByGroup(List rooms, String filter) { - return rooms.stream().filter(room -> room.getGuildId() != 0) - .filter(room -> Emulator.getGameEnvironment().getGuildManager().getGuild(room.getGuildId()).getName().toLowerCase().contains(filter.toLowerCase())) + return rooms.stream().filter(room -> room.getRoomInfo().getGuild().getId() != 0) + .filter(room -> Emulator.getGameEnvironment().getGuildManager().getGuild(room.getRoomInfo().getGuild().getId()).getName().toLowerCase().contains(filter.toLowerCase())) .collect(Collectors.toCollection(ArrayList::new)); } @@ -1339,8 +1338,8 @@ public class RoomManager { public CustomRoomLayout insertCustomLayout(Room room, String map, int doorX, int doorY, int doorDirection) { try (Connection connection = Emulator.getDatabase().getDataSource().getConnection(); PreparedStatement statement = connection.prepareStatement("INSERT INTO room_models_custom (id, name, door_x, door_y, door_dir, heightmap) VALUES (?, ?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE door_x = ?, door_y = ?, door_dir = ?, heightmap = ?")) { - statement.setInt(1, room.getId()); - statement.setString(2, "custom_" + room.getId()); + statement.setInt(1, room.getRoomInfo().getId()); + statement.setString(2, "custom_" + room.getRoomInfo().getId()); statement.setInt(3, doorX); statement.setInt(4, doorY); statement.setInt(5, doorDirection); @@ -1358,7 +1357,7 @@ public class RoomManager { } public void banUserFromRoom(Habbo rights, int userId, int roomId, RoomBanTypes length) { - Room room = this.getRoom(roomId); + Room room = this.getActiveRoomById(roomId); if (room == null) return; @@ -1395,12 +1394,18 @@ public class RoomManager { room.addRoomBan(roomBan); - if (habbo != null && habbo.getHabboInfo().getCurrentRoom() == room) { - room.removeHabbo(habbo, true); + if (habbo != null && habbo.getRoomUnit().getRoom() == room) { + room.getRoomUnitManager().removeHabbo(habbo, true); habbo.getClient().sendResponse(new CantConnectMessageComposer(CantConnectMessageComposer.ROOM_ERROR_BANNED)); } } + public void handleSpawnLocation(RoomHabbo roomHabbo, RoomTile location, RoomRotation direction) { + roomHabbo.setLocation(location); + roomHabbo.setCurrentZ(location.getStackHeight()); + roomHabbo.setRotation(direction); + } + public void registerGameType(Class gameClass) { gameTypes.add(gameClass); } diff --git a/src/main/java/com/eu/habbo/habbohotel/rooms/RoomPromotion.java b/src/main/java/com/eu/habbo/habbohotel/rooms/RoomPromotion.java index e8bc4f23..02933c3e 100644 --- a/src/main/java/com/eu/habbo/habbohotel/rooms/RoomPromotion.java +++ b/src/main/java/com/eu/habbo/habbohotel/rooms/RoomPromotion.java @@ -50,7 +50,7 @@ public class RoomPromotion { statement.setString(1, this.title); statement.setString(2, this.description); statement.setInt(3, this.category); - statement.setInt(4, this.room.getId()); + statement.setInt(4, this.room.getRoomInfo().getId()); statement.executeUpdate(); } catch (SQLException e) { log.error("Caught SQL exception", e); diff --git a/src/main/java/com/eu/habbo/habbohotel/rooms/RoomSpecialTypes.java b/src/main/java/com/eu/habbo/habbohotel/rooms/RoomSpecialTypes.java index c6bd6345..2697254d 100644 --- a/src/main/java/com/eu/habbo/habbohotel/rooms/RoomSpecialTypes.java +++ b/src/main/java/com/eu/habbo/habbohotel/rooms/RoomSpecialTypes.java @@ -19,7 +19,7 @@ import com.eu.habbo.habbohotel.items.interactions.pets.InteractionNest; import com.eu.habbo.habbohotel.items.interactions.pets.InteractionPetDrink; import com.eu.habbo.habbohotel.items.interactions.pets.InteractionPetFood; import com.eu.habbo.habbohotel.items.interactions.pets.InteractionPetToy; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.habbohotel.wired.WiredConditionType; import com.eu.habbo.habbohotel.wired.WiredEffectType; import com.eu.habbo.habbohotel.wired.WiredTriggerType; @@ -48,7 +48,7 @@ public class RoomSpecialTypes { private final THashMap gameTimers; private final THashMap freezeExitTile; - private final THashMap undefined; + private final THashMap undefined; private final THashSet cycleTasks; public RoomSpecialTypes() { @@ -652,22 +652,22 @@ public class RoomSpecialTypes { return !this.freezeExitTile.isEmpty(); } - public void addUndefined(HabboItem item) { + public void addUndefined(RoomItem item) { synchronized (this.undefined) { this.undefined.put(item.getId(), item); } } - public void removeUndefined(HabboItem item) { + public void removeUndefined(RoomItem item) { synchronized (this.undefined) { this.undefined.remove(item.getId()); } } - public THashSet getItemsOfType(Class type) { - THashSet items = new THashSet<>(); + public THashSet getItemsOfType(Class type) { + THashSet items = new THashSet<>(); synchronized (this.undefined) { - for (HabboItem item : this.undefined.values()) { + for (RoomItem item : this.undefined.values()) { if (item.getClass() == type) items.add(item); } @@ -676,10 +676,10 @@ public class RoomSpecialTypes { return items; } - public HabboItem getLowestItemsOfType(Class type) { - HabboItem i = null; + public RoomItem getLowestItemsOfType(Class type) { + RoomItem i = null; synchronized (this.undefined) { - for (HabboItem item : this.undefined.values()) { + for (RoomItem item : this.undefined.values()) { if (i == null || item.getZ() < i.getZ()) { if (item.getClass().isAssignableFrom(type)) { i = item; @@ -724,7 +724,7 @@ public class RoomSpecialTypes { } public Rectangle tentAt(RoomTile location) { - for (HabboItem item : this.getItemsOfType(InteractionTent.class)) { + for (RoomItem item : this.getItemsOfType(InteractionTent.class)) { Rectangle rectangle = RoomLayout.getRectangle(item.getX(), item.getY(), item.getBaseItem().getWidth(), item.getBaseItem().getLength(), item.getRotation()); if (RoomLayout.tileInSquare(rectangle, location)) { return rectangle; diff --git a/src/main/java/com/eu/habbo/habbohotel/rooms/RoomTile.java b/src/main/java/com/eu/habbo/habbohotel/rooms/RoomTile.java index cea73922..f333c89c 100644 --- a/src/main/java/com/eu/habbo/habbohotel/rooms/RoomTile.java +++ b/src/main/java/com/eu/habbo/habbohotel/rooms/RoomTile.java @@ -1,11 +1,13 @@ package com.eu.habbo.habbohotel.rooms; import com.eu.habbo.habbohotel.items.Item; -import gnu.trove.set.hash.THashSet; +import com.eu.habbo.habbohotel.rooms.entities.RoomEntity; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import lombok.Getter; import lombok.Setter; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; public class RoomTile { @@ -15,7 +17,7 @@ public class RoomTile { private final short y; @Getter private final short z; - private final THashSet units; + private final HashSet units; @Setter @Getter private RoomTileState state; @@ -37,7 +39,7 @@ public class RoomTile { this.stackHeight = z; this.state = state; this.setAllowStack(allowStack); - this.units = new THashSet<>(); + this.units = new HashSet<>(); } public RoomTile(RoomTile tile) { @@ -173,23 +175,23 @@ public class RoomTile { return this.x == x && this.y == y; } - public List getUnits() { + public List getEntities() { synchronized (this.units) { return new ArrayList<>(this.units); } } - public void addUnit(RoomUnit unit) { + public void addUnit(RoomEntity entity) { synchronized (this.units) { - if (!this.units.contains(unit)) { - this.units.add(unit); + if (!this.units.contains(entity)) { + this.units.add(entity); } } } - public void removeUnit(RoomUnit unit) { + public void removeUnit(RoomEntity entity) { synchronized (this.units) { - this.units.remove(unit); + this.units.remove(entity); } } @@ -200,6 +202,9 @@ public class RoomTile { } public boolean unitIsOnFurniOnTile(RoomUnit unit, Item item) { - return (unit.getX() >= this.x && unit.getX() < this.x + item.getLength()) && (unit.getY() >= this.y && unit.getY() < this.y + item.getWidth()); + if ((unit.getCurrentPosition().getX() < this.x || unit.getCurrentPosition().getX() >= this.x + item.getLength())) + return false; + if (unit.getCurrentPosition().getY() < this.y) return false; + return unit.getCurrentPosition().getY() < this.y + item.getWidth(); } } \ No newline at end of file diff --git a/src/main/java/com/eu/habbo/habbohotel/rooms/RoomTrade.java b/src/main/java/com/eu/habbo/habbohotel/rooms/RoomTrade.java index a6231fa3..5ee43e00 100644 --- a/src/main/java/com/eu/habbo/habbohotel/rooms/RoomTrade.java +++ b/src/main/java/com/eu/habbo/habbohotel/rooms/RoomTrade.java @@ -1,8 +1,8 @@ package com.eu.habbo.habbohotel.rooms; import com.eu.habbo.Emulator; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; import com.eu.habbo.messages.outgoing.MessageComposer; import com.eu.habbo.messages.outgoing.inventory.FurniListInvalidateComposer; import com.eu.habbo.messages.outgoing.inventory.UnseenItemsComposer; @@ -54,7 +54,7 @@ public class RoomTrade { this.sendMessageToUsers(new TradingOpenComposer(this)); } - public void offerItem(Habbo habbo, HabboItem item) { + public void offerItem(Habbo habbo, RoomItem item) { RoomTradeUser user = this.getRoomTradeUserForHabbo(habbo); if (user.getItems().contains(item)) @@ -67,10 +67,10 @@ public class RoomTrade { this.updateWindow(); } - public void offerMultipleItems(Habbo habbo, THashSet items) { + public void offerMultipleItems(Habbo habbo, THashSet items) { RoomTradeUser user = this.getRoomTradeUserForHabbo(habbo); - for (HabboItem item : items) { + for (RoomItem item : items) { if (!user.getItems().contains(item)) { habbo.getInventory().getItemsComponent().removeHabboItem(item); user.getItems().add(item); @@ -81,7 +81,7 @@ public class RoomTrade { this.updateWindow(); } - public void removeItem(Habbo habbo, HabboItem item) { + public void removeItem(Habbo habbo, RoomItem item) { RoomTradeUser user = this.getRoomTradeUserForHabbo(habbo); if (!user.getItems().contains(item)) @@ -137,9 +137,9 @@ public class RoomTrade { boolean tradeItems() { for (RoomTradeUser roomTradeUser : this.users) { - for (HabboItem item : roomTradeUser.getItems()) { + for (RoomItem item : roomTradeUser.getItems()) { if (roomTradeUser.getHabbo().getInventory().getItemsComponent().getHabboItem(item.getId()) != null) { - this.sendMessageToUsers(new TradingCloseComposer(roomTradeUser.getHabbo().getRoomUnit().getId(), TradingCloseComposer.ITEMS_NOT_FOUND)); + this.sendMessageToUsers(new TradingCloseComposer(roomTradeUser.getHabbo().getRoomUnit().getVirtualId(), TradingCloseComposer.ITEMS_NOT_FOUND)); return false; } } @@ -182,7 +182,7 @@ public class RoomTrade { try (PreparedStatement statement = connection.prepareStatement("UPDATE items SET user_id = ? WHERE id = ? LIMIT 1")) { try (PreparedStatement stmt = connection.prepareStatement("INSERT INTO room_trade_log_items (id, item_id, user_id) VALUES (?, ?, ?)")) { - for (HabboItem item : userOne.getItems()) { + for (RoomItem item : userOne.getItems()) { item.setUserId(userTwoId); statement.setInt(1, userTwoId); statement.setInt(2, item.getId()); @@ -196,7 +196,7 @@ public class RoomTrade { } } - for (HabboItem item : userTwo.getItems()) { + for (RoomItem item : userTwo.getItems()) { item.setUserId(userOneId); statement.setInt(1, userOneId); statement.setInt(2, item.getId()); @@ -221,15 +221,15 @@ public class RoomTrade { log.error("Caught SQL exception", e); } - THashSet itemsUserOne = new THashSet<>(userOne.getItems()); - THashSet itemsUserTwo = new THashSet<>(userTwo.getItems()); + THashSet itemsUserOne = new THashSet<>(userOne.getItems()); + THashSet itemsUserTwo = new THashSet<>(userTwo.getItems()); userOne.clearItems(); userTwo.clearItems(); int creditsForUserTwo = 0; - THashSet creditFurniUserOne = new THashSet<>(); - for (HabboItem item : itemsUserOne) { + THashSet creditFurniUserOne = new THashSet<>(); + for (RoomItem item : itemsUserOne) { int worth = RoomTrade.getCreditsByItem(item); if (worth > 0) { creditsForUserTwo += worth; @@ -240,8 +240,8 @@ public class RoomTrade { itemsUserOne.removeAll(creditFurniUserOne); int creditsForUserOne = 0; - THashSet creditFurniUserTwo = new THashSet<>(); - for (HabboItem item : itemsUserTwo) { + THashSet creditFurniUserTwo = new THashSet<>(); + for (RoomItem item : itemsUserTwo) { int worth = RoomTrade.getCreditsByItem(item); if (worth > 0) { creditsForUserOne += worth; @@ -328,7 +328,7 @@ public class RoomTrade { return this.users; } - public static int getCreditsByItem(HabboItem item) { + public static int getCreditsByItem(RoomItem item) { if (!Emulator.getConfig().getBoolean("redeem.currency.trade")) return 0; if (!item.getBaseItem().getName().startsWith("CF_") && !item.getBaseItem().getName().startsWith("CFC_")) return 0; diff --git a/src/main/java/com/eu/habbo/habbohotel/rooms/RoomTradeUser.java b/src/main/java/com/eu/habbo/habbohotel/rooms/RoomTradeUser.java index 5fb7f103..309b3087 100644 --- a/src/main/java/com/eu/habbo/habbohotel/rooms/RoomTradeUser.java +++ b/src/main/java/com/eu/habbo/habbohotel/rooms/RoomTradeUser.java @@ -1,7 +1,7 @@ package com.eu.habbo.habbohotel.rooms; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import gnu.trove.set.hash.THashSet; import lombok.Getter; import lombok.Setter; @@ -9,7 +9,7 @@ import lombok.Setter; public class RoomTradeUser { @Getter private final Habbo habbo; - private final THashSet items; + private final THashSet items; @Setter @Getter private int userId; @@ -35,12 +35,12 @@ public class RoomTradeUser { this.confirmed = true; } - public void addItem(HabboItem item) { + public void addItem(RoomItem item) { this.items.add(item); } - public HabboItem getItem(int itemId) { - for (HabboItem item : this.items) { + public RoomItem getItem(int itemId) { + for (RoomItem item : this.items) { if (item.getId() == itemId) { return item; } @@ -49,7 +49,7 @@ public class RoomTradeUser { return null; } - public THashSet getItems() { + public THashSet getItems() { return this.items; } diff --git a/src/main/java/com/eu/habbo/habbohotel/rooms/RoomUnit.java b/src/main/java/com/eu/habbo/habbohotel/rooms/RoomUnit.java deleted file mode 100644 index 91d778cf..00000000 --- a/src/main/java/com/eu/habbo/habbohotel/rooms/RoomUnit.java +++ /dev/null @@ -1,752 +0,0 @@ -package com.eu.habbo.habbohotel.rooms; - -import com.eu.habbo.Emulator; -import com.eu.habbo.habbohotel.bots.Bot; -import com.eu.habbo.habbohotel.items.Item; -import com.eu.habbo.habbohotel.items.interactions.InteractionWater; -import com.eu.habbo.habbohotel.items.interactions.InteractionWaterItem; -import com.eu.habbo.habbohotel.items.interactions.interfaces.ConditionalGate; -import com.eu.habbo.habbohotel.pets.Pet; -import com.eu.habbo.habbohotel.pets.RideablePet; -import com.eu.habbo.habbohotel.users.DanceType; -import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; -import com.eu.habbo.messages.outgoing.rooms.users.UserUpdateComposer; -import com.eu.habbo.plugin.Event; -import com.eu.habbo.plugin.events.roomunit.RoomUnitLookAtPointEvent; -import com.eu.habbo.plugin.events.roomunit.RoomUnitSetGoalEvent; -import com.eu.habbo.plugin.events.users.UserIdleEvent; -import com.eu.habbo.plugin.events.users.UserTakeStepEvent; -import com.eu.habbo.threading.runnables.RoomUnitKick; -import com.eu.habbo.util.pathfinding.Rotation; -import gnu.trove.map.TMap; -import gnu.trove.map.hash.THashMap; -import gnu.trove.set.hash.THashSet; -import lombok.Getter; -import lombok.Setter; -import lombok.experimental.Accessors; -import lombok.extern.slf4j.Slf4j; - -import java.util.*; -import java.util.concurrent.ConcurrentHashMap; - -@Slf4j -public class RoomUnit { - - @Getter - @Setter - private boolean isWiredTeleporting = false; - @Getter - @Setter - private boolean isLeavingTeleporter = false; - @Getter - @Setter - private boolean isSwimming = false; - @Getter - private final ConcurrentHashMap status; - private final THashMap cacheable; - @Getter - @Setter - private boolean canRotate = true; - @Getter - @Setter - private boolean animateWalk = false; - @Getter - @Setter - private boolean cmdTeleport = false; - @Getter - @Setter - private boolean cmdSit = false; - @Setter - @Getter - private boolean cmdStand = false; - @Getter - @Setter - private boolean cmdLay = false; - @Setter - @Getter - private boolean sitUpdate = false; - @Getter - @Setter - private boolean isTeleporting = false; - @Getter - @Setter - private boolean isKicked; - @Getter - @Setter - private int kickCount = 0; - private int id; - @Getter - private RoomTile startLocation; - @Getter - @Setter - private RoomTile botStartLocation; - @Getter - private RoomTile previousLocation; - @Getter - @Setter - @Accessors(chain = true) - private double previousLocationZ; - private RoomTile currentLocation; - @Getter - private RoomTile goalLocation; - @Getter - private double z; - private int tilesWalked; - @Getter - @Setter - private boolean inRoom; - @Setter - @Accessors(chain = true) - private boolean canWalk; - @Setter - @Getter - private boolean fastWalk = false; - private boolean statusUpdate = false; - @Getter - @Setter - @Accessors(chain = true) - private boolean invisible = false; - @Setter - private boolean canLeaveRoomByDoor = true; - @Setter - private RoomUserRotation bodyRotation = RoomUserRotation.NORTH; - @Getter - @Setter - private RoomUserRotation headRotation = RoomUserRotation.NORTH; - @Getter - @Setter - private DanceType danceType; - @Getter - @Setter - @Accessors(chain = true) - private RoomUnitType roomUnitType; - @Getter - @Setter - private Deque path = new LinkedList<>(); - private int handItem; - private long handItemTimestamp; - private int walkTimeOut; - private int effectId; - private int effectEndTimestamp; - private int previousEffectId; - private int previousEffectEndTimestamp; - private int timeInRoom; - - private int idleTimer; - @Setter - @Getter - private Room room; - @Getter - @Setter - private RoomRightLevels rightsLevel = RoomRightLevels.NONE; - private final THashSet overridableTiles; - - public RoomUnit() { - this.id = 0; - this.inRoom = false; - this.canWalk = true; - this.status = new ConcurrentHashMap<>(); - this.cacheable = new THashMap<>(); - this.roomUnitType = RoomUnitType.UNKNOWN; - this.danceType = DanceType.NONE; - this.handItem = 0; - this.handItemTimestamp = 0; - this.walkTimeOut = Emulator.getIntUnixTimestamp(); - this.effectId = 0; - this.previousEffectId = 0; - this.previousEffectEndTimestamp = -1; - this.setKicked(false); - this.overridableTiles = new THashSet<>(); - this.timeInRoom = 0; - } - - public void clearWalking() { - this.goalLocation = null; - this.startLocation = this.currentLocation; - this.inRoom = false; - - this.status.clear(); - - this.cacheable.clear(); - } - - public void stopWalking() { - synchronized (this.status) { - this.status.remove(RoomUnitStatus.MOVE); - this.setGoalLocation(this.currentLocation); - } - } - - public boolean cycle(Room room) { - try { - if (handleRider(room)) - return this.statusUpdate; - - Habbo habboT = room.getHabbo(this); - if (!this.isWalking() && !this.isKicked() && this.status.remove(RoomUnitStatus.MOVE) == null && habboT != null) { - habboT.getHabboInfo().getRiding().getRoomUnit().status.remove(RoomUnitStatus.MOVE); - return true; - } - - if (this.status.remove(RoomUnitStatus.SIT) != null || this.status.remove(RoomUnitStatus.MOVE) != null || this.status.remove(RoomUnitStatus.LAY) != null) - this.statusUpdate = true; - - for (Map.Entry set : this.status.entrySet()) { - if (set.getKey().isRemoveWhenWalking()) { - this.status.remove(set.getKey()); - } - } - - if (this.path == null || this.path.isEmpty()) - return true; - - boolean canfastwalk = habboT == null || habboT.getHabboInfo().getRiding() == null; - - RoomTile next = this.path.poll(); - boolean overrideChecks = next != null && this.canOverrideTile(next); - - if (this.path.isEmpty()) { - this.setSitUpdate(true); - - if (next != null && next.hasUnits() && !overrideChecks) { - return false; - } - } - - Deque peekPath = room.getLayout().findPath(this.currentLocation, this.path.peek(), this.goalLocation, this); - - if (peekPath == null) peekPath = new LinkedList<>(); - - if (peekPath.size() >= 3) { - if (path.isEmpty()) return true; - - path.pop(); - //peekPath.pop(); //Start - peekPath.removeLast(); //End - - if (peekPath.peek() != next) { - next = peekPath.poll(); - for (int i = 0; i < peekPath.size(); i++) { - this.path.addFirst(peekPath.removeLast()); - } - } - } - - if (canfastwalk && this.fastWalk && this.path.size() > 1) { - next = this.path.poll(); - } - - if (next == null) - return true; - - Habbo habbo = room.getHabbo(this); - - this.status.remove(RoomUnitStatus.DEAD); - - if (habbo != null) { - if (this.isIdle()) { - UserIdleEvent event = new UserIdleEvent(habbo, UserIdleEvent.IdleReason.WALKED, false); - Emulator.getPluginManager().fireEvent(event); - - if (!event.isCancelled() && !event.isIdle()) { - room.unIdle(habbo); - this.idleTimer = 0; - } - } - - if (Emulator.getPluginManager().isRegistered(UserTakeStepEvent.class, false)) { - Event e = new UserTakeStepEvent(habbo, room.getLayout().getTile(this.getX(), this.getY()), next); - Emulator.getPluginManager().fireEvent(e); - - if (e.isCancelled()) - return true; - } - } - - HabboItem item = room.getTopItemAt(next.getX(), next.getY()); - - double height = next.getStackHeight() - this.currentLocation.getStackHeight(); - if (!room.tileWalkable(next) || (!RoomLayout.ALLOW_FALLING && height < -RoomLayout.MAXIMUM_STEP_HEIGHT) || (next.getState() == RoomTileState.OPEN && height > RoomLayout.MAXIMUM_STEP_HEIGHT)) { - this.room = room; - this.path.clear(); - this.findPath(); - - if (this.path.isEmpty()) { - this.status.remove(RoomUnitStatus.MOVE); - return false; - } - next = this.path.pop(); - - } - - boolean canSitNextTile = room.canSitAt(next.getX(), next.getY()); - - if (canSitNextTile) { - HabboItem tallestChair = room.getTallestChair(next); - - if (tallestChair != null) - item = tallestChair; - } - - if (next.equals(this.goalLocation) && next.getState() == RoomTileState.SIT && !overrideChecks - && (item == null || item.getZ() - this.getZ() > RoomLayout.MAXIMUM_STEP_HEIGHT)) { - this.status.remove(RoomUnitStatus.MOVE); - return false; - } - - double zHeight = 0.0D; - if (habbo != null && habbo.getHabboInfo().getRiding() != null) { - zHeight += 1.0D; - } - - HabboItem habboItem = room.getTopItemAt(this.getX(), this.getY()); - if (habboItem != null && (habboItem != item || !RoomLayout.pointInSquare(habboItem.getX(), habboItem.getY(), habboItem.getX() + habboItem.getBaseItem().getWidth() - 1, habboItem.getY() + habboItem.getBaseItem().getLength() - 1, next.getX(), next.getY()))) - habboItem.onWalkOff(this, room, new Object[]{this.getCurrentLocation(), next}); - - - this.tilesWalked++; - - RoomUserRotation oldRotation = this.getBodyRotation(); - this.setRotation(RoomUserRotation.values()[Rotation.Calculate(this.getX(), this.getY(), next.getX(), next.getY())]); - if (item != null) { - if (item != habboItem || !RoomLayout.pointInSquare(item.getX(), item.getY(), item.getX() + item.getBaseItem().getWidth() - 1, item.getY() + item.getBaseItem().getLength() - 1, this.getX(), this.getY())) { - if (item.canWalkOn(this, room, null)) { - item.onWalkOn(this, room, new Object[]{this.getCurrentLocation(), next}); - } else if (item instanceof ConditionalGate conditionalGate) { - this.setRotation(oldRotation); - this.tilesWalked--; - this.setGoalLocation(this.currentLocation); - this.status.remove(RoomUnitStatus.MOVE); - room.sendComposer(new UserUpdateComposer(this).compose()); - - if (habbo != null) { - conditionalGate.onRejected(this, this.getRoom(), new Object[]{}); - } - return false; - } - } else { - item.onWalk(this, room, new Object[]{this.getCurrentLocation(), next}); - } - - zHeight += item.getZ(); - - if (!item.getBaseItem().allowSit() && !item.getBaseItem().allowLay()) { - zHeight += Item.getCurrentHeight(item); - } - } else { - zHeight += room.getLayout().getHeightAtSquare(next.getX(), next.getY()); - } - - - this.setPreviousLocation(this.getCurrentLocation()); - - this.setStatus(RoomUnitStatus.MOVE, next.getX() + "," + next.getY() + "," + zHeight); - if (habbo != null && habbo.getHabboInfo().getRiding() != null) { - RoomUnit ridingUnit = habbo.getHabboInfo().getRiding().getRoomUnit(); - - if (ridingUnit != null) { - ridingUnit.setPreviousLocationZ(this.getZ()); - this.setZ(zHeight - 1.0); - ridingUnit.setRotation(RoomUserRotation.values()[Rotation.Calculate(this.getX(), this.getY(), next.getX(), next.getY())]); - ridingUnit.setPreviousLocation(this.getCurrentLocation()); - ridingUnit.setGoalLocation(this.getGoalLocation()); - ridingUnit.setStatus(RoomUnitStatus.MOVE, next.getX() + "," + next.getY() + "," + (zHeight - 1.0)); - room.sendComposer(new UserUpdateComposer(ridingUnit).compose()); - } - } - - this.setZ(zHeight); - this.setCurrentLocation(room.getLayout().getTile(next.getX(), next.getY())); - this.resetIdleTimer(); - - if (habbo != null) { - HabboItem topItem = room.getTopItemAt(next.getX(), next.getY()); - - boolean isAtDoor = next.getX() == room.getLayout().getDoorX() && next.getY() == room.getLayout().getDoorY(); - boolean publicRoomKicks = !room.isPublicRoom() || Emulator.getConfig().getBoolean("hotel.room.public.doortile.kick"); - boolean invalidated = topItem != null && topItem.invalidatesToRoomKick(); - - if (this.canLeaveRoomByDoor && isAtDoor && publicRoomKicks && !invalidated) { - Emulator.getThreading().run(new RoomUnitKick(habbo, room, false), 500); - } - } - - return false; - - } catch (Exception e) { - log.error("Caught exception", e); - return false; - } - } - - private boolean handleRider(Room room) { - Habbo rider = null; - if (this.getRoomUnitType() == RoomUnitType.PET) { - Pet pet = room.getPet(this); - if (pet instanceof RideablePet rideablePet) { - rider = rideablePet.getRider(); - } - } - - if (rider != null) { - // copy things from rider - if (this.status.containsKey(RoomUnitStatus.MOVE) && !rider.getRoomUnit().getStatus().containsKey(RoomUnitStatus.MOVE)) { - this.status.remove(RoomUnitStatus.MOVE); - } - - if (rider.getRoomUnit().getCurrentLocation().getX() != this.getX() || rider.getRoomUnit().getCurrentLocation().getY() != this.getY()) { - this.status.put(RoomUnitStatus.MOVE, rider.getRoomUnit().getCurrentLocation().getX() + "," + rider.getRoomUnit().getCurrentLocation().getY() + "," + (rider.getRoomUnit().getCurrentLocation().getStackHeight())); - this.setPreviousLocation(rider.getRoomUnit().getPreviousLocation()); - this.setPreviousLocationZ(rider.getRoomUnit().getPreviousLocation().getStackHeight()); - this.setCurrentLocation(rider.getRoomUnit().getCurrentLocation()); - this.setZ(rider.getRoomUnit().getCurrentLocation().getStackHeight()); - } - - return true; - } - return false; - } - - public int getId() { - return this.id; - } - - public void setId(int id) { - this.id = id; - } - - public RoomTile getCurrentLocation() { - return this.currentLocation; - } - - public void setCurrentLocation(RoomTile location) { - if (location != null) { - if (this.currentLocation != null) { - this.currentLocation.removeUnit(this); - } - this.currentLocation = location; - location.addUnit(this); - } - } - - public short getX() { - return this.currentLocation.getX(); - } - - public short getY() { - return this.currentLocation.getY(); - } - - public void setZ(double z) { - this.z = z; - - if (this.room != null) { - Bot bot = this.room.getBot(this); - if (bot != null) { - bot.needsUpdate(true); - } - } - } - - public void setRotation(RoomUserRotation rotation) { - this.bodyRotation = rotation; - this.headRotation = rotation; - } - - public RoomUserRotation getBodyRotation() { - return this.bodyRotation; - } - - public boolean canWalk() { - return this.canWalk; - } - - public int tilesWalked() { - return this.tilesWalked; - } - - public RoomUnit setGoalLocation(RoomTile goalLocation) { - if (goalLocation != null) { - this.setGoalLocation(goalLocation, false); - } - return this; - } - - public void setGoalLocation(RoomTile goalLocation, boolean noReset) { - if (Emulator.getPluginManager().isRegistered(RoomUnitSetGoalEvent.class, false)) { - Event event = new RoomUnitSetGoalEvent(this.room, this, goalLocation); - Emulator.getPluginManager().fireEvent(event); - - if (event.isCancelled()) - return; - } - - /// Set start location - this.startLocation = this.currentLocation; - - if (goalLocation != null && !noReset) { - boolean isWalking = this.hasStatus(RoomUnitStatus.MOVE); - this.goalLocation = goalLocation; - this.findPath(); ///< Quadral: this is where we start formulating a path - if (!this.path.isEmpty()) { - this.tilesWalked = isWalking ? this.tilesWalked : 0; - this.setCmdSit(false); - } else { - this.goalLocation = this.currentLocation; - } - } - } - - public RoomUnit setLocation(RoomTile location) { - if (location != null) { - this.startLocation = location; - setPreviousLocation(location); - setCurrentLocation(location); - this.goalLocation = location; - this.botStartLocation = location; - } - return this; - } - - public void setPreviousLocation(RoomTile previousLocation) { - this.previousLocation = previousLocation; - this.previousLocationZ = this.z; - } - - public RoomUnit setPathFinderRoom(Room room) { - this.room = room; - return this; - } - - public void findPath() { - if (this.room != null && this.room.getLayout() != null && this.goalLocation != null && (this.goalLocation.isWalkable() || this.room.canSitOrLayAt(this.goalLocation.getX(), this.goalLocation.getY()) || this.canOverrideTile(this.goalLocation))) { - Deque newPath = this.room.getLayout().findPath(this.currentLocation, this.goalLocation, this.goalLocation, this); - if (newPath != null) this.path = newPath; - } - } - - public boolean isAtGoal() { - return this.currentLocation.equals(this.goalLocation); - } - - public boolean isWalking() { - return !this.isAtGoal() && this.canWalk; - } - - public String getStatus(RoomUnitStatus key) { - return this.status.get(key); - } - - public RoomUnit removeStatus(RoomUnitStatus key) { - this.status.remove(key); - return this; - } - - public void setStatus(RoomUnitStatus key, String value) { - if (key != null && value != null) { - this.status.put(key, value); - } - } - - public boolean hasStatus(RoomUnitStatus key) { - return this.status.containsKey(key); - } - - public void clearStatus() { - this.status.clear(); - } - - public void statusUpdate(boolean update) { - this.statusUpdate = update; - } - - public boolean needsStatusUpdate() { - return this.statusUpdate; - } - - public TMap getCacheable() { - return this.cacheable; - } - - public int getHandItem() { - return this.handItem; - } - - public RoomUnit setHandItem(int handItem) { - this.handItem = handItem; - this.handItemTimestamp = System.currentTimeMillis(); - return this; - } - - public long getHandItemTimestamp() { - return this.handItemTimestamp; - } - - public int getEffectId() { - return this.effectId; - } - - - public void setEffectId(int effectId, int endTimestamp) { - this.effectId = effectId; - this.effectEndTimestamp = endTimestamp; - } - - public int getEffectEndTimestamp() { - return this.effectEndTimestamp; - } - - public int getPreviousEffectId() { - return this.previousEffectId; - } - - public void setPreviousEffectId(int effectId, int endTimestamp) { - this.previousEffectId = effectId; - this.previousEffectEndTimestamp = endTimestamp; - } - - public int getPreviousEffectEndTimestamp() { - return this.previousEffectEndTimestamp; - } - - public int getWalkTimeOut() { - return this.walkTimeOut; - } - - public void setWalkTimeOut(int walkTimeOut) { - this.walkTimeOut = walkTimeOut; - } - - public void increaseTimeInRoom() { - this.timeInRoom++; - } - - public int getTimeInRoom() { - return this.timeInRoom; - } - - public void resetTimeInRoom() { - this.timeInRoom = 0; - } - - public void increaseIdleTimer() { - this.idleTimer++; - } - - public boolean isIdle() { - return this.idleTimer > Room.IDLE_CYCLES; //Amount of room cycles / 2 = seconds. - } - - public int getIdleTimer() { - return this.idleTimer; - } - - public void resetIdleTimer() { - this.idleTimer = 0; - } - - public void setIdle() { - this.idleTimer = Room.IDLE_CYCLES + 1; - } - - public void lookAtPoint(RoomTile location) { - if (!this.isCanRotate()) return; - - if (Emulator.getPluginManager().isRegistered(RoomUnitLookAtPointEvent.class, false)) { - Event lookAtPointEvent = new RoomUnitLookAtPointEvent(this.room, this, location); - Emulator.getPluginManager().fireEvent(lookAtPointEvent); - - if (lookAtPointEvent.isCancelled()) - return; - } - - if (this.status.containsKey(RoomUnitStatus.LAY)) { - return; - } - - if (!this.status.containsKey(RoomUnitStatus.SIT)) { - this.bodyRotation = (RoomUserRotation.values()[Rotation.Calculate(this.getX(), this.getY(), location.getX(), location.getY())]); - } - - RoomUserRotation rotation = (RoomUserRotation.values()[Rotation.Calculate(this.getX(), this.getY(), location.getX(), location.getY())]); - - if (Math.abs(rotation.getValue() - this.bodyRotation.getValue()) <= 1) { - this.headRotation = rotation; - } - } - - public boolean canOverrideTile(RoomTile tile) { - if (tile == null || room == null || room.getLayout() == null) return false; - - if (room.getItemsAt(tile).stream().anyMatch(i -> i.canOverrideTile(this, room, tile))) - return true; - - int tileIndex = (tile.getX() & 0xFF) | (tile.getY() << 12); - return this.overridableTiles.contains(tileIndex); - } - - public void addOverrideTile(RoomTile tile) { - int tileIndex = (tile.getX() & 0xFF) | (tile.getY() << 12); - if (!this.overridableTiles.contains(tileIndex)) { - this.overridableTiles.add(tileIndex); - } - } - - public void removeOverrideTile(RoomTile tile) { - if (room == null || room.getLayout() == null) return; - - int tileIndex = (tile.getX() & 0xFF) | (tile.getY() << 12); - this.overridableTiles.remove(tileIndex); - } - - public void clearOverrideTiles() { - this.overridableTiles.clear(); - } - - public boolean canLeaveRoomByDoor() { - return canLeaveRoomByDoor; - } - - public boolean canForcePosture() { - if (this.room == null) return false; - - HabboItem topItem = this.room.getTopItemAt(this.getX(), this.getY()); - - return (!(topItem instanceof InteractionWater) && !(topItem instanceof InteractionWaterItem)); - } - - public RoomTile getClosestTile(List tiles) { - return tiles.stream().min(Comparator.comparingDouble(a -> a.distance(this.getCurrentLocation()))).orElse(null); - } - - public RoomTile getClosestAdjacentTile(short x, short y, boolean diagonal) { - if (room == null) return null; - - RoomTile baseTile = room.getLayout().getTile(x, y); - - if (baseTile == null) return null; - - List rotations = new ArrayList<>(); - rotations.add(RoomUserRotation.SOUTH.getValue()); - rotations.add(RoomUserRotation.NORTH.getValue()); - rotations.add(RoomUserRotation.EAST.getValue()); - rotations.add(RoomUserRotation.WEST.getValue()); - - if (diagonal) { - rotations.add(RoomUserRotation.NORTH_EAST.getValue()); - rotations.add(RoomUserRotation.NORTH_WEST.getValue()); - rotations.add(RoomUserRotation.SOUTH_EAST.getValue()); - rotations.add(RoomUserRotation.SOUTH_WEST.getValue()); - } - - return this.getClosestTile( - rotations.stream() - .map(rotation -> room.getLayout().getTileInFront(baseTile, rotation)) - .filter(t -> t != null && t.isWalkable() && (this.getCurrentLocation().equals(t) - || !room.hasHabbosAt(t.getX(), t.getY()))) - .toList() - ); - } - -} diff --git a/src/main/java/com/eu/habbo/habbohotel/rooms/RoomUnitManager.java b/src/main/java/com/eu/habbo/habbohotel/rooms/RoomUnitManager.java new file mode 100644 index 00000000..a08b97c7 --- /dev/null +++ b/src/main/java/com/eu/habbo/habbohotel/rooms/RoomUnitManager.java @@ -0,0 +1,439 @@ +package com.eu.habbo.habbohotel.rooms; + +import com.eu.habbo.Emulator; +import com.eu.habbo.habbohotel.bots.Bot; +import com.eu.habbo.habbohotel.pets.Pet; +import com.eu.habbo.habbohotel.pets.PetManager; +import com.eu.habbo.habbohotel.rooms.entities.RoomRotation; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnitType; +import com.eu.habbo.habbohotel.rooms.entities.units.types.RoomBot; +import com.eu.habbo.habbohotel.rooms.entities.units.types.RoomHabbo; +import com.eu.habbo.habbohotel.rooms.entities.units.types.RoomPet; +import com.eu.habbo.habbohotel.units.Unit; +import com.eu.habbo.habbohotel.users.DanceType; +import com.eu.habbo.habbohotel.users.Habbo; +import com.eu.habbo.messages.outgoing.hotelview.CloseConnectionMessageComposer; +import com.eu.habbo.messages.outgoing.inventory.PetAddedToInventoryComposer; +import com.eu.habbo.messages.outgoing.rooms.pets.RoomPetComposer; +import com.eu.habbo.messages.outgoing.rooms.users.UserRemoveMessageComposer; +import gnu.trove.set.hash.THashSet; +import lombok.Getter; +import lombok.extern.slf4j.Slf4j; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.*; +import java.util.concurrent.ConcurrentHashMap; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +import static com.eu.habbo.database.DatabaseConstants.CAUGHT_SQL_EXCEPTION; + +@Slf4j +@Getter +public class RoomUnitManager { + private final int roomId; + private final ConcurrentHashMap currentRoomUnits; + private final ConcurrentHashMap currentRoomHabbos; + private final ConcurrentHashMap currentRoomBots; + private final ConcurrentHashMap currentRoomPets; + private volatile int roomUnitCounter; + public final Object roomUnitLock; + + public RoomUnitManager(int roomId) { + this.roomId = roomId; + this.currentRoomUnits = new ConcurrentHashMap<>(); + + this.currentRoomHabbos = new ConcurrentHashMap<>(); + this.currentRoomBots = new ConcurrentHashMap<>(); + this.currentRoomPets = new ConcurrentHashMap<>(); + this.roomUnitCounter = 0; + + this.roomUnitLock = new Object(); + } + + public synchronized void load(Connection connection) { + this.loadBots(connection); + this.loadPets(connection); + } + + private synchronized void loadBots(Connection connection) { + try (PreparedStatement statement = connection.prepareStatement("SELECT users.username AS owner_name, bots.* FROM bots INNER JOIN users ON bots.user_id = users.id WHERE room_id = ?")) { + statement.setInt(1, this.roomId); + try (ResultSet set = statement.executeQuery()) { + while (set.next()) { + Bot bot = Emulator.getGameEnvironment().getBotManager().loadBot(set); + Room room = Emulator.getGameEnvironment().getRoomManager().getActiveRoomById(this.roomId); + + + if (bot != null && room != null) { + bot.setRoom(room); + bot.setRoomUnit(new RoomBot()); + bot.getRoomUnit().setRoom(room); + bot.getRoomUnit().setLocation(room.getLayout().getTile((short) set.getInt("x"), (short) set.getInt("y"))); + if (bot.getRoomUnit().getCurrentPosition() == null || bot.getRoomUnit().getCurrentPosition().getState() == RoomTileState.INVALID) { + bot.getRoomUnit().setCurrentZ(room.getLayout().getDoorTile().getStackHeight()); + bot.getRoomUnit().setLocation(room.getLayout().getDoorTile()); + bot.getRoomUnit().setRotation(RoomRotation.fromValue(room.getLayout().getDoorDirection())); + } else { + bot.getRoomUnit().setCurrentZ(set.getDouble("z")); + bot.getRoomUnit().setPreviousLocationZ(set.getDouble("z")); + bot.getRoomUnit().setRotation(RoomRotation.values()[set.getInt("rot")]); + } + bot.getRoomUnit().setRoomUnitType(RoomUnitType.BOT); + bot.getRoomUnit().setDanceType(DanceType.values()[set.getInt("dance")]); + bot.getRoomUnit().setInRoom(true); + room.giveEffect(bot.getRoomUnit(), set.getInt("effect"), Integer.MAX_VALUE); + this.addRoomUnit(bot); + } + } + } + } catch (SQLException e) { + log.error(CAUGHT_SQL_EXCEPTION, e); + } catch (Exception e) { + log.error("Caught Exception", e); + } + } + + private synchronized void loadPets(Connection connection) { + try (PreparedStatement statement = connection.prepareStatement("SELECT users.username as pet_owner_name, users_pets.* FROM users_pets INNER JOIN users ON users_pets.user_id = users.id WHERE room_id = ?")) { + statement.setInt(1, this.roomId); + try (ResultSet set = statement.executeQuery()) { + while (set.next()) { + Pet pet = PetManager.loadPet(set); + Room room = Emulator.getGameEnvironment().getRoomManager().getActiveRoomById(this.roomId); + + pet.setRoom(room); + pet.setRoomUnit(new RoomPet()); + pet.getRoomUnit().setRoom(room); + pet.getRoomUnit().setLocation(room.getLayout().getTile((short) set.getInt("x"), (short) set.getInt("y"))); + if (pet.getRoomUnit().getCurrentPosition() == null || pet.getRoomUnit().getCurrentPosition().getState() == RoomTileState.INVALID) { + pet.getRoomUnit().setCurrentZ(room.getLayout().getDoorTile().getStackHeight()); + pet.getRoomUnit().setLocation(room.getLayout().getDoorTile()); + pet.getRoomUnit().setRotation(RoomRotation.fromValue(room.getLayout().getDoorDirection())); + } else { + pet.getRoomUnit().setCurrentZ(set.getDouble("z")); + pet.getRoomUnit().setRotation(RoomRotation.values()[set.getInt("rot")]); + } + pet.getRoomUnit().setRoomUnitType(RoomUnitType.PET); + pet.getRoomUnit().setCanWalk(true); + this.addRoomUnit(pet); + room.getFurniOwnerNames().put(pet.getUserId(), set.getString("pet_owner_name")); + } + } + } catch (SQLException e) { + log.error(CAUGHT_SQL_EXCEPTION, e); + } catch (Exception e) { + log.error("Caught Exception", e); + } + } + + public void addRoomUnit(Unit unit) { + synchronized (this.roomUnitLock) { + unit.getRoomUnit().setVirtualId(this.roomUnitCounter); + this.currentRoomUnits.put(unit.getRoomUnit().getVirtualId(), unit.getRoomUnit()); + this.roomUnitCounter++; + + switch(unit.getRoomUnit().getRoomUnitType()) { + case HABBO: + this.currentRoomHabbos.put(((Habbo) unit).getHabboInfo().getId(), (Habbo) unit); + unit.getRoomUnit().getRoom().updateDatabaseUserCount(); + break; + case BOT: + this.currentRoomBots.put(((Bot) unit).getId(), (Bot) unit); + break; + case PET: + this.currentRoomPets.put(((Pet) unit).getId(), (Pet) unit); + + Habbo habbo = this.getRoomHabboById(((Pet) unit).getUserId()); + + if (habbo != null) { + unit.getRoomUnit().getRoom().getFurniOwnerNames().put(((Pet) unit).getUserId(), this.getRoomHabboById(((Pet) unit).getUserId()).getHabboInfo().getUsername()); + } + break; + } + } + } + + public Collection getRoomUnitsAt(RoomTile tile) { + return this.currentRoomUnits.values().stream().filter(roomUnit -> roomUnit.getCurrentPosition().equals(tile)).collect(Collectors.toSet()); + } + + public Collection getAvatarsAt(RoomTile tile) { + return Stream.concat(this.getHabbosAt(tile).stream(), this.getBotsAt(tile).stream()).map(Unit::getRoomUnit).collect(Collectors.toList()); + } + public Collection getRoomHabbos() { + return this.currentRoomHabbos.values(); + } + + public int getRoomHabbosCount() { + return this.currentRoomHabbos.size(); + } + + public boolean hasHabbosAt(RoomTile tile) { + return this.currentRoomHabbos.values().stream().anyMatch(habbo -> habbo.getRoomUnit().getCurrentPosition().equals(tile)); + } + + public Collection getHabbosAt(RoomTile tile) { + return this.currentRoomHabbos.values().stream().filter(habbo -> habbo.getRoomUnit().getCurrentPosition().equals(tile)).collect(Collectors.toSet()); + } + + public Habbo getRoomHabboById(int habboId) { + return this.currentRoomHabbos.get(habboId); + } + public Habbo getRoomHabboByUsername(String username) { + return this.currentRoomHabbos.values().stream().filter(habbo -> habbo.getHabboInfo().getUsername().equalsIgnoreCase(username)).findFirst().orElse(null); + } + + public Habbo getHabboByRoomUnit(RoomUnit roomUnit) { + return this.currentRoomHabbos.values().stream().filter(habbo -> habbo.getRoomUnit() == roomUnit).findFirst().orElse(null); + } + + public Bot getRoomBotById(int botId) { + return this.currentRoomBots.get(botId); + } + + public List getBotsByName(String name) { + synchronized (this.currentRoomBots) { + return currentRoomBots.values().stream().filter(bot -> bot.getName().equalsIgnoreCase(name)).toList(); + } + } + + public Bot getBotByRoomUnit(RoomUnit roomUnit) { + return this.currentRoomBots.values().stream().filter(bot -> bot.getRoomUnit() == roomUnit).findFirst().orElse(null); + } + + public boolean hasBotsAt(RoomTile tile) { + return this.currentRoomBots.values().stream().anyMatch(bot -> bot.getRoomUnit().getCurrentPosition().equals(tile)); + } + + public Collection getBotsAt(RoomTile tile) { + return this.currentRoomBots.values().stream().filter(bot -> bot.getRoomUnit().getCurrentPosition().equals(tile)).collect(Collectors.toSet()); + } + + public void placePet(Pet pet, Room room, short x, short y, double z) { + synchronized (this.currentRoomPets) { + RoomTile tile = room.getLayout().getTile(x, y); + + if (tile == null) { + tile = room.getLayout().getDoorTile(); + } + + pet.setRoomUnit(new RoomPet()); + pet.setRoom(room); + pet.getRoomUnit() + .setGoalLocation(tile) + .setLocation(tile) + .setRoomUnitType(RoomUnitType.PET) + .setCanWalk(true) + .setPreviousLocationZ(z) + .setCurrentZ(z) + .setRoom(room); + + if (pet.getRoomUnit().getCurrentPosition() == null) { + pet.getRoomUnit() + .setLocation(room.getLayout().getDoorTile()) + .setRotation(RoomRotation.fromValue(room.getLayout().getDoorDirection())); + } + + pet.setNeedsUpdate(true); + room.getFurniOwnerNames().put(pet.getUserId(), this.getRoomHabboById(pet.getUserId()).getHabboInfo().getUsername()); + this.addRoomUnit(pet); + room.sendComposer(new RoomPetComposer(pet).compose()); + } + } + + public boolean hasPetsAt(RoomTile tile) { + return this.currentRoomPets.values().stream().anyMatch(pet -> pet.getRoomUnit().getCurrentPosition().equals(tile)); + } + + public Collection getPetsAt(RoomTile tile) { + return this.currentRoomPets.values().stream().filter(pet -> pet.getRoomUnit().getCurrentPosition().equals(tile)).collect(Collectors.toSet()); + } + + public Pet getRoomPetById(int petId) { + return this.currentRoomPets.get(petId); + } + + public Pet getPetByRoomUnit(RoomUnit roomUnit) { + return this.currentRoomPets.values().stream().filter(pet -> pet.getRoomUnit() == roomUnit).findFirst().orElse(null); + } + + public void pickUpMyPets(Habbo owner) { + THashSet pets = new THashSet<>(); + + synchronized (this.currentRoomPets) { + for (Pet pet : this.currentRoomPets.values()) { + if (pet.getUserId() == owner.getHabboInfo().getId()) { + pets.add(pet); + } + } + } + + for (Pet pet : pets) { + pet.removeFromRoom(); + Emulator.getThreading().run(pet); + owner.getInventory().getPetsComponent().addPet(pet); + owner.getClient().sendResponse(new PetAddedToInventoryComposer(pet)); + this.currentRoomPets.remove(pet.getId()); + } + } + + public void removeHabbo(Habbo habbo, boolean sendRemovePacket) { + if(!this.currentRoomHabbos.containsKey(habbo.getHabboInfo().getId())) { + return; + } + + RoomUnit roomUnit = habbo.getRoomUnit(); + + if(roomUnit == null || !(roomUnit instanceof RoomHabbo roomHabbo)) { + return; + } + + if(roomHabbo.getCurrentPosition() != null) { + roomHabbo.getCurrentPosition().removeUnit(habbo.getRoomUnit()); + } + + synchronized (this.roomUnitLock) { + this.currentRoomHabbos.remove(habbo.getHabboInfo().getId()); + this.currentRoomUnits.remove(roomHabbo.getVirtualId()); + } + + roomHabbo.getRoom().sendComposer(new UserRemoveMessageComposer(roomHabbo).compose()); + + RoomItem item = roomHabbo.getRoom().getTopItemAt(roomHabbo.getCurrentPosition()); + + if (item != null) { + try { + item.onWalkOff(habbo.getRoomUnit(), roomHabbo.getRoom(), new Object[]{}); + } catch (Exception e) { + log.error("Caught Exception", e); + } + } + + if (habbo.getHabboInfo().getCurrentGame() != null && roomHabbo.getRoom().getGame(habbo.getHabboInfo().getCurrentGame()) != null) { + roomHabbo.getRoom().getGame(habbo.getHabboInfo().getCurrentGame()).removeHabbo(habbo); + } + + RoomTrade trade = roomHabbo.getRoom().getActiveTradeForHabbo(habbo); + + if (trade != null) { + trade.stopTrade(habbo); + } + + if (!roomHabbo.getRoom().getRoomInfo().isRoomOwner(habbo)) { + this.pickUpMyPets(habbo); + } + + roomHabbo.getRoom().updateDatabaseUserCount(); + + roomHabbo.clear(); + } + + public boolean removeBot(Bot bot) { + synchronized (this.currentRoomBots) { + if (this.currentRoomBots.containsKey(bot.getId())) { + if (bot.getRoomUnit() != null && bot.getRoomUnit().getCurrentPosition() != null) { + bot.getRoomUnit().getCurrentPosition().removeUnit(bot.getRoomUnit()); + } + + this.currentRoomBots.remove(bot.getId()); + this.currentRoomUnits.remove(bot.getRoomUnit().getVirtualId()); + + bot.getRoomUnit().setInRoom(false); + bot.setRoom(null); + bot.getRoomUnit().getRoom().sendComposer(new UserRemoveMessageComposer(bot.getRoomUnit()).compose()); + bot.setRoomUnit(null); + return true; + } + } + + return false; + } + + public Pet removePet(int petId) { + Pet pet = this.currentRoomPets.get(petId); + this.currentRoomUnits.remove(pet.getRoomUnit().getVirtualId()); + return this.currentRoomPets.remove(petId); + } + + public void removeAllPetsExceptRoomOwner() { + ArrayList toRemovePets = new ArrayList<>(); + ArrayList removedPets = new ArrayList<>(); + synchronized (this.currentRoomPets) { + for (Pet pet : this.currentRoomPets.values()) { + try { + if (pet.getUserId() != pet.getRoomUnit().getRoom().getRoomInfo().getOwnerInfo().getId()) { + toRemovePets.add(pet); + } + + } catch (NoSuchElementException e) { + log.error("Caught exception", e); + break; + } + } + } + + for (Pet pet : toRemovePets) { + removedPets.add(pet); + + pet.removeFromRoom(); + + Habbo habbo = Emulator.getGameEnvironment().getHabboManager().getHabbo(pet.getUserId()); + if (habbo != null) { + habbo.getInventory().getPetsComponent().addPet(pet); + habbo.getClient().sendResponse(new PetAddedToInventoryComposer(pet)); + } + + pet.setNeedsUpdate(true); + pet.run(); + } + + for (Pet pet : removedPets) { + this.currentRoomPets.remove(pet.getId()); + this.currentRoomUnits.remove(pet.getRoomUnit().getVirtualId()); + } + } + + public void clear() { + synchronized (this.roomUnitLock) { + this.currentRoomUnits.clear(); + this.currentRoomHabbos.clear(); + this.currentRoomBots.clear(); + this.currentRoomPets.clear(); + this.roomUnitCounter = 0; + } + } + + public void dispose(Room room) { + for(Habbo habbo : this.currentRoomHabbos.values()) { + Emulator.getGameEnvironment().getRoomManager().leaveRoom(habbo, room); + } + + room.sendComposer(new CloseConnectionMessageComposer().compose()); + + this.currentRoomHabbos.clear(); + + Iterator botIterator = this.currentRoomBots.values().iterator(); + + while(botIterator.hasNext()) { + try { + Bot bot = botIterator.next(); + bot.needsUpdate(true); + Emulator.getThreading().run(bot); + } catch (NoSuchElementException e) { + log.error("Caught Exception", e); + break; + } + } + + this.currentRoomBots.clear(); + this.currentRoomPets.clear(); + + this.currentRoomUnits.clear(); + } +} diff --git a/src/main/java/com/eu/habbo/habbohotel/rooms/RoomUserRotation.java b/src/main/java/com/eu/habbo/habbohotel/rooms/RoomUserRotation.java deleted file mode 100644 index 624afe34..00000000 --- a/src/main/java/com/eu/habbo/habbohotel/rooms/RoomUserRotation.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.eu.habbo.habbohotel.rooms; - -import lombok.AllArgsConstructor; -import lombok.Getter; - -@Getter -@AllArgsConstructor -public enum RoomUserRotation { - NORTH(0), - NORTH_EAST(1), - EAST(2), - SOUTH_EAST(3), - SOUTH(4), - SOUTH_WEST(5), - WEST(6), - NORTH_WEST(7); - - private final int direction; - - - public static RoomUserRotation fromValue(int rotation) { - rotation %= 8; - for (RoomUserRotation rot : values()) { - if (rot.getValue() == rotation) { - return rot; - } - } - - return NORTH; - } - - public static RoomUserRotation counterClockwise(RoomUserRotation rotation) { - return fromValue(rotation.getValue() + 7); - } - - public static RoomUserRotation clockwise(RoomUserRotation rotation) { - return fromValue(rotation.getValue() + 9); - } - - public int getValue() { - return this.direction; - } - - public RoomUserRotation getOpposite() { - return switch (this) { - case NORTH -> RoomUserRotation.SOUTH; - case NORTH_EAST -> RoomUserRotation.SOUTH_WEST; - case EAST -> RoomUserRotation.WEST; - case SOUTH_EAST -> RoomUserRotation.NORTH_WEST; - case SOUTH -> RoomUserRotation.NORTH; - case SOUTH_WEST -> RoomUserRotation.NORTH_EAST; - case WEST -> RoomUserRotation.EAST; - case NORTH_WEST -> RoomUserRotation.SOUTH_EAST; - }; - } -} diff --git a/src/main/java/com/eu/habbo/habbohotel/rooms/TraxManager.java b/src/main/java/com/eu/habbo/habbohotel/rooms/TraxManager.java index 1982f52e..60caf827 100644 --- a/src/main/java/com/eu/habbo/habbohotel/rooms/TraxManager.java +++ b/src/main/java/com/eu/habbo/habbohotel/rooms/TraxManager.java @@ -7,8 +7,8 @@ import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.items.SoundTrack; import com.eu.habbo.habbohotel.items.interactions.InteractionJukeBox; import com.eu.habbo.habbohotel.items.interactions.InteractionMusicDisc; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.messages.outgoing.generic.alerts.NotificationDialogMessageComposer; import com.eu.habbo.messages.outgoing.inventory.FurniListInvalidateComposer; @@ -55,7 +55,7 @@ public class TraxManager implements Disposable { if (this.jukeBox == null) { //Check again if there's a jukebox on room but has not been saved on DB before - for (HabboItem item : room.getRoomSpecialTypes().getItemsOfType(InteractionJukeBox.class)) { + for (RoomItem item : room.getRoomSpecialTypes().getItemsOfType(InteractionJukeBox.class)) { this.jukeBox = (InteractionJukeBox) item; } @@ -71,10 +71,10 @@ public class TraxManager implements Disposable { public InteractionJukeBox loadRoomJukebox() { try (Connection connection = Emulator.getDatabase().getDataSource().getConnection(); PreparedStatement statement = connection.prepareStatement("SELECT * FROM room_trax WHERE room_id = ?")) { - statement.setInt(1, this.room.getId()); + statement.setInt(1, this.room.getRoomInfo().getId()); try (ResultSet set = statement.executeQuery()) { if (set.next()) { - HabboItem jukebox = Emulator.getGameEnvironment().getItemManager().loadHabboItem(set.getInt("trax_item_id")); + RoomItem jukebox = Emulator.getGameEnvironment().getItemManager().loadHabboItem(set.getInt("trax_item_id")); if (jukebox != null) { if (!(jukebox instanceof InteractionJukeBox)) { return null; @@ -100,7 +100,7 @@ public class TraxManager implements Disposable { statement.setInt(1, this.jukeBox.getId()); try (ResultSet set = statement.executeQuery()) { while (set.next()) { - HabboItem musicDisc = Emulator.getGameEnvironment().getItemManager().loadHabboItem(set.getInt("item_id")); + RoomItem musicDisc = Emulator.getGameEnvironment().getItemManager().loadHabboItem(set.getInt("item_id")); if (musicDisc != null) { if (!(musicDisc instanceof InteractionMusicDisc) || musicDisc.getRoomId() != -1) { deleteSongFromPlaylist(this.jukeBox.getId(), musicDisc.getId()); @@ -135,7 +135,7 @@ public class TraxManager implements Disposable { if (this.jukeBox != null) return; try (Connection connection = Emulator.getDatabase().getDataSource().getConnection(); PreparedStatement statement_1 = connection.prepareStatement("INSERT INTO room_trax (room_id, trax_item_id) VALUES (?, ?)")) { - statement_1.setInt(1, this.room.getId()); + statement_1.setInt(1, this.room.getRoomInfo().getId()); statement_1.setInt(2, jukeBox.getId()); statement_1.execute(); } @@ -153,7 +153,7 @@ public class TraxManager implements Disposable { if (this.jukeBox.getId() != jukeBox.getId()) return; try (Connection connection = Emulator.getDatabase().getDataSource().getConnection(); PreparedStatement statement_1 = connection.prepareStatement("DELETE FROM room_trax WHERE room_id = ?")) { - statement_1.setInt(1, this.room.getId()); + statement_1.setInt(1, this.room.getRoomInfo().getId()); statement_1.execute(); } catch (SQLException e) { @@ -195,7 +195,8 @@ public class TraxManager implements Disposable { this.currentlyPlaying = this.songs.get(index); if (this.currentlyPlaying != null) { - this.room.setJukeBoxActive(true); + this.room.getRoomInfo().setJukeboxEnabled(true); + this.room.setNeedsUpdate(true); this.startedTimestamp = Emulator.getIntUnixTimestamp(); this.playingIndex = index; @@ -217,7 +218,8 @@ public class TraxManager implements Disposable { AchievementManager.progressAchievement(this.starter, Emulator.getGameEnvironment().getAchievementManager().getAchievement("MusicPlayer"), (Emulator.getIntUnixTimestamp() - cycleStartedTimestamp) / 60); } - this.room.setJukeBoxActive(false); + this.room.getRoomInfo().setJukeboxEnabled(false); + this.room.setNeedsUpdate(true); this.currentlyPlaying = null; this.startedTimestamp = 0; this.cycleStartedTimestamp = 0; @@ -317,7 +319,7 @@ public class TraxManager implements Disposable { statement.setInt(1, jukebox.getId()); try (ResultSet set = statement.executeQuery()) { while (set.next()) { - HabboItem musicDisc = Emulator.getGameEnvironment().getItemManager().loadHabboItem(set.getInt("item_id")); + RoomItem musicDisc = Emulator.getGameEnvironment().getItemManager().loadHabboItem(set.getInt("item_id")); deleteSongFromPlaylist(jukebox.getId(), set.getInt("item_id")); if (musicDisc != null) { @@ -393,7 +395,7 @@ public class TraxManager implements Disposable { } public void sendUpdatedSongList() { - this.room.getHabbos().forEach(h -> { + this.room.getRoomUnitManager().getRoomHabbos().forEach(h -> { GameClient client = h.getClient(); if (client != null) { diff --git a/src/main/java/com/eu/habbo/habbohotel/rooms/entities/IRoomEntity.java b/src/main/java/com/eu/habbo/habbohotel/rooms/entities/IRoomEntity.java new file mode 100644 index 00000000..5902ba08 --- /dev/null +++ b/src/main/java/com/eu/habbo/habbohotel/rooms/entities/IRoomEntity.java @@ -0,0 +1,31 @@ +package com.eu.habbo.habbohotel.rooms.entities; + +import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.RoomTile; + +public interface IRoomEntity { + Room getRoom(); + RoomEntity setRoom(Room room); + + RoomTile getPreviousPosition(); + RoomEntity setPreviousPosition(RoomTile previousPosition); + + double getPreviousZ(); + RoomEntity setPreviousZ(double previousZ); + + RoomTile getCurrentPosition(); + RoomEntity setCurrentPosition(RoomTile currentPosition); + + double getCurrentZ(); + RoomEntity setCurrentZ(double currentZ); + + RoomTile getTargetPosition(); + RoomEntity setTargetPosition(RoomTile targetPosition); + + double getTargetZ(); + RoomEntity setTargetZ(double targetZ); + + void setTargetTile(short x, short y); + + void incrementTilesMoved(); +} \ No newline at end of file diff --git a/src/main/java/com/eu/habbo/habbohotel/rooms/entities/RoomEntity.java b/src/main/java/com/eu/habbo/habbohotel/rooms/entities/RoomEntity.java new file mode 100644 index 00000000..c7f35994 --- /dev/null +++ b/src/main/java/com/eu/habbo/habbohotel/rooms/entities/RoomEntity.java @@ -0,0 +1,58 @@ +package com.eu.habbo.habbohotel.rooms.entities; + +import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.RoomTile; +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +import java.util.Deque; +import java.util.LinkedList; + +@Getter +@Setter +@Accessors(chain = true) +public class RoomEntity implements IRoomEntity { + private Room room; + private RoomTile previousPosition; + private double previousZ; + private RoomTile currentPosition; + private double currentZ; + private RoomTile targetPosition; + private double targetZ; + private Deque path = new LinkedList<>(); + private int tilesMoved; + + public RoomEntity setCurrentPosition(RoomTile tile) { + if (this.currentPosition != null) { + this.currentPosition.removeUnit(this); + } + + this.currentPosition = tile; + + if(this.currentPosition != null) { + tile.addUnit(this); + } + + return this; + } + + public void setTargetTile(short x, short y) { + RoomTile targetTile = this.getRoom().getLayout().getTile(x, y); + + if(this.getCurrentPosition().equals(targetTile)) { + return; + } + + if (targetTile.isWalkable()) { + this.setTargetPosition(targetTile); + } + } + + public synchronized void incrementTilesMoved() { + this.tilesMoved++; + } + public synchronized void decrementTilesMoved() { + this.tilesMoved--; + } +} \ No newline at end of file diff --git a/src/main/java/com/eu/habbo/habbohotel/rooms/entities/RoomRotation.java b/src/main/java/com/eu/habbo/habbohotel/rooms/entities/RoomRotation.java new file mode 100644 index 00000000..c32cfd6b --- /dev/null +++ b/src/main/java/com/eu/habbo/habbohotel/rooms/entities/RoomRotation.java @@ -0,0 +1,56 @@ +package com.eu.habbo.habbohotel.rooms.entities; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public enum RoomRotation { + NORTH(0), + NORTH_EAST(1), + EAST(2), + SOUTH_EAST(3), + SOUTH(4), + SOUTH_WEST(5), + WEST(6), + NORTH_WEST(7); + + private final int direction; + + + public static RoomRotation fromValue(int rotation) { + rotation %= 8; + for (RoomRotation rot : values()) { + if (rot.getValue() == rotation) { + return rot; + } + } + + return NORTH; + } + + public static RoomRotation counterClockwise(RoomRotation rotation) { + return fromValue(rotation.getValue() + 7); + } + + public static RoomRotation clockwise(RoomRotation rotation) { + return fromValue(rotation.getValue() + 9); + } + + public int getValue() { + return this.direction; + } + + public RoomRotation getOpposite() { + return switch (this) { + case NORTH -> RoomRotation.SOUTH; + case NORTH_EAST -> RoomRotation.SOUTH_WEST; + case EAST -> RoomRotation.WEST; + case SOUTH_EAST -> RoomRotation.NORTH_WEST; + case SOUTH -> RoomRotation.NORTH; + case SOUTH_WEST -> RoomRotation.NORTH_EAST; + case WEST -> RoomRotation.EAST; + case NORTH_WEST -> RoomRotation.SOUTH_EAST; + }; + } +} diff --git a/src/main/java/com/eu/habbo/habbohotel/rooms/entities/items/ItemLimitedData.java b/src/main/java/com/eu/habbo/habbohotel/rooms/entities/items/ItemLimitedData.java new file mode 100644 index 00000000..76df13cd --- /dev/null +++ b/src/main/java/com/eu/habbo/habbohotel/rooms/entities/items/ItemLimitedData.java @@ -0,0 +1,13 @@ +package com.eu.habbo.habbohotel.rooms.entities.items; + +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +@Getter +@Setter +@Accessors(chain = true) +public class ItemLimitedData { + private int stack; + private int sells; +} \ No newline at end of file diff --git a/src/main/java/com/eu/habbo/habbohotel/users/HabboItem.java b/src/main/java/com/eu/habbo/habbohotel/rooms/entities/items/RoomItem.java similarity index 91% rename from src/main/java/com/eu/habbo/habbohotel/users/HabboItem.java rename to src/main/java/com/eu/habbo/habbohotel/rooms/entities/items/RoomItem.java index 9f1cfd7f..02dd89f6 100644 --- a/src/main/java/com/eu/habbo/habbohotel/users/HabboItem.java +++ b/src/main/java/com/eu/habbo/habbohotel/rooms/entities/items/RoomItem.java @@ -1,4 +1,4 @@ -package com.eu.habbo.habbohotel.users; +package com.eu.habbo.habbohotel.rooms.entities.items; import com.eu.habbo.Emulator; import com.eu.habbo.database.DatabaseConstants; @@ -11,7 +11,14 @@ import com.eu.habbo.habbohotel.items.IEventTriggers; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.*; import com.eu.habbo.habbohotel.items.interactions.games.InteractionGameTimer; -import com.eu.habbo.habbohotel.rooms.*; +import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.RoomLayout; +import com.eu.habbo.habbohotel.rooms.RoomTile; +import com.eu.habbo.habbohotel.rooms.RoomTileState; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.users.DanceType; +import com.eu.habbo.habbohotel.users.Habbo; +import com.eu.habbo.habbohotel.users.HabboGender; import com.eu.habbo.habbohotel.wired.WiredEffectType; import com.eu.habbo.habbohotel.wired.WiredHandler; import com.eu.habbo.habbohotel.wired.WiredTriggerType; @@ -37,7 +44,7 @@ import java.util.Arrays; import java.util.List; @Slf4j -public abstract class HabboItem implements Runnable, IEventTriggers { +public abstract class RoomItem implements Runnable, IEventTriggers { @SuppressWarnings("rawtypes") private static final Class[] TOGGLING_INTERACTIONS = new Class[]{ @@ -82,7 +89,7 @@ public abstract class HabboItem implements Runnable, IEventTriggers { private boolean needsDelete = false; private boolean isFromGift = false; - public HabboItem(ResultSet set, Item baseItem) throws SQLException { + public RoomItem(ResultSet set, Item baseItem) throws SQLException { this.id = set.getInt("id"); this.userId = set.getInt(DatabaseConstants.USER_ID); this.roomId = set.getInt("room_id"); @@ -101,7 +108,7 @@ public abstract class HabboItem implements Runnable, IEventTriggers { } } - public HabboItem(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { + public RoomItem(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { this.id = id; this.userId = userId; this.roomId = 0; @@ -116,7 +123,7 @@ public abstract class HabboItem implements Runnable, IEventTriggers { this.limitedStack = limitedStack; } - public static RoomTile getSquareInFront(RoomLayout roomLayout, HabboItem item) { + public static RoomTile getSquareInFront(RoomLayout roomLayout, RoomItem item) { return roomLayout.getTileInFront(roomLayout.getTile(item.getX(), item.getY()), item.getRotation()); } @@ -243,7 +250,7 @@ public abstract class HabboItem implements Runnable, IEventTriggers { return; } - if ((this.getBaseItem().getStateCount() > 1 && !(this instanceof InteractionDice) || !(this instanceof InteractionSpinningBottle)) || Arrays.asList(HabboItem.TOGGLING_INTERACTIONS).contains(this.getClass()) || (objects != null && objects.length == 1 && objects[0].equals("TOGGLE_OVERRIDE"))) { + if ((this.getBaseItem().getStateCount() > 1 && !(this instanceof InteractionDice) || !(this instanceof InteractionSpinningBottle)) || Arrays.asList(RoomItem.TOGGLING_INTERACTIONS).contains(this.getClass()) || (objects != null && objects.length == 1 && objects[0].equals("TOGGLE_OVERRIDE"))) { WiredHandler.handle(WiredTriggerType.STATE_CHANGED, client.getHabbo().getRoomUnit(), room, new Object[]{this}); } } @@ -269,8 +276,8 @@ public abstract class HabboItem implements Runnable, IEventTriggers { habbo.getHabboInfo().setLook(String.join(".", Arrays.stream(habbo.getHabboInfo().getLook().split("\\.")).filter(k -> !ArrayUtils.contains(clothingKeys, k.split("-")[0])).toArray(String[]::new)) + "." + this.getBaseItem().getClothingOnWalk()); habbo.getClient().sendResponse(new FigureUpdateComposer(habbo)); - if (habbo.getHabboInfo().getCurrentRoom() != null) { - habbo.getHabboInfo().getCurrentRoom().sendComposer(new UserChangeMessageComposer(habbo).compose()); + if (habbo.getRoomUnit().getRoom() != null) { + habbo.getRoomUnit().getRoom().sendComposer(new UserChangeMessageComposer(habbo).compose()); } } } @@ -289,7 +296,7 @@ public abstract class HabboItem implements Runnable, IEventTriggers { public void onPlace(Room room) { //TODO: IMPORTANT: MAKE THIS GENERIC. (HOLES, ICE SKATE PATCHES, BLACK HOLE, BUNNY RUN FIELD, FOOTBALL FIELD) Achievement roomDecoAchievement = Emulator.getGameEnvironment().getAchievementManager().getAchievement("RoomDecoFurniCount"); - Habbo owner = room.getHabbo(this.getUserId()); + Habbo owner = room.getRoomUnitManager().getRoomHabboById(this.getUserId()); int furniCollecterProgress; if (owner == null) { @@ -328,7 +335,7 @@ public abstract class HabboItem implements Runnable, IEventTriggers { public void onPickUp(Room room) { if (this.getBaseItem().getEffectF() > 0 || this.getBaseItem().getEffectM() > 0) { - HabboItem topItem2 = room.getTopItemAt(this.getX(), this.getY(), this); + RoomItem topItem2 = room.getTopItemAt(this.getX(), this.getY(), this); int nextEffectM = 0; int nextEffectF = 0; @@ -347,7 +354,8 @@ public abstract class HabboItem implements Runnable, IEventTriggers { } } - for (Bot bot : room.getBotsAt(room.getLayout().getTile(this.getX(), this.getY()))) { + RoomTile tile = room.getLayout().getTile(this.getX(), this.getY()); + for (Bot bot : room.getRoomUnitManager().getBotsAt(tile)) { if (this.getBaseItem().getEffectM() > 0 && bot.getGender().equals(HabboGender.M) && bot.getRoomUnit().getEffectId() == this.getBaseItem().getEffectM()) { room.giveEffect(bot.getRoomUnit(), nextEffectM, -1); } @@ -361,7 +369,7 @@ public abstract class HabboItem implements Runnable, IEventTriggers { public void onMove(Room room, RoomTile oldLocation, RoomTile newLocation) { if (this.getBaseItem().getEffectF() > 0 || this.getBaseItem().getEffectM() > 0) { - HabboItem topItem2 = room.getTopItemAt(oldLocation.getX(), oldLocation.getY(), this); + RoomItem topItem2 = room.getTopItemAt(oldLocation.getX(), oldLocation.getY(), this); int nextEffectM = 0; int nextEffectF = 0; @@ -376,13 +384,13 @@ public abstract class HabboItem implements Runnable, IEventTriggers { List newBots = new ArrayList<>(); for (RoomTile tile : room.getLayout().getTilesAt(oldLocation, this.getBaseItem().getWidth(), this.getBaseItem().getLength(), this.getRotation())) { - oldHabbos.addAll(room.getHabbosAt(tile)); - oldBots.addAll(room.getBotsAt(tile)); + oldHabbos.addAll(room.getRoomUnitManager().getHabbosAt(tile)); + oldBots.addAll(room.getRoomUnitManager().getBotsAt(tile)); } for (RoomTile tile : room.getLayout().getTilesAt(oldLocation, this.getBaseItem().getWidth(), this.getBaseItem().getLength(), this.getRotation())) { - newHabbos.addAll(room.getHabbosAt(tile)); - newBots.addAll(room.getBotsAt(tile)); + newHabbos.addAll(room.getRoomUnitManager().getHabbosAt(tile)); + newBots.addAll(room.getRoomUnitManager().getBotsAt(tile)); } oldHabbos.removeAll(newHabbos); @@ -448,7 +456,7 @@ public abstract class HabboItem implements Runnable, IEventTriggers { return this.baseItem.getStateCount() > 1; } - public boolean canStackAt(Room room, List>> itemsAtLocation) { + public boolean canStackAt(Room room, List>> itemsAtLocation) { return true; } diff --git a/src/main/java/com/eu/habbo/habbohotel/rooms/entities/items/types/RoomFloorItem.java b/src/main/java/com/eu/habbo/habbohotel/rooms/entities/items/types/RoomFloorItem.java new file mode 100644 index 00000000..cef8ef9d --- /dev/null +++ b/src/main/java/com/eu/habbo/habbohotel/rooms/entities/items/types/RoomFloorItem.java @@ -0,0 +1,30 @@ +package com.eu.habbo.habbohotel.rooms.entities.items.types; + +import com.eu.habbo.habbohotel.items.Item; +import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; + +import java.sql.ResultSet; +import java.sql.SQLException; + +public class RoomFloorItem extends RoomItem { + public RoomFloorItem(ResultSet set, Item baseItem) throws SQLException { + super(set, baseItem); + } + + @Override + public boolean canWalkOn(RoomUnit roomUnit, Room room, Object[] objects) { + return false; + } + + @Override + public boolean isWalkable() { + return false; + } + + @Override + public void onWalk(RoomUnit roomUnit, Room room, Object[] objects) throws Exception { + + } +} diff --git a/src/main/java/com/eu/habbo/habbohotel/rooms/entities/items/types/RoomWallItem.java b/src/main/java/com/eu/habbo/habbohotel/rooms/entities/items/types/RoomWallItem.java new file mode 100644 index 00000000..ea71dbb8 --- /dev/null +++ b/src/main/java/com/eu/habbo/habbohotel/rooms/entities/items/types/RoomWallItem.java @@ -0,0 +1,30 @@ +package com.eu.habbo.habbohotel.rooms.entities.items.types; + +import com.eu.habbo.habbohotel.items.Item; +import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; + +import java.sql.ResultSet; +import java.sql.SQLException; + +public class RoomWallItem extends RoomItem { + public RoomWallItem(ResultSet set, Item baseItem) throws SQLException { + super(set, baseItem); + } + + @Override + public boolean canWalkOn(RoomUnit roomUnit, Room room, Object[] objects) { + return false; + } + + @Override + public boolean isWalkable() { + return false; + } + + @Override + public void onWalk(RoomUnit roomUnit, Room room, Object[] objects) throws Exception { + + } +} diff --git a/src/main/java/com/eu/habbo/habbohotel/rooms/entities/units/IRoomUnit.java b/src/main/java/com/eu/habbo/habbohotel/rooms/entities/units/IRoomUnit.java new file mode 100644 index 00000000..a85eb9a6 --- /dev/null +++ b/src/main/java/com/eu/habbo/habbohotel/rooms/entities/units/IRoomUnit.java @@ -0,0 +1,4 @@ +package com.eu.habbo.habbohotel.rooms.entities.units; + +public interface IRoomUnit { +} diff --git a/src/main/java/com/eu/habbo/habbohotel/rooms/entities/units/RoomUnit.java b/src/main/java/com/eu/habbo/habbohotel/rooms/entities/units/RoomUnit.java new file mode 100644 index 00000000..6556c9ff --- /dev/null +++ b/src/main/java/com/eu/habbo/habbohotel/rooms/entities/units/RoomUnit.java @@ -0,0 +1,433 @@ +package com.eu.habbo.habbohotel.rooms.entities.units; + +import com.eu.habbo.Emulator; +import com.eu.habbo.habbohotel.bots.Bot; +import com.eu.habbo.habbohotel.items.interactions.InteractionWater; +import com.eu.habbo.habbohotel.items.interactions.InteractionWaterItem; +import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.RoomRightLevels; +import com.eu.habbo.habbohotel.rooms.RoomTile; +import com.eu.habbo.habbohotel.rooms.RoomUnitStatus; +import com.eu.habbo.habbohotel.rooms.entities.RoomEntity; +import com.eu.habbo.habbohotel.rooms.entities.RoomRotation; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; +import com.eu.habbo.habbohotel.users.DanceType; +import com.eu.habbo.plugin.Event; +import com.eu.habbo.plugin.events.roomunit.RoomUnitLookAtPointEvent; +import com.eu.habbo.plugin.events.roomunit.RoomUnitSetGoalEvent; +import com.eu.habbo.util.pathfinding.Rotation; +import gnu.trove.map.TMap; +import gnu.trove.map.hash.THashMap; +import gnu.trove.set.hash.THashSet; +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; +import lombok.extern.slf4j.Slf4j; + +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Deque; +import java.util.List; +import java.util.concurrent.ConcurrentHashMap; + +@Slf4j +@Getter +@Accessors(chain = true) +public abstract class RoomUnit extends RoomEntity { + @Setter + private int virtualId; + @Setter + private RoomUnitType roomUnitType; + @Setter + private RoomRotation bodyRotation; + @Setter + private RoomRotation headRotation; + @Setter + private boolean canWalk; + @Setter + private boolean canRotate; + @Setter + private boolean isTeleporting; + @Setter + private boolean cmdTeleportEnabled = false; + @Setter + private boolean cmdSitEnabled = false; + @Setter + private boolean cmdStandEnabled = false; + @Setter + private boolean cmdLayEnabled = false; + @Setter + private boolean isSwimming = false; + @Setter + private boolean fastWalkEnabled; + private final ConcurrentHashMap statuses; + @Setter + private boolean statusUpdateNeeded; + @Getter + @Setter + private boolean isWiredTeleporting = false; + @Getter + @Setter + private boolean isLeavingTeleporter = false; + private final THashMap cacheable; + @Getter + @Setter + private boolean animateWalk = false; + @Setter + @Getter + private boolean sitUpdate = false; + @Setter + private boolean isKicked; + @Getter + @Setter + private int kickCount = 0; + @Getter + private RoomTile startLocation; + @Getter + @Setter + private RoomTile botStartLocation; + @Getter + private RoomTile previousLocation; + @Getter + @Setter + @Accessors(chain = true) + private double previousLocationZ; + @Getter + private RoomTile goalLocation; + @Getter + @Setter + private boolean inRoom; + @Getter + @Setter + @Accessors(chain = true) + private boolean invisible = false; + @Setter + private boolean canLeaveRoomByDoor = true; + @Getter + @Setter + private DanceType danceType; + private int walkTimeOut; + private int previousEffectId; + private int previousEffectEndTimestamp; + private int timeInRoom; + //RoomHabbo + private int idleTicks; + @Getter + @Setter + private RoomRightLevels rightsLevel = RoomRightLevels.NONE; + private final THashSet overridableTiles; + + public RoomUnit() { + this.virtualId = 0; + this.bodyRotation = RoomRotation.NORTH; + this.headRotation = RoomRotation.NORTH; + this.canWalk = true; + this.canRotate = true; + this.isTeleporting = false; + this.fastWalkEnabled = false; + this.statuses = new ConcurrentHashMap<>(); + this.statusUpdateNeeded = false; + + this.inRoom = false; + this.cacheable = new THashMap<>(); + this.roomUnitType = RoomUnitType.UNKNOWN; + this.walkTimeOut = Emulator.getIntUnixTimestamp(); + this.timeInRoom = 0; + + //RoomAvatar + this.danceType = DanceType.NONE; + this.previousEffectId = 0; + this.previousEffectEndTimestamp = -1; + + //RoomHabbo + this.isKicked = false; + this.overridableTiles = new THashSet<>(); + } + + public abstract boolean cycle(Room room); + + public void setRotation(RoomRotation rotation) { + this.bodyRotation = rotation; + this.headRotation = rotation; + } + + public void clearWalking() { + this.goalLocation = null; + this.setCurrentPosition(null); + this.startLocation = this.getCurrentPosition(); + this.statuses.clear(); + this.cacheable.clear(); + } + + public void stopWalking() { + synchronized (this.statuses) { + this.statuses.remove(RoomUnitStatus.MOVE); + this.setStatusUpdateNeeded(true); + this.setGoalLocation(this.getCurrentPosition()); + } + } + + @Override + public RoomUnit setCurrentZ(double currentZ) { + super.setCurrentZ(currentZ); + + if (this.getRoom() != null) { + Bot bot = this.getRoom().getRoomUnitManager().getRoomBotById(getVirtualId()); + if (bot != null) { + bot.needsUpdate(true); + } + } + + return this; + } + + public RoomUnit setGoalLocation(RoomTile goalLocation) { + if (goalLocation != null) { + this.setGoalLocation(goalLocation, false); + } + return this; + } + + public void setGoalLocation(RoomTile goalLocation, boolean noReset) { + if (Emulator.getPluginManager().isRegistered(RoomUnitSetGoalEvent.class, false)) { + Event event = new RoomUnitSetGoalEvent(this.getRoom(), this, goalLocation); + Emulator.getPluginManager().fireEvent(event); + + if (event.isCancelled()) + return; + } + + /// Set start location + this.startLocation = this.getCurrentPosition(); + + if (goalLocation != null && !noReset) { + boolean isWalking = this.hasStatus(RoomUnitStatus.MOVE); + this.goalLocation = goalLocation; + this.findPath(); ///< Quadral: this is where we start formulating a path + if (!this.getPath().isEmpty()) { + this.setTilesMoved(isWalking ? this.getTilesMoved() : 0); + this.setCmdSitEnabled(false); + } else { + this.goalLocation = this.getCurrentPosition(); + } + } + } + + public RoomUnit setLocation(RoomTile location) { + if (location != null) { + this.startLocation = location; + this.setPreviousLocation(location); + this.setCurrentPosition(location); + this.goalLocation = location; + this.botStartLocation = location; + } + return this; + } + + public void setPreviousLocation(RoomTile previousLocation) { + this.previousLocation = previousLocation; + this.previousLocationZ = this.getCurrentZ(); + } + + public void findPath() { + if (this.getRoom() != null && this.getRoom().getLayout() != null && this.goalLocation != null && (this.goalLocation.isWalkable() || this.getRoom().canSitOrLayAt(this.goalLocation.getX(), this.goalLocation.getY()) || this.canOverrideTile(this.goalLocation))) { + Deque newPath = this.getRoom().getLayout().findPath(this.getCurrentPosition(), this.goalLocation, this.goalLocation, this); + if (newPath != null) this.setPath(newPath); + } + } + + public boolean isAtGoal() { + if(this.getCurrentPosition() == null) { + return false; + } + + return this.getCurrentPosition().equals(this.goalLocation); + } + + public boolean isWalking() { + return !this.isAtGoal() && this.canWalk; + } + + public String getStatus(RoomUnitStatus key) { + return this.statuses.get(key); + } + + public RoomUnit removeStatus(RoomUnitStatus key) { + this.statuses.remove(key); + return this; + } + + public void setStatus(RoomUnitStatus key, String value) { + if (key != null && value != null) { + this.statuses.put(key, value); + } + } + + public boolean hasStatus(RoomUnitStatus key) { + return this.statuses.containsKey(key); + } + + public void clearStatuses() { + this.statuses.clear(); + } + + public TMap getCacheable() { + return this.cacheable; + } + + public int getPreviousEffectId() { + return this.previousEffectId; + } + + public void setPreviousEffectId(int effectId, int endTimestamp) { + this.previousEffectId = effectId; + this.previousEffectEndTimestamp = endTimestamp; + } + + public int getPreviousEffectEndTimestamp() { + return this.previousEffectEndTimestamp; + } + + public int getWalkTimeOut() { + return this.walkTimeOut; + } + + public void setWalkTimeOut(int walkTimeOut) { + this.walkTimeOut = walkTimeOut; + } + + public void increaseTimeInRoom() { + this.timeInRoom++; + } + + public int getTimeInRoom() { + return this.timeInRoom; + } + + public void resetTimeInRoom() { + this.timeInRoom = 0; + } + + public void increaseIdleTimer() { + this.idleTicks++; + } + + public boolean isIdle() { + return this.idleTicks > Room.IDLE_CYCLES; //Amount of room cycles / 2 = seconds. + } + + public int getIdleTicks() { + return this.idleTicks; + } + + public void resetIdleTimer() { + this.idleTicks = 0; + } + + public void setIdle() { + this.idleTicks = Room.IDLE_CYCLES + 1; + } + + public void lookAtPoint(RoomTile location) { + if (!this.isCanRotate()) return; + + if (Emulator.getPluginManager().isRegistered(RoomUnitLookAtPointEvent.class, false)) { + Event lookAtPointEvent = new RoomUnitLookAtPointEvent(this.getRoom(), this, location); + Emulator.getPluginManager().fireEvent(lookAtPointEvent); + + if (lookAtPointEvent.isCancelled()) + return; + } + + if (this.statuses.containsKey(RoomUnitStatus.LAY)) { + return; + } + + if (!this.statuses.containsKey(RoomUnitStatus.SIT)) { + this.bodyRotation = (RoomRotation.values()[Rotation.Calculate(this.getCurrentPosition().getX(), this.getCurrentPosition().getY(), location.getX(), location.getY())]); + } + + RoomRotation rotation = (RoomRotation.values()[Rotation.Calculate(this.getCurrentPosition().getX(), this.getCurrentPosition().getY(), location.getX(), location.getY())]); + + if (Math.abs(rotation.getValue() - this.bodyRotation.getValue()) <= 1) { + this.headRotation = rotation; + } + } + + public boolean canOverrideTile(RoomTile tile) { + if (tile == null || this.getRoom() == null || this.getRoom().getLayout() == null) return false; + + if (this.getRoom().getItemsAt(tile).stream().anyMatch(i -> i.canOverrideTile(this, this.getRoom(), tile))) + return true; + + int tileIndex = (tile.getX() & 0xFF) | (tile.getY() << 12); + return this.overridableTiles.contains(tileIndex); + } + + public void addOverrideTile(RoomTile tile) { + int tileIndex = (tile.getX() & 0xFF) | (tile.getY() << 12); + if (!this.overridableTiles.contains(tileIndex)) { + this.overridableTiles.add(tileIndex); + } + } + + public void removeOverrideTile(RoomTile tile) { + if (this.getRoom() == null || this.getRoom().getLayout() == null) return; + + int tileIndex = (tile.getX() & 0xFF) | (tile.getY() << 12); + this.overridableTiles.remove(tileIndex); + } + + public boolean canForcePosture() { + if (this.getRoom() == null) return false; + + RoomItem topItem = this.getRoom().getTopItemAt(this.getCurrentPosition().getX(), this.getCurrentPosition().getY()); + + return (!(topItem instanceof InteractionWater) && !(topItem instanceof InteractionWaterItem)); + } + + public RoomTile getClosestTile(List tiles) { + return tiles.stream().min(Comparator.comparingDouble(a -> a.distance(this.getCurrentPosition()))).orElse(null); + } + + public RoomTile getClosestAdjacentTile(short x, short y, boolean diagonal) { + if (this.getRoom() == null) return null; + + RoomTile baseTile = this.getRoom().getLayout().getTile(x, y); + + if (baseTile == null) return null; + + List rotations = new ArrayList<>(); + rotations.add(RoomRotation.SOUTH.getValue()); + rotations.add(RoomRotation.NORTH.getValue()); + rotations.add(RoomRotation.EAST.getValue()); + rotations.add(RoomRotation.WEST.getValue()); + + if (diagonal) { + rotations.add(RoomRotation.NORTH_EAST.getValue()); + rotations.add(RoomRotation.NORTH_WEST.getValue()); + rotations.add(RoomRotation.SOUTH_EAST.getValue()); + rotations.add(RoomRotation.SOUTH_WEST.getValue()); + } + + return this.getClosestTile( + rotations.stream() + .map(rotation -> this.getRoom().getLayout().getTileInFront(baseTile, rotation)) + .filter(t -> t != null && t.isWalkable() && (this.getCurrentPosition().equals(t) || !this.getRoom().getRoomUnitManager().hasHabbosAt(t))) + .toList() + ); + } + + public void clear() { + this.setRoom(null); + this.canWalk = true; + this.canRotate = true; + this.fastWalkEnabled = false; + this.cmdTeleportEnabled = false; + this.clearStatuses(); + this.danceType = DanceType.NONE; + this.previousEffectId = 0; + this.previousEffectEndTimestamp = -1; + this.isKicked = false; + } +} diff --git a/src/main/java/com/eu/habbo/habbohotel/rooms/RoomUnitType.java b/src/main/java/com/eu/habbo/habbohotel/rooms/entities/units/RoomUnitType.java similarity index 73% rename from src/main/java/com/eu/habbo/habbohotel/rooms/RoomUnitType.java rename to src/main/java/com/eu/habbo/habbohotel/rooms/entities/units/RoomUnitType.java index c12f7a61..024e81ab 100644 --- a/src/main/java/com/eu/habbo/habbohotel/rooms/RoomUnitType.java +++ b/src/main/java/com/eu/habbo/habbohotel/rooms/entities/units/RoomUnitType.java @@ -1,4 +1,4 @@ -package com.eu.habbo.habbohotel.rooms; +package com.eu.habbo.habbohotel.rooms.entities.units; import lombok.AllArgsConstructor; import lombok.Getter; @@ -6,11 +6,10 @@ import lombok.Getter; @Getter @AllArgsConstructor public enum RoomUnitType { - USER(1), + HABBO(1), BOT(4), PET(2), UNKNOWN(3); private final int typeId; - } diff --git a/src/main/java/com/eu/habbo/habbohotel/rooms/entities/units/types/RoomAvatar.java b/src/main/java/com/eu/habbo/habbohotel/rooms/entities/units/types/RoomAvatar.java new file mode 100644 index 00000000..b4eeb770 --- /dev/null +++ b/src/main/java/com/eu/habbo/habbohotel/rooms/entities/units/types/RoomAvatar.java @@ -0,0 +1,322 @@ +package com.eu.habbo.habbohotel.rooms.entities.units.types; + +import com.eu.habbo.Emulator; +import com.eu.habbo.habbohotel.items.Item; +import com.eu.habbo.habbohotel.items.interactions.interfaces.ConditionalGate; +import com.eu.habbo.habbohotel.pets.RideablePet; +import com.eu.habbo.habbohotel.rooms.*; +import com.eu.habbo.habbohotel.rooms.entities.RoomRotation; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; +import com.eu.habbo.habbohotel.rooms.entities.items.types.RoomFloorItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.users.DanceType; +import com.eu.habbo.habbohotel.users.Habbo; +import com.eu.habbo.messages.outgoing.rooms.users.UserUpdateComposer; +import com.eu.habbo.plugin.Event; +import com.eu.habbo.plugin.events.users.UserIdleEvent; +import com.eu.habbo.plugin.events.users.UserTakeStepEvent; +import com.eu.habbo.threading.runnables.RoomUnitKick; +import com.eu.habbo.util.pathfinding.Rotation; +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; +import lombok.extern.slf4j.Slf4j; + +import java.util.Deque; +import java.util.LinkedList; +import java.util.Map; + +@Slf4j +@Getter +@Setter +@Accessors(chain = true) +public class RoomAvatar extends RoomUnit { + private RideablePet rideablePet; + private DanceType danceType; + private int handItem; + private long handItemTimestamp; + private int effectId; + private int effectEndTimestamp; + private int previousEffectId; + private int previousEffectEndTimestamp; + + public RoomAvatar() { + super(); + + this.rideablePet = null; + this.danceType = DanceType.NONE; + this.handItem = 0; + this.handItemTimestamp = 0; + this.effectId = 0; + this.effectEndTimestamp = -1; + this.previousEffectId = 0; + this.previousEffectEndTimestamp = -1; + } + + @Override + public boolean cycle(Room room) { + try { + Habbo habboT = room.getRoomUnitManager().getHabboByRoomUnit(this); + + if (!this.isWalking() && !this.isKicked() && this.removeStatus(RoomUnitStatus.MOVE) == null && habboT != null) { + habboT.getHabboInfo().getRiding().getRoomUnit().removeStatus(RoomUnitStatus.MOVE); + return true; + } + + if (this.removeStatus(RoomUnitStatus.SIT) != null || this.removeStatus(RoomUnitStatus.MOVE) != null || this.removeStatus(RoomUnitStatus.LAY) != null) + this.setStatusUpdateNeeded(true); + + for (Map.Entry set : this.getStatuses().entrySet()) { + if (set.getKey().isRemoveWhenWalking()) { + this.removeStatus(set.getKey()); + } + } + + if (this.getPath() == null || this.getPath().isEmpty()) { + this.setStatusUpdateNeeded(true); + return true; + } + + boolean canFastWalk = habboT == null || habboT.getHabboInfo().getRiding() == null; + + RoomTile next = this.getPath().poll(); + boolean overrideChecks = next != null && this.canOverrideTile(next); + + if (this.getPath().isEmpty()) { + this.setSitUpdate(true); + + if (next != null && next.hasUnits() && !overrideChecks) { + this.setStatusUpdateNeeded(false); + return false; + } + } + + Deque peekPath = room.getLayout().findPath(this.getCurrentPosition(), this.getPath().peek(), this.getGoalLocation(), this); + + if (peekPath == null) peekPath = new LinkedList<>(); + + if (peekPath.size() >= 3) { + if (this.getPath().isEmpty()) { + this.setStatusUpdateNeeded(true); + return true; + } + + this.getPath().pop(); + //peekPath.pop(); //Start + peekPath.removeLast(); //End + + if (peekPath.peek() != next) { + next = peekPath.poll(); + for (int i = 0; i < peekPath.size(); i++) { + this.getPath().addFirst(peekPath.removeLast()); + } + } + } + + if (canFastWalk && this.isFastWalkEnabled() && this.getPath().size() > 1) { + next = this.getPath().poll(); + } + + if (next == null) { + this.setStatusUpdateNeeded(true); + return true; + } + + Habbo habbo = room.getRoomUnitManager().getHabboByRoomUnit(this); + + this.removeStatus(RoomUnitStatus.DEAD); + + if (habbo != null) { + if (this.isIdle()) { + UserIdleEvent event = new UserIdleEvent(habbo, UserIdleEvent.IdleReason.WALKED, false); + Emulator.getPluginManager().fireEvent(event); + + if (!event.isCancelled() && !event.isIdle()) { + room.unIdle(habbo); + this.resetIdleTimer();; + } + } + + if (Emulator.getPluginManager().isRegistered(UserTakeStepEvent.class, false)) { + Event e = new UserTakeStepEvent(habbo, room.getLayout().getTile(this.getCurrentPosition().getX(), this.getCurrentPosition().getY()), next); + Emulator.getPluginManager().fireEvent(e); + + if (e.isCancelled()) { + this.setStatusUpdateNeeded(true); + return true; + } + + } + } + + RoomItem item = room.getTopItemAt(next.getX(), next.getY()); + + double height = next.getStackHeight() - this.getCurrentPosition().getStackHeight(); + if (!room.tileWalkable(next) || (!RoomLayout.ALLOW_FALLING && height < -RoomLayout.MAXIMUM_STEP_HEIGHT) || (next.getState() == RoomTileState.OPEN && height > RoomLayout.MAXIMUM_STEP_HEIGHT)) { + this.setRoom(room); + this.getPath().clear(); + this.findPath(); + + if (this.getPath().isEmpty()) { + this.removeStatus(RoomUnitStatus.MOVE); + this.setStatusUpdateNeeded(false); + return false; + } + next = this.getPath().pop(); + + } + + boolean canSitNextTile = room.canSitAt(next.getX(), next.getY()); + + if (canSitNextTile) { + RoomItem tallestChair = room.getTallestChair(next); + + if (tallestChair != null) + item = tallestChair; + } + + if (next.equals(this.getGoalLocation()) && next.getState() == RoomTileState.SIT && !overrideChecks && (item == null || item.getZ() - this.getCurrentZ() > RoomLayout.MAXIMUM_STEP_HEIGHT)) { + this.removeStatus(RoomUnitStatus.MOVE); + this.setStatusUpdateNeeded(false); + return false; + } + + double zHeight = 0.0D; + + if(habbo != null && habbo.getHabboInfo().getRiding() != null) { + zHeight += 1.0D; + } + + RoomItem roomItem = room.getTopItemAt(this.getCurrentPosition().getX(), this.getCurrentPosition().getY()); + if (roomItem != null && (roomItem != item || !RoomLayout.pointInSquare(roomItem.getX(), roomItem.getY(), roomItem.getX() + roomItem.getBaseItem().getWidth() - 1, roomItem.getY() + roomItem.getBaseItem().getLength() - 1, next.getX(), next.getY()))) + roomItem.onWalkOff(this, room, new Object[]{this.getCurrentPosition(), next}); + + + this.incrementTilesMoved(); + + RoomRotation oldRotation = this.getBodyRotation(); + this.setRotation(RoomRotation.values()[Rotation.Calculate(this.getCurrentPosition().getX(), this.getCurrentPosition().getY(), next.getX(), next.getY())]); + if (item != null) { + if (item != roomItem || !RoomLayout.pointInSquare(item.getX(), item.getY(), item.getX() + item.getBaseItem().getWidth() - 1, item.getY() + item.getBaseItem().getLength() - 1, this.getCurrentPosition().getX(), this.getCurrentPosition().getY())) { + if (item.canWalkOn(this, room, null)) { + item.onWalkOn(this, room, new Object[]{this.getCurrentPosition(), next}); + } else if (item instanceof ConditionalGate conditionalGate) { + this.setRotation(oldRotation); + this.decrementTilesMoved(); + this.setGoalLocation(this.getCurrentPosition()); + this.removeStatus(RoomUnitStatus.MOVE); + room.sendComposer(new UserUpdateComposer(this).compose()); + + if(this instanceof RoomHabbo) { + conditionalGate.onRejected(this, this.getRoom(), new Object[]{}); + } + + this.setStatusUpdateNeeded(false); + return false; + } + } else { + item.onWalk(this, room, new Object[]{this.getCurrentPosition(), next}); + } + + zHeight += item.getZ(); + + if (!item.getBaseItem().allowSit() && !item.getBaseItem().allowLay()) { + zHeight += Item.getCurrentHeight(item); + } + } else { + zHeight += room.getLayout().getHeightAtSquare(next.getX(), next.getY()); + } + + + this.setPreviousLocation(this.getCurrentPosition()); + + this.setStatus(RoomUnitStatus.MOVE, next.getX() + "," + next.getY() + "," + zHeight); + + if(habbo != null) { + RideablePet rideablePet = habbo.getHabboInfo().getRiding(); + + if(rideablePet != null) { + RoomUnit ridingUnit = rideablePet.getRoomUnit(); + + if (ridingUnit != null) { + ridingUnit.setPreviousLocationZ(this.getCurrentZ()); + this.setCurrentZ(zHeight - 1.0); + ridingUnit.setRotation(RoomRotation.values()[Rotation.Calculate(this.getCurrentPosition().getX(), this.getCurrentPosition().getY(), next.getX(), next.getY())]); + ridingUnit.setPreviousLocation(this.getCurrentPosition()); + ridingUnit.setGoalLocation(this.getGoalLocation()); + ridingUnit.setStatus(RoomUnitStatus.MOVE, next.getX() + "," + next.getY() + "," + (zHeight - 1.0)); + room.sendComposer(new UserUpdateComposer(ridingUnit).compose()); + } + } + } + + this.setCurrentZ(zHeight); + this.setCurrentPosition(room.getLayout().getTile(next.getX(), next.getY())); + this.resetIdleTimer(); + + if(habbo != null) { + RoomItem topItem = room.getTopItemAt(next.getX(), next.getY()); + + boolean isAtDoor = next.getX() == room.getLayout().getDoorX() && next.getY() == room.getLayout().getDoorY(); + boolean publicRoomKicks = !room.getRoomInfo().isPublicRoom() || Emulator.getConfig().getBoolean("hotel.room.public.doortile.kick"); + boolean invalidated = topItem != null && topItem.invalidatesToRoomKick(); + + if (this.isCanLeaveRoomByDoor() && isAtDoor && publicRoomKicks && !invalidated) { + Emulator.getThreading().run(new RoomUnitKick(habbo, room, false), 500); + } + } + + this.setStatusUpdateNeeded(false); + return false; + + } catch (Exception e) { + log.error("Caught exception", e); + this.setStatusUpdateNeeded(false); + return false; + } + } + + public RoomAvatar setHandItem(int handItem) { + this.handItem = handItem; + this.handItemTimestamp = System.currentTimeMillis(); + return this; + } + + private void handleSitStatus(RoomFloorItem topItem) { + if(!this.isCmdSitEnabled()) { + if((topItem == null || !topItem.getBaseItem().allowSit()) && this.hasStatus(RoomUnitStatus.SIT)) { + this.removeStatus(RoomUnitStatus.SIT); + this.setStatusUpdateNeeded(true); + } else if(this.getCurrentPosition().getState() == RoomTileState.SIT && (!this.hasStatus(RoomUnitStatus.SIT))) { + this.setStatus(RoomUnitStatus.SIT, String.valueOf(Item.getCurrentHeight(topItem))); + this.setStatusUpdateNeeded(true); + } + } + } + + private void handleLayStatus(RoomFloorItem topItem) { + if(!this.isCmdLayEnabled()) { + if((topItem == null || !topItem.getBaseItem().allowLay()) && this.hasStatus(RoomUnitStatus.LAY)) { + this.removeStatus(RoomUnitStatus.LAY); + this.setStatusUpdateNeeded(true); + } else if(!this.hasStatus(RoomUnitStatus.LAY)) { + this.setStatus(RoomUnitStatus.LAY, String.valueOf(Item.getCurrentHeight(topItem))); + this.setStatusUpdateNeeded(true); + } + } + } + + @Override + public void clear() { + super.clear(); + + this.rideablePet = null; + this.danceType = DanceType.NONE; + this.handItem = 0; + this.handItemTimestamp = 0; + this.effectId = 0; + this.effectEndTimestamp = -1; + this.previousEffectId = 0; + this.previousEffectEndTimestamp = -1; + } +} diff --git a/src/main/java/com/eu/habbo/habbohotel/rooms/entities/units/types/RoomBot.java b/src/main/java/com/eu/habbo/habbohotel/rooms/entities/units/types/RoomBot.java new file mode 100644 index 00000000..ee62ecf2 --- /dev/null +++ b/src/main/java/com/eu/habbo/habbohotel/rooms/entities/units/types/RoomBot.java @@ -0,0 +1,15 @@ +package com.eu.habbo.habbohotel.rooms.entities.units.types; + +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnitType; +import lombok.Getter; + +@Getter +public class RoomBot extends RoomAvatar { + public RoomBot() { + super(); + } + + public RoomUnitType getRoomUnitType() { + return RoomUnitType.BOT; + } +} diff --git a/src/main/java/com/eu/habbo/habbohotel/rooms/entities/units/types/RoomHabbo.java b/src/main/java/com/eu/habbo/habbohotel/rooms/entities/units/types/RoomHabbo.java new file mode 100644 index 00000000..d5c71c0e --- /dev/null +++ b/src/main/java/com/eu/habbo/habbohotel/rooms/entities/units/types/RoomHabbo.java @@ -0,0 +1,64 @@ +package com.eu.habbo.habbohotel.rooms.entities.units.types; + +import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnitType; +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Getter +@Setter +@Accessors(chain = true) +public class RoomHabbo extends RoomAvatar { + private Room loadingRoom; + private Room previousRoom; + +// @Setter +// private boolean isKicked; + private int kickCount; + private int idleTicks; + private boolean isSleeping; +// private final HashSet overridableTiles; + + public RoomHabbo() { + super(); + +// this.isKicked = false; +// this.overridableTiles = new HashSet<>(); + } + + public boolean cycle(Room room) { + return super.cycle(room); + } + + public boolean isLoadingRoom() { + return this.loadingRoom != null; + } + + public boolean hasPreviousRoom() { + return this.previousRoom != null; + } + + public void incrementKickCount() { + this.kickCount++; + } + + public void incrementIdleTick() { + this.idleTicks++; + } + + public boolean isIdle() { + return this.idleTicks > Room.IDLE_CYCLES; + } + + public RoomUnitType getRoomUnitType() { + return RoomUnitType.HABBO; + } + + @Override + public void clear() { + super.clear(); + } +} diff --git a/src/main/java/com/eu/habbo/habbohotel/rooms/entities/units/types/RoomPet.java b/src/main/java/com/eu/habbo/habbohotel/rooms/entities/units/types/RoomPet.java new file mode 100644 index 00000000..25d079b1 --- /dev/null +++ b/src/main/java/com/eu/habbo/habbohotel/rooms/entities/units/types/RoomPet.java @@ -0,0 +1,208 @@ +package com.eu.habbo.habbohotel.rooms.entities.units.types; + +import com.eu.habbo.habbohotel.items.Item; +import com.eu.habbo.habbohotel.items.interactions.interfaces.ConditionalGate; +import com.eu.habbo.habbohotel.pets.Pet; +import com.eu.habbo.habbohotel.pets.RideablePet; +import com.eu.habbo.habbohotel.rooms.*; +import com.eu.habbo.habbohotel.rooms.entities.RoomRotation; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnitType; +import com.eu.habbo.habbohotel.users.Habbo; +import com.eu.habbo.messages.outgoing.rooms.users.UserUpdateComposer; +import com.eu.habbo.util.pathfinding.Rotation; +import lombok.extern.slf4j.Slf4j; + +import java.util.Deque; +import java.util.LinkedList; +import java.util.Map; + +@Slf4j +public class RoomPet extends RoomUnit { + public RoomPet() { + super(); + } + + @Override + public boolean cycle(Room room) { + try { + Pet pet = this.getRoom().getRoomUnitManager().getPetByRoomUnit(this); + + if (this.handleRider(pet, room)) { + return this.isStatusUpdateNeeded(); + } + + if (this.removeStatus(RoomUnitStatus.SIT) != null || this.removeStatus(RoomUnitStatus.MOVE) != null || this.removeStatus(RoomUnitStatus.LAY) != null) { + this.setStatusUpdateNeeded(true); + } + + for (Map.Entry set : this.getStatuses().entrySet()) { + if (set.getKey().isRemoveWhenWalking()) { + this.removeStatus(set.getKey()); + } + } + + if (this.getPath() == null || this.getPath().isEmpty()) { + this.setStatusUpdateNeeded(true); + return true; + } + + RoomTile next = this.getPath().poll(); + boolean overrideChecks = next != null && this.canOverrideTile(next); + + if (this.getPath().isEmpty()) { + this.setSitUpdate(true); + + if (next != null && next.hasUnits() && !overrideChecks) { + this.setStatusUpdateNeeded(false); + return false; + } + } + + Deque peekPath = room.getLayout().findPath(this.getCurrentPosition(), this.getPath().peek(), this.getGoalLocation(), this); + + if (peekPath == null) peekPath = new LinkedList<>(); + + if (peekPath.size() >= 3) { + if (this.getPath().isEmpty()) { + this.setStatusUpdateNeeded(true); + return true; + } + + this.getPath().pop(); + //peekPath.pop(); //Start + peekPath.removeLast(); //End + + if (peekPath.peek() != next) { + next = peekPath.poll(); + for (int i = 0; i < peekPath.size(); i++) { + this.getPath().addFirst(peekPath.removeLast()); + } + } + } + + if (next == null) { + this.setStatusUpdateNeeded(true); + return true; + } + + this.removeStatus(RoomUnitStatus.DEAD); + + RoomItem item = room.getTopItemAt(next.getX(), next.getY()); + + double height = next.getStackHeight() - this.getCurrentPosition().getStackHeight(); + if (!room.tileWalkable(next) || (!RoomLayout.ALLOW_FALLING && height < -RoomLayout.MAXIMUM_STEP_HEIGHT) || (next.getState() == RoomTileState.OPEN && height > RoomLayout.MAXIMUM_STEP_HEIGHT)) { + this.setRoom(room); + this.getPath().clear(); + this.findPath(); + + if (this.getPath().isEmpty()) { + this.removeStatus(RoomUnitStatus.MOVE); + this.setStatusUpdateNeeded(false); + return false; + } + next = this.getPath().pop(); + + } + + boolean canSitNextTile = room.canSitAt(next.getX(), next.getY()); + + if (canSitNextTile) { + RoomItem tallestChair = room.getTallestChair(next); + + if (tallestChair != null) + item = tallestChair; + } + + if (next.equals(this.getGoalLocation()) && next.getState() == RoomTileState.SIT && !overrideChecks && (item == null || item.getZ() - this.getCurrentZ() > RoomLayout.MAXIMUM_STEP_HEIGHT)) { + this.removeStatus(RoomUnitStatus.MOVE); + this.setStatusUpdateNeeded(false); + return false; + } + + double zHeight = 0.0D; + + RoomItem roomItem = room.getTopItemAt(this.getCurrentPosition().getX(), this.getCurrentPosition().getY()); + if (roomItem != null && (roomItem != item || !RoomLayout.pointInSquare(roomItem.getX(), roomItem.getY(), roomItem.getX() + roomItem.getBaseItem().getWidth() - 1, roomItem.getY() + roomItem.getBaseItem().getLength() - 1, next.getX(), next.getY()))) + roomItem.onWalkOff(this, room, new Object[]{this.getCurrentPosition(), next}); + + + this.incrementTilesMoved(); + + RoomRotation oldRotation = this.getBodyRotation(); + this.setRotation(RoomRotation.values()[Rotation.Calculate(this.getCurrentPosition().getX(), this.getCurrentPosition().getY(), next.getX(), next.getY())]); + if (item != null) { + if (item != roomItem || !RoomLayout.pointInSquare(item.getX(), item.getY(), item.getX() + item.getBaseItem().getWidth() - 1, item.getY() + item.getBaseItem().getLength() - 1, this.getCurrentPosition().getX(), this.getCurrentPosition().getY())) { + if (item.canWalkOn(this, room, null)) { + item.onWalkOn(this, room, new Object[]{this.getCurrentPosition(), next}); + } else if (item instanceof ConditionalGate conditionalGate) { + this.setRotation(oldRotation); + this.decrementTilesMoved(); + this.setGoalLocation(this.getCurrentPosition()); + this.removeStatus(RoomUnitStatus.MOVE); + room.sendComposer(new UserUpdateComposer(this).compose()); + + this.setStatusUpdateNeeded(false); + return false; + } + } else { + item.onWalk(this, room, new Object[]{this.getCurrentPosition(), next}); + } + + zHeight += item.getZ(); + + if (!item.getBaseItem().allowSit() && !item.getBaseItem().allowLay()) { + zHeight += Item.getCurrentHeight(item); + } + } else { + zHeight += room.getLayout().getHeightAtSquare(next.getX(), next.getY()); + } + + + this.setPreviousLocation(this.getCurrentPosition()); + + this.setStatus(RoomUnitStatus.MOVE, next.getX() + "," + next.getY() + "," + zHeight); + + this.setCurrentZ(zHeight); + this.setCurrentPosition(room.getLayout().getTile(next.getX(), next.getY())); + + this.setStatusUpdateNeeded(false); + return false; + } catch (Exception e) { + log.error("Caught exception", e); + return false; + } + } + + public boolean handleRider(Pet pet, Room room) { + Habbo rider = null; + + if (pet instanceof RideablePet rideablePet) { + rider = rideablePet.getRider(); + } + + if(rider == null) { + return false; + } + + // copy things from rider + if (this.hasStatus(RoomUnitStatus.MOVE) && !rider.getRoomUnit().hasStatus(RoomUnitStatus.MOVE)) { + this.removeStatus(RoomUnitStatus.MOVE); + } + + if (!this.getCurrentPosition().equals(rider.getRoomUnit().getCurrentPosition())) { + this.setStatus(RoomUnitStatus.MOVE, rider.getRoomUnit().getCurrentPosition().getX() + "," + rider.getRoomUnit().getCurrentPosition().getY() + "," + (rider.getRoomUnit().getCurrentPosition().getStackHeight())); + this.setPreviousLocation(rider.getRoomUnit().getPreviousLocation()); + this.setPreviousLocationZ(rider.getRoomUnit().getPreviousLocation().getStackHeight()); + this.setCurrentPosition(rider.getRoomUnit().getCurrentPosition()); + this.setCurrentZ(rider.getRoomUnit().getCurrentPosition().getStackHeight()); + } + + return true; + } + + public RoomUnitType getRoomUnitType() { + return RoomUnitType.PET; + } +} diff --git a/src/main/java/com/eu/habbo/habbohotel/units/Unit.java b/src/main/java/com/eu/habbo/habbohotel/units/Unit.java new file mode 100644 index 00000000..04b99d71 --- /dev/null +++ b/src/main/java/com/eu/habbo/habbohotel/units/Unit.java @@ -0,0 +1,11 @@ +package com.eu.habbo.habbohotel.units; + +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class Unit { + private RoomUnit roomUnit; +} diff --git a/src/main/java/com/eu/habbo/habbohotel/users/Habbo.java b/src/main/java/com/eu/habbo/habbohotel/users/Habbo.java index 9990c8ba..3eac30f3 100644 --- a/src/main/java/com/eu/habbo/habbohotel/users/Habbo.java +++ b/src/main/java/com/eu/habbo/habbohotel/users/Habbo.java @@ -8,7 +8,13 @@ import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.messenger.Messenger; import com.eu.habbo.habbohotel.permissions.Permission; import com.eu.habbo.habbohotel.pets.Pet; -import com.eu.habbo.habbohotel.rooms.*; +import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.RoomChatMessage; +import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles; +import com.eu.habbo.habbohotel.rooms.RoomUserAction; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; +import com.eu.habbo.habbohotel.rooms.entities.units.types.RoomHabbo; +import com.eu.habbo.habbohotel.units.Unit; import com.eu.habbo.habbohotel.users.inventory.BadgesComponent; import com.eu.habbo.messages.outgoing.generic.alerts.*; import com.eu.habbo.messages.outgoing.inventory.*; @@ -34,7 +40,9 @@ import java.util.*; import java.util.stream.Collectors; @Slf4j -public class Habbo implements Runnable { +public class Habbo extends Unit implements Runnable { + @Getter + private RoomHabbo roomUnit; @Getter private final HabboInfo habboInfo; @Getter @@ -46,9 +54,6 @@ public class Habbo implements Runnable { @Setter @Getter private GameClient client; - @Setter - @Getter - private RoomUnit roomUnit; private volatile boolean update; private volatile boolean disconnected = false; @@ -64,8 +69,7 @@ public class Habbo implements Runnable { this.messenger.loadFriends(this); this.messenger.loadFriendRequests(this); - this.roomUnit = new RoomUnit(); - this.roomUnit.setRoomUnitType(RoomUnitType.USER); + this.roomUnit = new RoomHabbo(); this.update = false; } @@ -143,11 +147,11 @@ public class Habbo implements Runnable { this.disconnecting = true; try { - if (this.getHabboInfo().getCurrentRoom() != null) { - Emulator.getGameEnvironment().getRoomManager().leaveRoom(this, this.getHabboInfo().getCurrentRoom()); + if (this.getRoomUnit().getRoom() != null) { + Emulator.getGameEnvironment().getRoomManager().leaveRoom(this, this.getRoomUnit().getRoom()); } if (this.getHabboInfo().getRoomQueueId() > 0) { - Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(this.getHabboInfo().getRoomQueueId()); + Room room = Emulator.getGameEnvironment().getRoomManager().getActiveRoomById(this.getHabboInfo().getRoomQueueId()); if (room != null) { room.removeFromQueue(this); @@ -280,7 +284,7 @@ public class Habbo implements Runnable { public void talk(String message, RoomChatMessageBubbles bubble) { if (this.getRoomUnit().isInRoom()) { - this.getHabboInfo().getCurrentRoom().sendComposer(new ChatMessageComposer(new RoomChatMessage(message, this.client.getHabbo().getRoomUnit(), bubble)).compose()); + this.getRoomUnit().getRoom().sendComposer(new ChatMessageComposer(new RoomChatMessage(message, this.client.getHabbo().getRoomUnit(), bubble)).compose()); } } @@ -292,7 +296,7 @@ public class Habbo implements Runnable { public void shout(String message, RoomChatMessageBubbles bubble) { if (this.getRoomUnit().isInRoom()) { - this.getHabboInfo().getCurrentRoom().sendComposer(new ShoutMessageComposer(new RoomChatMessage(message, this.client.getHabbo().getRoomUnit(), bubble)).compose()); + this.getRoomUnit().getRoom().sendComposer(new ShoutMessageComposer(new RoomChatMessage(message, this.client.getHabbo().getRoomUnit(), bubble)).compose()); } } @@ -321,21 +325,21 @@ public class Habbo implements Runnable { } - public void addFurniture(HabboItem item) { + public void addFurniture(RoomItem item) { this.inventory.getItemsComponent().addItem(item); this.client.sendResponse(new UnseenItemsComposer(item)); this.client.sendResponse(new FurniListInvalidateComposer()); } - public void addFurniture(THashSet items) { + public void addFurniture(THashSet items) { this.inventory.getItemsComponent().addItems(items); this.client.sendResponse(new UnseenItemsComposer(items)); this.client.sendResponse(new FurniListInvalidateComposer()); } - public void removeFurniture(HabboItem item) { + public void removeFurniture(RoomItem item) { this.inventory.getItemsComponent().removeHabboItem(item); this.client.sendResponse(new FurniListRemoveComposer(item.getId())); } @@ -355,7 +359,7 @@ public class Habbo implements Runnable { public void deleteBot(Bot bot) { this.removeBot(bot); - bot.getRoom().removeBot(bot); + bot.getRoom().getRoomUnitManager().removeBot(bot); Emulator.getGameEnvironment().getBotManager().deleteBot(bot); } @@ -411,7 +415,7 @@ public class Habbo implements Runnable { this.client.sendResponse(new FloodControlMessageComposer(remaining)); this.client.sendResponse(new RemainingMutePeriodComposer(remaining)); - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); if (room != null && !isFlood) { room.sendComposer(new IgnoreResultMessageComposer(this, IgnoreResultMessageComposer.MUTED).compose()); } @@ -421,7 +425,7 @@ public class Habbo implements Runnable { public void unMute() { this.habboStats.unMute(); this.client.sendResponse(new FloodControlMessageComposer(3)); - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); if (room != null) { room.sendComposer(new IgnoreResultMessageComposer(this, IgnoreResultMessageComposer.UNIGNORED).compose()); } @@ -457,14 +461,14 @@ public class Habbo implements Runnable { target.getHabboStats().setRespectPointsReceived(target.getHabboStats().getRespectPointsReceived()+1); this.client.getHabbo().getHabboStats().setRespectPointsGiven(this.client.getHabbo().getHabboStats().getRespectPointsGiven()+1); this.client.getHabbo().getHabboStats().setRespectPointsToGive(this.client.getHabbo().getHabboStats().getRespectPointsToGive()-1); - this.client.getHabbo().getHabboInfo().getCurrentRoom().sendComposer(new RoomUserRespectComposer(target).compose()); - this.client.getHabbo().getHabboInfo().getCurrentRoom().sendComposer(new ExpressionMessageComposer(this.client.getHabbo().getRoomUnit(), RoomUserAction.THUMB_UP).compose()); + this.client.getHabbo().getRoomUnit().getRoom().sendComposer(new RoomUserRespectComposer(target).compose()); + this.client.getHabbo().getRoomUnit().getRoom().sendComposer(new ExpressionMessageComposer(this.client.getHabbo().getRoomUnit(), RoomUserAction.THUMB_UP).compose()); AchievementManager.progressAchievement(this.client.getHabbo(), Emulator.getGameEnvironment().getAchievementManager().getAchievement("RespectGiven")); AchievementManager.progressAchievement(target, Emulator.getGameEnvironment().getAchievementManager().getAchievement("RespectEarned")); - this.client.getHabbo().getHabboInfo().getCurrentRoom().unIdle(this.client.getHabbo()); - this.client.getHabbo().getHabboInfo().getCurrentRoom().dance(this.client.getHabbo().getRoomUnit(), DanceType.NONE); + this.client.getHabbo().getRoomUnit().getRoom().unIdle(this.client.getHabbo()); + this.client.getHabbo().getRoomUnit().getRoom().dance(this.client.getHabbo().getRoomUnit(), DanceType.NONE); } } diff --git a/src/main/java/com/eu/habbo/habbohotel/users/HabboInfo.java b/src/main/java/com/eu/habbo/habbohotel/users/HabboInfo.java index 43aa908d..a27e1e0f 100644 --- a/src/main/java/com/eu/habbo/habbohotel/users/HabboInfo.java +++ b/src/main/java/com/eu/habbo/habbohotel/users/HabboInfo.java @@ -12,7 +12,7 @@ import com.eu.habbo.habbohotel.pets.PetTasks; import com.eu.habbo.habbohotel.pets.RideablePet; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.messages.outgoing.rooms.users.UserUpdateComposer; import gnu.trove.map.hash.TIntIntHashMap; import lombok.Getter; @@ -59,11 +59,6 @@ public class HabboInfo implements Runnable { @Setter private boolean online; @Setter - @Accessors(chain = true) - private int loadingRoom; - @Setter - private Room currentRoom; - @Setter private int roomQueueId; @Setter private RideablePet riding; @@ -112,7 +107,6 @@ public class HabboInfo implements Runnable { this.lastOnline = set.getInt("last_online"); this.machineID = set.getString("machine_id"); this.online = false; - this.currentRoom = null; } catch (SQLException e) { log.error("Caught SQL exception", e); } @@ -304,15 +298,16 @@ public class HabboInfo implements Runnable { this.run(); } - public void dismountPet() { - this.dismountPet(false); + public void dismountPet(Room room) { + this.dismountPet(false, room); } - public void dismountPet(boolean isRemoving) { + public void dismountPet(boolean isRemoving, Room room) { if (this.getRiding() == null) return; - Habbo habbo = this.getCurrentRoom().getHabbo(this.getId()); + Habbo habbo = room.getRoomUnitManager().getRoomHabboById(this.getId()); + if (habbo == null) return; @@ -322,7 +317,6 @@ public class HabboInfo implements Runnable { riding.setTask(PetTasks.FREE); this.setRiding(null); - Room room = this.getCurrentRoom(); if (room != null) room.giveEffect(habbo, 0, -1); @@ -330,17 +324,17 @@ public class HabboInfo implements Runnable { if (roomUnit == null) return; - roomUnit.setZ(riding.getRoomUnit().getZ()); - roomUnit.setPreviousLocationZ(riding.getRoomUnit().getZ()); + roomUnit.setCurrentZ(riding.getRoomUnit().getCurrentZ()); + roomUnit.setPreviousLocationZ(riding.getRoomUnit().getCurrentZ()); roomUnit.stopWalking(); if (room != null) room.sendComposer(new UserUpdateComposer(roomUnit).compose()); - List availableTiles = isRemoving ? new ArrayList<>() : this.getCurrentRoom().getLayout().getWalkableTilesAround(roomUnit.getCurrentLocation()); + List availableTiles = isRemoving ? new ArrayList<>() : room.getLayout().getWalkableTilesAround(roomUnit.getCurrentPosition()); - RoomTile tile = availableTiles.isEmpty() ? roomUnit.getCurrentLocation() : availableTiles.get(0); + RoomTile tile = availableTiles.isEmpty() ? roomUnit.getCurrentPosition() : availableTiles.get(0); roomUnit.setGoalLocation(tile); - roomUnit.statusUpdate(true); + roomUnit.setStatusUpdateNeeded(true); } public boolean isInGame() { diff --git a/src/main/java/com/eu/habbo/habbohotel/users/inventory/EffectsComponent.java b/src/main/java/com/eu/habbo/habbohotel/users/inventory/EffectsComponent.java index 3ac89048..6f4f4d91 100644 --- a/src/main/java/com/eu/habbo/habbohotel/users/inventory/EffectsComponent.java +++ b/src/main/java/com/eu/habbo/habbohotel/users/inventory/EffectsComponent.java @@ -139,8 +139,8 @@ public class EffectsComponent { this.activatedEffect = effectId; - if (this.habbo.getHabboInfo().getCurrentRoom() != null) { - this.habbo.getHabboInfo().getCurrentRoom().giveEffect(this.habbo, effectId, effect.remainingTime()); + if (this.habbo.getRoomUnit().getRoom() != null) { + this.habbo.getRoomUnit().getRoom().giveEffect(this.habbo, effectId, effect.remainingTime()); } this.habbo.getClient().sendResponse(new AvatarEffectActivatedMessageComposer(effect)); diff --git a/src/main/java/com/eu/habbo/habbohotel/users/inventory/ItemsComponent.java b/src/main/java/com/eu/habbo/habbohotel/users/inventory/ItemsComponent.java index f9597b16..5b82df81 100644 --- a/src/main/java/com/eu/habbo/habbohotel/users/inventory/ItemsComponent.java +++ b/src/main/java/com/eu/habbo/habbohotel/users/inventory/ItemsComponent.java @@ -4,7 +4,7 @@ import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.habbohotel.users.HabboInventory; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.plugin.events.inventory.InventoryItemAddedEvent; import com.eu.habbo.plugin.events.inventory.InventoryItemRemovedEvent; import com.eu.habbo.plugin.events.inventory.InventoryItemsAddedEvent; @@ -27,7 +27,7 @@ import java.util.NoSuchElementException; public class ItemsComponent { @Getter - private final TIntObjectMap items = TCollections.synchronizedMap(new TIntObjectHashMap<>()); + private final TIntObjectMap items = TCollections.synchronizedMap(new TIntObjectHashMap<>()); private final HabboInventory inventory; @@ -36,8 +36,8 @@ public class ItemsComponent { this.items.putAll(loadItems(habbo)); } - public static THashMap loadItems(Habbo habbo) { - THashMap itemsList = new THashMap<>(); + public static THashMap loadItems(Habbo habbo) { + THashMap itemsList = new THashMap<>(); try (Connection connection = Emulator.getDatabase().getDataSource().getConnection(); PreparedStatement statement = connection.prepareStatement("SELECT * FROM items WHERE room_id = ? AND user_id = ?")) { statement.setInt(1, 0); @@ -45,7 +45,7 @@ public class ItemsComponent { try (ResultSet set = statement.executeQuery()) { while (set.next()) { try { - HabboItem item = Emulator.getGameEnvironment().getItemManager().loadHabboItem(set); + RoomItem item = Emulator.getGameEnvironment().getItemManager().loadHabboItem(set); if (item != null) { itemsList.put(set.getInt("id"), item); @@ -64,7 +64,7 @@ public class ItemsComponent { return itemsList; } - public void addItem(HabboItem item) { + public void addItem(RoomItem item) { if (item == null) { return; } @@ -79,14 +79,14 @@ public class ItemsComponent { } } - public void addItems(THashSet items) { + public void addItems(THashSet items) { InventoryItemsAddedEvent event = new InventoryItemsAddedEvent(this.inventory, items); if (Emulator.getPluginManager().fireEvent(event).isCancelled()) { return; } synchronized (this.items) { - for (HabboItem item : event.items) { + for (RoomItem item : event.items) { if (item == null) { continue; } @@ -96,31 +96,31 @@ public class ItemsComponent { } } - public HabboItem getHabboItem(int itemId) { + public RoomItem getHabboItem(int itemId) { return this.items.get(Math.abs(itemId)); } - public HabboItem getAndRemoveHabboItem(final Item item) { - final HabboItem[] habboItem = {null}; + public RoomItem getAndRemoveHabboItem(final Item item) { + final RoomItem[] roomItem = {null}; synchronized (this.items) { this.items.forEachValue(object -> { if (object.getBaseItem() == item) { - habboItem[0] = object; + roomItem[0] = object; return false; } return true; }); } - this.removeHabboItem(habboItem[0]); - return habboItem[0]; + this.removeHabboItem(roomItem[0]); + return roomItem[0]; } public void removeHabboItem(int itemId) { this.items.remove(itemId); } - public void removeHabboItem(HabboItem item) { + public void removeHabboItem(RoomItem item) { InventoryItemRemovedEvent event = new InventoryItemRemovedEvent(this.inventory, item); if (Emulator.getPluginManager().fireEvent(event).isCancelled()) { return; @@ -131,8 +131,8 @@ public class ItemsComponent { } } - public THashSet getItemsAsValueCollection() { - THashSet items = new THashSet<>(); + public THashSet getItemsAsValueCollection() { + THashSet items = new THashSet<>(); items.addAll(this.items.valueCollection()); return items; @@ -144,7 +144,7 @@ public class ItemsComponent { public void dispose() { synchronized (this.items) { - TIntObjectIterator items = this.items.iterator(); + TIntObjectIterator items = this.items.iterator(); if (items == null) { log.error("Items is NULL!"); diff --git a/src/main/java/com/eu/habbo/habbohotel/users/subscriptions/SubscriptionHabboClub.java b/src/main/java/com/eu/habbo/habbohotel/users/subscriptions/SubscriptionHabboClub.java index f4a93859..89e48402 100644 --- a/src/main/java/com/eu/habbo/habbohotel/users/subscriptions/SubscriptionHabboClub.java +++ b/src/main/java/com/eu/habbo/habbohotel/users/subscriptions/SubscriptionHabboClub.java @@ -164,8 +164,8 @@ public class SubscriptionHabboClub extends Subscription { habbo.getClient().sendResponse(new FigureUpdateComposer(habbo)); } - if (habbo.getHabboInfo().getCurrentRoom() != null) { - habbo.getHabboInfo().getCurrentRoom().sendComposer(new UserChangeMessageComposer(habbo).compose()); + if (habbo.getRoomUnit().getRoom() != null) { + habbo.getRoomUnit().getRoom().sendComposer(new UserChangeMessageComposer(habbo).compose()); } } diff --git a/src/main/java/com/eu/habbo/habbohotel/wired/WiredChangeDirectionSetting.java b/src/main/java/com/eu/habbo/habbohotel/wired/WiredChangeDirectionSetting.java index c4844c49..d03fd1f1 100644 --- a/src/main/java/com/eu/habbo/habbohotel/wired/WiredChangeDirectionSetting.java +++ b/src/main/java/com/eu/habbo/habbohotel/wired/WiredChangeDirectionSetting.java @@ -1,6 +1,6 @@ package com.eu.habbo.habbohotel.wired; -import com.eu.habbo.habbohotel.rooms.RoomUserRotation; +import com.eu.habbo.habbohotel.rooms.entities.RoomRotation; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.Setter; @@ -10,6 +10,6 @@ import lombok.Setter; public class WiredChangeDirectionSetting { private final int itemId; private int rotation; - @Setter private RoomUserRotation direction; + @Setter private RoomRotation direction; } diff --git a/src/main/java/com/eu/habbo/habbohotel/wired/WiredHandler.java b/src/main/java/com/eu/habbo/habbohotel/wired/WiredHandler.java index 7fcdcb29..87aa305e 100644 --- a/src/main/java/com/eu/habbo/habbohotel/wired/WiredHandler.java +++ b/src/main/java/com/eu/habbo/habbohotel/wired/WiredHandler.java @@ -14,10 +14,10 @@ import com.eu.habbo.habbohotel.items.interactions.wired.extra.WiredExtraUnseen; import com.eu.habbo.habbohotel.items.interactions.wired.interfaces.WiredTriggerReset; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.habbohotel.users.HabboBadge; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.outgoing.catalog.PurchaseOKMessageComposer; import com.eu.habbo.messages.outgoing.inventory.FurniListInvalidateComposer; import com.eu.habbo.messages.outgoing.inventory.UnseenItemsComposer; @@ -153,7 +153,7 @@ public class WiredHandler { } long millis = System.currentTimeMillis(); - int roomUnitId = roomUnit != null ? roomUnit.getId() : -1; + int roomUnitId = roomUnit != null ? roomUnit.getVirtualId() : -1; if (((Emulator.getConfig().getBoolean("wired.custom.enabled", false) && (trigger.canExecute(millis) || roomUnitId > -1) && trigger.userCanExecute(roomUnitId, millis)) || (!Emulator.getConfig().getBoolean("wired.custom.enabled", false) && trigger.canExecute(millis))) && trigger.execute(roomUnit, room, stuff)) { //DUNNO IF YOU HAVE TO SET EXTRADATA TO 1 IN HERE (In case of Repeaters) trigger.activateBox(room, roomUnit, millis); @@ -224,7 +224,7 @@ public class WiredHandler { private static boolean triggerEffect(InteractionWiredEffect effect, RoomUnit roomUnit, Room room, Object[] stuff, long millis) { boolean executed = false; - if (effect != null && (effect.canExecute(millis) || (roomUnit != null && effect.requiresTriggeringUser() && Emulator.getConfig().getBoolean("wired.custom.enabled", false) && effect.userCanExecute(roomUnit.getId(), millis)))) { + if (effect != null && (effect.canExecute(millis) || (roomUnit != null && effect.requiresTriggeringUser() && Emulator.getConfig().getBoolean("wired.custom.enabled", false) && effect.userCanExecute(roomUnit.getVirtualId(), millis)))) { executed = true; if (!effect.requiresTriggeringUser() || (roomUnit != null && effect.requiresTriggeringUser())) { Emulator.getThreading().run(() -> { @@ -256,10 +256,10 @@ public class WiredHandler { public static boolean executeEffectsAtTiles(THashSet tiles, final RoomUnit roomUnit, final Room room, final Object[] stuff) { for (RoomTile tile : tiles) { if (room != null) { - THashSet items = room.getItemsAt(tile); + THashSet items = room.getItemsAt(tile); long millis = room.getCycleTimestamp(); - for (final HabboItem item : items) { + for (final RoomItem item : items) { if (item instanceof InteractionWiredEffect && !(item instanceof WiredEffectTriggerStacks)) { triggerEffect((InteractionWiredEffect) item, roomUnit, room, stuff, millis); ((InteractionWiredEffect) item).setCooldown(millis); @@ -340,7 +340,7 @@ public class WiredHandler { } else if (rewardReceived.getType().equalsIgnoreCase("furni")) { Item baseItem = Emulator.getGameEnvironment().getItemManager().getItem(Integer.parseInt(rewardReceived.getValue())); if (baseItem != null) { - HabboItem item = Emulator.getGameEnvironment().getItemManager().createItem(habbo.getHabboInfo().getId(), baseItem, 0, 0, ""); + RoomItem item = Emulator.getGameEnvironment().getItemManager().createItem(habbo.getHabboInfo().getId(), baseItem, 0, 0, ""); if (item != null) { habbo.getClient().sendResponse(new UnseenItemsComposer(item)); diff --git a/src/main/java/com/eu/habbo/habbohotel/wired/highscores/WiredHighscoreMidnightUpdater.java b/src/main/java/com/eu/habbo/habbohotel/wired/highscores/WiredHighscoreMidnightUpdater.java index 7b60b22c..00a70218 100644 --- a/src/main/java/com/eu/habbo/habbohotel/wired/highscores/WiredHighscoreMidnightUpdater.java +++ b/src/main/java/com/eu/habbo/habbohotel/wired/highscores/WiredHighscoreMidnightUpdater.java @@ -3,7 +3,7 @@ package com.eu.habbo.habbohotel.wired.highscores; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredHighscore; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import gnu.trove.set.hash.THashSet; import java.time.LocalDateTime; @@ -19,8 +19,8 @@ public class WiredHighscoreMidnightUpdater implements Runnable { for (Room room : rooms) { if (room == null || room.getRoomSpecialTypes() == null) continue; - THashSet items = room.getRoomSpecialTypes().getItemsOfType(InteractionWiredHighscore.class); - for (HabboItem item : items) { + THashSet items = room.getRoomSpecialTypes().getItemsOfType(InteractionWiredHighscore.class); + for (RoomItem item : items) { ((InteractionWiredHighscore) item).reloadData(); room.updateItem(item); } diff --git a/src/main/java/com/eu/habbo/messages/incoming/ambassadors/AmbassadorAlertEvent.java b/src/main/java/com/eu/habbo/messages/incoming/ambassadors/AmbassadorAlertEvent.java index 45dfd6b6..35bc2470 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/ambassadors/AmbassadorAlertEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/ambassadors/AmbassadorAlertEvent.java @@ -19,7 +19,7 @@ public class AmbassadorAlertEvent extends MessageHandler { int userId = this.packet.readInt(); - Habbo habbo = this.client.getHabbo().getHabboInfo().getCurrentRoom().getHabbo(userId); + Habbo habbo = this.client.getHabbo().getRoomUnit().getRoom().getRoomUnitManager().getRoomHabboById(userId); if (habbo == null) return; diff --git a/src/main/java/com/eu/habbo/messages/incoming/ambassadors/FollowFriendEvent.java b/src/main/java/com/eu/habbo/messages/incoming/ambassadors/FollowFriendEvent.java index 4f3f7304..7fbd9fc6 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/ambassadors/FollowFriendEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/ambassadors/FollowFriendEvent.java @@ -15,8 +15,8 @@ public class FollowFriendEvent extends MessageHandler { Habbo habbo = Emulator.getGameEnvironment().getHabboManager().getHabbo(username); if (habbo != null) { - if (habbo.getHabboInfo().getCurrentRoom() != null) { - this.client.sendResponse(new RoomForwardMessageComposer(habbo.getHabboInfo().getCurrentRoom().getId())); + if (habbo.getRoomUnit().getRoom() != null) { + this.client.sendResponse(new RoomForwardMessageComposer(habbo.getRoomUnit().getRoom().getRoomInfo().getId())); } } } diff --git a/src/main/java/com/eu/habbo/messages/incoming/camera/PurchasePhotoEvent.java b/src/main/java/com/eu/habbo/messages/incoming/camera/PurchasePhotoEvent.java index a0de9495..91336f57 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/camera/PurchasePhotoEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/camera/PurchasePhotoEvent.java @@ -2,7 +2,7 @@ package com.eu.habbo.messages.incoming.camera; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.achievements.AchievementManager; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.incoming.MessageHandler; import com.eu.habbo.messages.outgoing.camera.CameraPurchaseOKMessageComposer; import com.eu.habbo.messages.outgoing.catalog.NotEnoughBalanceMessageComposer; @@ -32,11 +32,11 @@ public class PurchasePhotoEvent extends MessageHandler { if (!this.client.getHabbo().getHabboInfo().getPhotoJSON().contains(this.client.getHabbo().getHabboInfo().getPhotoTimestamp() + "")) return; - if (Emulator.getPluginManager().fireEvent(new UserPurchasePictureEvent(this.client.getHabbo(), this.client.getHabbo().getHabboInfo().getPhotoURL(), this.client.getHabbo().getHabboInfo().getCurrentRoom().getId(), this.client.getHabbo().getHabboInfo().getPhotoTimestamp())).isCancelled()) { + if (Emulator.getPluginManager().fireEvent(new UserPurchasePictureEvent(this.client.getHabbo(), this.client.getHabbo().getHabboInfo().getPhotoURL(), this.client.getHabbo().getRoomUnit().getRoom().getRoomInfo().getId(), this.client.getHabbo().getHabboInfo().getPhotoTimestamp())).isCancelled()) { return; } - HabboItem photoItem = Emulator.getGameEnvironment().getItemManager().createItem(this.client.getHabbo().getHabboInfo().getId(), Emulator.getGameEnvironment().getItemManager().getItem(Emulator.getConfig().getInt("camera.item_id")), 0, 0, this.client.getHabbo().getHabboInfo().getPhotoJSON()); + RoomItem photoItem = Emulator.getGameEnvironment().getItemManager().createItem(this.client.getHabbo().getHabboInfo().getId(), Emulator.getGameEnvironment().getItemManager().getItem(Emulator.getConfig().getInt("camera.item_id")), 0, 0, this.client.getHabbo().getHabboInfo().getPhotoJSON()); if (photoItem != null) { photoItem.setExtradata(photoItem.getExtradata().replace("%id%", photoItem.getId() + "")); diff --git a/src/main/java/com/eu/habbo/messages/incoming/camera/RenderRoomEvent.java b/src/main/java/com/eu/habbo/messages/incoming/camera/RenderRoomEvent.java index 1207db74..87b4b354 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/camera/RenderRoomEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/camera/RenderRoomEvent.java @@ -21,12 +21,12 @@ public class RenderRoomEvent extends MessageHandler { byte[] data = this.packet.getBuffer().readBytes(this.packet.getBuffer().readableBytes()).array(); String content = new String(ZIP.inflate(data)); - CameraRenderImageComposer composer = new CameraRenderImageComposer(this.client.getHabbo().getHabboInfo().getId(), this.client.getHabbo().getHabboInfo().getCurrentRoom().getBackgroundTonerColor().getRGB(), 320, 320, content); + CameraRenderImageComposer composer = new CameraRenderImageComposer(this.client.getHabbo().getHabboInfo().getId(), this.client.getHabbo().getRoomUnit().getRoom().getBackgroundTonerColor().getRGB(), 320, 320, content); this.client.getHabbo().getHabboInfo().setPhotoJSON(Emulator.getConfig().getValue("camera.extradata").replace("%timestamp%", composer.timestamp + "")); this.client.getHabbo().getHabboInfo().setPhotoTimestamp(composer.timestamp); - if (this.client.getHabbo().getHabboInfo().getCurrentRoom() != null) { - this.client.getHabbo().getHabboInfo().setPhotoRoomId(this.client.getHabbo().getHabboInfo().getCurrentRoom().getId()); + if (this.client.getHabbo().getRoomUnit().getRoom() != null) { + this.client.getHabbo().getHabboInfo().setPhotoRoomId(this.client.getHabbo().getRoomUnit().getRoom().getRoomInfo().getId()); } Emulator.getCameraClient().sendMessage(composer); diff --git a/src/main/java/com/eu/habbo/messages/incoming/camera/RenderRoomThumbnailEvent.java b/src/main/java/com/eu/habbo/messages/incoming/camera/RenderRoomThumbnailEvent.java index 56931182..f95d53bd 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/camera/RenderRoomThumbnailEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/camera/RenderRoomThumbnailEvent.java @@ -16,7 +16,7 @@ public class RenderRoomThumbnailEvent extends MessageHandler { return; } - if (!this.client.getHabbo().getHabboInfo().getCurrentRoom().isOwner(this.client.getHabbo())) + if (!this.client.getHabbo().getRoomUnit().getRoom().getRoomInfo().isRoomOwner(this.client.getHabbo())) return; if (CameraClient.isLoggedIn) { @@ -24,7 +24,7 @@ public class RenderRoomThumbnailEvent extends MessageHandler { byte[] data = this.packet.getBuffer().readBytes(this.packet.getBuffer().readableBytes()).array(); String content = new String(ZIP.inflate(data)); - CameraRenderImageComposer composer = new CameraRenderImageComposer(this.client.getHabbo().getHabboInfo().getId(), this.client.getHabbo().getHabboInfo().getCurrentRoom().getBackgroundTonerColor().getRGB(), 110, 110, content); + CameraRenderImageComposer composer = new CameraRenderImageComposer(this.client.getHabbo().getHabboInfo().getId(), this.client.getHabbo().getRoomUnit().getRoom().getBackgroundTonerColor().getRGB(), 110, 110, content); this.client.getHabbo().getHabboInfo().setPhotoJSON(Emulator.getConfig().getValue("camera.extradata").replace("%timestamp%", composer.timestamp + "")); this.client.getHabbo().getHabboInfo().setPhotoTimestamp(composer.timestamp); diff --git a/src/main/java/com/eu/habbo/messages/incoming/catalog/PurchaseFromCatalogAsGiftEvent.java b/src/main/java/com/eu/habbo/messages/incoming/catalog/PurchaseFromCatalogAsGiftEvent.java index 8d9a156a..830d410b 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/catalog/PurchaseFromCatalogAsGiftEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/catalog/PurchaseFromCatalogAsGiftEvent.java @@ -13,7 +13,7 @@ import com.eu.habbo.habbohotel.modtool.ScripterManager; import com.eu.habbo.habbohotel.permissions.Permission; import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.habbohotel.users.HabboBadge; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.incoming.MessageHandler; import com.eu.habbo.messages.outgoing.catalog.*; import com.eu.habbo.messages.outgoing.generic.alerts.BubbleAlertKeys; @@ -192,7 +192,7 @@ public class PurchaseFromCatalogAsGiftEvent extends MessageHandler { limitedStack = limitedConfiguration.getTotalSet(); } - THashSet itemsList = new THashSet<>(); + THashSet itemsList = new THashSet<>(); boolean badgeFound = false; for (Item baseItem : item.getBaseItems()) { @@ -271,13 +271,13 @@ public class PurchaseFromCatalogAsGiftEvent extends MessageHandler { } if (baseItem.getInteractionType().getType() == InteractionTeleport.class || baseItem.getInteractionType().getType() == InteractionTeleportTile.class) { - HabboItem teleportOne = Emulator.getGameEnvironment().getItemManager().createItem(0, baseItem, limitedStack, limitedNumber, extraData); - HabboItem teleportTwo = Emulator.getGameEnvironment().getItemManager().createItem(0, baseItem, limitedStack, limitedNumber, extraData); + RoomItem teleportOne = Emulator.getGameEnvironment().getItemManager().createItem(0, baseItem, limitedStack, limitedNumber, extraData); + RoomItem teleportTwo = Emulator.getGameEnvironment().getItemManager().createItem(0, baseItem, limitedStack, limitedNumber, extraData); Emulator.getGameEnvironment().getItemManager().insertTeleportPair(teleportOne.getId(), teleportTwo.getId()); itemsList.add(teleportOne); itemsList.add(teleportTwo); } else if (baseItem.getInteractionType().getType() == InteractionHopper.class) { - HabboItem hopper = Emulator.getGameEnvironment().getItemManager().createItem(0, baseItem, limitedNumber, limitedNumber, extraData); + RoomItem hopper = Emulator.getGameEnvironment().getItemManager().createItem(0, baseItem, limitedNumber, limitedNumber, extraData); Emulator.getGameEnvironment().getItemManager().insertHopper(hopper); @@ -298,8 +298,8 @@ public class PurchaseFromCatalogAsGiftEvent extends MessageHandler { Emulator.getGameEnvironment().getGuildManager().setGuild(habboItem, guildId); itemsList.add(habboItem); } else { - HabboItem habboItem = Emulator.getGameEnvironment().getItemManager().createItem(0, baseItem, limitedStack, limitedNumber, extraData); - itemsList.add(habboItem); + RoomItem roomItem = Emulator.getGameEnvironment().getItemManager().createItem(0, baseItem, limitedStack, limitedNumber, extraData); + itemsList.add(roomItem); } } } else { @@ -312,13 +312,13 @@ public class PurchaseFromCatalogAsGiftEvent extends MessageHandler { StringBuilder giftData = new StringBuilder(itemsList.size() + "\t"); - for (HabboItem i : itemsList) { + for (RoomItem i : itemsList) { giftData.append(i.getId()).append("\t"); } giftData.append(color).append("\t").append(ribbonId).append("\t").append(showName ? "1" : "0").append("\t").append(message.replace("\t", "")).append("\t").append(this.client.getHabbo().getHabboInfo().getUsername()).append("\t").append(this.client.getHabbo().getHabboInfo().getLook()); - HabboItem gift = Emulator.getGameEnvironment().getItemManager().createGift(username, giftItem, giftData.toString(), 0, 0); + RoomItem gift = Emulator.getGameEnvironment().getItemManager().createGift(username, giftItem, giftData.toString(), 0, 0); if (gift == null) { this.client.sendResponse(new PurchaseErrorMessageComposer(PurchaseErrorMessageComposer.SERVER_ERROR)); diff --git a/src/main/java/com/eu/habbo/messages/incoming/catalog/marketplace/MakeOfferEvent.java b/src/main/java/com/eu/habbo/messages/incoming/catalog/marketplace/MakeOfferEvent.java index 56495b1a..53a3d739 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/catalog/marketplace/MakeOfferEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/catalog/marketplace/MakeOfferEvent.java @@ -3,7 +3,7 @@ package com.eu.habbo.messages.incoming.catalog.marketplace; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.catalog.marketplace.MarketPlace; import com.eu.habbo.habbohotel.modtool.ScripterManager; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.incoming.MessageHandler; import com.eu.habbo.messages.outgoing.catalog.PurchaseErrorMessageComposer; import com.eu.habbo.messages.outgoing.catalog.marketplace.MarketplaceMakeOfferResult; @@ -24,7 +24,7 @@ public class MakeOfferEvent extends MessageHandler { int unknown = this.packet.readInt(); int itemId = this.packet.readInt(); - HabboItem item = this.client.getHabbo().getInventory().getItemsComponent().getHabboItem(itemId); + RoomItem item = this.client.getHabbo().getInventory().getItemsComponent().getHabboItem(itemId); if (item != null) { if (!item.getBaseItem().allowMarketplace()) { String message = Emulator.getTexts().getValue("scripter.warning.marketplace.forbidden").replace("%username%", this.client.getHabbo().getHabboInfo().getUsername()).replace("%itemname%", item.getBaseItem().getName()).replace("%credits%", credits + ""); diff --git a/src/main/java/com/eu/habbo/messages/incoming/catalog/recycler/PresentOpenEvent.java b/src/main/java/com/eu/habbo/messages/incoming/catalog/recycler/PresentOpenEvent.java index 262e8530..932d65fe 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/catalog/recycler/PresentOpenEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/catalog/recycler/PresentOpenEvent.java @@ -4,7 +4,7 @@ import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.items.interactions.InteractionGift; import com.eu.habbo.habbohotel.permissions.Permission; import com.eu.habbo.habbohotel.rooms.*; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.incoming.MessageHandler; import com.eu.habbo.messages.outgoing.inventory.FurniListInvalidateComposer; import com.eu.habbo.messages.outgoing.inventory.UnseenItemsComposer; @@ -17,13 +17,13 @@ import com.eu.habbo.threading.runnables.OpenGift; public class PresentOpenEvent extends MessageHandler { @Override public void handle() { - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); if (room == null) return; - if (room.getOwnerId() == this.client.getHabbo().getHabboInfo().getId() || this.client.getHabbo().hasRight(Permission.ACC_ANYROOMOWNER)) { - HabboItem item = room.getHabboItem(this.packet.readInt()); + if (room.getRoomInfo().getOwnerInfo().getId() == this.client.getHabbo().getHabboInfo().getId() || this.client.getHabbo().hasRight(Permission.ACC_ANYROOMOWNER)) { + RoomItem item = room.getHabboItem(this.packet.readInt()); if (item == null) return; @@ -39,7 +39,7 @@ public class PresentOpenEvent extends MessageHandler { if (item.getExtradata().length() == 0) { this.client.sendResponse(new WhisperMessageComposer(new RoomChatMessage(Emulator.getTexts().getValue("error.recycler.box.empty"), this.client.getHabbo(), this.client.getHabbo(), RoomChatMessageBubbles.BOT))); } else { - HabboItem reward = Emulator.getGameEnvironment().getItemManager().handleOpenRecycleBox(this.client.getHabbo(), item); + RoomItem reward = Emulator.getGameEnvironment().getItemManager().handleOpenRecycleBox(this.client.getHabbo(), item); if (reward != null) { this.client.getHabbo().getInventory().getItemsComponent().addItem(reward); diff --git a/src/main/java/com/eu/habbo/messages/incoming/catalog/recycler/RecycleItemsEvent.java b/src/main/java/com/eu/habbo/messages/incoming/catalog/recycler/RecycleItemsEvent.java index 99796945..c08a44e2 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/catalog/recycler/RecycleItemsEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/catalog/recycler/RecycleItemsEvent.java @@ -3,7 +3,7 @@ package com.eu.habbo.messages.incoming.catalog.recycler; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.achievements.AchievementManager; import com.eu.habbo.habbohotel.items.ItemManager; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.incoming.MessageHandler; import com.eu.habbo.messages.outgoing.catalog.PurchaseErrorMessageComposer; import com.eu.habbo.messages.outgoing.catalog.RecyclerFinishedComposer; @@ -24,13 +24,13 @@ public class RecycleItemsEvent extends MessageHandler { } if (Emulator.getGameEnvironment().getCatalogManager().ecotronItem != null && ItemManager.RECYCLER_ENABLED) { - THashSet items = new THashSet<>(); + THashSet items = new THashSet<>(); int count = this.packet.readInt(); if (count < Emulator.getConfig().getInt("recycler.value", 8)) return; for (int i = 0; i < count; i++) { - HabboItem item = this.client.getHabbo().getInventory().getItemsComponent().getHabboItem(this.packet.readInt()); + RoomItem item = this.client.getHabbo().getInventory().getItemsComponent().getHabboItem(this.packet.readInt()); if (item == null) return; @@ -41,7 +41,7 @@ public class RecycleItemsEvent extends MessageHandler { } if (items.size() == count) { - for (HabboItem item : items) { + for (RoomItem item : items) { this.client.getHabbo().getInventory().getItemsComponent().removeHabboItem(item); this.client.sendResponse(new FurniListRemoveComposer(item.getGiftAdjustedId())); Emulator.getThreading().run(new QueryDeleteHabboItem(item.getId())); @@ -51,7 +51,7 @@ public class RecycleItemsEvent extends MessageHandler { return; } - HabboItem reward = Emulator.getGameEnvironment().getItemManager().handleRecycle(this.client.getHabbo(), Emulator.getGameEnvironment().getCatalogManager().getRandomRecyclerPrize().getId() + ""); + RoomItem reward = Emulator.getGameEnvironment().getItemManager().handleRecycle(this.client.getHabbo(), Emulator.getGameEnvironment().getCatalogManager().getRandomRecyclerPrize().getId() + ""); if (reward == null) { this.client.sendResponse(new PurchaseErrorMessageComposer(PurchaseErrorMessageComposer.SERVER_ERROR)); return; diff --git a/src/main/java/com/eu/habbo/messages/incoming/crafting/CraftEvent.java b/src/main/java/com/eu/habbo/messages/incoming/crafting/CraftEvent.java index 152f88ca..f56aaa20 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/crafting/CraftEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/crafting/CraftEvent.java @@ -5,7 +5,7 @@ import com.eu.habbo.habbohotel.achievements.AchievementManager; import com.eu.habbo.habbohotel.crafting.CraftingAltar; import com.eu.habbo.habbohotel.crafting.CraftingRecipe; import com.eu.habbo.habbohotel.items.Item; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.incoming.MessageHandler; import com.eu.habbo.messages.outgoing.catalog.LimitedEditionSoldOutComposer; import com.eu.habbo.messages.outgoing.crafting.CraftingResultComposer; @@ -21,7 +21,7 @@ public class CraftEvent extends MessageHandler { @Override public void handle() { int craftingTable = this.packet.readInt(); - HabboItem item = this.client.getHabbo().getHabboInfo().getCurrentRoom().getHabboItem(craftingTable); + RoomItem item = this.client.getHabbo().getRoomUnit().getRoom().getHabboItem(craftingTable); CraftingAltar altar = Emulator.getGameEnvironment().getCraftingManager().getAltar(item.getBaseItem()); CraftingRecipe recipe = altar.getRecipe(this.packet.readString()); @@ -31,20 +31,20 @@ public class CraftEvent extends MessageHandler { return; } - TIntObjectHashMap toRemove = new TIntObjectHashMap<>(); + TIntObjectHashMap toRemove = new TIntObjectHashMap<>(); for (Map.Entry set : recipe.getIngredients().entrySet()) { for (int i = 0; i < set.getValue(); i++) { - HabboItem habboItem = this.client.getHabbo().getInventory().getItemsComponent().getAndRemoveHabboItem(set.getKey()); + RoomItem roomItem = this.client.getHabbo().getInventory().getItemsComponent().getAndRemoveHabboItem(set.getKey()); - if (habboItem == null) { + if (roomItem == null) { return; } - toRemove.put(habboItem.getId(), habboItem); + toRemove.put(roomItem.getId(), roomItem); } } - HabboItem rewardItem = Emulator.getGameEnvironment().getItemManager().createItem(this.client.getHabbo().getHabboInfo().getId(), recipe.getReward(), 0, 0, ""); + RoomItem rewardItem = Emulator.getGameEnvironment().getItemManager().createItem(this.client.getHabbo().getHabboInfo().getId(), recipe.getReward(), 0, 0, ""); if (rewardItem != null) { if (recipe.isLimited()) { diff --git a/src/main/java/com/eu/habbo/messages/incoming/crafting/CraftSecretEvent.java b/src/main/java/com/eu/habbo/messages/incoming/crafting/CraftSecretEvent.java index 68ac6b93..d20db53d 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/crafting/CraftSecretEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/crafting/CraftSecretEvent.java @@ -5,7 +5,7 @@ import com.eu.habbo.habbohotel.achievements.AchievementManager; import com.eu.habbo.habbohotel.crafting.CraftingAltar; import com.eu.habbo.habbohotel.crafting.CraftingRecipe; import com.eu.habbo.habbohotel.items.Item; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.incoming.MessageHandler; import com.eu.habbo.messages.outgoing.catalog.LimitedEditionSoldOutComposer; import com.eu.habbo.messages.outgoing.crafting.CraftingResultComposer; @@ -25,30 +25,30 @@ public class CraftSecretEvent extends MessageHandler { int altarId = this.packet.readInt(); int count = this.packet.readInt(); - HabboItem craftingAltar = this.client.getHabbo().getHabboInfo().getCurrentRoom().getHabboItem(altarId); + RoomItem craftingAltar = this.client.getHabbo().getRoomUnit().getRoom().getHabboItem(altarId); if (craftingAltar != null) { CraftingAltar altar = Emulator.getGameEnvironment().getCraftingManager().getAltar(craftingAltar.getBaseItem()); if (altar != null) { - Set habboItems = new THashSet<>(); + Set roomItems = new THashSet<>(); Map items = new THashMap<>(); for (int i = 0; i < count; i++) { - HabboItem habboItem = this.client.getHabbo().getInventory().getItemsComponent().getHabboItem(this.packet.readInt()); + RoomItem roomItem = this.client.getHabbo().getInventory().getItemsComponent().getHabboItem(this.packet.readInt()); - if (habboItem == null) { + if (roomItem == null) { this.client.sendResponse(new CraftingResultComposer(null)); return; } - habboItems.add(habboItem); + roomItems.add(roomItem); - if (!items.containsKey(habboItem.getBaseItem())) { - items.put(habboItem.getBaseItem(), 0); + if (!items.containsKey(roomItem.getBaseItem())) { + items.put(roomItem.getBaseItem(), 0); } - items.put(habboItem.getBaseItem(), items.get(habboItem.getBaseItem()) + 1); + items.put(roomItem.getBaseItem(), items.get(roomItem.getBaseItem()) + 1); } CraftingRecipe recipe = altar.getRecipe(items); @@ -59,7 +59,7 @@ public class CraftSecretEvent extends MessageHandler { return; } - HabboItem rewardItem = Emulator.getGameEnvironment().getItemManager().createItem(this.client.getHabbo().getHabboInfo().getId(), recipe.getReward(), 0, 0, ""); + RoomItem rewardItem = Emulator.getGameEnvironment().getItemManager().createItem(this.client.getHabbo().getHabboInfo().getId(), recipe.getReward(), 0, 0, ""); if (rewardItem != null) { if (recipe.isLimited()) { @@ -77,7 +77,7 @@ public class CraftSecretEvent extends MessageHandler { } this.client.getHabbo().getInventory().getItemsComponent().addItem(rewardItem); this.client.sendResponse(new UnseenItemsComposer(rewardItem)); - for (HabboItem item : habboItems) { + for (RoomItem item : roomItems) { this.client.getHabbo().getInventory().getItemsComponent().removeHabboItem(item); this.client.sendResponse(new FurniListRemoveComposer(item.getGiftAdjustedId())); Emulator.getThreading().run(new QueryDeleteHabboItem(item.getId())); diff --git a/src/main/java/com/eu/habbo/messages/incoming/crafting/GetCraftingRecipeEvent.java b/src/main/java/com/eu/habbo/messages/incoming/crafting/GetCraftingRecipeEvent.java index 8f7e5f0a..a87b6e17 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/crafting/GetCraftingRecipeEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/crafting/GetCraftingRecipeEvent.java @@ -2,7 +2,7 @@ package com.eu.habbo.messages.incoming.crafting; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.crafting.CraftingAltar; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.incoming.MessageHandler; import com.eu.habbo.messages.outgoing.crafting.CraftableProductsComposer; @@ -10,7 +10,7 @@ public class GetCraftingRecipeEvent extends MessageHandler { @Override public void handle() { int itemId = this.packet.readInt(); - HabboItem item = this.client.getHabbo().getHabboInfo().getCurrentRoom().getHabboItem(itemId); + RoomItem item = this.client.getHabbo().getRoomUnit().getRoom().getHabboItem(itemId); if (item != null) { CraftingAltar altar = Emulator.getGameEnvironment().getCraftingManager().getAltar(item.getBaseItem()); diff --git a/src/main/java/com/eu/habbo/messages/incoming/crafting/GetCraftingRecipesAvailableEvent.java b/src/main/java/com/eu/habbo/messages/incoming/crafting/GetCraftingRecipesAvailableEvent.java index d2ce560b..ecd3605f 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/crafting/GetCraftingRecipesAvailableEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/crafting/GetCraftingRecipesAvailableEvent.java @@ -4,7 +4,7 @@ import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.crafting.CraftingAltar; import com.eu.habbo.habbohotel.crafting.CraftingRecipe; import com.eu.habbo.habbohotel.items.Item; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.incoming.MessageHandler; import com.eu.habbo.messages.outgoing.crafting.CraftingRecipesAvailableComposer; import gnu.trove.map.hash.THashMap; @@ -16,7 +16,7 @@ public class GetCraftingRecipesAvailableEvent extends MessageHandler { public void handle() { int altarId = this.packet.readInt(); - HabboItem item = this.client.getHabbo().getHabboInfo().getCurrentRoom().getHabboItem(altarId); + RoomItem item = this.client.getHabbo().getRoomUnit().getRoom().getHabboItem(altarId); CraftingAltar altar = Emulator.getGameEnvironment().getCraftingManager().getAltar(item.getBaseItem()); @@ -25,14 +25,14 @@ public class GetCraftingRecipesAvailableEvent extends MessageHandler { int count = this.packet.readInt(); for (int i = 0; i < count; i++) { - HabboItem habboItem = this.client.getHabbo().getInventory().getItemsComponent().getHabboItem(this.packet.readInt()); + RoomItem roomItem = this.client.getHabbo().getInventory().getItemsComponent().getHabboItem(this.packet.readInt()); - if (habboItem != null) { - if (!items.containsKey(habboItem.getBaseItem())) { - items.put(habboItem.getBaseItem(), 0); + if (roomItem != null) { + if (!items.containsKey(roomItem.getBaseItem())) { + items.put(roomItem.getBaseItem(), 0); } - items.put(habboItem.getBaseItem(), items.get(habboItem.getBaseItem()) + 1); + items.put(roomItem.getBaseItem(), items.get(roomItem.getBaseItem()) + 1); } } diff --git a/src/main/java/com/eu/habbo/messages/incoming/floorplaneditor/GetOccupiedTilesEvent.java b/src/main/java/com/eu/habbo/messages/incoming/floorplaneditor/GetOccupiedTilesEvent.java index 4bc3e64a..9330f50a 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/floorplaneditor/GetOccupiedTilesEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/floorplaneditor/GetOccupiedTilesEvent.java @@ -6,9 +6,9 @@ import com.eu.habbo.messages.outgoing.floorplaneditor.RoomOccupiedTilesMessageCo public class GetOccupiedTilesEvent extends MessageHandler { @Override public void handle() { - if (this.client.getHabbo().getHabboInfo().getCurrentRoom() == null) + if (this.client.getHabbo().getRoomUnit().getRoom() == null) return; - this.client.sendResponse(new RoomOccupiedTilesMessageComposer(this.client.getHabbo().getHabboInfo().getCurrentRoom())); + this.client.sendResponse(new RoomOccupiedTilesMessageComposer(this.client.getHabbo().getRoomUnit().getRoom())); } } diff --git a/src/main/java/com/eu/habbo/messages/incoming/floorplaneditor/GetRoomEntryTileEvent.java b/src/main/java/com/eu/habbo/messages/incoming/floorplaneditor/GetRoomEntryTileEvent.java index 4d5c3f53..96144dbf 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/floorplaneditor/GetRoomEntryTileEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/floorplaneditor/GetRoomEntryTileEvent.java @@ -7,10 +7,10 @@ import com.eu.habbo.messages.outgoing.rooms.RoomFloorThicknessUpdatedComposer; public class GetRoomEntryTileEvent extends MessageHandler { @Override public void handle() { - if (this.client.getHabbo().getHabboInfo().getCurrentRoom() == null) + if (this.client.getHabbo().getRoomUnit().getRoom() == null) return; - this.client.sendResponse(new RoomEntryTileMessageComposer(this.client.getHabbo().getHabboInfo().getCurrentRoom())); - this.client.sendResponse(new RoomFloorThicknessUpdatedComposer(this.client.getHabbo().getHabboInfo().getCurrentRoom())); + this.client.sendResponse(new RoomEntryTileMessageComposer(this.client.getHabbo().getRoomUnit().getRoom())); + this.client.sendResponse(new RoomFloorThicknessUpdatedComposer(this.client.getHabbo().getRoomUnit().getRoom())); } } diff --git a/src/main/java/com/eu/habbo/messages/incoming/floorplaneditor/UpdateFloorPropertiesEvent.java b/src/main/java/com/eu/habbo/messages/incoming/floorplaneditor/UpdateFloorPropertiesEvent.java index a6727ac1..bf1ead0a 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/floorplaneditor/UpdateFloorPropertiesEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/floorplaneditor/UpdateFloorPropertiesEvent.java @@ -28,12 +28,12 @@ public class UpdateFloorPropertiesEvent extends MessageHandler { return; } - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); if (room == null) return; - if (room.getOwnerId() == this.client.getHabbo().getHabboInfo().getId() || this.client.getHabbo().hasRight(Permission.ACC_ANYROOMOWNER)) { + if (room.getRoomInfo().getOwnerInfo().getId() == this.client.getHabbo().getHabboInfo().getId() || this.client.getHabbo().hasRight(Permission.ACC_ANYROOMOWNER)) { StringJoiner errors = new StringJoiner("
"); String map = this.packet.readString(); map = map.replace("X", "x"); @@ -165,18 +165,18 @@ public class UpdateFloorPropertiesEvent extends MessageHandler { } if (layout != null) { - room.setHasCustomLayout(true); + room.getRoomInfo().setModelOverridden(true); room.setNeedsUpdate(true); room.setLayout(layout); - room.setWallSize(wallSize); - room.setFloorSize(floorSize); - room.setWallHeight(wallHeight); + room.getRoomInfo().setWallThickness(wallSize); + room.getRoomInfo().setFloorThickness(floorSize); + room.getRoomInfo().setWallHeight(wallHeight); room.save(); - Collection habbos = new ArrayList<>(room.getUserCount()); - habbos.addAll(room.getHabbos()); + Collection habbos = new ArrayList<>(room.getRoomUnitManager().getRoomHabbosCount()); + habbos.addAll(room.getRoomUnitManager().getRoomHabbos()); Emulator.getGameEnvironment().getRoomManager().unloadRoom(room); - room = Emulator.getGameEnvironment().getRoomManager().loadRoom(room.getId()); - ServerMessage message = new RoomForwardMessageComposer(room.getId()).compose(); + room = Emulator.getGameEnvironment().getRoomManager().getRoom(room.getRoomInfo().getId()); + ServerMessage message = new RoomForwardMessageComposer(room.getRoomInfo().getId()).compose(); for (Habbo habbo : habbos) { habbo.getClient().sendResponse(message); } diff --git a/src/main/java/com/eu/habbo/messages/incoming/friends/FindNewFriendsEvent.java b/src/main/java/com/eu/habbo/messages/incoming/friends/FindNewFriendsEvent.java index 82d9cab3..9bef5cd0 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/friends/FindNewFriendsEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/friends/FindNewFriendsEvent.java @@ -17,13 +17,13 @@ public class FindNewFriendsEvent extends MessageHandler { Collections.shuffle(roomCategories); for (RoomCategory category : roomCategories) { - List rooms = Emulator.getGameEnvironment().getRoomManager().getActiveRooms(category.getId()); + List rooms = Emulator.getGameEnvironment().getRoomManager().getActiveRoomsByCategoryId(category.getId()); if (!rooms.isEmpty()) { Room room = rooms.get(0); - if (room.getUserCount() > 0) { - this.client.sendResponse(new RoomForwardMessageComposer(room.getId())); + if (room.getRoomUnitManager().getRoomHabbosCount() > 0) { + this.client.sendResponse(new RoomForwardMessageComposer(room.getRoomInfo().getId())); return; } } diff --git a/src/main/java/com/eu/habbo/messages/incoming/friends/VisitUserEvent.java b/src/main/java/com/eu/habbo/messages/incoming/friends/VisitUserEvent.java index fc7737b1..ab51be7f 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/friends/VisitUserEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/friends/VisitUserEvent.java @@ -35,13 +35,13 @@ public class VisitUserEvent extends MessageHandler { return; } - if (habbo.getHabboInfo().getCurrentRoom() == null) { + if (habbo.getRoomUnit().getRoom() == null) { this.client.sendResponse(new FollowFriendFailedComposer(FollowFriendFailedComposer.FRIEND_NOT_IN_ROOM)); return; } - if (habbo.getHabboInfo().getCurrentRoom() != this.client.getHabbo().getHabboInfo().getCurrentRoom()) { - this.client.sendResponse(new RoomForwardMessageComposer(habbo.getHabboInfo().getCurrentRoom().getId())); + if (habbo.getRoomUnit().getRoom() != this.client.getHabbo().getRoomUnit().getRoom()) { + this.client.sendResponse(new RoomForwardMessageComposer(habbo.getRoomUnit().getRoom().getRoomInfo().getId())); } else { this.client.sendResponse(new WhisperMessageComposer(new RoomChatMessage(Emulator.getTexts().getValue("stalk.failed.same.room").replace("%user%", habbo.getHabboInfo().getUsername()), this.client.getHabbo(), this.client.getHabbo(), RoomChatMessageBubbles.ALERT))); } diff --git a/src/main/java/com/eu/habbo/messages/incoming/guides/GuideSessionGetRequesterRoomEvent.java b/src/main/java/com/eu/habbo/messages/incoming/guides/GuideSessionGetRequesterRoomEvent.java index 4302617f..9443eda8 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/guides/GuideSessionGetRequesterRoomEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/guides/GuideSessionGetRequesterRoomEvent.java @@ -11,7 +11,7 @@ public class GuideSessionGetRequesterRoomEvent extends MessageHandler { GuideTour tour = Emulator.getGameEnvironment().getGuideManager().getGuideTourByHelper(this.client.getHabbo()); if (tour != null) { - this.client.sendResponse(new GuideSessionRequesterRoomMessageComposer(tour.getNoob().getHabboInfo().getCurrentRoom())); + this.client.sendResponse(new GuideSessionRequesterRoomMessageComposer(tour.getNoob().getRoomUnit().getRoom())); } } } diff --git a/src/main/java/com/eu/habbo/messages/incoming/guides/GuideSessionInviteRequesterEvent.java b/src/main/java/com/eu/habbo/messages/incoming/guides/GuideSessionInviteRequesterEvent.java index 350577a9..d3427215 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/guides/GuideSessionInviteRequesterEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/guides/GuideSessionInviteRequesterEvent.java @@ -12,7 +12,7 @@ public class GuideSessionInviteRequesterEvent extends MessageHandler { GuideTour tour = Emulator.getGameEnvironment().getGuideManager().getGuideTourByHelper(this.client.getHabbo()); if (tour != null) { - ServerMessage message = new GuideSessionInvitedToGuideRoomMessageComposer(this.client.getHabbo().getHabboInfo().getCurrentRoom()).compose(); + ServerMessage message = new GuideSessionInvitedToGuideRoomMessageComposer(this.client.getHabbo().getRoomUnit().getRoom()).compose(); tour.getNoob().getClient().sendResponse(message); tour.getHelper().getClient().sendResponse(message); } diff --git a/src/main/java/com/eu/habbo/messages/incoming/guilds/AddAdminRightsToMemberEvent.java b/src/main/java/com/eu/habbo/messages/incoming/guilds/AddAdminRightsToMemberEvent.java index a8c6faa6..73804bdd 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/guilds/AddAdminRightsToMemberEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/guilds/AddAdminRightsToMemberEvent.java @@ -29,9 +29,11 @@ public class AddAdminRightsToMemberEvent extends MessageHandler { return; if (habbo != null) { - Room room = habbo.getHabboInfo().getCurrentRoom(); - if (room != null && room.getGuildId() == guildId) { - room.refreshRightsForHabbo(habbo); + Room room = habbo.getRoomUnit().getRoom(); + if (room != null) { + if (room.getRoomInfo().getGuild().getId() == guildId) { + room.refreshRightsForHabbo(habbo); + } } } diff --git a/src/main/java/com/eu/habbo/messages/incoming/guilds/ApproveMembershipRequestEvent.java b/src/main/java/com/eu/habbo/messages/incoming/guilds/ApproveMembershipRequestEvent.java index ff32b0d2..cf4b6fd2 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/guilds/ApproveMembershipRequestEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/guilds/ApproveMembershipRequestEvent.java @@ -56,9 +56,11 @@ public class ApproveMembershipRequestEvent extends MessageHandler { guild.increaseMemberCount(); this.client.sendResponse(new GuildMembershipRejectedMessageComposer(guild, userId)); - if (habbo != null && userInfo.isOnline() && userInfo.getCurrentRoom() != null && userInfo.getCurrentRoom().getGuildId() == guildId) { - habbo.getClient().sendResponse(new HabboGroupDetailsMessageComposer(guild, habbo.getClient(), false, Emulator.getGameEnvironment().getGuildManager().getGuildMember(guildId, userId))); - userInfo.getCurrentRoom().refreshRightsForHabbo(habbo); + if (habbo != null && userInfo.isOnline() && habbo.getRoomUnit().getRoom() != null) { + if (habbo.getRoomUnit().getRoom().getRoomInfo().getGuild().getId() == guildId) { + habbo.getClient().sendResponse(new HabboGroupDetailsMessageComposer(guild, habbo.getClient(), false, Emulator.getGameEnvironment().getGuildManager().getGuildMember(guildId, userId))); + habbo.getRoomUnit().getRoom().refreshRightsForHabbo(habbo); + } } } } diff --git a/src/main/java/com/eu/habbo/messages/incoming/guilds/CreateGuildEvent.java b/src/main/java/com/eu/habbo/messages/incoming/guilds/CreateGuildEvent.java index 26945507..ea3f508f 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/guilds/CreateGuildEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/guilds/CreateGuildEvent.java @@ -43,16 +43,16 @@ public class CreateGuildEvent extends GuildBadgeEvent { int roomId = this.packet.readInt(); - Room r = Emulator.getGameEnvironment().getRoomManager().getRoom(roomId); + Room r = Emulator.getGameEnvironment().getRoomManager().getActiveRoomById(roomId); if (r != null) { - if (r.hasGuild()) { + if (r.getRoomInfo().hasGuild()) { this.client.sendResponse(new GuildEditFailedMessageComposer(GuildEditFailedMessageComposer.ROOM_ALREADY_IN_USE)); return; } - if (r.getOwnerId() == this.client.getHabbo().getHabboInfo().getId()) { - if (r.getGuildId() == 0) { + if (r.getRoomInfo().getOwnerInfo().getId() == this.client.getHabbo().getHabboInfo().getId()) { + if (r.getRoomInfo().getGuild().getId() == 0) { int colorOne = this.packet.readInt(); int colorTwo = this.packet.readInt(); @@ -60,9 +60,9 @@ public class CreateGuildEvent extends GuildBadgeEvent { StringBuilder badge = createBadge(count); - Guild guild = Emulator.getGameEnvironment().getGuildManager().createGuild(this.client.getHabbo(), roomId, r.getName(), name, description, badge.toString(), colorOne, colorTwo); + Guild guild = Emulator.getGameEnvironment().getGuildManager().createGuild(this.client.getHabbo(), roomId, r.getRoomInfo().getName(), name, description, badge.toString(), colorOne, colorTwo); - r.setGuildId(guild.getId()); + r.getRoomInfo().setGuild(guild); r.removeAllRights(); r.setNeedsUpdate(true); @@ -72,7 +72,7 @@ public class CreateGuildEvent extends GuildBadgeEvent { this.client.sendResponse(new PurchaseOKMessageComposer()); this.client.sendResponse(new GuildCreatedMessageComposer(guild)); - for (Habbo habbo : r.getHabbos()) { + for (Habbo habbo : r.getRoomUnitManager().getRoomHabbos()) { habbo.getClient().sendResponse(new HabboGroupDetailsMessageComposer(guild, habbo.getClient(), false, null)); } r.refreshGuild(guild); @@ -82,7 +82,7 @@ public class CreateGuildEvent extends GuildBadgeEvent { Emulator.getGameEnvironment().getGuildManager().addGuild(guild); } } else { - String message = Emulator.getTexts().getValue("scripter.warning.guild.buy.owner").replace("%username%", this.client.getHabbo().getHabboInfo().getUsername()).replace("%roomname%", r.getName().replace("%owner%", r.getOwnerName())); + String message = Emulator.getTexts().getValue("scripter.warning.guild.buy.owner").replace("%username%", this.client.getHabbo().getHabboInfo().getUsername()).replace("%roomname%", r.getRoomInfo().getName().replace("%owner%", r.getRoomInfo().getOwnerInfo().getUsername())); ScripterManager.scripterDetected(this.client, message); log.info(message); } diff --git a/src/main/java/com/eu/habbo/messages/incoming/guilds/DeactivateGuildEvent.java b/src/main/java/com/eu/habbo/messages/incoming/guilds/DeactivateGuildEvent.java index 8e36cedf..d2637bfb 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/guilds/DeactivateGuildEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/guilds/DeactivateGuildEvent.java @@ -27,17 +27,17 @@ public class DeactivateGuildEvent extends MessageHandler { for (GuildMember member : members) { Habbo habbo = Emulator.getGameServer().getGameClientManager().getHabbo(member.getUserId()); if (habbo != null) - if (habbo.getHabboInfo().getCurrentRoom() != null && habbo.getRoomUnit() != null) - habbo.getHabboInfo().getCurrentRoom().sendComposer(new FavoriteMembershipUpdateMessageComposer(habbo.getRoomUnit(), null).compose()); + if (habbo.getRoomUnit().getRoom() != null && habbo.getRoomUnit() != null) + habbo.getRoomUnit().getRoom().sendComposer(new FavoriteMembershipUpdateMessageComposer(habbo.getRoomUnit(), null).compose()); } Emulator.getGameEnvironment().getGuildManager().deleteGuild(guild); Emulator.getPluginManager().fireEvent(new GuildDeletedEvent(guild, this.client.getHabbo())); - Emulator.getGameEnvironment().getRoomManager().getRoom(guild.getRoomId()).sendComposer(new HabboGroupDeactivatedMessageComposer(guildId).compose()); + Emulator.getGameEnvironment().getRoomManager().getActiveRoomById(guild.getRoomId()).sendComposer(new HabboGroupDeactivatedMessageComposer(guildId).compose()); - if (this.client.getHabbo().getHabboInfo().getCurrentRoom() != null) { - if (guild.getRoomId() == this.client.getHabbo().getHabboInfo().getCurrentRoom().getId()) { - this.client.sendResponse(new GetGuestRoomResultComposer(this.client.getHabbo().getHabboInfo().getCurrentRoom(), this.client.getHabbo(), false, false)); + if (this.client.getHabbo().getRoomUnit().getRoom() != null) { + if (guild.getRoomId() == this.client.getHabbo().getRoomUnit().getRoom().getRoomInfo().getId()) { + this.client.sendResponse(new GetGuestRoomResultComposer(this.client.getHabbo().getRoomUnit().getRoom(), this.client.getHabbo(), false, false)); } } } diff --git a/src/main/java/com/eu/habbo/messages/incoming/guilds/DeselectFavouriteHabboGroupEvent.java b/src/main/java/com/eu/habbo/messages/incoming/guilds/DeselectFavouriteHabboGroupEvent.java index de87760d..81d23d15 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/guilds/DeselectFavouriteHabboGroupEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/guilds/DeselectFavouriteHabboGroupEvent.java @@ -21,8 +21,8 @@ public class DeselectFavouriteHabboGroupEvent extends MessageHandler { this.client.getHabbo().getHabboStats().setGuild(0); - if (this.client.getHabbo().getHabboInfo().getCurrentRoom() != null && guild != null) { - this.client.getHabbo().getHabboInfo().getCurrentRoom().sendComposer(new FavoriteMembershipUpdateMessageComposer(this.client.getHabbo().getRoomUnit(), null).compose()); + if (this.client.getHabbo().getRoomUnit().getRoom() != null && guild != null) { + this.client.getHabbo().getRoomUnit().getRoom().sendComposer(new FavoriteMembershipUpdateMessageComposer(this.client.getHabbo().getRoomUnit(), null).compose()); } this.client.sendResponse(new ExtendedProfileMessageComposer(this.client.getHabbo(), this.client)); diff --git a/src/main/java/com/eu/habbo/messages/incoming/guilds/GetGuildCreationInfoEvent.java b/src/main/java/com/eu/habbo/messages/incoming/guilds/GetGuildCreationInfoEvent.java index 94ca7636..0c605d43 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/guilds/GetGuildCreationInfoEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/guilds/GetGuildCreationInfoEvent.java @@ -16,7 +16,7 @@ public class GetGuildCreationInfoEvent extends MessageHandler { THashSet roomList = new THashSet<>(); for (Room room : rooms) { - if (room.getGuildId() == 0) + if (room.getRoomInfo().getGuild().getId() == 0) roomList.add(room); } diff --git a/src/main/java/com/eu/habbo/messages/incoming/guilds/GetGuildFurniContextMenuInfoEvent.java b/src/main/java/com/eu/habbo/messages/incoming/guilds/GetGuildFurniContextMenuInfoEvent.java index 7eeb9b4f..6917a1f8 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/guilds/GetGuildFurniContextMenuInfoEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/guilds/GetGuildFurniContextMenuInfoEvent.java @@ -2,7 +2,7 @@ package com.eu.habbo.messages.incoming.guilds; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.guilds.Guild; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.incoming.MessageHandler; import com.eu.habbo.messages.outgoing.guilds.GuildFurniContextMenuInfoMessageComposer; @@ -12,8 +12,8 @@ public class GetGuildFurniContextMenuInfoEvent extends MessageHandler { int itemId = this.packet.readInt(); int guildId = this.packet.readInt(); - if (this.client.getHabbo().getHabboInfo().getCurrentRoom() != null) { - HabboItem item = this.client.getHabbo().getHabboInfo().getCurrentRoom().getHabboItem(itemId); + if (this.client.getHabbo().getRoomUnit().getRoom() != null) { + RoomItem item = this.client.getHabbo().getRoomUnit().getRoom().getHabboItem(itemId); Guild guild = Emulator.getGameEnvironment().getGuildManager().getGuild(guildId); if (item != null && guild != null) diff --git a/src/main/java/com/eu/habbo/messages/incoming/guilds/GetMemberGuildItemCountEvent.java b/src/main/java/com/eu/habbo/messages/incoming/guilds/GetMemberGuildItemCountEvent.java index 472001bb..9fb09b0a 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/guilds/GetMemberGuildItemCountEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/guilds/GetMemberGuildItemCountEvent.java @@ -20,7 +20,7 @@ public class GetMemberGuildItemCountEvent extends MessageHandler { if (guild == null) return; GuildMember member = Emulator.getGameEnvironment().getGuildManager().getGuildMember(guild, this.client.getHabbo()); if (userId == this.client.getHabbo().getHabboInfo().getId() || guild.getOwnerId() == this.client.getHabbo().getHabboInfo().getId() || (member != null && (member.getRank().equals(GuildRank.OWNER) || member.getRank().equals(GuildRank.ADMIN))) || this.client.getHabbo().hasRight(Permission.ACC_GUILD_ADMIN)) { - Room room = Emulator.getGameEnvironment().getRoomManager().loadRoom(guild.getRoomId()); + Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(guild.getRoomId()); int count = 0; if (room != null) { count = room.getUserFurniCount(userId); diff --git a/src/main/java/com/eu/habbo/messages/incoming/guilds/JoinHabboGroupEvent.java b/src/main/java/com/eu/habbo/messages/incoming/guilds/JoinHabboGroupEvent.java index a01526fe..1563de2e 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/guilds/JoinHabboGroupEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/guilds/JoinHabboGroupEvent.java @@ -29,9 +29,9 @@ public class JoinHabboGroupEvent extends MessageHandler { Emulator.getGameEnvironment().getGuildManager().joinGuild(guild, this.client, 0, false); this.client.sendResponse(new HabboGroupDetailsMessageComposer(guild, this.client, false, Emulator.getGameEnvironment().getGuildManager().getGuildMember(guild, this.client.getHabbo()))); - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); - if (room == null || room.getGuildId() != guildId) + if (room == null || room.getRoomInfo().getGuild().getId() != guildId) return; room.refreshRightsForHabbo(this.client.getHabbo()); diff --git a/src/main/java/com/eu/habbo/messages/incoming/guilds/KickMemberEvent.java b/src/main/java/com/eu/habbo/messages/incoming/guilds/KickMemberEvent.java index ff80c26d..584ae61f 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/guilds/KickMemberEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/guilds/KickMemberEvent.java @@ -38,7 +38,7 @@ public class KickMemberEvent extends MessageHandler { this.client.sendResponse(new GuildMembershipRejectedMessageComposer(guild, userId)); } - Room room = Emulator.getGameEnvironment().getRoomManager().loadRoom(guild.getRoomId()); + Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(guild.getRoomId()); if (habbo != null) { habbo.getHabboStats().removeGuild(guild.getId()); @@ -46,9 +46,9 @@ public class KickMemberEvent extends MessageHandler { habbo.getHabboStats().setGuild(0); if (room != null) { - if (habbo.getHabboInfo().getCurrentRoom() != null && habbo.getRoomUnit() != null) - habbo.getHabboInfo().getCurrentRoom().sendComposer(new FavoriteMembershipUpdateMessageComposer(habbo.getRoomUnit(), null).compose()); - if (habbo.getHabboInfo().getCurrentRoom() == room) + if (habbo.getRoomUnit().getRoom() != null && habbo.getRoomUnit() != null) + habbo.getRoomUnit().getRoom().sendComposer(new FavoriteMembershipUpdateMessageComposer(habbo.getRoomUnit(), null).compose()); + if (habbo.getRoomUnit().getRoom() == room) room.refreshRightsForHabbo(habbo); } @@ -56,7 +56,7 @@ public class KickMemberEvent extends MessageHandler { } if (room != null) { - if (room.getGuildId() == guildId) { + if (room.getRoomInfo().getGuild().getId() == guildId) { room.ejectUserFurni(userId); } } diff --git a/src/main/java/com/eu/habbo/messages/incoming/guilds/RejectMembershipRequestEvent.java b/src/main/java/com/eu/habbo/messages/incoming/guilds/RejectMembershipRequestEvent.java index b2eb9cb4..62b74fdf 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/guilds/RejectMembershipRequestEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/guilds/RejectMembershipRequestEvent.java @@ -33,9 +33,9 @@ public class RejectMembershipRequestEvent extends MessageHandler { Emulator.getPluginManager().fireEvent(new GuildDeclinedMembershipEvent(guild, userId, habbo, this.client.getHabbo())); if (habbo != null) { - Room room = habbo.getHabboInfo().getCurrentRoom(); + Room room = habbo.getRoomUnit().getRoom(); if (room != null) { - if (room.getGuildId() == guildId) { + if (room.getRoomInfo().getGuild().getId() == guildId) { habbo.getClient().sendResponse(new HabboGroupDetailsMessageComposer(guild, habbo.getClient(), false, null)); } } diff --git a/src/main/java/com/eu/habbo/messages/incoming/guilds/RemoveAdminRightsFromMemberEvent.java b/src/main/java/com/eu/habbo/messages/incoming/guilds/RemoveAdminRightsFromMemberEvent.java index 81a38874..ecfb8c29 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/guilds/RemoveAdminRightsFromMemberEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/guilds/RemoveAdminRightsFromMemberEvent.java @@ -22,7 +22,7 @@ public class RemoveAdminRightsFromMemberEvent extends MessageHandler { if (guild.getOwnerId() == this.client.getHabbo().getHabboInfo().getId() || this.client.getHabbo().hasRight(Permission.ACC_GUILD_ADMIN)) { int userId = this.packet.readInt(); - Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(guild.getRoomId()); + Room room = Emulator.getGameEnvironment().getRoomManager().getActiveRoomById(guild.getRoomId()); Habbo habbo = Emulator.getGameEnvironment().getHabboManager().getHabbo(userId); GuildRemovedAdminEvent removedAdminEvent = new GuildRemovedAdminEvent(guild, userId, habbo); @@ -36,7 +36,7 @@ public class RemoveAdminRightsFromMemberEvent extends MessageHandler { if (habbo != null) { habbo.getClient().sendResponse(new HabboGroupDetailsMessageComposer(guild, this.client, false, Emulator.getGameEnvironment().getGuildManager().getGuildMember(guild.getId(), userId))); - if (room != null && habbo.getHabboInfo().getCurrentRoom() != null && habbo.getHabboInfo().getCurrentRoom() == room) room.refreshRightsForHabbo(habbo); + if (room != null && habbo.getRoomUnit().getRoom() != null && habbo.getRoomUnit().getRoom() == room) room.refreshRightsForHabbo(habbo); } GuildMember guildMember = Emulator.getGameEnvironment().getGuildManager().getGuildMember(guildId, userId); diff --git a/src/main/java/com/eu/habbo/messages/incoming/guilds/SelectFavouriteHabboGroupEvent.java b/src/main/java/com/eu/habbo/messages/incoming/guilds/SelectFavouriteHabboGroupEvent.java index 6834ebef..2e927171 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/guilds/SelectFavouriteHabboGroupEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/guilds/SelectFavouriteHabboGroupEvent.java @@ -24,10 +24,10 @@ public class SelectFavouriteHabboGroupEvent extends MessageHandler { this.client.getHabbo().getHabboStats().setGuild(guildId); - if (this.client.getHabbo().getHabboInfo().getCurrentRoom() != null) { + if (this.client.getHabbo().getRoomUnit().getRoom() != null) { if (guild != null) { - this.client.getHabbo().getHabboInfo().getCurrentRoom().sendComposer(new HabboAddGroupBadgesMessageComposer(guild).compose()); - this.client.getHabbo().getHabboInfo().getCurrentRoom().sendComposer(new FavoriteMembershipUpdateMessageComposer(this.client.getHabbo().getRoomUnit(), guild).compose()); + this.client.getHabbo().getRoomUnit().getRoom().sendComposer(new HabboAddGroupBadgesMessageComposer(guild).compose()); + this.client.getHabbo().getRoomUnit().getRoom().sendComposer(new FavoriteMembershipUpdateMessageComposer(this.client.getHabbo().getRoomUnit(), guild).compose()); } } diff --git a/src/main/java/com/eu/habbo/messages/incoming/guilds/UpdateGuildBadgeEvent.java b/src/main/java/com/eu/habbo/messages/incoming/guilds/UpdateGuildBadgeEvent.java index 434857b9..4148080c 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/guilds/UpdateGuildBadgeEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/guilds/UpdateGuildBadgeEvent.java @@ -14,9 +14,9 @@ public class UpdateGuildBadgeEvent extends GuildBadgeEvent { Guild guild = Emulator.getGameEnvironment().getGuildManager().getGuild(guildId); if (guild != null) { if (guild.getOwnerId() == this.client.getHabbo().getHabboInfo().getId() || this.client.getHabbo().hasRight(Permission.ACC_GUILD_ADMIN)) { - Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(guild.getRoomId()); + Room room = Emulator.getGameEnvironment().getRoomManager().getActiveRoomById(guild.getRoomId()); - if (room == null || room.getId() != guild.getRoomId()) + if (room == null || room.getRoomInfo().getId() != guild.getRoomId()) return; int count = this.packet.readInt(); diff --git a/src/main/java/com/eu/habbo/messages/incoming/guilds/UpdateGuildColorsEvent.java b/src/main/java/com/eu/habbo/messages/incoming/guilds/UpdateGuildColorsEvent.java index 37bc64e6..faa95180 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/guilds/UpdateGuildColorsEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/guilds/UpdateGuildColorsEvent.java @@ -26,12 +26,14 @@ public class UpdateGuildColorsEvent extends MessageHandler { guild.setColorOne(colorsEvent.getColorOne()); guild.setColorTwo(colorsEvent.getColorTwo()); - Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(guild.getRoomId()); + Room room = Emulator.getGameEnvironment().getRoomManager().getActiveRoomById(guild.getRoomId()); - if (room != null && room.getUserCount() > 0) { - room.refreshGuild(guild); + if (room != null) { + if (room.getRoomUnitManager().getRoomHabbosCount() > 0) { + room.refreshGuild(guild); - room.refreshGuildColors(guild); + room.refreshGuildColors(guild); + } } guild.needsUpdate = true; Emulator.getThreading().run(guild); diff --git a/src/main/java/com/eu/habbo/messages/incoming/guilds/UpdateGuildIdentityEvent.java b/src/main/java/com/eu/habbo/messages/incoming/guilds/UpdateGuildIdentityEvent.java index 3e89e0e1..4047240f 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/guilds/UpdateGuildIdentityEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/guilds/UpdateGuildIdentityEvent.java @@ -33,10 +33,12 @@ public class UpdateGuildIdentityEvent extends MessageHandler { guild.needsUpdate = true; guild.run(); - Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(guild.getRoomId()); + Room room = Emulator.getGameEnvironment().getRoomManager().getActiveRoomById(guild.getRoomId()); - if (room != null && !room.getCurrentHabbos().isEmpty()) { - room.refreshGuild(guild); + if (room != null) { + if (!room.getRoomUnitManager().getCurrentRoomHabbos().isEmpty()) { + room.refreshGuild(guild); + } } } } diff --git a/src/main/java/com/eu/habbo/messages/incoming/guilds/UpdateGuildSettingsEvent.java b/src/main/java/com/eu/habbo/messages/incoming/guilds/UpdateGuildSettingsEvent.java index 5edff097..895fec66 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/guilds/UpdateGuildSettingsEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/guilds/UpdateGuildSettingsEvent.java @@ -26,7 +26,7 @@ public class UpdateGuildSettingsEvent extends MessageHandler { guild.setState(GuildState.valueOf(settingsEvent.getState())); guild.setRights(settingsEvent.isRights()); - Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(guild.getRoomId()); + Room room = Emulator.getGameEnvironment().getRoomManager().getActiveRoomById(guild.getRoomId()); if(room != null) { room.refreshGuild(guild); } diff --git a/src/main/java/com/eu/habbo/messages/incoming/hotelview/QuitEvent.java b/src/main/java/com/eu/habbo/messages/incoming/hotelview/QuitEvent.java index 7c59c7b2..7a8b5c0b 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/hotelview/QuitEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/hotelview/QuitEvent.java @@ -2,20 +2,23 @@ package com.eu.habbo.messages.incoming.hotelview; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.entities.units.types.RoomHabbo; import com.eu.habbo.messages.incoming.MessageHandler; import com.eu.habbo.messages.outgoing.hotelview.CloseConnectionMessageComposer; public class QuitEvent extends MessageHandler { @Override public void handle() { - this.client.getHabbo().getHabboInfo().setLoadingRoom(0); + RoomHabbo roomHabbo = this.client.getHabbo().getRoomUnit(); - if (this.client.getHabbo().getHabboInfo().getCurrentRoom() != null) { - Emulator.getGameEnvironment().getRoomManager().leaveRoom(this.client.getHabbo(), this.client.getHabbo().getHabboInfo().getCurrentRoom()); + roomHabbo.setLoadingRoom(null); + + if (roomHabbo.getRoom() != null) { + Emulator.getGameEnvironment().getRoomManager().leaveRoom(this.client.getHabbo(), roomHabbo.getRoom()); } if (this.client.getHabbo().getHabboInfo().getRoomQueueId() != 0) { - Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(this.client.getHabbo().getHabboInfo().getRoomQueueId()); + Room room = Emulator.getGameEnvironment().getRoomManager().getActiveRoomById(this.client.getHabbo().getHabboInfo().getRoomQueueId()); if (room != null) { room.removeFromQueue(this.client.getHabbo()); @@ -25,9 +28,9 @@ public class QuitEvent extends MessageHandler { this.client.sendResponse(new CloseConnectionMessageComposer()); } - if (this.client.getHabbo().getRoomUnit() != null) { - this.client.getHabbo().getRoomUnit().clearWalking(); - this.client.getHabbo().getRoomUnit().setInRoom(false); + if (roomHabbo != null) { + roomHabbo.clearWalking(); + roomHabbo.setInRoom(false); } } } diff --git a/src/main/java/com/eu/habbo/messages/incoming/inventory/RequestFurniInventoryWhenNotInRoomEvent.java b/src/main/java/com/eu/habbo/messages/incoming/inventory/RequestFurniInventoryWhenNotInRoomEvent.java index e4db03f4..977c1c80 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/inventory/RequestFurniInventoryWhenNotInRoomEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/inventory/RequestFurniInventoryWhenNotInRoomEvent.java @@ -1,6 +1,6 @@ package com.eu.habbo.messages.incoming.inventory; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.incoming.MessageHandler; import com.eu.habbo.messages.outgoing.inventory.FurniListComposer; import gnu.trove.iterator.TIntObjectIterator; @@ -29,9 +29,9 @@ public class RequestFurniInventoryWhenNotInRoomEvent extends MessageHandler { } synchronized (this.client.getHabbo().getInventory().getItemsComponent().getItems()) { - TIntObjectMap items = new TIntObjectHashMap<>(); + TIntObjectMap items = new TIntObjectHashMap<>(); - TIntObjectIterator iterator = this.client.getHabbo().getInventory().getItemsComponent().getItems().iterator(); + TIntObjectIterator iterator = this.client.getHabbo().getInventory().getItemsComponent().getItems().iterator(); int count = 0; int fragmentNumber = 0; diff --git a/src/main/java/com/eu/habbo/messages/incoming/modtool/CallForHelpEvent.java b/src/main/java/com/eu/habbo/messages/incoming/modtool/CallForHelpEvent.java index 35393c6f..4cd0f8f2 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/modtool/CallForHelpEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/modtool/CallForHelpEvent.java @@ -27,7 +27,7 @@ public class CallForHelpEvent extends MessageHandler { int roomId = this.packet.readInt(); int messageCount = this.packet.readInt(); - Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(roomId); + Room room = Emulator.getGameEnvironment().getRoomManager().getActiveRoomById(roomId); List issues = Emulator.getGameEnvironment().getModToolManager().openTicketsForHabbo(this.client.getHabbo()); if (!issues.isEmpty()) { //this.client.sendResponse(new GenericAlertComposer("You've got still a pending ticket. Wait till the moderators are done reviewing your ticket.")); @@ -87,7 +87,7 @@ public class CallForHelpEvent extends MessageHandler { } } } else { - ModToolIssue issue = new ModToolIssue(this.client.getHabbo().getHabboInfo().getId(), this.client.getHabbo().getHabboInfo().getUsername(), room != null ? room.getOwnerId() : 0, room != null ? room.getOwnerName() : "", roomId, message, ModToolTicketType.ROOM); + ModToolIssue issue = new ModToolIssue(this.client.getHabbo().getHabboInfo().getId(), this.client.getHabbo().getHabboInfo().getUsername(), room != null ? room.getRoomInfo().getOwnerInfo().getId() : 0, room != null ? room.getRoomInfo().getOwnerInfo().getUsername() : "", roomId, message, ModToolTicketType.ROOM); issue.category = topic; new InsertModToolIssue(issue).run(); diff --git a/src/main/java/com/eu/habbo/messages/incoming/modtool/CallForHelpFromPhotoEvent.java b/src/main/java/com/eu/habbo/messages/incoming/modtool/CallForHelpFromPhotoEvent.java index f6bef706..05eb4e67 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/modtool/CallForHelpFromPhotoEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/modtool/CallForHelpFromPhotoEvent.java @@ -6,8 +6,8 @@ import com.eu.habbo.habbohotel.modtool.CfhTopic; import com.eu.habbo.habbohotel.modtool.ModToolIssue; import com.eu.habbo.habbohotel.modtool.ModToolTicketType; import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.habbohotel.users.HabboInfo; -import com.eu.habbo.habbohotel.users.HabboItem; import com.eu.habbo.messages.incoming.MessageHandler; import com.eu.habbo.messages.outgoing.modtool.CallForHelpResultMessageComposer; import com.eu.habbo.threading.runnables.InsertModToolIssue; @@ -32,11 +32,11 @@ public class CallForHelpFromPhotoEvent extends MessageHandler { if (topic == null) return; - Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(roomId); + Room room = Emulator.getGameEnvironment().getRoomManager().getActiveRoomById(roomId); if (room == null) return; - HabboItem item = room.getHabboItem(itemId); + RoomItem item = room.getHabboItem(itemId); if (!(item instanceof InteractionExternalImage)) return; diff --git a/src/main/java/com/eu/habbo/messages/incoming/modtool/ChatReviewSessionCreateEvent.java b/src/main/java/com/eu/habbo/messages/incoming/modtool/ChatReviewSessionCreateEvent.java index a4aaf565..66e9d0fb 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/modtool/ChatReviewSessionCreateEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/modtool/ChatReviewSessionCreateEvent.java @@ -26,10 +26,10 @@ public class ChatReviewSessionCreateEvent extends MessageHandler { return; } - Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(roomId); + Room room = Emulator.getGameEnvironment().getRoomManager().getActiveRoomById(roomId); if (room != null) { - Habbo habbo = room.getHabbo(userId); + Habbo habbo = room.getRoomUnitManager().getRoomHabboById(userId); if (habbo != null) { GuardianTicket ticket = Emulator.getGameEnvironment().getGuideManager().getOpenReportedHabboTicket(habbo); diff --git a/src/main/java/com/eu/habbo/messages/incoming/modtool/GetCfhChatlogEvent.java b/src/main/java/com/eu/habbo/messages/incoming/modtool/GetCfhChatlogEvent.java index d8bfa94f..de8dd024 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/modtool/GetCfhChatlogEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/modtool/GetCfhChatlogEvent.java @@ -61,11 +61,11 @@ public class GetCfhChatlogEvent extends MessageHandler { } } - Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(issue.roomId); + Room room = Emulator.getGameEnvironment().getRoomManager().getActiveRoomById(issue.roomId); String roomName = ""; if (room != null) { - roomName = room.getName(); + roomName = room.getRoomInfo().getName(); } this.client.sendResponse(new CfhChatlogComposer(issue, chatlog, roomName, chatlogType)); } diff --git a/src/main/java/com/eu/habbo/messages/incoming/modtool/GetModeratorRoomInfoEvent.java b/src/main/java/com/eu/habbo/messages/incoming/modtool/GetModeratorRoomInfoEvent.java index 06b9e539..e9058210 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/modtool/GetModeratorRoomInfoEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/modtool/GetModeratorRoomInfoEvent.java @@ -13,7 +13,7 @@ public class GetModeratorRoomInfoEvent extends MessageHandler { if (this.client.getHabbo().hasRight(Permission.ACC_SUPPORTTOOL)) { int roomId = this.packet.readInt(); - Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(roomId); + Room room = Emulator.getGameEnvironment().getRoomManager().getActiveRoomById(roomId); if (room != null) { this.client.sendResponse(new ModeratorRoomInfoComposer(room)); diff --git a/src/main/java/com/eu/habbo/messages/incoming/modtool/GetRoomChatlogEvent.java b/src/main/java/com/eu/habbo/messages/incoming/modtool/GetRoomChatlogEvent.java index 827fcd57..01f8f452 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/modtool/GetRoomChatlogEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/modtool/GetRoomChatlogEvent.java @@ -12,10 +12,10 @@ public class GetRoomChatlogEvent extends MessageHandler { public void handle() { if (this.client.getHabbo().hasRight(Permission.ACC_SUPPORTTOOL)) { this.packet.readInt(); - Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(this.packet.readInt()); + Room room = Emulator.getGameEnvironment().getRoomManager().getActiveRoomById(this.packet.readInt()); if (room != null) - this.client.sendResponse(new RoomChatlogComposer(room, Emulator.getGameEnvironment().getModToolManager().getRoomChatlog(room.getId()))); + this.client.sendResponse(new RoomChatlogComposer(room, Emulator.getGameEnvironment().getModToolManager().getRoomChatlog(room.getRoomInfo().getId()))); } else { ScripterManager.scripterDetected(this.client, Emulator.getTexts().getValue("scripter.warning.modtools.chatlog").replace("%username%", this.client.getHabbo().getHabboInfo().getUsername())); } diff --git a/src/main/java/com/eu/habbo/messages/incoming/modtool/ModToolRequestRoomUserChatlogEvent.java b/src/main/java/com/eu/habbo/messages/incoming/modtool/ModToolRequestRoomUserChatlogEvent.java index 6bfdaa56..0dcf9b93 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/modtool/ModToolRequestRoomUserChatlogEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/modtool/ModToolRequestRoomUserChatlogEvent.java @@ -17,10 +17,10 @@ public class ModToolRequestRoomUserChatlogEvent extends MessageHandler { Habbo habbo = Emulator.getGameEnvironment().getHabboManager().getHabbo(userId); if (habbo != null) { - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); if (room != null) { - this.client.sendResponse(new RoomChatlogComposer(room, Emulator.getGameEnvironment().getModToolManager().getRoomChatlog(room.getId()))); + this.client.sendResponse(new RoomChatlogComposer(room, Emulator.getGameEnvironment().getModToolManager().getRoomChatlog(room.getRoomInfo().getId()))); } } } else { diff --git a/src/main/java/com/eu/habbo/messages/incoming/modtool/ModerateRoomEvent.java b/src/main/java/com/eu/habbo/messages/incoming/modtool/ModerateRoomEvent.java index 7d08216d..882b918c 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/modtool/ModerateRoomEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/modtool/ModerateRoomEvent.java @@ -10,7 +10,7 @@ public class ModerateRoomEvent extends MessageHandler { @Override public void handle() { if (this.client.getHabbo().hasRight(Permission.ACC_SUPPORTTOOL)) { - Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(this.packet.readInt()); + Room room = Emulator.getGameEnvironment().getRoomManager().getActiveRoomById(this.packet.readInt()); if (room != null) { final boolean lockDoor = this.packet.readInt() == 1; diff --git a/src/main/java/com/eu/habbo/messages/incoming/modtool/ModeratorActionEvent.java b/src/main/java/com/eu/habbo/messages/incoming/modtool/ModeratorActionEvent.java index a9c7171e..f58da46c 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/modtool/ModeratorActionEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/modtool/ModeratorActionEvent.java @@ -12,7 +12,7 @@ public class ModeratorActionEvent extends MessageHandler { if (this.client.getHabbo().hasRight(Permission.ACC_SUPPORTTOOL)) { int type = this.packet.readInt(); - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); if (room != null) { room.alert(this.packet.readString()); } diff --git a/src/main/java/com/eu/habbo/messages/incoming/navigator/CreateFlatEvent.java b/src/main/java/com/eu/habbo/messages/incoming/navigator/CreateFlatEvent.java index b8eb6de7..94596eda 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/navigator/CreateFlatEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/navigator/CreateFlatEvent.java @@ -45,11 +45,11 @@ public class CreateFlatEvent extends MessageHandler { if (description.length() > 128 || !Emulator.getGameEnvironment().getWordFilter().filter(description, this.client.getHabbo()).equals(description)) return; - int count = Emulator.getGameEnvironment().getRoomManager().getRoomsForHabbo(this.client.getHabbo()).size(); - int max = this.client.getHabbo().getHabboStats().hasActiveClub() ? RoomManager.MAXIMUM_ROOMS_HC : RoomManager.MAXIMUM_ROOMS_USER; + int totalRoomsCount = Emulator.getGameEnvironment().getRoomManager().getRoomsForHabbo(this.client.getHabbo()).size(); + int maxRoomsCount = this.client.getHabbo().getHabboStats().hasActiveClub() ? RoomManager.MAXIMUM_ROOMS_HC : RoomManager.MAXIMUM_ROOMS_USER; - if (count >= max) { - this.client.sendResponse(new CanCreateRoomComposer(count, max)); + if (totalRoomsCount >= maxRoomsCount) { + this.client.sendResponse(new CanCreateRoomComposer(totalRoomsCount, maxRoomsCount)); return; } diff --git a/src/main/java/com/eu/habbo/messages/incoming/navigator/DeleteRoomEvent.java b/src/main/java/com/eu/habbo/messages/incoming/navigator/DeleteRoomEvent.java index 7ec78be7..c3a8854b 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/navigator/DeleteRoomEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/navigator/DeleteRoomEvent.java @@ -27,11 +27,11 @@ public class DeleteRoomEvent extends MessageHandler { public void handle() { int roomId = this.packet.readInt(); - Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(roomId); + Room room = Emulator.getGameEnvironment().getRoomManager().getActiveRoomById(roomId); if (room != null) { - if (room.isOwner(this.client.getHabbo())) { - if (room.getId() == this.client.getHabbo().getHabboInfo().getHomeRoom()) { + if (room.getRoomInfo().isRoomOwner(this.client.getHabbo())) { + if (room.getRoomInfo().getId() == this.client.getHabbo().getHabboInfo().getHomeRoom()) { return; } @@ -40,18 +40,18 @@ public class DeleteRoomEvent extends MessageHandler { } room.ejectAll(); - room.ejectUserFurni(room.getOwnerId()); + room.ejectUserFurni(room.getRoomInfo().getOwnerInfo().getId()); - List bots = new ArrayList<>(room.getCurrentBots().valueCollection()); + List bots = new ArrayList<>(room.getRoomUnitManager().getCurrentRoomBots().values()); for (Bot bot : bots) { - Emulator.getGameEnvironment().getBotManager().pickUpBot(bot, null); + Emulator.getGameEnvironment().getBotManager().pickUpBot(bot, null, room); } - List pets = new ArrayList<>(room.getCurrentPets().valueCollection()); + List pets = new ArrayList<>(room.getRoomUnitManager().getCurrentRoomPets().values()); for (Pet pet : pets) { if (pet instanceof RideablePet rideablePet) { if (rideablePet.getRider() != null) { - rideablePet.getRider().getHabboInfo().dismountPet(true); + rideablePet.getRider().getHabboInfo().dismountPet(true, room); } } @@ -66,8 +66,8 @@ public class DeleteRoomEvent extends MessageHandler { } } - if (room.getGuildId() > 0) { - Guild guild = Emulator.getGameEnvironment().getGuildManager().getGuild(room.getGuildId()); + if (room.getRoomInfo().getGuild().getId() > 0) { + Guild guild = Emulator.getGameEnvironment().getGuildManager().getGuild(room.getRoomInfo().getGuild().getId()); if (guild != null) { Emulator.getGameEnvironment().getGuildManager().deleteGuild(guild); @@ -84,7 +84,7 @@ public class DeleteRoomEvent extends MessageHandler { statement.execute(); } - if (room.hasCustomLayout()) { + if (room.getRoomInfo().isModelOverridden()) { try (PreparedStatement stmt = connection.prepareStatement("DELETE FROM room_models_custom WHERE id = ? LIMIT 1")) { stmt.setInt(1, roomId); stmt.execute(); @@ -111,7 +111,7 @@ public class DeleteRoomEvent extends MessageHandler { log.error("Caught SQL exception", e); } } else { - String message = Emulator.getTexts().getValue("scripter.warning.room.delete").replace("%username%", this.client.getHabbo().getHabboInfo().getUsername()).replace("%roomname%", room.getName()).replace("%roomowner%", room.getOwnerName()); + String message = Emulator.getTexts().getValue("scripter.warning.room.delete").replace("%username%", this.client.getHabbo().getHabboInfo().getUsername()).replace("%roomname%", room.getRoomInfo().getName()).replace("%roomowner%", room.getRoomInfo().getOwnerInfo().getUsername()); ScripterManager.scripterDetected(this.client, message); log.info(message); } diff --git a/src/main/java/com/eu/habbo/messages/incoming/navigator/ForwardToSomeRoomEvent.java b/src/main/java/com/eu/habbo/messages/incoming/navigator/ForwardToSomeRoomEvent.java index abb96fdb..e7411786 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/navigator/ForwardToSomeRoomEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/navigator/ForwardToSomeRoomEvent.java @@ -6,7 +6,6 @@ import com.eu.habbo.messages.incoming.MessageHandler; import com.eu.habbo.messages.outgoing.rooms.RoomForwardMessageComposer; import com.eu.habbo.messages.outgoing.users.NavigatorSettingsComposer; -import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -19,7 +18,7 @@ public class ForwardToSomeRoomEvent extends MessageHandler { List rooms = Emulator.getGameEnvironment().getRoomManager().getActiveRooms(); if (!rooms.isEmpty()) { Collections.shuffle(rooms); - this.client.sendResponse(new RoomForwardMessageComposer(rooms.get(0).getId())); + this.client.sendResponse(new RoomForwardMessageComposer(rooms.get(0).getRoomInfo().getId())); } } else if (data.equalsIgnoreCase("predefined_noob_lobby")) { this.client.sendResponse(new RoomForwardMessageComposer(Emulator.getConfig().getInt("hotel.room.nooblobby"))); diff --git a/src/main/java/com/eu/habbo/messages/incoming/navigator/NewNavigatorSearchEvent.java b/src/main/java/com/eu/habbo/messages/incoming/navigator/NewNavigatorSearchEvent.java index e58b2b30..484bae60 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/navigator/NewNavigatorSearchEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/navigator/NewNavigatorSearchEvent.java @@ -124,7 +124,7 @@ public class NewNavigatorSearchEvent extends MessageHandler { for (SearchResultList li : resultLists) { for (Room room : li.getRooms()) { - searchRooms.put(room.getId(), room); + searchRooms.put(room.getRoomInfo().getId(), room); } } diff --git a/src/main/java/com/eu/habbo/messages/incoming/navigator/PopularRoomsSearchEvent.java b/src/main/java/com/eu/habbo/messages/incoming/navigator/PopularRoomsSearchEvent.java index f6734d32..1330cd06 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/navigator/PopularRoomsSearchEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/navigator/PopularRoomsSearchEvent.java @@ -7,6 +7,6 @@ import com.eu.habbo.messages.outgoing.navigator.GuestRoomSearchResultComposer; public class PopularRoomsSearchEvent extends MessageHandler { @Override public void handle() { - this.client.sendResponse(new GuestRoomSearchResultComposer(Emulator.getGameEnvironment().getRoomManager().getActiveRooms(-1))); + this.client.sendResponse(new GuestRoomSearchResultComposer(Emulator.getGameEnvironment().getRoomManager().getActiveRoomsByCategoryId(-1))); } } diff --git a/src/main/java/com/eu/habbo/messages/incoming/polls/AnswerPollEvent.java b/src/main/java/com/eu/habbo/messages/incoming/polls/AnswerPollEvent.java index 33ef0cff..b2e2770c 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/polls/AnswerPollEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/polls/AnswerPollEvent.java @@ -29,7 +29,7 @@ public class AnswerPollEvent extends MessageHandler { if(answer.length() <= 0) return; if (pollId == 0 && questionId <= 0) { - this.client.getHabbo().getHabboInfo().getCurrentRoom().handleWordQuiz(this.client.getHabbo(), answer.toString()); + this.client.getHabbo().getRoomUnit().getRoom().handleWordQuiz(this.client.getHabbo(), answer.toString()); return; } diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/AddFavouriteRoomEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/AddFavouriteRoomEvent.java index 726cb9cd..d0513d23 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/AddFavouriteRoomEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/AddFavouriteRoomEvent.java @@ -10,7 +10,7 @@ public class AddFavouriteRoomEvent extends MessageHandler { public void handle() { int roomId = this.packet.readInt(); - Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(roomId); + Room room = Emulator.getGameEnvironment().getRoomManager().getActiveRoomById(roomId); boolean added = true; if (room != null) { diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/DeleteFavouriteRoomEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/DeleteFavouriteRoomEvent.java index ae943e23..47a2e66f 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/DeleteFavouriteRoomEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/DeleteFavouriteRoomEvent.java @@ -10,7 +10,7 @@ public class DeleteFavouriteRoomEvent extends MessageHandler { public void handle() { int roomId = this.packet.readInt(); - Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(roomId); + Room room = Emulator.getGameEnvironment().getRoomManager().getActiveRoomById(roomId); if (room != null) { if (this.client.getHabbo().getHabboStats().hasFavoriteRoom(roomId)) { diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/GetBannedUsersFromRoomEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/GetBannedUsersFromRoomEvent.java index 4918cf88..80852fbc 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/GetBannedUsersFromRoomEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/GetBannedUsersFromRoomEvent.java @@ -11,7 +11,7 @@ public class GetBannedUsersFromRoomEvent extends MessageHandler { public void handle() { int roomId = this.packet.readInt(); - Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(roomId); + Room room = Emulator.getGameEnvironment().getRoomManager().getActiveRoomById(roomId); if (room != null) { this.client.sendResponse(new BannedUsersFromRoomComposer(room)); diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/GetCustomRoomFilterEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/GetCustomRoomFilterEvent.java index b1339c5e..7d966d46 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/GetCustomRoomFilterEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/GetCustomRoomFilterEvent.java @@ -9,7 +9,7 @@ import com.eu.habbo.messages.outgoing.rooms.RoomFilterSettingsMessageComposer; public class GetCustomRoomFilterEvent extends MessageHandler { @Override public void handle() { - Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(this.packet.readInt()); + Room room = Emulator.getGameEnvironment().getRoomManager().getActiveRoomById(this.packet.readInt()); if (room != null && room.hasRights(this.client.getHabbo())) { this.client.sendResponse(new RoomFilterSettingsMessageComposer(room)); diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/GetFlatControllersEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/GetFlatControllersEvent.java index 6054e8f9..32874859 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/GetFlatControllersEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/GetFlatControllersEvent.java @@ -8,12 +8,12 @@ import com.eu.habbo.messages.outgoing.rooms.FlatControllersComposer; public class GetFlatControllersEvent extends MessageHandler { @Override public void handle() { - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); if (room == null) return; - if (room.getOwnerId() == this.client.getHabbo().getHabboInfo().getId() || this.client.getHabbo().hasRight(Permission.ACC_ANYROOMOWNER)) { + if (room.getRoomInfo().getOwnerInfo().getId() == this.client.getHabbo().getHabboInfo().getId() || this.client.getHabbo().hasRight(Permission.ACC_ANYROOMOWNER)) { this.client.sendResponse(new FlatControllersComposer(room)); } } diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/GetGuestRoomEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/GetGuestRoomEvent.java index ffaddec2..69f26dbb 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/GetGuestRoomEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/GetGuestRoomEvent.java @@ -8,14 +8,15 @@ import com.eu.habbo.messages.outgoing.rooms.GetGuestRoomResultComposer; public class GetGuestRoomEvent extends MessageHandler { @Override public void handle() { - Room room = Emulator.getGameEnvironment().getRoomManager().loadRoom(this.packet.readInt()); + Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(this.packet.readInt()); int something = this.packet.readInt(); int something2 = this.packet.readInt(); + if (room != null) { boolean unknown = something != 0 || something2 != 1; - //this.client.getHabbo().getHabboInfo().getCurrentRoom() != room + //this.client.getHabbo().getRoomUnit().getRoom() != room this.client.sendResponse(new GetGuestRoomResultComposer(room, this.client.getHabbo(), true, unknown)); } } diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/GetRoomEntryDataEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/GetRoomEntryDataEvent.java index bab4015c..4a4cfd2a 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/GetRoomEntryDataEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/GetRoomEntryDataEvent.java @@ -9,8 +9,8 @@ import com.eu.habbo.messages.outgoing.rooms.HeightMapComposer; public class GetRoomEntryDataEvent extends MessageHandler { @Override public void handle() { - if (this.client.getHabbo().getHabboInfo().getLoadingRoom() > 0) { - Room room = Emulator.getGameEnvironment().getRoomManager().loadRoom(this.client.getHabbo().getHabboInfo().getLoadingRoom()); + if (this.client.getHabbo().getRoomUnit().isLoadingRoom()) { + Room room = this.client.getHabbo().getRoomUnit().getLoadingRoom(); if (room != null && room.getLayout() != null) { this.client.sendResponse(new HeightMapComposer(room)); diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/GetRoomSettingsEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/GetRoomSettingsEvent.java index b9c450f4..418ded5e 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/GetRoomSettingsEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/GetRoomSettingsEvent.java @@ -10,7 +10,7 @@ public class GetRoomSettingsEvent extends MessageHandler { public void handle() { int roomId = this.packet.readInt(); - Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(roomId); + Room room = Emulator.getGameEnvironment().getRoomManager().getActiveRoomById(roomId); if (room != null) this.client.sendResponse(new RoomSettingsDataComposer(room)); diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/LetUserInEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/LetUserInEvent.java index 74a5f0e7..f6952e6f 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/LetUserInEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/LetUserInEvent.java @@ -10,23 +10,25 @@ import com.eu.habbo.messages.outgoing.rooms.FlatAccessibleMessageComposer; public class LetUserInEvent extends MessageHandler { @Override public void handle() { - if (this.client.getHabbo().getHabboInfo().getCurrentRoom() != null && this.client.getHabbo().getHabboInfo().getCurrentRoom().hasRights(this.client.getHabbo())) { + if (this.client.getHabbo().getRoomUnit().getRoom() != null && this.client.getHabbo().getRoomUnit().getRoom().hasRights(this.client.getHabbo())) { String username = this.packet.readString(); boolean accepted = this.packet.readBoolean(); Habbo habbo = Emulator.getGameServer().getGameClientManager().getHabbo(username); - if (habbo != null && habbo.getHabboInfo().getRoomQueueId() == this.client.getHabbo().getHabboInfo().getCurrentRoom().getId()) { - this.client.getHabbo().getHabboInfo().getCurrentRoom().removeFromQueue(habbo); + if (habbo != null) { + if (habbo.getHabboInfo().getRoomQueueId() == this.client.getHabbo().getRoomUnit().getRoom().getRoomInfo().getId()) { + this.client.getHabbo().getRoomUnit().getRoom().removeFromQueue(habbo); - if (accepted) { - habbo.getClient().sendResponse(new FlatAccessibleMessageComposer("")); - Emulator.getGameEnvironment().getRoomManager().enterRoom(habbo, this.client.getHabbo().getHabboInfo().getCurrentRoom().getId(), "", true); - } else { - habbo.getClient().sendResponse(new FlatAccessDeniedMessageComposer("")); - habbo.getClient().sendResponse(new CloseConnectionMessageComposer()); + if (accepted) { + habbo.getClient().sendResponse(new FlatAccessibleMessageComposer("")); + Emulator.getGameEnvironment().getRoomManager().enterRoom(habbo, this.client.getHabbo().getRoomUnit().getRoom().getRoomInfo().getId(), "", true); + } else { + habbo.getClient().sendResponse(new FlatAccessDeniedMessageComposer("")); + habbo.getClient().sendResponse(new CloseConnectionMessageComposer()); + } + habbo.getHabboInfo().setRoomQueueId(0); } - habbo.getHabboInfo().setRoomQueueId(0); } } diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/MuteAllInRoomEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/MuteAllInRoomEvent.java index 8711ef77..35576d89 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/MuteAllInRoomEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/MuteAllInRoomEvent.java @@ -7,10 +7,10 @@ import com.eu.habbo.messages.outgoing.rooms.MuteAllInRoomComposer; public class MuteAllInRoomEvent extends MessageHandler { @Override public void handle() { - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); if (room != null) { - if (room.isOwner(this.client.getHabbo())) { + if (room.getRoomInfo().isRoomOwner(this.client.getHabbo())) { room.setMuted(!room.isMuted()); this.client.sendResponse(new MuteAllInRoomComposer(room)); } diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/OpenFlatConnectionEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/OpenFlatConnectionEvent.java index 5787a41d..c669084b 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/OpenFlatConnectionEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/OpenFlatConnectionEvent.java @@ -3,30 +3,33 @@ package com.eu.habbo.messages.incoming.rooms; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.messages.incoming.MessageHandler; +import lombok.extern.slf4j.Slf4j; +@Slf4j public class OpenFlatConnectionEvent extends MessageHandler { + /** + * When user clicks to enter a room + */ @Override public void handle() { int roomId = this.packet.readInt(); String password = this.packet.readString(); - if (this.client.getHabbo().getHabboInfo().getLoadingRoom() == 0 && this.client.getHabbo().getHabboStats().roomEnterTimestamp + 1000 < System.currentTimeMillis()) { + if (!this.client.getHabbo().getRoomUnit().isLoadingRoom() && this.client.getHabbo().getHabboStats().roomEnterTimestamp + 1000 < System.currentTimeMillis()) { + Room previousRoom = this.client.getHabbo().getRoomUnit().getRoom(); - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); - if (room != null) { + if (previousRoom != null) { Emulator.getGameEnvironment().getRoomManager().logExit(this.client.getHabbo()); - - room.removeHabbo(this.client.getHabbo(), true); - - this.client.getHabbo().getHabboInfo().setCurrentRoom(null); + previousRoom.getRoomUnitManager().removeHabbo(this.client.getHabbo(), true); + this.client.getHabbo().getRoomUnit().setPreviousRoom(previousRoom); } - if (this.client.getHabbo().getRoomUnit() != null && this.client.getHabbo().getRoomUnit().isTeleporting()) { + if (this.client.getHabbo().getRoomUnit().isTeleporting()) { this.client.getHabbo().getRoomUnit().setTeleporting(false); } - Emulator.getGameEnvironment().getRoomManager().enterRoom(this.client.getHabbo(), roomId, password); + Emulator.getGameEnvironment().getRoomManager().enterRoom(this.client.getHabbo(), roomId, password, false); } } } diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/RateFlatEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/RateFlatEvent.java index 683e5a18..45ce93a0 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/RateFlatEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/RateFlatEvent.java @@ -6,6 +6,6 @@ import com.eu.habbo.messages.incoming.MessageHandler; public class RateFlatEvent extends MessageHandler { @Override public void handle() { - Emulator.getGameEnvironment().getRoomManager().voteForRoom(this.client.getHabbo(), this.client.getHabbo().getHabboInfo().getCurrentRoom()); + Emulator.getGameEnvironment().getRoomManager().voteForRoom(this.client.getHabbo(), this.client.getHabbo().getRoomUnit().getRoom()); } } diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/RemoveAllRightsEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/RemoveAllRightsEvent.java index 1a96ec8b..254da30a 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/RemoveAllRightsEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/RemoveAllRightsEvent.java @@ -12,14 +12,14 @@ import com.eu.habbo.messages.outgoing.rooms.users.NoSuchFlatComposer; public class RemoveAllRightsEvent extends MessageHandler { @Override public void handle() { - final Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + final Room room = this.client.getHabbo().getRoomUnit().getRoom(); - if (room == null || room.getId() != this.packet.readInt()) + if (room == null || room.getRoomInfo().getId() != this.packet.readInt()) return; - if (room.getOwnerId() == this.client.getHabbo().getHabboInfo().getId() || this.client.getHabbo().hasRight(Permission.ACC_ANYROOMOWNER)) { + if (room.getRoomInfo().getOwnerInfo().getId() == this.client.getHabbo().getHabboInfo().getId() || this.client.getHabbo().hasRight(Permission.ACC_ANYROOMOWNER)) { room.getRights().forEach(value -> { - Habbo habbo = room.getHabbo(value); + Habbo habbo = room.getRoomUnitManager().getRoomHabboById(value); if (habbo != null) { room.sendComposer(new NoSuchFlatComposer(room, value).compose()); diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/RemoveOwnRoomRightsRoomEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/RemoveOwnRoomRightsRoomEvent.java index b5bace40..67b0df6d 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/RemoveOwnRoomRightsRoomEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/RemoveOwnRoomRightsRoomEvent.java @@ -8,6 +8,6 @@ public class RemoveOwnRoomRightsRoomEvent extends MessageHandler { public void handle() { int roomId = this.packet.readInt(); - Emulator.getGameEnvironment().getRoomManager().getRoom(roomId).removeRights(this.client.getHabbo().getHabboInfo().getId()); + Emulator.getGameEnvironment().getRoomManager().getActiveRoomById(roomId).removeRights(this.client.getHabbo().getHabboInfo().getId()); } } \ No newline at end of file diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/RequestHeightmapEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/RequestHeightmapEvent.java index e40258eb..6b11663b 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/RequestHeightmapEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/RequestHeightmapEvent.java @@ -7,12 +7,11 @@ import com.eu.habbo.messages.incoming.MessageHandler; public class RequestHeightmapEvent extends MessageHandler { @Override public void handle() { - if (this.client.getHabbo().getHabboInfo().getLoadingRoom() > 0) { - Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(this.client.getHabbo().getHabboInfo().getLoadingRoom()); + if (this.client.getHabbo().getRoomUnit().isLoadingRoom()) { + Room room = this.client.getHabbo().getRoomUnit().getLoadingRoom(); if (room != null) { Emulator.getGameEnvironment().getRoomManager().enterRoom(this.client.getHabbo(), room); - } } } diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/RequestRoomPropertySet.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/RequestRoomPropertySet.java index 5809d1fd..202e7c75 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/RequestRoomPropertySet.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/RequestRoomPropertySet.java @@ -4,7 +4,7 @@ import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.achievements.AchievementManager; import com.eu.habbo.habbohotel.permissions.Permission; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.incoming.MessageHandler; import com.eu.habbo.messages.outgoing.inventory.FurniListRemoveComposer; import com.eu.habbo.messages.outgoing.rooms.RoomPropertyMessageComposer; @@ -12,14 +12,14 @@ import com.eu.habbo.messages.outgoing.rooms.RoomPropertyMessageComposer; public class RequestRoomPropertySet extends MessageHandler { @Override public void handle() { - if (this.client.getHabbo().getHabboInfo().getCurrentRoom() == null) + if (this.client.getHabbo().getRoomUnit().getRoom() == null) return; - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); - if (room.getOwnerId() == this.client.getHabbo().getHabboInfo().getId() || room.hasRights(this.client.getHabbo()) || this.client.getHabbo().hasRight(Permission.ACC_PLACEFURNI)) { + if (room.getRoomInfo().getOwnerInfo().getId() == this.client.getHabbo().getHabboInfo().getId() || room.hasRights(this.client.getHabbo()) || this.client.getHabbo().hasRight(Permission.ACC_PLACEFURNI)) { int itemId = this.packet.readInt(); - HabboItem item = this.client.getHabbo().getInventory().getItemsComponent().getHabboItem(itemId); + RoomItem item = this.client.getHabbo().getInventory().getItemsComponent().getHabboItem(itemId); if (item == null) { this.client.sendResponse(new FurniListRemoveComposer(itemId)); @@ -28,17 +28,17 @@ public class RequestRoomPropertySet extends MessageHandler { switch (item.getBaseItem().getName()) { case "floor": - room.setFloorPaint(item.getExtradata()); + room.getRoomInfo().setFloorPaint(item.getExtradata()); AchievementManager.progressAchievement(this.client.getHabbo(), Emulator.getGameEnvironment().getAchievementManager().getAchievement("RoomDecoFloor")); break; case "wallpaper": - room.setWallPaint(item.getExtradata()); + room.getRoomInfo().setWallPaint(item.getExtradata()); AchievementManager.progressAchievement(this.client.getHabbo(), Emulator.getGameEnvironment().getAchievementManager().getAchievement("RoomDecoWallpaper")); break; case "landscape": - room.setBackgroundPaint(item.getExtradata()); + room.getRoomInfo().setLandscapePaint(item.getExtradata()); AchievementManager.progressAchievement(this.client.getHabbo(), Emulator.getGameEnvironment().getAchievementManager().getAchievement("RoomDecoLandscape")); break; diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/SaveRoomSettingsEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/SaveRoomSettingsEvent.java index c0b93562..2dd9e688 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/SaveRoomSettingsEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/SaveRoomSettingsEvent.java @@ -20,19 +20,19 @@ public class SaveRoomSettingsEvent extends MessageHandler { public void handle() { int roomId = this.packet.readInt(); - Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(roomId); + Room room = Emulator.getGameEnvironment().getRoomManager().getActiveRoomById(roomId); if (room != null) { - if (room.isOwner(this.client.getHabbo())) { + if (room.getRoomInfo().isRoomOwner(this.client.getHabbo())) { String name = this.packet.readString(); if (name.trim().isEmpty() || name.length() > 60) { - this.client.sendResponse(new RoomSettingsSaveErrorComposer(room.getId(), RoomSettingsSaveErrorComposer.ROOM_NAME_MISSING, "")); + this.client.sendResponse(new RoomSettingsSaveErrorComposer(room.getRoomInfo().getId(), RoomSettingsSaveErrorComposer.ROOM_NAME_MISSING, "")); return; } if (!Emulator.getGameEnvironment().getWordFilter().filter(name, this.client.getHabbo()).equals(name)) { - this.client.sendResponse(new RoomSettingsSaveErrorComposer(room.getId(), RoomSettingsSaveErrorComposer.ROOM_NAME_BADWORDS, "")); + this.client.sendResponse(new RoomSettingsSaveErrorComposer(room.getRoomInfo().getId(), RoomSettingsSaveErrorComposer.ROOM_NAME_BADWORDS, "")); return; } @@ -43,15 +43,15 @@ public class SaveRoomSettingsEvent extends MessageHandler { } if (!Emulator.getGameEnvironment().getWordFilter().filter(description, this.client.getHabbo()).equals(description)) { - this.client.sendResponse(new RoomSettingsSaveErrorComposer(room.getId(), RoomSettingsSaveErrorComposer.ROOM_DESCRIPTION_BADWORDS, "")); + this.client.sendResponse(new RoomSettingsSaveErrorComposer(room.getRoomInfo().getId(), RoomSettingsSaveErrorComposer.ROOM_DESCRIPTION_BADWORDS, "")); return; } RoomState state = RoomState.values()[this.packet.readInt() % RoomState.values().length]; String password = this.packet.readString(); - if (state == RoomState.PASSWORD && password.isEmpty() && (room.getPassword() == null || room.getPassword().isEmpty())) { - this.client.sendResponse(new RoomSettingsSaveErrorComposer(room.getId(), RoomSettingsSaveErrorComposer.PASSWORD_REQUIRED, "")); + if (state == RoomState.PASSWORD && password.isEmpty() && (room.getRoomInfo().getPassword() == null || room.getRoomInfo().getPassword().isEmpty())) { + this.client.sendResponse(new RoomSettingsSaveErrorComposer(room.getRoomInfo().getId(), RoomSettingsSaveErrorComposer.PASSWORD_REQUIRED, "")); return; } @@ -64,7 +64,7 @@ public class SaveRoomSettingsEvent extends MessageHandler { String tag = this.packet.readString(); if (tag.length() > 15) { - this.client.sendResponse(new RoomSettingsSaveErrorComposer(room.getId(), RoomSettingsSaveErrorComposer.TAGS_TOO_LONG, "")); + this.client.sendResponse(new RoomSettingsSaveErrorComposer(room.getRoomInfo().getId(), RoomSettingsSaveErrorComposer.TAGS_TOO_LONG, "")); return; } if(!uniqueTags.contains(tag)) { @@ -74,7 +74,7 @@ public class SaveRoomSettingsEvent extends MessageHandler { } if (!Emulator.getGameEnvironment().getWordFilter().filter(tags.toString(), this.client.getHabbo()).equals(tags.toString())) { - this.client.sendResponse(new RoomSettingsSaveErrorComposer(room.getId(), RoomSettingsSaveErrorComposer.ROOM_TAGS_BADWWORDS, "")); + this.client.sendResponse(new RoomSettingsSaveErrorComposer(room.getRoomInfo().getId(), RoomSettingsSaveErrorComposer.ROOM_TAGS_BADWWORDS, "")); return; } @@ -82,21 +82,21 @@ public class SaveRoomSettingsEvent extends MessageHandler { if (tags.length() > 0) { for (String s : Emulator.getConfig().getValue("hotel.room.tags.staff").split(";")) { if (tags.toString().contains(s)) { - this.client.sendResponse(new RoomSettingsSaveErrorComposer(room.getId(), RoomSettingsSaveErrorComposer.RESTRICTED_TAGS, "1")); + this.client.sendResponse(new RoomSettingsSaveErrorComposer(room.getRoomInfo().getId(), RoomSettingsSaveErrorComposer.RESTRICTED_TAGS, "1")); return; } } } - room.setName(name); - room.setDescription(description); - room.setState(state); - if (!password.isEmpty()) room.setPassword(password); - room.setUsersMax(usersMax); + room.getRoomInfo().setName(name); + room.getRoomInfo().setDescription(description); + room.getRoomInfo().setState(state); + if (!password.isEmpty()) room.getRoomInfo().setPassword(password); + room.getRoomInfo().setMaxUsers(usersMax); if (Emulator.getGameEnvironment().getRoomManager().hasCategory(categoryId, this.client.getHabbo())) - room.setCategory(categoryId); + room.getRoomInfo().setCategory(Emulator.getGameEnvironment().getRoomManager().getCategory(categoryId)); else { RoomCategory category = Emulator.getGameEnvironment().getRoomManager().getCategory(categoryId); @@ -113,22 +113,39 @@ public class SaveRoomSettingsEvent extends MessageHandler { } - room.setTags(tags.toString()); - room.setTradeMode(this.packet.readInt()); - room.setAllowPets(this.packet.readBoolean()); - room.setAllowPetsEat(this.packet.readBoolean()); - room.setAllowWalkthrough(this.packet.readBoolean()); - room.setHideWall(this.packet.readBoolean()); - room.setWallSize(this.packet.readInt()); - room.setFloorSize(this.packet.readInt()); - room.setMuteOption(this.packet.readInt()); - room.setKickOption(this.packet.readInt()); - room.setBanOption(this.packet.readInt()); - room.setChatMode(this.packet.readInt()); - room.setChatWeight(this.packet.readInt()); - room.setChatSpeed(this.packet.readInt()); - room.setChatDistance(Math.abs(this.packet.readInt())); - room.setChatProtection(this.packet.readInt()); + room.getRoomInfo().setTags(tags.toString()); + int tradeMode = this.packet.readInt(); + room.getRoomInfo().setTradeMode(tradeMode); + room.getRoomInfo().setAllowPets(this.packet.readBoolean()); + + if(!room.getRoomInfo().isAllowPets()) { + room.getRoomUnitManager().removeAllPetsExceptRoomOwner(); + } + + boolean allowPetsEat = this.packet.readBoolean(); + room.getRoomInfo().setAllowPetsEat(allowPetsEat); + boolean allowWalkthrough = this.packet.readBoolean(); + room.getRoomInfo().setAllowWalkthrough(allowWalkthrough); + boolean hideWall = this.packet.readBoolean(); + room.getRoomInfo().setHideWalls(hideWall); + room.getRoomInfo().setWallThickness(this.packet.readInt()); + room.getRoomInfo().setFloorThickness(this.packet.readInt()); + int muteOption = this.packet.readInt(); + room.getRoomInfo().setWhoCanMuteOption(muteOption); + int kickOption = this.packet.readInt(); + room.getRoomInfo().setWhoCanKickOption(kickOption); + int banOption = this.packet.readInt(); + room.getRoomInfo().setWhoCanBanOption(banOption); + int chatMode = this.packet.readInt(); + room.getRoomInfo().setChatMode(chatMode); + int chatWeight = this.packet.readInt(); + room.getRoomInfo().setChatWeight(chatWeight); + int chatSpeed = this.packet.readInt(); + room.getRoomInfo().setChatSpeed(chatSpeed); + int chatDistance = Math.abs(this.packet.readInt()); + room.getRoomInfo().setChatDistance(chatDistance); + int chatProtection = this.packet.readInt(); + room.getRoomInfo().setChatProtection(chatProtection); room.setNeedsUpdate(true); room.sendComposer(new RoomVisualizationSettingsComposer(room).compose()); diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/SetRoomBackgroundColorDataEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/SetRoomBackgroundColorDataEvent.java index 25f7df27..e784eb25 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/SetRoomBackgroundColorDataEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/SetRoomBackgroundColorDataEvent.java @@ -3,7 +3,7 @@ package com.eu.habbo.messages.incoming.rooms; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.permissions.Permission; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.incoming.MessageHandler; import com.eu.habbo.plugin.events.furniture.FurnitureRoomTonerEvent; @@ -12,12 +12,12 @@ public class SetRoomBackgroundColorDataEvent extends MessageHandler { public void handle() { int itemId = this.packet.readInt(); - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); if (room == null) return; if (room.hasRights(this.client.getHabbo()) || this.client.getHabbo().hasRight(Permission.ACC_PLACEFURNI)) { - HabboItem item = room.getHabboItem(itemId); + RoomItem item = room.getHabboItem(itemId); if (item == null) return; diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/SubmitRoomToCompetitionEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/SubmitRoomToCompetitionEvent.java index d2e40610..25c9d8fe 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/SubmitRoomToCompetitionEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/SubmitRoomToCompetitionEvent.java @@ -15,15 +15,16 @@ public class SubmitRoomToCompetitionEvent extends MessageHandler { if (this.client.getHabbo().hasRight(Permission.ACC_STAFF_PICK)) { int roomId = this.packet.readInt(); - Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(roomId); + Room room = Emulator.getGameEnvironment().getRoomManager().getActiveRoomById(roomId); if (room != null) { - room.setStaffPromotedRoom(!room.isStaffPromotedRoom()); + boolean staffPromotedRoom = !room.getRoomInfo().isStaffPicked(); + room.getRoomInfo().setStaffPicked(staffPromotedRoom); room.setNeedsUpdate(true); NavigatorPublicCategory publicCategory = Emulator.getGameEnvironment().getNavigatorManager().publicCategories.get(Emulator.getConfig().getInt("hotel.navigator.staffpicks.categoryid")); - if (room.isStaffPromotedRoom()) { - Habbo habbo = Emulator.getGameEnvironment().getHabboManager().getHabbo(room.getOwnerId()); + if (room.getRoomInfo().isStaffPicked()) { + Habbo habbo = Emulator.getGameEnvironment().getHabboManager().getHabbo(room.getRoomInfo().getOwnerInfo().getId()); if (habbo != null) { AchievementManager.progressAchievement(habbo, Emulator.getGameEnvironment().getAchievementManager().getAchievement("Spr")); diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/ToggleStaffPickEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/ToggleStaffPickEvent.java index af162d35..9c4ca8d4 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/ToggleStaffPickEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/ToggleStaffPickEvent.java @@ -15,15 +15,16 @@ public class ToggleStaffPickEvent extends MessageHandler { if (this.client.getHabbo().hasRight(Permission.ACC_STAFF_PICK)) { int roomId = this.packet.readInt(); - Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(roomId); + Room room = Emulator.getGameEnvironment().getRoomManager().getActiveRoomById(roomId); if (room != null) { - room.setStaffPromotedRoom(!room.isStaffPromotedRoom()); + boolean staffPromotedRoom = !room.getRoomInfo().isStaffPicked(); + room.getRoomInfo().setStaffPicked(staffPromotedRoom); room.setNeedsUpdate(true); NavigatorPublicCategory publicCategory = Emulator.getGameEnvironment().getNavigatorManager().publicCategories.get(Emulator.getConfig().getInt("hotel.navigator.staffpicks.categoryid")); - if (room.isStaffPromotedRoom()) { - Habbo habbo = Emulator.getGameEnvironment().getHabboManager().getHabbo(room.getOwnerId()); + if (room.getRoomInfo().isStaffPicked()) { + Habbo habbo = Emulator.getGameEnvironment().getHabboManager().getHabbo(room.getRoomInfo().getOwnerInfo().getId()); if (habbo != null) { AchievementManager.progressAchievement(habbo, Emulator.getGameEnvironment().getAchievementManager().getAchievement("Spr")); diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/UpdateRoomFilterEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/UpdateRoomFilterEvent.java index b8df73ab..e3b6aaf5 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/UpdateRoomFilterEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/UpdateRoomFilterEvent.java @@ -16,13 +16,13 @@ public class UpdateRoomFilterEvent extends MessageHandler { } // Get current room of user. - final Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); - if (room == null || room.getId() != roomId) { + final Room room = this.client.getHabbo().getRoomUnit().getRoom(); + if (room == null || room.getRoomInfo().getId() != roomId) { return; } // Check if owner. - if (!room.isOwner(this.client.getHabbo())) { + if (!room.getRoomInfo().isRoomOwner(this.client.getHabbo())) { ScripterManager.scripterDetected(this.client, String.format("User (%s) tried to change wordfilter for a not owned room.", this.client.getHabbo().getHabboInfo().getUsername())); return; } diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/bots/CommandBotEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/bots/CommandBotEvent.java index 91d18c51..1290c6de 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/bots/CommandBotEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/bots/CommandBotEvent.java @@ -21,15 +21,15 @@ import java.util.ArrayList; public class CommandBotEvent extends MessageHandler { @Override public void handle() { - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); if (room == null) return; - if (room.getOwnerId() == this.client.getHabbo().getHabboInfo().getId() || this.client.getHabbo().hasRight(Permission.ACC_ANYROOMOWNER)) { + if (room.getRoomInfo().getOwnerInfo().getId() == this.client.getHabbo().getHabboInfo().getId() || this.client.getHabbo().hasRight(Permission.ACC_ANYROOMOWNER)) { int botId = this.packet.readInt(); - Bot bot = room.getBot(Math.abs(botId)); + Bot bot = room.getRoomUnitManager().getRoomBotById(Math.abs(botId)); if (bot == null) return; @@ -129,7 +129,7 @@ public class CommandBotEvent extends MessageHandler { bot.setName(nameEvent.getName()); bot.needsUpdate(true); - room.sendComposer(new UserNameChangedMessageComposer(bot.getRoomUnit().getId(), bot.getRoomUnit().getId(), nameEvent.getName()).compose()); + room.sendComposer(new UserNameChangedMessageComposer(bot.getRoomUnit().getVirtualId(), bot.getRoomUnit().getVirtualId(), nameEvent.getName()).compose()); } } if (invalidName) { diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/bots/GetBotCommandConfigurationDataEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/bots/GetBotCommandConfigurationDataEvent.java index 1945016b..f88fc392 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/bots/GetBotCommandConfigurationDataEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/bots/GetBotCommandConfigurationDataEvent.java @@ -9,15 +9,15 @@ import com.eu.habbo.messages.outgoing.rooms.BotCommandConfigurationComposer; public class GetBotCommandConfigurationDataEvent extends MessageHandler { @Override public void handle() { - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); if (room == null) return; - if (room.getOwnerId() == this.client.getHabbo().getHabboInfo().getId() || this.client.getHabbo().hasRight(Permission.ACC_ANYROOMOWNER)) { + if (room.getRoomInfo().getOwnerInfo().getId() == this.client.getHabbo().getHabboInfo().getId() || this.client.getHabbo().hasRight(Permission.ACC_ANYROOMOWNER)) { int botId = this.packet.readInt(); - Bot bot = room.getBot(Math.abs(botId)); + Bot bot = room.getRoomUnitManager().getRoomBotById(Math.abs(botId)); if (bot == null) return; diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/bots/PlaceBotEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/bots/PlaceBotEvent.java index ed6cea2d..1325ee9e 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/bots/PlaceBotEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/bots/PlaceBotEvent.java @@ -8,19 +8,21 @@ import com.eu.habbo.messages.incoming.MessageHandler; public class PlaceBotEvent extends MessageHandler { @Override public void handle() { - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); - if (room == null) + if (room == null) { return; + } Bot bot = this.client.getHabbo().getInventory().getBotsComponent().getBot(this.packet.readInt()); - if (bot == null) + if (bot == null) { return; + } int x = this.packet.readInt(); int y = this.packet.readInt(); - Emulator.getGameEnvironment().getBotManager().placeBot(bot, this.client.getHabbo(), this.client.getHabbo().getHabboInfo().getCurrentRoom(), room.getLayout().getTile((short) x, (short) y)); + Emulator.getGameEnvironment().getBotManager().placeBot(bot, this.client.getHabbo(), room, room.getLayout().getTile((short) x, (short) y)); } } diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/bots/RemoveBotFromFlatEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/bots/RemoveBotFromFlatEvent.java index 87189997..9a351609 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/bots/RemoveBotFromFlatEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/bots/RemoveBotFromFlatEvent.java @@ -9,11 +9,11 @@ public class RemoveBotFromFlatEvent extends MessageHandler { @Override public void handle() { - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); if (room == null) return; - Emulator.getGameEnvironment().getBotManager().pickUpBot(this.packet.readInt(), this.client.getHabbo()); + Emulator.getGameEnvironment().getBotManager().pickUpBot(this.packet.readInt(), this.client.getHabbo(), room); } } diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/AddSpamWallPostItEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/AddSpamWallPostItEvent.java index 0e4fea1d..e3fa9574 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/AddSpamWallPostItEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/AddSpamWallPostItEvent.java @@ -4,7 +4,7 @@ import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.items.PostItColor; import com.eu.habbo.habbohotel.items.interactions.InteractionPostIt; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.incoming.MessageHandler; import lombok.extern.slf4j.Slf4j; @@ -34,11 +34,11 @@ public class AddSpamWallPostItEvent extends MessageHandler { } else { String text = this.packet.readString(); - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); - HabboItem sticky = room.getHabboItem(itemId); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); + RoomItem sticky = room.getHabboItem(itemId); if (sticky != null && sticky.getUserId() == this.client.getHabbo().getHabboInfo().getId()) { - sticky.setUserId(room.getOwnerId()); + sticky.setUserId(room.getRoomInfo().getOwnerInfo().getId()); if (color.equalsIgnoreCase(PostItColor.YELLOW.hexColor)) { color = PostItColor.randomColorNotYellow().hexColor; @@ -47,7 +47,7 @@ public class AddSpamWallPostItEvent extends MessageHandler { text = InteractionPostIt.STICKYPOLE_PREFIX_TEXT.replace("\\r", "\r").replace("%username%", this.client.getHabbo().getHabboInfo().getUsername()).replace("%timestamp%", LocalDate.now().toString()) + text; } - sticky.setUserId(room.getOwnerId()); + sticky.setUserId(room.getRoomInfo().getOwnerInfo().getId()); sticky.setExtradata(color + " " + text); sticky.needsUpdate(true); room.updateItem(sticky); diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/CreditFurniRedeemEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/CreditFurniRedeemEvent.java index bb577502..53dad411 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/CreditFurniRedeemEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/CreditFurniRedeemEvent.java @@ -3,7 +3,7 @@ package com.eu.habbo.messages.incoming.rooms.items; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.incoming.MessageHandler; import com.eu.habbo.messages.outgoing.rooms.HeightMapUpdateMessageComposer; import com.eu.habbo.messages.outgoing.rooms.items.RemoveFloorItemComposer; @@ -20,10 +20,10 @@ public class CreditFurniRedeemEvent extends MessageHandler { public void handle() { int itemId = this.packet.readInt(); - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); if (room != null) { - HabboItem item = room.getHabboItem(itemId); + RoomItem item = room.getHabboItem(itemId); if (item != null && this.client.getHabbo().getHabboInfo().getId() == item.getUserId()) { boolean furnitureRedeemEventRegistered = Emulator.getPluginManager().isRegistered(FurnitureRedeemedEvent.class, true); diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/CustomizeAvatarWithFurniEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/CustomizeAvatarWithFurniEvent.java index 937aae78..290987c9 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/CustomizeAvatarWithFurniEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/CustomizeAvatarWithFurniEvent.java @@ -4,7 +4,7 @@ import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.catalog.ClothItem; import com.eu.habbo.habbohotel.items.interactions.InteractionClothing; import com.eu.habbo.habbohotel.rooms.RoomTile; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.incoming.MessageHandler; import com.eu.habbo.messages.outgoing.generic.alerts.BubbleAlertKeys; import com.eu.habbo.messages.outgoing.generic.alerts.NotificationDialogMessageComposer; @@ -26,9 +26,9 @@ public class CustomizeAvatarWithFurniEvent extends MessageHandler { public void handle() { int itemId = this.packet.readInt(); - if (this.client.getHabbo().getHabboInfo().getCurrentRoom() != null && - this.client.getHabbo().getHabboInfo().getCurrentRoom().hasRights(this.client.getHabbo())) { - HabboItem item = this.client.getHabbo().getHabboInfo().getCurrentRoom().getHabboItem(itemId); + if (this.client.getHabbo().getRoomUnit().getRoom() != null && + this.client.getHabbo().getRoomUnit().getRoom().hasRights(this.client.getHabbo())) { + RoomItem item = this.client.getHabbo().getRoomUnit().getRoom().getHabboItem(itemId); if (item != null && item.getUserId() == this.client.getHabbo().getHabboInfo().getId()) { if (item instanceof InteractionClothing) { @@ -37,11 +37,11 @@ public class CustomizeAvatarWithFurniEvent extends MessageHandler { if (clothing != null) { if (!this.client.getHabbo().getInventory().getWardrobeComponent().getClothing().contains(clothing.getId())) { item.setRoomId(0); - RoomTile tile = this.client.getHabbo().getHabboInfo().getCurrentRoom().getLayout().getTile(item.getX(), item.getY()); - this.client.getHabbo().getHabboInfo().getCurrentRoom().removeHabboItem(item); - this.client.getHabbo().getHabboInfo().getCurrentRoom().updateTile(tile); - this.client.getHabbo().getHabboInfo().getCurrentRoom().sendComposer(new HeightMapUpdateMessageComposer(tile.getX(), tile.getY(), tile.getZ(), tile.relativeHeight()).compose()); - this.client.getHabbo().getHabboInfo().getCurrentRoom().sendComposer(new RemoveFloorItemComposer(item, true).compose()); + RoomTile tile = this.client.getHabbo().getRoomUnit().getRoom().getLayout().getTile(item.getX(), item.getY()); + this.client.getHabbo().getRoomUnit().getRoom().removeHabboItem(item); + this.client.getHabbo().getRoomUnit().getRoom().updateTile(tile); + this.client.getHabbo().getRoomUnit().getRoom().sendComposer(new HeightMapUpdateMessageComposer(tile.getX(), tile.getY(), tile.getZ(), tile.relativeHeight()).compose()); + this.client.getHabbo().getRoomUnit().getRoom().sendComposer(new RemoveFloorItemComposer(item, true).compose()); Emulator.getThreading().run(new QueryDeleteHabboItem(item.getId())); try (Connection connection = Emulator.getDatabase().getDataSource().getConnection(); PreparedStatement statement = connection.prepareStatement("INSERT INTO users_clothing (user_id, clothing_id) VALUES (?, ?)")) { diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/DiceOffEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/DiceOffEvent.java index 6fda922f..b24375ff 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/DiceOffEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/DiceOffEvent.java @@ -5,7 +5,7 @@ import com.eu.habbo.habbohotel.items.interactions.InteractionDice; import com.eu.habbo.habbohotel.modtool.ScripterManager; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomLayout; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.incoming.MessageHandler; public class DiceOffEvent extends MessageHandler { @@ -13,16 +13,16 @@ public class DiceOffEvent extends MessageHandler { public void handle() { int itemId = this.packet.readInt(); - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); if (room == null) return; - HabboItem item = room.getHabboItem(itemId); + RoomItem item = room.getHabboItem(itemId); if (item != null) { if (item instanceof InteractionDice) { - if (RoomLayout.tilesAdjecent(room.getLayout().getTile(item.getX(), item.getY()), this.client.getHabbo().getRoomUnit().getCurrentLocation())) { + if (RoomLayout.tilesAdjecent(room.getLayout().getTile(item.getX(), item.getY()), this.client.getHabbo().getRoomUnit().getCurrentPosition())) { if (!item.getExtradata().equals("-1")) { item.setExtradata("0"); item.needsUpdate(true); diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/EnterOneWayDoorEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/EnterOneWayDoorEvent.java index 9c3dc5e5..c55d66a7 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/EnterOneWayDoorEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/EnterOneWayDoorEvent.java @@ -1,17 +1,17 @@ package com.eu.habbo.messages.incoming.rooms.items; import com.eu.habbo.habbohotel.items.interactions.InteractionOneWayGate; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.incoming.MessageHandler; public class EnterOneWayDoorEvent extends MessageHandler { @Override public void handle() throws Exception { - if (this.client.getHabbo().getHabboInfo().getCurrentRoom() == null) + if (this.client.getHabbo().getRoomUnit().getRoom() == null) return; int itemId = this.packet.readInt(); - HabboItem item = this.client.getHabbo().getHabboInfo().getCurrentRoom().getHabboItem(itemId); + RoomItem item = this.client.getHabbo().getRoomUnit().getRoom().getHabboItem(itemId); if (item == null) return; @@ -20,7 +20,7 @@ public class EnterOneWayDoorEvent extends MessageHandler { if (!item.getExtradata().equals("0") || this.client.getHabbo().getRoomUnit().isTeleporting()) return; - item.onClick(this.client, this.client.getHabbo().getHabboInfo().getCurrentRoom(), null); + item.onClick(this.client, this.client.getHabbo().getRoomUnit().getRoom(), null); } } diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/GetItemDataEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/GetItemDataEvent.java index d78c2b42..85d8c969 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/GetItemDataEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/GetItemDataEvent.java @@ -2,7 +2,7 @@ package com.eu.habbo.messages.incoming.rooms.items; import com.eu.habbo.habbohotel.items.interactions.InteractionPostIt; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.incoming.MessageHandler; import com.eu.habbo.messages.outgoing.rooms.items.ItemDataUpdateMessageComposer; @@ -11,10 +11,10 @@ public class GetItemDataEvent extends MessageHandler { public void handle() { int itemId = this.packet.readInt(); - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); if (room != null) { - HabboItem item = room.getHabboItem(itemId); + RoomItem item = room.getHabboItem(itemId); if (item instanceof InteractionPostIt) { this.client.sendResponse(new ItemDataUpdateMessageComposer((InteractionPostIt) item)); diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/MoveObjectEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/MoveObjectEvent.java index a2dd1bf2..fc967f9c 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/MoveObjectEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/MoveObjectEvent.java @@ -3,7 +3,7 @@ package com.eu.habbo.messages.incoming.rooms.items; import com.eu.habbo.habbohotel.rooms.FurnitureMovementError; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.incoming.MessageHandler; import com.eu.habbo.messages.outgoing.generic.alerts.BubbleAlertKeys; import com.eu.habbo.messages.outgoing.generic.alerts.NotificationDialogMessageComposer; @@ -12,13 +12,13 @@ import com.eu.habbo.messages.outgoing.rooms.items.ObjectUpdateMessageComposer; public class MoveObjectEvent extends MessageHandler { @Override public void handle() { - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); if (room == null) return; int furniId = this.packet.readInt(); - HabboItem item = room.getHabboItem(furniId); + RoomItem item = room.getHabboItem(furniId); if (item == null) return; int x = this.packet.readInt(); diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/MoveWallItemEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/MoveWallItemEvent.java index 62609bfc..5dfd49bc 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/MoveWallItemEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/MoveWallItemEvent.java @@ -4,7 +4,7 @@ import com.eu.habbo.habbohotel.permissions.Permission; import com.eu.habbo.habbohotel.rooms.FurnitureMovementError; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomRightLevels; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.incoming.MessageHandler; import com.eu.habbo.messages.outgoing.generic.alerts.BubbleAlertKeys; import com.eu.habbo.messages.outgoing.generic.alerts.NotificationDialogMessageComposer; @@ -12,14 +12,16 @@ import com.eu.habbo.messages.outgoing.generic.alerts.NotificationDialogMessageCo public class MoveWallItemEvent extends MessageHandler { @Override public void handle() { - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); if (room == null) return; - if (!room.hasRights(this.client.getHabbo()) && !this.client.getHabbo().hasRight(Permission.ACC_PLACEFURNI) && !(room.getGuildId() > 0 && room.getGuildRightLevel(this.client.getHabbo()).isEqualOrGreaterThan(RoomRightLevels.GUILD_RIGHTS))) { - this.client.sendResponse(new NotificationDialogMessageComposer(BubbleAlertKeys.FURNITURE_PLACEMENT_ERROR.getKey(), FurnitureMovementError.NO_RIGHTS.getErrorCode())); - return; + if (!room.hasRights(this.client.getHabbo()) && !this.client.getHabbo().hasRight(Permission.ACC_PLACEFURNI)) { + if (!(room.getRoomInfo().getGuild().getId() > 0 && room.getGuildRightLevel(this.client.getHabbo()).isEqualOrGreaterThan(RoomRightLevels.GUILD_RIGHTS))) { + this.client.sendResponse(new NotificationDialogMessageComposer(BubbleAlertKeys.FURNITURE_PLACEMENT_ERROR.getKey(), FurnitureMovementError.NO_RIGHTS.getErrorCode())); + return; + } } int itemId = this.packet.readInt(); @@ -28,7 +30,7 @@ public class MoveWallItemEvent extends MessageHandler { if (itemId <= 0 || wallPosition.length() <= 13) return; - HabboItem item = room.getHabboItem(itemId); + RoomItem item = room.getHabboItem(itemId); if (item == null) return; diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/PickupObjectEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/PickupObjectEvent.java index 162fd074..7260604d 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/PickupObjectEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/PickupObjectEvent.java @@ -3,7 +3,7 @@ package com.eu.habbo.messages.incoming.rooms.items; import com.eu.habbo.habbohotel.items.interactions.InteractionPostIt; import com.eu.habbo.habbohotel.permissions.Permission; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.incoming.MessageHandler; public class PickupObjectEvent extends MessageHandler { @@ -12,12 +12,12 @@ public class PickupObjectEvent extends MessageHandler { int category = this.packet.readInt(); //10 = floorItem and 20 = wallItem int itemId = this.packet.readInt(); - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); if (room == null) return; - HabboItem item = room.getHabboItem(itemId); + RoomItem item = room.getHabboItem(itemId); if (item == null) return; @@ -31,8 +31,12 @@ public class PickupObjectEvent extends MessageHandler { if (room.hasRights(this.client.getHabbo())) { if (this.client.getHabbo().hasRight(Permission.ACC_ANYROOMOWNER)) { item.setUserId(this.client.getHabbo().getHabboInfo().getId()); - } else if (this.client.getHabbo().getHabboInfo().getId() != room.getOwnerId() && item.getUserId() == room.getOwnerId()) { - return; + } else { + if (this.client.getHabbo().getHabboInfo().getId() != room.getRoomInfo().getOwnerInfo().getId()) { + if (item.getUserId() == room.getRoomInfo().getOwnerInfo().getId()) { + return; + } + } } room.ejectUserItem(item); diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/PlaceObjectEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/PlaceObjectEvent.java index 5ba6485e..2c888ead 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/PlaceObjectEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/PlaceObjectEvent.java @@ -7,7 +7,7 @@ import com.eu.habbo.habbohotel.rooms.FurnitureMovementError; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomLayout; import com.eu.habbo.habbohotel.rooms.RoomTile; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.incoming.MessageHandler; import com.eu.habbo.messages.outgoing.generic.alerts.BubbleAlertKeys; import com.eu.habbo.messages.outgoing.generic.alerts.NotificationDialogMessageComposer; @@ -27,22 +27,22 @@ public class PlaceObjectEvent extends MessageHandler { return; } - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); if (room == null) { return; } - HabboItem rentSpace = null; + RoomItem rentSpace = null; if (this.client.getHabbo().getHabboStats().isRentingSpace()) { rentSpace = room.getHabboItem(this.client.getHabbo().getHabboStats().getRentedItemId()); } - HabboItem item = this.client.getHabbo().getInventory().getItemsComponent().getHabboItem(itemId); + RoomItem item = this.client.getHabbo().getInventory().getItemsComponent().getHabboItem(itemId); if (item == null || item.getBaseItem().getInteractionType().getType() == InteractionPostIt.class) return; - if (room.getId() != item.getRoomId() && item.getRoomId() != 0) + if (room.getRoomInfo().getId() != item.getRoomId() && item.getRoomId() != 0) return; //TODO move this to canStackAt() though find a way to handle the different bubble alert keys @@ -65,13 +65,13 @@ public class PlaceObjectEvent extends MessageHandler { if(tile == null) { String userName = this.client.getHabbo().getHabboInfo().getUsername(); - int roomId = room.getId(); + int roomId = room.getRoomInfo().getId(); ScripterManager.scripterDetected(this.client, "User [" + userName + "] tried to place a furni with itemId [" + itemId + "] at a tile which is not existing in room [" + roomId + "], tile: [" + x + "," + y + "]"); return; } - HabboItem buildArea = null; - for (HabboItem area : room.getRoomSpecialTypes().getItemsOfType(InteractionBuildArea.class)) { + RoomItem buildArea = null; + for (RoomItem area : room.getRoomSpecialTypes().getItemsOfType(InteractionBuildArea.class)) { if (((InteractionBuildArea) area).inSquare(tile)) { buildArea = area; } diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/PlacePostItEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/PlacePostItEvent.java index 1f6eee07..2b97acc9 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/PlacePostItEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/PlacePostItEvent.java @@ -6,7 +6,7 @@ import com.eu.habbo.habbohotel.items.interactions.InteractionPostIt; import com.eu.habbo.habbohotel.items.interactions.InteractionStickyPole; import com.eu.habbo.habbohotel.rooms.FurnitureMovementError; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.incoming.MessageHandler; import com.eu.habbo.messages.outgoing.generic.alerts.BubbleAlertKeys; import com.eu.habbo.messages.outgoing.generic.alerts.NotificationDialogMessageComposer; @@ -19,17 +19,17 @@ public class PlacePostItEvent extends MessageHandler { int itemId = this.packet.readInt(); String location = this.packet.readString(); - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); if (room != null) { if (room.hasRights(this.client.getHabbo()) || !room.getRoomSpecialTypes().getItemsOfType(InteractionStickyPole.class).isEmpty()) { - HabboItem item = this.client.getHabbo().getInventory().getItemsComponent().getHabboItem(itemId); + RoomItem item = this.client.getHabbo().getInventory().getItemsComponent().getHabboItem(itemId); if (item instanceof InteractionPostIt) { if (room.getPostItNotes().size() < Room.MAXIMUM_POSTITNOTES) { room.addHabboItem(item); item.setExtradata("FFFF33"); - item.setRoomId(this.client.getHabbo().getHabboInfo().getCurrentRoom().getId()); + item.setRoomId(this.client.getHabbo().getRoomUnit().getRoom().getRoomInfo().getId()); item.setWallPosition(location); item.setUserId(this.client.getHabbo().getHabboInfo().getId()); item.needsUpdate(true); @@ -39,8 +39,8 @@ public class PlacePostItEvent extends MessageHandler { item.setFromGift(false); Emulator.getThreading().run(item); - if (room.getOwnerId() != this.client.getHabbo().getHabboInfo().getId()) { - AchievementManager.progressAchievement(room.getOwnerId(), Emulator.getGameEnvironment().getAchievementManager().getAchievement("NotesReceived")); + if (room.getRoomInfo().getOwnerInfo().getId() != this.client.getHabbo().getHabboInfo().getId()) { + AchievementManager.progressAchievement(room.getRoomInfo().getOwnerInfo().getId(), Emulator.getGameEnvironment().getAchievementManager().getAchievement("NotesReceived")); AchievementManager.progressAchievement(this.client.getHabbo().getHabboInfo().getId(), Emulator.getGameEnvironment().getAchievementManager().getAchievement("NotesLeft")); } diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/RemoveItemEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/RemoveItemEvent.java index 44b57ac3..67548297 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/RemoveItemEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/RemoveItemEvent.java @@ -5,7 +5,7 @@ import com.eu.habbo.habbohotel.items.interactions.InteractionExternalImage; import com.eu.habbo.habbohotel.items.interactions.InteractionPostIt; import com.eu.habbo.habbohotel.permissions.Permission; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.incoming.MessageHandler; import com.eu.habbo.messages.outgoing.rooms.items.ItemRemoveMessageComposer; import com.eu.habbo.threading.runnables.QueryDeleteHabboItem; @@ -15,12 +15,12 @@ public class RemoveItemEvent extends MessageHandler { public void handle() { int itemId = this.packet.readInt(); - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); if (room == null) return; - HabboItem item = room.getHabboItem(itemId); + RoomItem item = room.getHabboItem(itemId); if (item instanceof InteractionPostIt || item instanceof InteractionExternalImage) { if (item.getUserId() == this.client.getHabbo().getHabboInfo().getId() || this.client.getHabbo().hasRight(Permission.ACC_ANYROOMOWNER)) { diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/RoomDimmerChangeStateEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/RoomDimmerChangeStateEvent.java index 2ba8cb82..301d36c2 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/RoomDimmerChangeStateEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/RoomDimmerChangeStateEvent.java @@ -5,22 +5,23 @@ import com.eu.habbo.habbohotel.items.interactions.InteractionMoodLight; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomMoodlightData; import com.eu.habbo.habbohotel.rooms.RoomRightLevels; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.incoming.MessageHandler; +import gnu.trove.map.TIntObjectMap; public class RoomDimmerChangeStateEvent extends MessageHandler { @Override public void handle() { - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); - if ((room.getGuildId() > 0 && room.getGuildRightLevel(this.client.getHabbo()).isLessThan(RoomRightLevels.GUILD_RIGHTS)) && !room.hasRights(this.client.getHabbo())) + if ((room.getRoomInfo().getGuild().getId() > 0 && room.getGuildRightLevel(this.client.getHabbo()).isLessThan(RoomRightLevels.GUILD_RIGHTS)) && !room.hasRights(this.client.getHabbo())) return; - for (HabboItem moodLight : room.getRoomSpecialTypes().getItemsOfType(InteractionMoodLight.class)) { + for (RoomItem moodLight : room.getRoomSpecialTypes().getItemsOfType(InteractionMoodLight.class)) { // enabled ? 2 : 1, preset id, background only ? 2 : 1, color, intensity String extradata = "2,1,2,#FF00FF,255"; - for (RoomMoodlightData data : room.getMoodlightData().valueCollection()) { + for (RoomMoodlightData data : ((TIntObjectMap) room.getRoomInfo().getMoodLightData()).valueCollection()) { if (data.isEnabled()) { extradata = data.toString(); break; diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/RoomDimmerGetPresetsEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/RoomDimmerGetPresetsEvent.java index fbfb8fb5..0a2016d7 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/RoomDimmerGetPresetsEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/RoomDimmerGetPresetsEvent.java @@ -1,12 +1,14 @@ package com.eu.habbo.messages.incoming.rooms.items; +import com.eu.habbo.habbohotel.rooms.RoomMoodlightData; import com.eu.habbo.messages.incoming.MessageHandler; import com.eu.habbo.messages.outgoing.rooms.items.RoomDimmerPresetsComposer; +import gnu.trove.map.TIntObjectMap; public class RoomDimmerGetPresetsEvent extends MessageHandler { @Override public void handle() { - if (this.client.getHabbo().getHabboInfo().getCurrentRoom() != null) - this.client.sendResponse(new RoomDimmerPresetsComposer(this.client.getHabbo().getHabboInfo().getCurrentRoom().getMoodlightData())); + if (this.client.getHabbo().getRoomUnit().getRoom() != null) + this.client.sendResponse(new RoomDimmerPresetsComposer((TIntObjectMap) this.client.getHabbo().getRoomUnit().getRoom().getRoomInfo().getMoodLightData())); } } diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/RoomDimmerSavePresetEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/RoomDimmerSavePresetEvent.java index 122f0902..51a72b1c 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/RoomDimmerSavePresetEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/RoomDimmerSavePresetEvent.java @@ -6,9 +6,10 @@ import com.eu.habbo.habbohotel.modtool.ScripterManager; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomMoodlightData; import com.eu.habbo.habbohotel.rooms.RoomRightLevels; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.incoming.MessageHandler; import com.eu.habbo.messages.outgoing.rooms.items.RoomDimmerPresetsComposer; +import gnu.trove.map.TIntObjectMap; import java.util.Arrays; import java.util.List; @@ -19,9 +20,9 @@ public class RoomDimmerSavePresetEvent extends MessageHandler { @Override public void handle() { - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); - if ((room.getGuildId() <= 0 && room.getGuildRightLevel(this.client.getHabbo()).isLessThan(RoomRightLevels.GUILD_RIGHTS)) && !room.hasRights(this.client.getHabbo())) + if ((room.getRoomInfo().getGuild().getId() <= 0 && room.getGuildRightLevel(this.client.getHabbo()).isLessThan(RoomRightLevels.GUILD_RIGHTS)) && !room.hasRights(this.client.getHabbo())) return; int id = this.packet.readInt(); @@ -40,14 +41,14 @@ public class RoomDimmerSavePresetEvent extends MessageHandler { return; } - for (RoomMoodlightData data : room.getMoodlightData().valueCollection()) { + for (RoomMoodlightData data : ((TIntObjectMap) room.getRoomInfo().getMoodLightData()).valueCollection()) { if (data.getId() == id) { data.setBackgroundOnly(backgroundOnly == 2); data.setColor(color); data.setIntensity(brightness); if (apply) data.enable(); - for (HabboItem item : room.getRoomSpecialTypes().getItemsOfType(InteractionMoodLight.class)) { + for (RoomItem item : room.getRoomSpecialTypes().getItemsOfType(InteractionMoodLight.class)) { item.setExtradata(data.toString()); item.needsUpdate(true); room.updateItem(item); @@ -59,6 +60,6 @@ public class RoomDimmerSavePresetEvent extends MessageHandler { } room.setNeedsUpdate(true); - this.client.sendResponse(new RoomDimmerPresetsComposer(room.getMoodlightData())); + this.client.sendResponse(new RoomDimmerPresetsComposer((TIntObjectMap) room.getRoomInfo().getMoodLightData())); } } diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/SetClothingChangeDataEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/SetClothingChangeDataEvent.java index 5820a0f2..6fbb679e 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/SetClothingChangeDataEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/SetClothingChangeDataEvent.java @@ -2,18 +2,18 @@ package com.eu.habbo.messages.incoming.rooms.items; import com.eu.habbo.habbohotel.items.interactions.games.football.InteractionFootballGate; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.incoming.MessageHandler; public class SetClothingChangeDataEvent extends MessageHandler { @Override public void handle() { - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); - if (room == null || this.client.getHabbo().getHabboInfo().getId() != room.getOwnerId()) + if (room == null || this.client.getHabbo().getHabboInfo().getId() != room.getRoomInfo().getOwnerInfo().getId()) return; - HabboItem item = room.getHabboItem(this.packet.readInt()); + RoomItem item = room.getHabboItem(this.packet.readInt()); if (!(item instanceof InteractionFootballGate)) return; diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/SetCustomStackingHeightEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/SetCustomStackingHeightEvent.java index 0dfc6682..06294c71 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/SetCustomStackingHeightEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/SetCustomStackingHeightEvent.java @@ -3,7 +3,7 @@ package com.eu.habbo.messages.incoming.rooms.items; import com.eu.habbo.habbohotel.items.interactions.InteractionStackHelper; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.incoming.MessageHandler; import com.eu.habbo.messages.outgoing.rooms.HeightMapUpdateMessageComposer; import com.eu.habbo.messages.outgoing.rooms.items.UpdateStackHeightTileHeightComposer; @@ -14,14 +14,14 @@ public class SetCustomStackingHeightEvent extends MessageHandler { public void handle() { int itemId = this.packet.readInt(); - if (this.client.getHabbo().getHabboInfo().getCurrentRoom() == null) + if (this.client.getHabbo().getRoomUnit().getRoom() == null) return; - if (this.client.getHabbo().getHabboInfo().getId() == this.client.getHabbo().getHabboInfo().getCurrentRoom().getOwnerId() || this.client.getHabbo().getHabboInfo().getCurrentRoom().hasRights(this.client.getHabbo())) { - HabboItem item = this.client.getHabbo().getHabboInfo().getCurrentRoom().getHabboItem(itemId); + if (this.client.getHabbo().getHabboInfo().getId() == this.client.getHabbo().getRoomUnit().getRoom().getRoomInfo().getOwnerInfo().getId() || this.client.getHabbo().getRoomUnit().getRoom().hasRights(this.client.getHabbo())) { + RoomItem item = this.client.getHabbo().getRoomUnit().getRoom().getHabboItem(itemId); if (item instanceof InteractionStackHelper) { - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); RoomTile itemTile = room.getLayout().getTile(item.getX(), item.getY()); double stackerHeight = this.packet.readInt(); @@ -49,10 +49,10 @@ public class SetCustomStackingHeightEvent extends MessageHandler { item.setZ(height); item.setExtradata((int) (height * 100) + ""); item.needsUpdate(true); - this.client.getHabbo().getHabboInfo().getCurrentRoom().updateItem(item); - this.client.getHabbo().getHabboInfo().getCurrentRoom().updateTiles(tiles); - this.client.getHabbo().getHabboInfo().getCurrentRoom().sendComposer(new HeightMapUpdateMessageComposer (room, tiles).compose()); - this.client.getHabbo().getHabboInfo().getCurrentRoom().sendComposer(new UpdateStackHeightTileHeightComposer(item, (int) ((height) * 100)).compose()); + this.client.getHabbo().getRoomUnit().getRoom().updateItem(item); + this.client.getHabbo().getRoomUnit().getRoom().updateTiles(tiles); + this.client.getHabbo().getRoomUnit().getRoom().sendComposer(new HeightMapUpdateMessageComposer (room, tiles).compose()); + this.client.getHabbo().getRoomUnit().getRoom().sendComposer(new UpdateStackHeightTileHeightComposer(item, (int) ((height) * 100)).compose()); } } } diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/SetItemDataEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/SetItemDataEvent.java index f7d649ff..2626b663 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/SetItemDataEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/SetItemDataEvent.java @@ -5,7 +5,7 @@ import com.eu.habbo.habbohotel.items.PostItColor; import com.eu.habbo.habbohotel.items.interactions.InteractionPostIt; import com.eu.habbo.habbohotel.modtool.ScripterManager; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.incoming.MessageHandler; import java.util.Arrays; @@ -29,12 +29,12 @@ public class SetItemDataEvent extends MessageHandler { return; } - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); if (room == null) return; - HabboItem item = room.getHabboItem(itemId); + RoomItem item = room.getHabboItem(itemId); if (!(item instanceof InteractionPostIt)) return; diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/SetMannequinFigureEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/SetMannequinFigureEvent.java index 0e924d12..19e632ab 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/SetMannequinFigureEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/SetMannequinFigureEvent.java @@ -2,20 +2,20 @@ package com.eu.habbo.messages.incoming.rooms.items; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; import com.eu.habbo.messages.incoming.MessageHandler; public class SetMannequinFigureEvent extends MessageHandler { @Override public void handle() { Habbo habbo = this.client.getHabbo(); - Room room = habbo.getHabboInfo().getCurrentRoom(); + Room room = habbo.getRoomUnit().getRoom(); - if (room == null || !room.isOwner(habbo)) + if (room == null || !room.getRoomInfo().isRoomOwner(habbo)) return; - HabboItem item = room.getHabboItem(this.packet.readInt()); + RoomItem item = room.getHabboItem(this.packet.readInt()); if (item == null) return; diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/SetMannequinNameEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/SetMannequinNameEvent.java index 825d2649..c43b5f3d 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/SetMannequinNameEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/SetMannequinNameEvent.java @@ -2,17 +2,17 @@ package com.eu.habbo.messages.incoming.rooms.items; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.incoming.MessageHandler; public class SetMannequinNameEvent extends MessageHandler { @Override public void handle() { - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); - if (room == null || !room.isOwner(this.client.getHabbo())) + Room room = this.client.getHabbo().getRoomUnit().getRoom(); + if (room == null || !room.getRoomInfo().isRoomOwner(this.client.getHabbo())) return; - HabboItem item = room.getHabboItem(this.packet.readInt()); + RoomItem item = room.getHabboItem(this.packet.readInt()); if (item == null) return; diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/SetObjectDataEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/SetObjectDataEvent.java index cca723e6..28a65bea 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/SetObjectDataEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/SetObjectDataEvent.java @@ -5,21 +5,21 @@ import com.eu.habbo.habbohotel.items.interactions.InteractionCustomValues; import com.eu.habbo.habbohotel.items.interactions.InteractionRoomAds; import com.eu.habbo.habbohotel.permissions.Permission; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.incoming.MessageHandler; import gnu.trove.map.hash.THashMap; public class SetObjectDataEvent extends MessageHandler { @Override public void handle() { - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); if (room == null) return; if (!room.hasRights(this.client.getHabbo())) return; - HabboItem item = room.getHabboItem(this.packet.readInt()); + RoomItem item = room.getHabboItem(this.packet.readInt()); if (item == null) return; diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/SetRandomStateEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/SetRandomStateEvent.java index 9ffa42ef..89044cc3 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/SetRandomStateEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/SetRandomStateEvent.java @@ -2,7 +2,7 @@ package com.eu.habbo.messages.incoming.rooms.items; import com.eu.habbo.habbohotel.items.interactions.InteractionRandomState; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.incoming.MessageHandler; import lombok.extern.slf4j.Slf4j; @@ -15,9 +15,9 @@ public class SetRandomStateEvent extends MessageHandler { int itemId = this.packet.readInt(); int state = this.packet.readInt(); - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); - HabboItem item = room.getHabboItem(itemId); + RoomItem item = room.getHabboItem(itemId); if (!(item instanceof InteractionRandomState randomStateItem)) return; diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/SpinWheelOfFortuneEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/SpinWheelOfFortuneEvent.java index 77142088..93558204 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/SpinWheelOfFortuneEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/SpinWheelOfFortuneEvent.java @@ -2,7 +2,7 @@ package com.eu.habbo.messages.incoming.rooms.items; import com.eu.habbo.habbohotel.items.interactions.InteractionColorWheel; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.incoming.MessageHandler; public class SpinWheelOfFortuneEvent extends MessageHandler { @@ -10,12 +10,12 @@ public class SpinWheelOfFortuneEvent extends MessageHandler { public void handle() throws Exception { int itemId = this.packet.readInt(); - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); if (room == null) return; - HabboItem item = room.getHabboItem(itemId); + RoomItem item = room.getHabboItem(itemId); if (item instanceof InteractionColorWheel) { item.onClick(this.client, room, null); diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/ThrowDiceEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/ThrowDiceEvent.java index f04ddc35..7cd7a3aa 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/ThrowDiceEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/ThrowDiceEvent.java @@ -4,7 +4,7 @@ import com.eu.habbo.habbohotel.items.interactions.InteractionDice; import com.eu.habbo.habbohotel.items.interactions.InteractionSpinningBottle; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomLayout; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.incoming.MessageHandler; public class ThrowDiceEvent extends MessageHandler { @@ -12,17 +12,17 @@ public class ThrowDiceEvent extends MessageHandler { public void handle() throws Exception { int itemId = this.packet.readInt(); - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); if (room == null) { return; } - HabboItem item = room.getHabboItem(itemId); + RoomItem item = room.getHabboItem(itemId); if (item != null) { if (item instanceof InteractionDice || item instanceof InteractionSpinningBottle) { - if (RoomLayout.tilesAdjecent(room.getLayout().getTile(item.getX(), item.getY()), this.client.getHabbo().getRoomUnit().getCurrentLocation())) { + if (RoomLayout.tilesAdjecent(room.getLayout().getTile(item.getX(), item.getY()), this.client.getHabbo().getRoomUnit().getCurrentPosition())) { item.onClick(this.client, room, new Object[]{}); } } diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/UseFurnitureEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/UseFurnitureEvent.java index e6fd0d84..b2acd4df 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/UseFurnitureEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/UseFurnitureEvent.java @@ -3,11 +3,10 @@ package com.eu.habbo.messages.incoming.rooms.items; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.items.interactions.InteractionDice; import com.eu.habbo.habbohotel.items.interactions.InteractionSpinningBottle; -import com.eu.habbo.habbohotel.items.interactions.InteractionWired; import com.eu.habbo.habbohotel.items.interactions.pets.InteractionMonsterPlantSeed; import com.eu.habbo.habbohotel.pets.MonsterplantPet; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.incoming.MessageHandler; import com.eu.habbo.messages.outgoing.rooms.items.RemoveFloorItemComposer; import com.eu.habbo.messages.outgoing.rooms.pets.OpenPetPackageRequestedMessageComposer; @@ -27,7 +26,7 @@ public class UseFurnitureEvent extends MessageHandler { @Override public void handle() { try { - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); if (room == null) return; @@ -35,7 +34,7 @@ public class UseFurnitureEvent extends MessageHandler { int itemId = this.packet.readInt(); int state = this.packet.readInt(); - HabboItem item = room.getHabboItem(itemId); + RoomItem item = room.getHabboItem(itemId); if (item == null || item instanceof InteractionDice || item instanceof InteractionSpinningBottle) return; @@ -50,9 +49,11 @@ public class UseFurnitureEvent extends MessageHandler { if (handleMonsterPlantSeed(room, item)) return; - if (PET_PRESENTS.contains(item.getBaseItem().getName().toLowerCase()) && room.getCurrentPets().size() < Room.MAXIMUM_PETS) { - this.client.sendResponse(new OpenPetPackageRequestedMessageComposer(item)); - return; + if (PET_PRESENTS.contains(item.getBaseItem().getName().toLowerCase())) { + if (room.getRoomUnitManager().getCurrentRoomPets().size() < Room.MAXIMUM_PETS) { + this.client.sendResponse(new OpenPetPackageRequestedMessageComposer(item)); + return; + } } item.onClick(this.client, room, new Object[]{state}); @@ -61,7 +62,7 @@ public class UseFurnitureEvent extends MessageHandler { } } - private boolean handleMonsterPlantSeed(Room room, HabboItem item) { + private boolean handleMonsterPlantSeed(Room room, RoomItem item) { if (item instanceof InteractionMonsterPlantSeed) { Emulator.getThreading().run(new QueryDeleteHabboItem(item.getId())); @@ -72,7 +73,7 @@ public class UseFurnitureEvent extends MessageHandler { room.sendComposer(new RemoveFloorItemComposer(item, true).compose()); room.removeHabboItem(item); room.updateTile(room.getLayout().getTile(item.getX(), item.getY())); - room.placePet(pet, item.getX(), item.getY(), item.getZ()); + room.getRoomUnitManager().placePet(pet, room, item.getX(), item.getY(), item.getZ()); pet.cycle(); room.sendComposer(new UserUpdateComposer(pet.getRoomUnit()).compose()); return true; @@ -80,7 +81,7 @@ public class UseFurnitureEvent extends MessageHandler { return false; } - private int getRarity(HabboItem item, boolean isRare) { + private int getRarity(RoomItem item, boolean isRare) { if (item.getExtradata().isEmpty() || Integer.parseInt(item.getExtradata()) - 1 < 0) { return isRare ? InteractionMonsterPlantSeed.randomGoldenRarityLevel() : InteractionMonsterPlantSeed.randomRarityLevel(); } else { diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/UseWallItemEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/UseWallItemEvent.java index a59b3232..2ae4f89e 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/UseWallItemEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/UseWallItemEvent.java @@ -2,7 +2,7 @@ package com.eu.habbo.messages.incoming.rooms.items; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.incoming.MessageHandler; import com.eu.habbo.plugin.Event; import com.eu.habbo.plugin.events.furniture.FurnitureToggleEvent; @@ -10,7 +10,7 @@ import com.eu.habbo.plugin.events.furniture.FurnitureToggleEvent; public class UseWallItemEvent extends MessageHandler { @Override public void handle() throws Exception { - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); if (room == null) return; @@ -18,7 +18,7 @@ public class UseWallItemEvent extends MessageHandler { int itemId = this.packet.readInt(); int state = this.packet.readInt(); - HabboItem item = room.getHabboItem(itemId); + RoomItem item = room.getHabboItem(itemId); if (item == null) return; diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/jukebox/AddJukeboxDiskEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/jukebox/AddJukeboxDiskEvent.java index 402281f6..d24eb1b2 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/jukebox/AddJukeboxDiskEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/jukebox/AddJukeboxDiskEvent.java @@ -1,14 +1,14 @@ package com.eu.habbo.messages.incoming.rooms.items.jukebox; import com.eu.habbo.habbohotel.items.interactions.InteractionMusicDisc; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; import com.eu.habbo.messages.incoming.MessageHandler; public class AddJukeboxDiskEvent extends MessageHandler { @Override public void handle() { - if (!this.client.getHabbo().getHabboInfo().getCurrentRoom().hasRights(this.client.getHabbo())) return; + if (!this.client.getHabbo().getRoomUnit().getRoom().hasRights(this.client.getHabbo())) return; int itemId = this.packet.readInt(); int slotId = this.packet.readInt(); @@ -16,10 +16,10 @@ public class AddJukeboxDiskEvent extends MessageHandler { Habbo habbo = this.client.getHabbo(); if (habbo != null) { - HabboItem item = habbo.getInventory().getItemsComponent().getHabboItem(itemId); + RoomItem item = habbo.getInventory().getItemsComponent().getHabboItem(itemId); if (item instanceof InteractionMusicDisc interactionMusicDisc && item.getRoomId() == 0) { - this.client.getHabbo().getHabboInfo().getCurrentRoom().getTraxManager().addSong(interactionMusicDisc, habbo); + this.client.getHabbo().getRoomUnit().getRoom().getTraxManager().addSong(interactionMusicDisc, habbo); } } } diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/jukebox/JukeboxEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/jukebox/JukeboxEvent.java index bef71287..31640475 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/jukebox/JukeboxEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/jukebox/JukeboxEvent.java @@ -7,9 +7,9 @@ import com.eu.habbo.messages.outgoing.rooms.items.jukebox.UserSongDisksInventory public abstract class JukeboxEvent extends MessageHandler { protected void updateHabboWithCurrentPlaying() { - TraxManager traxManager = this.client.getHabbo().getHabboInfo().getCurrentRoom().getTraxManager(); + TraxManager traxManager = this.client.getHabbo().getRoomUnit().getRoom().getTraxManager(); this.client.sendResponse(new JukeboxSongDisksMessageComposer(traxManager.getSongs(), traxManager.totalLength())); this.client.sendResponse(new UserSongDisksInventoryMessageComposer(traxManager.myList(this.client.getHabbo()))); - this.client.getHabbo().getHabboInfo().getCurrentRoom().getTraxManager().updateCurrentPlayingSong(this.client.getHabbo()); + this.client.getHabbo().getRoomUnit().getRoom().getTraxManager().updateCurrentPlayingSong(this.client.getHabbo()); } } diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/jukebox/RemoveJukeboxDiskEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/jukebox/RemoveJukeboxDiskEvent.java index 7902048d..454880bb 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/jukebox/RemoveJukeboxDiskEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/jukebox/RemoveJukeboxDiskEvent.java @@ -8,10 +8,10 @@ public class RemoveJukeboxDiskEvent extends MessageHandler { public void handle() { int index = this.packet.readInt(); - InteractionMusicDisc musicDisc = this.client.getHabbo().getHabboInfo().getCurrentRoom().getTraxManager().getSongs().get(index); + InteractionMusicDisc musicDisc = this.client.getHabbo().getRoomUnit().getRoom().getTraxManager().getSongs().get(index); if (musicDisc != null) { - this.client.getHabbo().getHabboInfo().getCurrentRoom().getTraxManager().removeSong(musicDisc.getId()); + this.client.getHabbo().getRoomUnit().getRoom().getTraxManager().removeSong(musicDisc.getId()); } } } diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/lovelock/FriendFurniConfirmLockEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/lovelock/FriendFurniConfirmLockEvent.java index 98313948..62fd5e46 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/lovelock/FriendFurniConfirmLockEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/lovelock/FriendFurniConfirmLockEvent.java @@ -1,8 +1,8 @@ package com.eu.habbo.messages.incoming.rooms.items.lovelock; import com.eu.habbo.habbohotel.items.interactions.InteractionLoveLock; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; import com.eu.habbo.messages.incoming.MessageHandler; import com.eu.habbo.messages.outgoing.rooms.items.lovelock.FriendFurniCancelLockMessageComposer; import com.eu.habbo.messages.outgoing.rooms.items.lovelock.FriendFurniOtherLockConfirmedMessageComposer; @@ -13,10 +13,10 @@ public class FriendFurniConfirmLockEvent extends MessageHandler { int itemId = this.packet.readInt(); if (this.packet.readBoolean()) { - if (this.client.getHabbo().getHabboInfo().getCurrentRoom() == null) + if (this.client.getHabbo().getRoomUnit().getRoom() == null) return; - HabboItem item = this.client.getHabbo().getHabboInfo().getCurrentRoom().getHabboItem(itemId); + RoomItem item = this.client.getHabbo().getRoomUnit().getRoom().getHabboItem(itemId); if (item == null) return; @@ -31,7 +31,7 @@ public class FriendFurniConfirmLockEvent extends MessageHandler { } if (userId > 0) { - Habbo habbo = this.client.getHabbo().getHabboInfo().getCurrentRoom().getHabbo(userId); + Habbo habbo = this.client.getHabbo().getRoomUnit().getRoom().getRoomUnitManager().getRoomHabboById(userId); if (habbo != null) { habbo.getClient().sendResponse(new FriendFurniOtherLockConfirmedMessageComposer((InteractionLoveLock) item)); @@ -39,7 +39,7 @@ public class FriendFurniConfirmLockEvent extends MessageHandler { habbo.getClient().sendResponse(new FriendFurniCancelLockMessageComposer((InteractionLoveLock) item)); this.client.sendResponse(new FriendFurniCancelLockMessageComposer((InteractionLoveLock) item)); - ((InteractionLoveLock) item).lock(habbo, this.client.getHabbo(), this.client.getHabbo().getHabboInfo().getCurrentRoom()); + ((InteractionLoveLock) item).lock(habbo, this.client.getHabbo(), this.client.getHabbo().getRoomUnit().getRoom()); } } } diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/rentablespace/RentableSpaceCancelRentEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/rentablespace/RentableSpaceCancelRentEvent.java index b4e97674..b7df07a5 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/rentablespace/RentableSpaceCancelRentEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/rentablespace/RentableSpaceCancelRentEvent.java @@ -3,7 +3,7 @@ package com.eu.habbo.messages.incoming.rooms.items.rentablespace; import com.eu.habbo.habbohotel.items.interactions.InteractionRentableSpace; import com.eu.habbo.habbohotel.permissions.Permission; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.incoming.MessageHandler; public class RentableSpaceCancelRentEvent extends MessageHandler { @@ -11,14 +11,14 @@ public class RentableSpaceCancelRentEvent extends MessageHandler { public void handle() { int itemId = this.packet.readInt(); - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); if (room == null) return; - HabboItem item = room.getHabboItem(itemId); + RoomItem item = room.getHabboItem(itemId); - if (room.getOwnerId() == this.client.getHabbo().getHabboInfo().getId() || + if (room.getRoomInfo().getOwnerInfo().getId() == this.client.getHabbo().getHabboInfo().getId() || this.client.getHabbo().hasRight(Permission.ACC_ANYROOMOWNER)) { if (item instanceof InteractionRentableSpace) { ((InteractionRentableSpace) item).endRent(); diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/rentablespace/RentableSpaceRentEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/rentablespace/RentableSpaceRentEvent.java index 5dc6abb7..5c1b2cd3 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/rentablespace/RentableSpaceRentEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/rentablespace/RentableSpaceRentEvent.java @@ -2,7 +2,7 @@ package com.eu.habbo.messages.incoming.rooms.items.rentablespace; import com.eu.habbo.habbohotel.items.interactions.InteractionRentableSpace; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.incoming.MessageHandler; public class RentableSpaceRentEvent extends MessageHandler { @@ -10,12 +10,12 @@ public class RentableSpaceRentEvent extends MessageHandler { public void handle() { int itemId = this.packet.readInt(); - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); if (room == null) return; - HabboItem item = room.getHabboItem(itemId); + RoomItem item = room.getHabboItem(itemId); if (!(item instanceof InteractionRentableSpace)) return; diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/youtube/ControlYoutubeDisplayPlaybackEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/youtube/ControlYoutubeDisplayPlaybackEvent.java index b6b5805a..457f1714 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/youtube/ControlYoutubeDisplayPlaybackEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/youtube/ControlYoutubeDisplayPlaybackEvent.java @@ -2,11 +2,9 @@ package com.eu.habbo.messages.incoming.rooms.items.youtube; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.items.interactions.InteractionYoutubeTV; -import com.eu.habbo.habbohotel.permissions.Permission; import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; -import com.eu.habbo.messages.incoming.MessageHandler; import com.eu.habbo.messages.outgoing.rooms.items.youtube.YoutubeControlVideoMessageComposer; import com.eu.habbo.messages.outgoing.rooms.items.youtube.YoutubeDisplayVideoMessageComposer; import com.eu.habbo.threading.runnables.YoutubeAdvanceVideo; @@ -47,8 +45,8 @@ public class ControlYoutubeDisplayPlaybackEvent extends YoutubeEvent { if(!validate(habbo)) return; - Room room = habbo.getHabboInfo().getCurrentRoom(); - HabboItem item = this.client.getHabbo().getHabboInfo().getCurrentRoom().getHabboItem(itemId); + Room room = habbo.getRoomUnit().getRoom(); + RoomItem item = this.client.getHabbo().getRoomUnit().getRoom().getHabboItem(itemId); if (!(item instanceof InteractionYoutubeTV tv)) return; diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/youtube/GetYoutubeDisplayStatusEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/youtube/GetYoutubeDisplayStatusEvent.java index 4dfc7fd1..0da80f51 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/youtube/GetYoutubeDisplayStatusEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/youtube/GetYoutubeDisplayStatusEvent.java @@ -3,7 +3,7 @@ package com.eu.habbo.messages.incoming.rooms.items.youtube; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.items.YoutubeManager; import com.eu.habbo.habbohotel.items.interactions.InteractionYoutubeTV; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.incoming.MessageHandler; import com.eu.habbo.messages.outgoing.handshake.ErrorReportComposer; import com.eu.habbo.messages.outgoing.rooms.items.youtube.YoutubeDisplayPlaylistsComposer; @@ -19,8 +19,8 @@ public class GetYoutubeDisplayStatusEvent extends MessageHandler { public void handle() { int itemId = this.packet.readInt(); - if (this.client.getHabbo().getHabboInfo().getCurrentRoom() != null) { - HabboItem item = this.client.getHabbo().getHabboInfo().getCurrentRoom().getHabboItem(itemId); + if (this.client.getHabbo().getRoomUnit().getRoom() != null) { + RoomItem item = this.client.getHabbo().getRoomUnit().getRoom().getHabboItem(itemId); if (item instanceof InteractionYoutubeTV tv) { diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/youtube/SetYoutubeDisplayPlaylistEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/youtube/SetYoutubeDisplayPlaylistEvent.java index 7f9fbeca..d14a1e33 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/youtube/SetYoutubeDisplayPlaylistEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/youtube/SetYoutubeDisplayPlaylistEvent.java @@ -3,11 +3,9 @@ package com.eu.habbo.messages.incoming.rooms.items.youtube; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.items.YoutubeManager; import com.eu.habbo.habbohotel.items.interactions.InteractionYoutubeTV; -import com.eu.habbo.habbohotel.permissions.Permission; import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; -import com.eu.habbo.messages.incoming.MessageHandler; import com.eu.habbo.messages.outgoing.rooms.items.youtube.YoutubeDisplayVideoMessageComposer; import com.eu.habbo.threading.runnables.YoutubeAdvanceVideo; @@ -23,10 +21,10 @@ public class SetYoutubeDisplayPlaylistEvent extends YoutubeEvent { if (!validate(habbo)) return; - Room room = habbo.getHabboInfo().getCurrentRoom(); + Room room = habbo.getRoomUnit().getRoom(); - HabboItem item = this.client.getHabbo().getHabboInfo().getCurrentRoom().getHabboItem(itemId); + RoomItem item = this.client.getHabbo().getRoomUnit().getRoom().getHabboItem(itemId); if (!(item instanceof InteractionYoutubeTV)) return; diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/youtube/YoutubeEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/youtube/YoutubeEvent.java index c7e43781..ec893441 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/youtube/YoutubeEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/youtube/YoutubeEvent.java @@ -12,12 +12,12 @@ public abstract class YoutubeEvent extends MessageHandler { return false; } - Room room = habbo.getHabboInfo().getCurrentRoom(); + Room room = habbo.getRoomUnit().getRoom(); if (room == null) { return false; } - if (!room.isOwner(habbo) && !habbo.hasRight(Permission.ACC_ANYROOMOWNER)) { + if (!room.getRoomInfo().isRoomOwner(habbo) && !habbo.hasRight(Permission.ACC_ANYROOMOWNER)) { return false; } diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/BreedPetsEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/BreedPetsEvent.java index 016aafba..2d022131 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/BreedPetsEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/BreedPetsEvent.java @@ -10,8 +10,10 @@ public class BreedPetsEvent extends MessageHandler { int unknownInt = this.packet.readInt(); //Something state. 2 = accept if (unknownInt == 0) { - Pet petOne = this.client.getHabbo().getHabboInfo().getCurrentRoom().getPet(this.packet.readInt()); - Pet petTwo = this.client.getHabbo().getHabboInfo().getCurrentRoom().getPet(this.packet.readInt()); + int petId1 = this.packet.readInt(); + Pet petOne = this.client.getHabbo().getRoomUnit().getRoom().getRoomUnitManager().getRoomPetById(petId1); + int petId = this.packet.readInt(); + Pet petTwo = this.client.getHabbo().getRoomUnit().getRoom().getRoomUnitManager().getRoomPetById(petId); if (petOne == null || petTwo == null || petOne == petTwo) { //TODO Add error diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/CancelPetBreedingEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/CancelPetBreedingEvent.java index 58b0dc53..a31733ad 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/CancelPetBreedingEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/CancelPetBreedingEvent.java @@ -1,7 +1,7 @@ package com.eu.habbo.messages.incoming.rooms.pets; import com.eu.habbo.habbohotel.items.interactions.pets.InteractionPetBreedingNest; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.incoming.MessageHandler; public class CancelPetBreedingEvent extends MessageHandler { @@ -9,7 +9,7 @@ public class CancelPetBreedingEvent extends MessageHandler { public void handle() { int itemId = this.packet.readInt(); - HabboItem item = this.client.getHabbo().getHabboInfo().getCurrentRoom().getHabboItem(itemId); + RoomItem item = this.client.getHabbo().getRoomUnit().getRoom().getHabboItem(itemId); if (item instanceof InteractionPetBreedingNest) { ((InteractionPetBreedingNest) item).stopBreeding(this.client.getHabbo()); diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/CompostPlantEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/CompostPlantEvent.java index f024f092..816225f6 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/CompostPlantEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/CompostPlantEvent.java @@ -5,7 +5,7 @@ import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.pets.MonsterplantPet; import com.eu.habbo.habbohotel.pets.Pet; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.incoming.MessageHandler; import com.eu.habbo.messages.outgoing.rooms.items.ObjectAddMessageComposer; import lombok.extern.slf4j.Slf4j; @@ -22,8 +22,8 @@ public class CompostPlantEvent extends MessageHandler { public void handle() { int petId = this.packet.readInt(); - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); - Pet pet = room.getPet(petId); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); + Pet pet = room.getRoomUnitManager().getRoomPetById(petId); if (pet != null) { if (pet instanceof MonsterplantPet) { @@ -32,10 +32,10 @@ public class CompostPlantEvent extends MessageHandler { Item baseItem = Emulator.getGameEnvironment().getItemManager().getItem("mnstr_compost"); if (baseItem != null) { - HabboItem compost = Emulator.getGameEnvironment().getItemManager().createItem(pet.getUserId(), baseItem, 0, 0, ""); - compost.setX(pet.getRoomUnit().getX()); - compost.setY(pet.getRoomUnit().getY()); - compost.setZ(pet.getRoomUnit().getZ()); + RoomItem compost = Emulator.getGameEnvironment().getItemManager().createItem(pet.getUserId(), baseItem, 0, 0, ""); + compost.setX(pet.getRoomUnit().getCurrentPosition().getX()); + compost.setY(pet.getRoomUnit().getCurrentPosition().getY()); + compost.setZ(pet.getRoomUnit().getCurrentZ()); compost.setRotation(pet.getRoomUnit().getBodyRotation().getValue()); room.addHabboItem(compost); room.sendComposer(new ObjectAddMessageComposer(compost, this.client.getHabbo().getHabboInfo().getUsername()).compose()); diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/ConfirmPetBreedingEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/ConfirmPetBreedingEvent.java index bc0c0fbf..fa412627 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/ConfirmPetBreedingEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/ConfirmPetBreedingEvent.java @@ -1,7 +1,7 @@ package com.eu.habbo.messages.incoming.rooms.pets; import com.eu.habbo.habbohotel.items.interactions.pets.InteractionPetBreedingNest; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.incoming.MessageHandler; public class ConfirmPetBreedingEvent extends MessageHandler { @@ -13,7 +13,7 @@ public class ConfirmPetBreedingEvent extends MessageHandler { int petOneId = this.packet.readInt(); int petTwoId = this.packet.readInt(); - HabboItem item = this.client.getHabbo().getHabboInfo().getCurrentRoom().getHabboItem(itemId); + RoomItem item = this.client.getHabbo().getRoomUnit().getRoom().getHabboItem(itemId); if (item instanceof InteractionPetBreedingNest) { ((InteractionPetBreedingNest) item).breed(this.client.getHabbo(), name); diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/CustomizePetWithFurniEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/CustomizePetWithFurniEvent.java index 87d1d190..692bdfa3 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/CustomizePetWithFurniEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/CustomizePetWithFurniEvent.java @@ -7,7 +7,7 @@ import com.eu.habbo.habbohotel.pets.MonsterplantPet; import com.eu.habbo.habbohotel.pets.Pet; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomUnitStatus; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.incoming.MessageHandler; import com.eu.habbo.messages.outgoing.rooms.items.RemoveFloorItemComposer; import com.eu.habbo.messages.outgoing.rooms.pets.PetFigureUpdateComposer; @@ -20,17 +20,17 @@ public class CustomizePetWithFurniEvent extends MessageHandler { public void handle() { int itemId = this.packet.readInt(); - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); if (room == null) return; - HabboItem item = this.client.getHabbo().getHabboInfo().getCurrentRoom().getHabboItem(itemId); + RoomItem item = this.client.getHabbo().getRoomUnit().getRoom().getHabboItem(itemId); if (item == null) return; int petId = this.packet.readInt(); - Pet pet = this.client.getHabbo().getHabboInfo().getCurrentRoom().getPet(petId); + Pet pet = this.client.getHabbo().getRoomUnit().getRoom().getRoomUnitManager().getRoomPetById(petId); if (pet instanceof HorsePet) { if (item.getBaseItem().getName().toLowerCase().startsWith("horse_dye")) { @@ -81,7 +81,7 @@ public class CustomizePetWithFurniEvent extends MessageHandler { if (pet.isNeedsUpdate()) { Emulator.getThreading().run(pet); - this.client.getHabbo().getHabboInfo().getCurrentRoom().sendComposer(new PetFigureUpdateComposer((HorsePet) pet).compose()); + this.client.getHabbo().getRoomUnit().getRoom().sendComposer(new PetFigureUpdateComposer((HorsePet) pet).compose()); room.removeHabboItem(item); room.sendComposer(new RemoveFloorItemComposer(item, true).compose()); @@ -92,15 +92,15 @@ public class CustomizePetWithFurniEvent extends MessageHandler { if (item.getBaseItem().getName().equalsIgnoreCase("mnstr_revival")) { if (((MonsterplantPet) pet).isDead()) { ((MonsterplantPet) pet).setDeathTimestamp(Emulator.getIntUnixTimestamp() + MonsterplantPet.TIME_TO_LIVE); - pet.getRoomUnit().clearStatus(); + pet.getRoomUnit().clearStatuses(); pet.getRoomUnit().setStatus(RoomUnitStatus.GESTURE, "rev"); pet.setPacketUpdate(true); - this.client.getHabbo().getHabboInfo().getCurrentRoom().removeHabboItem(item); - this.client.getHabbo().getHabboInfo().getCurrentRoom().sendComposer(new RemoveFloorItemComposer(item).compose()); - this.client.getHabbo().getHabboInfo().getCurrentRoom().sendComposer(new UserUpdateComposer(pet.getRoomUnit()).compose()); - this.client.getHabbo().getHabboInfo().getCurrentRoom().sendComposer(new PetStatusUpdateComposer(pet).compose()); - this.client.getHabbo().getHabboInfo().getCurrentRoom().updateTiles(room.getLayout().getTilesAt(room.getLayout().getTile(item.getX(), item.getY()), item.getBaseItem().getWidth(), item.getBaseItem().getLength(), item.getRotation())); + this.client.getHabbo().getRoomUnit().getRoom().removeHabboItem(item); + this.client.getHabbo().getRoomUnit().getRoom().sendComposer(new RemoveFloorItemComposer(item).compose()); + this.client.getHabbo().getRoomUnit().getRoom().sendComposer(new UserUpdateComposer(pet.getRoomUnit()).compose()); + this.client.getHabbo().getRoomUnit().getRoom().sendComposer(new PetStatusUpdateComposer(pet).compose()); + this.client.getHabbo().getRoomUnit().getRoom().updateTiles(room.getLayout().getTilesAt(room.getLayout().getTile(item.getX(), item.getY()), item.getBaseItem().getWidth(), item.getBaseItem().getLength(), item.getRotation())); AchievementManager.progressAchievement(this.client.getHabbo(), Emulator.getGameEnvironment().getAchievementManager().getAchievement("MonsterPlantHealer")); pet.getRoomUnit().removeStatus(RoomUnitStatus.GESTURE); Emulator.getThreading().run(new QueryDeleteHabboItem(item.getId())); @@ -108,15 +108,15 @@ public class CustomizePetWithFurniEvent extends MessageHandler { } else if (item.getBaseItem().getName().equalsIgnoreCase("mnstr_fert")) { if (!((MonsterplantPet) pet).isFullyGrown()) { pet.setCreated(pet.getCreated() - MonsterplantPet.GROW_TIME); - pet.getRoomUnit().clearStatus(); + pet.getRoomUnit().clearStatuses(); pet.cycle(); pet.getRoomUnit().setStatus(RoomUnitStatus.GESTURE, "spd"); pet.getRoomUnit().setStatus(RoomUnitStatus.fromString("grw" + ((MonsterplantPet) pet).getGrowthStage()), ""); - this.client.getHabbo().getHabboInfo().getCurrentRoom().removeHabboItem(item); - this.client.getHabbo().getHabboInfo().getCurrentRoom().sendComposer(new RemoveFloorItemComposer(item).compose()); - this.client.getHabbo().getHabboInfo().getCurrentRoom().sendComposer(new UserUpdateComposer(pet.getRoomUnit()).compose()); - this.client.getHabbo().getHabboInfo().getCurrentRoom().sendComposer(new PetStatusUpdateComposer(pet).compose()); - this.client.getHabbo().getHabboInfo().getCurrentRoom().updateTiles(room.getLayout().getTilesAt(room.getLayout().getTile(item.getX(), item.getY()), item.getBaseItem().getWidth(), item.getBaseItem().getLength(), item.getRotation())); + this.client.getHabbo().getRoomUnit().getRoom().removeHabboItem(item); + this.client.getHabbo().getRoomUnit().getRoom().sendComposer(new RemoveFloorItemComposer(item).compose()); + this.client.getHabbo().getRoomUnit().getRoom().sendComposer(new UserUpdateComposer(pet.getRoomUnit()).compose()); + this.client.getHabbo().getRoomUnit().getRoom().sendComposer(new PetStatusUpdateComposer(pet).compose()); + this.client.getHabbo().getRoomUnit().getRoom().updateTiles(room.getLayout().getTilesAt(room.getLayout().getTile(item.getX(), item.getY()), item.getBaseItem().getWidth(), item.getBaseItem().getLength(), item.getRotation())); pet.getRoomUnit().removeStatus(RoomUnitStatus.GESTURE); pet.cycle(); Emulator.getThreading().run(new QueryDeleteHabboItem(item.getId())); @@ -131,14 +131,14 @@ public class CustomizePetWithFurniEvent extends MessageHandler { { ((MonsterplantPet) pet).setCanBreed(true); - pet.getRoomUnit().clearStatus(); + pet.getRoomUnit().clearStatuses(); pet.getRoomUnit().setStatus(RoomUnitStatus.GESTURE, "reb"); - this.client.getHabbo().getHabboInfo().getCurrentRoom().removeHabboItem(item); - this.client.getHabbo().getHabboInfo().getCurrentRoom().sendComposer(new RemoveFloorItemComposer(item).compose()); - this.client.getHabbo().getHabboInfo().getCurrentRoom().sendComposer(new UserUpdateComposer(pet.getRoomUnit()).compose()); - this.client.getHabbo().getHabboInfo().getCurrentRoom().sendComposer(new PetStatusUpdateComposer(pet).compose()); - this.client.getHabbo().getHabboInfo().getCurrentRoom().updateTiles(room.getLayout().getTilesAt(room.getLayout().getTile(item.getX(), item.getY()), item.getBaseItem().getWidth(), item.getBaseItem().getLength(), item.getRotation())); + this.client.getHabbo().getRoomUnit().getRoom().removeHabboItem(item); + this.client.getHabbo().getRoomUnit().getRoom().sendComposer(new RemoveFloorItemComposer(item).compose()); + this.client.getHabbo().getRoomUnit().getRoom().sendComposer(new UserUpdateComposer(pet.getRoomUnit()).compose()); + this.client.getHabbo().getRoomUnit().getRoom().sendComposer(new PetStatusUpdateComposer(pet).compose()); + this.client.getHabbo().getRoomUnit().getRoom().updateTiles(room.getLayout().getTilesAt(room.getLayout().getTile(item.getX(), item.getY()), item.getBaseItem().getWidth(), item.getBaseItem().getLength(), item.getRotation())); pet.getRoomUnit().removeStatus(RoomUnitStatus.GESTURE); Emulator.getThreading().run(new QueryDeleteHabboItem(item.getId())); } diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/GetPetCommandsEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/GetPetCommandsEvent.java index e3dbf722..dcc9ea99 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/GetPetCommandsEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/GetPetCommandsEvent.java @@ -9,10 +9,10 @@ public class GetPetCommandsEvent extends MessageHandler { public void handle() { int petId = this.packet.readInt(); - if (this.client.getHabbo().getHabboInfo().getCurrentRoom() == null) + if (this.client.getHabbo().getRoomUnit().getRoom() == null) return; - Pet pet = this.client.getHabbo().getHabboInfo().getCurrentRoom().getPet(petId); + Pet pet = this.client.getHabbo().getRoomUnit().getRoom().getRoomUnitManager().getRoomPetById(petId); if (pet != null) this.client.sendResponse(new PetTrainingPanelComposer(pet)); diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/GetPetInfoEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/GetPetInfoEvent.java index f357f711..bf5b49a9 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/GetPetInfoEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/GetPetInfoEvent.java @@ -10,12 +10,12 @@ public class GetPetInfoEvent extends MessageHandler { public void handle() { int petId = this.packet.readInt(); - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); if (room == null) return; - Pet pet = room.getPet(petId); + Pet pet = room.getRoomUnitManager().getRoomPetById(petId); if (pet != null) { this.client.sendResponse(new PetInfoMessageComposer(pet, room, this.client.getHabbo())); diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/MountPetEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/MountPetEvent.java index eeab20d1..906e9dd0 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/MountPetEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/MountPetEvent.java @@ -16,20 +16,21 @@ public class MountPetEvent extends MessageHandler { public void handle() { int petId = this.packet.readInt(); Habbo habbo = this.client.getHabbo(); - Room room = habbo.getHabboInfo().getCurrentRoom(); + Room room = habbo.getRoomUnit().getRoom(); - if (room == null) + if (room == null) { return; + } - Pet pet = room.getPet(petId); + Pet pet = room.getRoomUnitManager().getRoomPetById(petId); - if (!(pet instanceof RideablePet rideablePet)) + if (!(pet instanceof RideablePet rideablePet)) { return; + } //dismount if (habbo.getHabboInfo().getRiding() != null) { - habbo.getHabboInfo().dismountPet(); - return; + habbo.getHabboInfo().dismountPet(room); } // someone is already on it @@ -40,7 +41,7 @@ public class MountPetEvent extends MessageHandler { if (!rideablePet.anyoneCanRide() && habbo.getHabboInfo().getId() != rideablePet.getUserId()) return; - List availableTiles = room.getLayout().getWalkableTilesAround(pet.getRoomUnit().getCurrentLocation()); + List availableTiles = room.getLayout().getWalkableTilesAround(pet.getRoomUnit().getCurrentPosition()); // if cant reach it then cancel if (availableTiles.isEmpty()) diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/MovePetEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/MovePetEvent.java index 3a1337e8..a29be34b 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/MovePetEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/MovePetEvent.java @@ -3,17 +3,18 @@ package com.eu.habbo.messages.incoming.rooms.pets; import com.eu.habbo.habbohotel.pets.Pet; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; -import com.eu.habbo.habbohotel.rooms.RoomUserRotation; +import com.eu.habbo.habbohotel.rooms.entities.RoomRotation; import com.eu.habbo.messages.incoming.MessageHandler; import com.eu.habbo.messages.outgoing.rooms.users.UserUpdateComposer; public class MovePetEvent extends MessageHandler { @Override public void handle() { - Pet pet = this.client.getHabbo().getHabboInfo().getCurrentRoom().getPet(this.packet.readInt()); + int petId = this.packet.readInt(); + Pet pet = this.client.getHabbo().getRoomUnit().getRoom().getRoomUnitManager().getRoomPetById(petId); if (pet != null) { - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); if (room != null && room.hasRights(this.client.getHabbo())) { if (pet.getRoomUnit() != null) { int x = this.packet.readInt(); @@ -24,9 +25,9 @@ public class MovePetEvent extends MessageHandler { if (tile != null) { pet.getRoomUnit().setLocation(tile); pet.getRoomUnit().setPreviousLocation(tile); - pet.getRoomUnit().setZ(tile.getZ()); - pet.getRoomUnit().setRotation(RoomUserRotation.fromValue(this.packet.readInt())); - pet.getRoomUnit().setPreviousLocationZ(pet.getRoomUnit().getZ()); + pet.getRoomUnit().setCurrentZ(tile.getZ()); + pet.getRoomUnit().setRotation(RoomRotation.fromValue(this.packet.readInt())); + pet.getRoomUnit().setPreviousLocationZ(pet.getRoomUnit().getCurrentZ()); room.sendComposer(new UserUpdateComposer(pet.getRoomUnit()).compose()); pet.setNeedsUpdate(true); } diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/OpenPetPackageEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/OpenPetPackageEvent.java index 0e001ca5..cee8c416 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/OpenPetPackageEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/OpenPetPackageEvent.java @@ -4,7 +4,7 @@ import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.pets.Pet; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.incoming.MessageHandler; import com.eu.habbo.messages.outgoing.catalog.PurchaseErrorMessageComposer; import com.eu.habbo.messages.outgoing.rooms.HeightMapUpdateMessageComposer; @@ -18,10 +18,10 @@ public class OpenPetPackageEvent extends MessageHandler { int itemId = this.packet.readInt(); String name = this.packet.readString(); - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); if (room != null) { - HabboItem item = room.getHabboItem(itemId); + RoomItem item = room.getHabboItem(itemId); if (item != null && item.getUserId() == this.client.getHabbo().getHabboInfo().getId()) { if (!name.matches("^[a-zA-Z0-9]*$")) { this.client.sendResponse(new PerkAllowancesComposer(itemId, PerkAllowancesComposer.CONTAINS_INVALID_CHARS, name.replaceAll("^[a-zA-Z0-9]*$", ""))); @@ -55,11 +55,11 @@ public class OpenPetPackageEvent extends MessageHandler { } if (pet != null) { - room.placePet(pet, item.getX(), item.getY(), item.getZ()); + room.getRoomUnitManager().placePet(pet, room, item.getX(), item.getY(), item.getZ()); pet.setUserId(this.client.getHabbo().getHabboInfo().getId()); pet.setNeedsUpdate(true); pet.getRoomUnit().setLocation(room.getLayout().getTile(item.getX(), item.getY())); - pet.getRoomUnit().setZ(item.getZ()); + pet.getRoomUnit().setCurrentZ(item.getZ()); Emulator.getThreading().run(new QueryDeleteHabboItem(item.getId())); room.removeHabboItem(item); room.sendComposer(new RemoveFloorItemComposer(item).compose()); diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/PlacePetEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/PlacePetEvent.java index e99af933..ab3185ea 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/PlacePetEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/PlacePetEvent.java @@ -3,7 +3,12 @@ package com.eu.habbo.messages.incoming.rooms.pets; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.permissions.Permission; import com.eu.habbo.habbohotel.pets.Pet; -import com.eu.habbo.habbohotel.rooms.*; +import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.RoomTile; +import com.eu.habbo.habbohotel.rooms.RoomUnitStatus; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnitType; +import com.eu.habbo.habbohotel.rooms.entities.units.types.RoomPet; import com.eu.habbo.messages.incoming.MessageHandler; import com.eu.habbo.messages.outgoing.generic.alerts.PetPlacingErrorComposer; import com.eu.habbo.messages.outgoing.inventory.PetRemovedFromInventoryComposer; @@ -12,14 +17,16 @@ import com.eu.habbo.messages.outgoing.rooms.pets.RoomPetComposer; public class PlacePetEvent extends MessageHandler { @Override public void handle() { - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); if (room == null) return; - if (this.client.getHabbo().getHabboInfo().getId() != room.getOwnerId() && !room.isAllowPets() && !(this.client.getHabbo().hasRight(Permission.ACC_ANYROOMOWNER) || this.client.getHabbo().hasRight(Permission.ACC_PLACEFURNI))) { - this.client.sendResponse(new PetPlacingErrorComposer(PetPlacingErrorComposer.ROOM_ERROR_PETS_FORBIDDEN_IN_FLAT)); - return; + if (this.client.getHabbo().getHabboInfo().getId() != room.getRoomInfo().getOwnerInfo().getId()) { + if (!room.getRoomInfo().isAllowPets() && !(this.client.getHabbo().hasRight(Permission.ACC_ANYROOMOWNER) || this.client.getHabbo().hasRight(Permission.ACC_PLACEFURNI))) { + this.client.sendResponse(new PetPlacingErrorComposer(PetPlacingErrorComposer.ROOM_ERROR_PETS_FORBIDDEN_IN_FLAT)); + return; + } } int petId = this.packet.readInt(); @@ -29,7 +36,7 @@ public class PlacePetEvent extends MessageHandler { if (pet == null) { return; } - if (room.getCurrentPets().size() >= Room.MAXIMUM_PETS && !this.client.getHabbo().hasRight(Permission.ACC_UNLIMITED_PETS)) { + if (room.getRoomUnitManager().getCurrentRoomPets().size() >= Room.MAXIMUM_PETS && !this.client.getHabbo().hasRight(Permission.ACC_UNLIMITED_PETS)) { this.client.sendResponse(new PetPlacingErrorComposer(PetPlacingErrorComposer.ROOM_ERROR_MAX_PETS)); return; } @@ -38,11 +45,11 @@ public class PlacePetEvent extends MessageHandler { int y = this.packet.readInt(); RoomTile tile; - RoomTile playerTile = this.client.getHabbo().getRoomUnit().getCurrentLocation(); + RoomTile playerTile = this.client.getHabbo().getRoomUnit().getCurrentPosition(); - if ((x == 0 && y == 0) || !room.isOwner(this.client.getHabbo())) { + if ((x == 0 && y == 0) || !room.getRoomInfo().isRoomOwner(this.client.getHabbo())) { //Place the pet in front of the player. - tile = room.getLayout().getTileInFront(this.client.getHabbo().getRoomUnit().getCurrentLocation(), this.client.getHabbo().getRoomUnit().getBodyRotation().getValue()); + tile = room.getLayout().getTileInFront(this.client.getHabbo().getRoomUnit().getCurrentPosition(), this.client.getHabbo().getRoomUnit().getBodyRotation().getValue()); if (tile == null || !tile.isWalkable()) { this.client.sendResponse(new PetPlacingErrorComposer(PetPlacingErrorComposer.ROOM_ERROR_PETS_NO_FREE_TILES)); @@ -70,20 +77,20 @@ public class PlacePetEvent extends MessageHandler { RoomUnit roomUnit = pet.getRoomUnit(); if (roomUnit == null) { - roomUnit = new RoomUnit(); + roomUnit = new RoomPet(); } - roomUnit.setPathFinderRoom(room); + roomUnit.setRoom(room); roomUnit.setLocation(tile); - roomUnit.setZ(tile.getStackHeight()); + roomUnit.setCurrentZ(tile.getStackHeight()); roomUnit.setStatus(RoomUnitStatus.SIT, "0"); roomUnit.setRoomUnitType(RoomUnitType.PET); if (playerTile != null) { roomUnit.lookAtPoint(playerTile); } pet.setRoomUnit(roomUnit); - room.addPet(pet); + room.getRoomUnitManager().addRoomUnit(pet); pet.setNeedsUpdate(true); Emulator.getThreading().run(pet); room.sendComposer(new RoomPetComposer(pet).compose()); diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/RemovePetFromFlatEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/RemovePetFromFlatEvent.java index 3ed3c6a4..d7744512 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/RemovePetFromFlatEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/RemovePetFromFlatEvent.java @@ -15,15 +15,15 @@ public class RemovePetFromFlatEvent extends MessageHandler { public void handle() { int petId = this.packet.readInt(); - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); if (room == null) return; - Pet pet = room.getPet(petId); + Pet pet = room.getRoomUnitManager().getRoomPetById(petId); if (pet != null) { - if (this.client.getHabbo().getHabboInfo().getId() == pet.getUserId() || room.getOwnerId() == this.client.getHabbo().getHabboInfo().getId() || this.client.getHabbo().hasRight(Permission.ACC_ANYROOMOWNER)) { + if (this.client.getHabbo().getHabboInfo().getId() == pet.getUserId() || room.getRoomInfo().getOwnerInfo().getId() == this.client.getHabbo().getHabboInfo().getId() || this.client.getHabbo().hasRight(Permission.ACC_ANYROOMOWNER)) { if (!this.client.getHabbo().hasRight(Permission.ACC_UNLIMITED_PETS) && this.client.getHabbo().getInventory().getPetsComponent().getPets().size() >= PetManager.MAXIMUM_PET_INVENTORY_SIZE) { this.client.getHabbo().alert(Emulator.getTexts().getValue("error.pets.max.inventory").replace("%amount%", PetManager.MAXIMUM_PET_INVENTORY_SIZE + "")); return; @@ -31,7 +31,7 @@ public class RemovePetFromFlatEvent extends MessageHandler { if (pet instanceof RideablePet rideablePet) { if (rideablePet.getRider() != null) { - rideablePet.getRider().getHabboInfo().dismountPet(true); + rideablePet.getRider().getHabboInfo().dismountPet(true, room); } } diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/RemoveSaddleFromPetEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/RemoveSaddleFromPetEvent.java index 51fe2603..2f80abbc 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/RemoveSaddleFromPetEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/RemoveSaddleFromPetEvent.java @@ -5,7 +5,7 @@ import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.pets.HorsePet; import com.eu.habbo.habbohotel.pets.Pet; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.incoming.MessageHandler; import com.eu.habbo.messages.outgoing.inventory.FurniListInvalidateComposer; import com.eu.habbo.messages.outgoing.inventory.UnseenItemsComposer; @@ -23,8 +23,9 @@ public class RemoveSaddleFromPetEvent extends MessageHandler { @Override public void handle() { - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); - Pet pet = room.getPet(this.packet.readInt()); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); + int petId = this.packet.readInt(); + Pet pet = room.getRoomUnitManager().getRoomPetById(petId); if (!(pet instanceof HorsePet horse) || pet.getUserId() != this.client.getHabbo().getHabboInfo().getId()) return; @@ -54,9 +55,9 @@ public class RemoveSaddleFromPetEvent extends MessageHandler { horse.hasSaddle(false); horse.setNeedsUpdate(true); Emulator.getThreading().run(pet); - this.client.getHabbo().getHabboInfo().getCurrentRoom().sendComposer(new PetFigureUpdateComposer(horse).compose()); + this.client.getHabbo().getRoomUnit().getRoom().sendComposer(new PetFigureUpdateComposer(horse).compose()); - HabboItem saddle = Emulator.getGameEnvironment().getItemManager().createItem(this.client.getHabbo().getHabboInfo().getId(), saddleItem, 0, 0, ""); + RoomItem saddle = Emulator.getGameEnvironment().getItemManager().createItem(this.client.getHabbo().getHabboInfo().getId(), saddleItem, 0, 0, ""); this.client.getHabbo().getInventory().getItemsComponent().addItem(saddle); diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/RespectPetEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/RespectPetEvent.java index 23ea7f00..e61b8109 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/RespectPetEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/RespectPetEvent.java @@ -3,11 +3,11 @@ package com.eu.habbo.messages.incoming.rooms.pets; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.pets.MonsterplantPet; import com.eu.habbo.habbohotel.pets.Pet; -import com.eu.habbo.habbohotel.rooms.RoomTile; -import com.eu.habbo.messages.incoming.MessageHandler; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.threading.runnables.RoomUnitWalkToLocation; +import com.eu.habbo.habbohotel.rooms.RoomTile; import com.eu.habbo.habbohotel.users.Habbo; +import com.eu.habbo.messages.incoming.MessageHandler; +import com.eu.habbo.threading.runnables.RoomUnitWalkToLocation; import java.util.ArrayList; import java.util.List; @@ -21,10 +21,10 @@ public class RespectPetEvent extends MessageHandler { final Habbo habbo = this.client.getHabbo(); if (habbo == null) { return; } - final Room room = habbo.getHabboInfo().getCurrentRoom(); + final Room room = habbo.getRoomUnit().getRoom(); if (room == null) { return; } - final Pet pet = room.getPet(petId); + final Pet pet = room.getRoomUnitManager().getRoomPetById(petId); if (pet == null) { return; } if (habbo.getHabboStats().getPetRespectPointsToGive() > 0 || pet instanceof MonsterplantPet) { @@ -35,7 +35,7 @@ public class RespectPetEvent extends MessageHandler { Emulator.getThreading().run(pet); }); - RoomTile tile = habbo.getRoomUnit().getClosestAdjacentTile(pet.getRoomUnit().getX(), pet.getRoomUnit().getY(), true); + RoomTile tile = habbo.getRoomUnit().getClosestAdjacentTile(pet.getRoomUnit().getCurrentPosition().getX(), pet.getRoomUnit().getCurrentPosition().getY(), true); if(tile != null) { habbo.getRoomUnit().setGoalLocation(tile); } diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/TogglePetBreedingPermissionEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/TogglePetBreedingPermissionEvent.java index 45633ef4..be729dab 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/TogglePetBreedingPermissionEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/TogglePetBreedingPermissionEvent.java @@ -9,7 +9,7 @@ public class TogglePetBreedingPermissionEvent extends MessageHandler { public void handle() { int petId = this.packet.readInt(); - Pet pet = this.client.getHabbo().getHabboInfo().getCurrentRoom().getPet(petId); + Pet pet = this.client.getHabbo().getRoomUnit().getRoom().getRoomUnitManager().getRoomPetById(petId); if (pet != null) { if (pet.getUserId() == this.client.getHabbo().getHabboInfo().getId()) { diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/TogglePetRidingPermissionEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/TogglePetRidingPermissionEvent.java index ac7087ef..4eabeea3 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/TogglePetRidingPermissionEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/TogglePetRidingPermissionEvent.java @@ -11,10 +11,10 @@ public class TogglePetRidingPermissionEvent extends MessageHandler { public void handle() { int petId = this.packet.readInt(); - if (this.client.getHabbo().getHabboInfo().getCurrentRoom() == null) + if (this.client.getHabbo().getRoomUnit().getRoom() == null) return; - Pet pet = this.client.getHabbo().getHabboInfo().getCurrentRoom().getPet(petId); + Pet pet = this.client.getHabbo().getRoomUnit().getRoom().getRoomUnitManager().getRoomPetById(petId); if (pet == null || pet.getUserId() != this.client.getHabbo().getHabboInfo().getId() || !(pet instanceof RideablePet rideablePet)) return; @@ -23,7 +23,7 @@ public class TogglePetRidingPermissionEvent extends MessageHandler { rideablePet.setNeedsUpdate(true); if (!rideablePet.anyoneCanRide() && rideablePet.getRider() != null && rideablePet.getRider().getHabboInfo().getId() != this.client.getHabbo().getHabboInfo().getId()) { - rideablePet.getRider().getHabboInfo().dismountPet(); + rideablePet.getRider().getHabboInfo().dismountPet(this.client.getHabbo().getRoomUnit().getRoom()); } if (pet instanceof HorsePet) { diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/promotions/EditEventEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/promotions/EditEventEvent.java index f6a10972..600dc8b0 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/promotions/EditEventEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/promotions/EditEventEvent.java @@ -17,9 +17,9 @@ public class EditEventEvent extends MessageHandler { String promotionName = this.packet.readString(); String promotionDescription = this.packet.readString(); - Room room = Emulator.getGameEnvironment().getRoomManager().loadRoom(id); + Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(id); - if (room == null || room.getOwnerId() != this.client.getHabbo().getHabboInfo().getId() || !this.client.getHabbo().hasRight(Permission.ACC_ANYROOMOWNER)) { + if (room == null || room.getRoomInfo().getOwnerInfo().getId() != this.client.getHabbo().getHabboInfo().getId() || !this.client.getHabbo().hasRight(Permission.ACC_ANYROOMOWNER)) { return; } diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/promotions/PurchaseRoomAdEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/promotions/PurchaseRoomAdEvent.java index e622e071..65a2e257 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/promotions/PurchaseRoomAdEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/promotions/PurchaseRoomAdEvent.java @@ -36,9 +36,9 @@ public class PurchaseRoomAdEvent extends MessageHandler { CatalogItem item = page.getCatalogItem(itemId); if (item != null) { if (this.client.getHabbo().getHabboInfo().canBuy(item)) { - Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(roomId); + Room room = Emulator.getGameEnvironment().getRoomManager().getActiveRoomById(roomId); - if (!(room.isOwner(this.client.getHabbo()) || room.hasRights(this.client.getHabbo()) || room.getGuildRightLevel(this.client.getHabbo()).equals(RoomRightLevels.GUILD_ADMIN))) { + if (!(room.getRoomInfo().isRoomOwner(this.client.getHabbo()) || room.hasRights(this.client.getHabbo()) || room.getGuildRightLevel(this.client.getHabbo()).equals(RoomRightLevels.GUILD_ADMIN))) { return; } diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/users/AssignRightsEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/users/AssignRightsEvent.java index c905c207..f1f9f177 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/users/AssignRightsEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/users/AssignRightsEvent.java @@ -13,13 +13,13 @@ public class AssignRightsEvent extends MessageHandler { public void handle() { int userId = this.packet.readInt(); - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); if (room == null) return; - if (room.getOwnerId() == this.client.getHabbo().getHabboInfo().getId() || this.client.getHabbo().hasRight(Permission.ACC_ANYROOMOWNER)) { - Habbo target = room.getHabbo(userId); + if (room.getRoomInfo().getOwnerInfo().getId() == this.client.getHabbo().getHabboInfo().getId() || this.client.getHabbo().hasRight(Permission.ACC_ANYROOMOWNER)) { + Habbo target = room.getRoomUnitManager().getRoomHabboById(userId); if (target != null) { if (!Emulator.getPluginManager().fireEvent(new UserRightsGivenEvent(this.client.getHabbo(), target)).isCancelled()) { diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/users/AvatarExpressionEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/users/AvatarExpressionEvent.java index c3dffc03..aa1fcca1 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/users/AvatarExpressionEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/users/AvatarExpressionEvent.java @@ -11,7 +11,7 @@ import com.eu.habbo.plugin.events.users.UserIdleEvent; public class AvatarExpressionEvent extends MessageHandler { @Override public void handle() { - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); if (room == null) { return; } @@ -21,7 +21,7 @@ public class AvatarExpressionEvent extends MessageHandler { if (this.client.getHabbo().getRoomUnit().getCacheable().get("control") != null) { habbo = (Habbo) this.client.getHabbo().getRoomUnit().getCacheable().get("control"); - if (habbo.getHabboInfo().getCurrentRoom() != room) { + if (habbo.getRoomUnit().getRoom() != room) { habbo.getRoomUnit().getCacheable().remove("controller"); this.client.getHabbo().getRoomUnit().getCacheable().remove("control"); habbo = this.client.getHabbo(); diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/users/CancelTypingEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/users/CancelTypingEvent.java index dc309636..c98ddddc 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/users/CancelTypingEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/users/CancelTypingEvent.java @@ -6,7 +6,7 @@ import com.eu.habbo.messages.outgoing.rooms.users.UserTypingMessageComposer; public class CancelTypingEvent extends MessageHandler { @Override public void handle() { - if (this.client.getHabbo().getHabboInfo().getCurrentRoom() == null) { + if (this.client.getHabbo().getRoomUnit().getRoom() == null) { return; } @@ -14,6 +14,6 @@ public class CancelTypingEvent extends MessageHandler { return; } - this.client.getHabbo().getHabboInfo().getCurrentRoom().sendComposer(new UserTypingMessageComposer(this.client.getHabbo().getRoomUnit(), false).compose()); + this.client.getHabbo().getRoomUnit().getRoom().sendComposer(new UserTypingMessageComposer(this.client.getHabbo().getRoomUnit(), false).compose()); } } diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/users/ChangePostureEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/users/ChangePostureEvent.java index f71580fa..d4392ecd 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/users/ChangePostureEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/users/ChangePostureEvent.java @@ -7,18 +7,18 @@ import com.eu.habbo.plugin.events.users.UserIdleEvent; public class ChangePostureEvent extends MessageHandler { @Override public void handle() { - if (this.client.getHabbo().getHabboInfo().getCurrentRoom() != null) { + if (this.client.getHabbo().getRoomUnit().getRoom() != null) { if (this.client.getHabbo().getRoomUnit().isWalking()) { this.client.getHabbo().getRoomUnit().stopWalking(); } - this.client.getHabbo().getHabboInfo().getCurrentRoom().makeSit(this.client.getHabbo()); + this.client.getHabbo().getRoomUnit().getRoom().makeSit(this.client.getHabbo()); UserIdleEvent event = new UserIdleEvent(this.client.getHabbo(), UserIdleEvent.IdleReason.WALKED, false); Emulator.getPluginManager().fireEvent(event); if (!event.isCancelled()) { if (!event.isIdle()) { - this.client.getHabbo().getHabboInfo().getCurrentRoom().unIdle(this.client.getHabbo()); + this.client.getHabbo().getRoomUnit().getRoom().unIdle(this.client.getHabbo()); } } } diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/users/ChatEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/users/ChatEvent.java index 8a095856..8d2b7028 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/users/ChatEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/users/ChatEvent.java @@ -16,7 +16,7 @@ public class ChatEvent extends MessageHandler { @Override public void handle() { - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); if (room == null) return; diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/users/DanceEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/users/DanceEvent.java index 58dec5ae..d92262fc 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/users/DanceEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/users/DanceEvent.java @@ -10,7 +10,7 @@ import com.eu.habbo.plugin.events.users.UserIdleEvent; public class DanceEvent extends MessageHandler { @Override public void handle() { - if (this.client.getHabbo().getHabboInfo().getCurrentRoom() == null) + if (this.client.getHabbo().getRoomUnit().getRoom() == null) return; int danceId = this.packet.readInt(); @@ -22,7 +22,7 @@ public class DanceEvent extends MessageHandler { if (this.client.getHabbo().getRoomUnit().getCacheable().get("control") != null) { habbo = (Habbo) this.client.getHabbo().getRoomUnit().getCacheable().get("control"); - if (habbo.getHabboInfo().getCurrentRoom() != this.client.getHabbo().getHabboInfo().getCurrentRoom()) { + if (habbo.getRoomUnit().getRoom() != this.client.getHabbo().getRoomUnit().getRoom()) { habbo.getRoomUnit().getCacheable().remove("controller"); this.client.getHabbo().getRoomUnit().getCacheable().remove("control"); habbo = this.client.getHabbo(); @@ -36,11 +36,11 @@ public class DanceEvent extends MessageHandler { if (!event.isCancelled()) { if (!event.isIdle()) { - this.client.getHabbo().getHabboInfo().getCurrentRoom().unIdle(habbo); + this.client.getHabbo().getRoomUnit().getRoom().unIdle(habbo); } } - this.client.getHabbo().getHabboInfo().getCurrentRoom().sendComposer(new DanceMessageComposer(habbo.getRoomUnit()).compose()); + this.client.getHabbo().getRoomUnit().getRoom().sendComposer(new DanceMessageComposer(habbo.getRoomUnit()).compose()); } } } diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/users/DropCarryItemEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/users/DropCarryItemEvent.java index 5f87c859..24f382da 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/users/DropCarryItemEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/users/DropCarryItemEvent.java @@ -7,7 +7,7 @@ import com.eu.habbo.messages.outgoing.rooms.users.CarryObjectMessageComposer; public class DropCarryItemEvent extends MessageHandler { @Override public void handle() { - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); this.client.getHabbo().getRoomUnit().setHandItem(0); if (room != null) { room.unIdle(this.client.getHabbo()); diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/users/GetUserTagsEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/users/GetUserTagsEvent.java index 0e485506..37696e30 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/users/GetUserTagsEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/users/GetUserTagsEvent.java @@ -9,8 +9,8 @@ public class GetUserTagsEvent extends MessageHandler { public void handle() { int roomUnitId = this.packet.readInt(); - if (this.client.getHabbo().getHabboInfo().getCurrentRoom() != null) { - Habbo habbo = this.client.getHabbo().getHabboInfo().getCurrentRoom().getHabboByRoomUnitId(roomUnitId); + if (this.client.getHabbo().getRoomUnit().getRoom() != null) { + Habbo habbo = this.client.getHabbo().getRoomUnit().getRoom().getHabboByRoomUnitId(roomUnitId); if (habbo != null) { this.client.sendResponse(new UserTagsMessageComposer(habbo)); diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/users/IgnoreUserEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/users/IgnoreUserEvent.java index 9dab2387..dcbfa00f 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/users/IgnoreUserEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/users/IgnoreUserEvent.java @@ -10,7 +10,7 @@ import com.eu.habbo.messages.outgoing.rooms.users.IgnoreResultMessageComposer; public class IgnoreUserEvent extends MessageHandler { @Override public void handle() { - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); if (room != null) { String username = this.packet.readString(); diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/users/LookToEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/users/LookToEvent.java index 819463d3..263131fb 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/users/LookToEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/users/LookToEvent.java @@ -2,15 +2,15 @@ package com.eu.habbo.messages.incoming.rooms.users; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; -import com.eu.habbo.habbohotel.rooms.RoomUnit; import com.eu.habbo.habbohotel.rooms.RoomUnitStatus; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.messages.incoming.MessageHandler; public class LookToEvent extends MessageHandler { @Override public void handle() { - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); if (room == null) return; @@ -19,7 +19,7 @@ public class LookToEvent extends MessageHandler { if (habbo.getRoomUnit().getCacheable().get("control") != null) { habbo = (Habbo) this.client.getHabbo().getRoomUnit().getCacheable().get("control"); - if (habbo.getHabboInfo().getCurrentRoom() != this.client.getHabbo().getHabboInfo().getCurrentRoom()) { + if (habbo.getRoomUnit().getRoom() != this.client.getHabbo().getRoomUnit().getRoom()) { habbo.getRoomUnit().getCacheable().remove("controller"); this.client.getHabbo().getRoomUnit().getCacheable().remove("control"); habbo = this.client.getHabbo(); @@ -28,13 +28,13 @@ public class LookToEvent extends MessageHandler { RoomUnit roomUnit = habbo.getRoomUnit(); - if (!roomUnit.canWalk()) + if (!roomUnit.isCanWalk()) return; if (roomUnit.isWalking() || roomUnit.hasStatus(RoomUnitStatus.MOVE)) return; - if (roomUnit.isCmdLay() || roomUnit.hasStatus(RoomUnitStatus.LAY)) + if (roomUnit.isCmdLayEnabled() || roomUnit.hasStatus(RoomUnitStatus.LAY)) return; if (roomUnit.isIdle()) @@ -43,14 +43,15 @@ public class LookToEvent extends MessageHandler { int x = this.packet.readInt(); int y = this.packet.readInt(); - if (x == roomUnit.getX() && y == roomUnit.getY()) - return; + if (x == roomUnit.getCurrentPosition().getX()) { + if (y == roomUnit.getCurrentPosition().getY()) return; + } - RoomTile tile = habbo.getHabboInfo().getCurrentRoom().getLayout().getTile((short) x, (short) y); + RoomTile tile = habbo.getRoomUnit().getRoom().getLayout().getTile((short) x, (short) y); if (tile != null) { roomUnit.lookAtPoint(tile); - roomUnit.statusUpdate(true); + roomUnit.setStatusUpdateNeeded(true); //room.sendComposer(new RoomUserStatusComposer(roomUnit).compose()); } } diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/users/MoveAvatarEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/users/MoveAvatarEvent.java index 88c83947..d1e2ce4b 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/users/MoveAvatarEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/users/MoveAvatarEvent.java @@ -4,10 +4,10 @@ import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.pets.PetTasks; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; -import com.eu.habbo.habbohotel.rooms.RoomUnit; import com.eu.habbo.habbohotel.rooms.RoomUnitStatus; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; import com.eu.habbo.messages.incoming.MessageHandler; import com.eu.habbo.messages.outgoing.rooms.users.RoomUnitOnRollerComposer; import com.eu.habbo.plugin.events.users.UserIdleEvent; @@ -25,128 +25,146 @@ public class MoveAvatarEvent extends MessageHandler { @Override public void handle() throws Exception { - if (this.client.getHabbo().getHabboInfo().getCurrentRoom() != null) { + if (this.client.getHabbo().getRoomUnit().getRoom() != null) { int x = this.packet.readInt(); // Position X int y = this.packet.readInt(); // Position Y // Get Habbo object Habbo habbo = this.client.getHabbo(); + if(habbo == null) { + return; + } + // Get Room Habbo object (Unique GUID?) RoomUnit roomUnit = this.client.getHabbo().getRoomUnit(); - // If habbo is teleporting, dont calculate a new path - if (roomUnit.isTeleporting()) + if(roomUnit == null) { return; + } - // If habbo is being kicked dont calculate a new path - if (roomUnit.isKicked()) + // If habbo is teleporting, don't calculate a new path + if (roomUnit.isTeleporting()) { return; + } + + // If habbo is being kicked don't calculate a new path + if (roomUnit.isKicked()) { + return; + } + + // Get the room the habbo is in + Room room = habbo.getRoomUnit().getRoom(); + + if (room == null || room.getLayout() == null) { + return; + } + + // Don't calulcate a new path if are already at the end position + if (x == roomUnit.getCurrentPosition().getX() && y == roomUnit.getCurrentPosition().getY()) { + return; + } // If habbo has control (im assuming admin, do something else, but we dont care about this part here) if (roomUnit.getCacheable().get("control") != null) { habbo = (Habbo) roomUnit.getCacheable().get("control"); - if (habbo.getHabboInfo().getCurrentRoom() != this.client.getHabbo().getHabboInfo().getCurrentRoom()) { + if (habbo.getRoomUnit().getRoom() != room) { habbo.getRoomUnit().getCacheable().remove("controller"); this.client.getHabbo().getRoomUnit().getCacheable().remove("control"); habbo = this.client.getHabbo(); } } - // Get room unit? + // Recover roomUnit if necessary roomUnit = habbo.getRoomUnit(); - // Get the room the habbo is in - Room room = habbo.getHabboInfo().getCurrentRoom(); - // If our room unit is not nullptr and we are in a room and we can walk, then calculate a new path - if (roomUnit != null && roomUnit.isInRoom() && roomUnit.canWalk()) { - // If we are not teleporting calcualte a new path - if (!roomUnit.isCmdTeleport()) { - // Don't calculate a new path if we are on a horse - if (habbo.getHabboInfo().getRiding() != null && habbo.getHabboInfo().getRiding().getTask() != null && habbo.getHabboInfo().getRiding().getTask().equals(PetTasks.JUMP)) - return; + if (roomUnit != null && roomUnit.isInRoom() && roomUnit.isCanWalk()) { - // Don't calulcate a new path if are already at the end position - if (x == roomUnit.getX() && y == roomUnit.getY()) - return; - - if (room == null || room.getLayout() == null) - return; - - // Reset idle status - if (roomUnit.isIdle()) { - UserIdleEvent event = new UserIdleEvent(habbo, UserIdleEvent.IdleReason.WALKED, false); - Emulator.getPluginManager().fireEvent(event); - - if (!event.isCancelled()) { - if (!event.isIdle()) { - if (roomUnit.getRoom() != null) roomUnit.getRoom().unIdle(habbo); - roomUnit.resetIdleTimer(); - } - } - } - - // Get room height map - RoomTile tile = room.getLayout().getTile((short) x, (short) y); - - // this should never happen, if it does it would be a design flaw - if (tile == null) { - return; - } - - // Don't care - if (habbo.getRoomUnit().hasStatus(RoomUnitStatus.LAY)) { - if (room.getLayout().getTilesInFront(habbo.getRoomUnit().getCurrentLocation(), habbo.getRoomUnit().getBodyRotation().getValue(), 2).contains(tile)) - return; - } - if (room.canLayAt(tile.getX(), tile.getY())) { - HabboItem bed = room.getTopItemAt(tile.getX(), tile.getY()); - - if (bed != null && bed.getBaseItem().allowLay()) { - room.getLayout().getTile(bed.getX(), bed.getY()); - RoomTile pillow = switch (bed.getRotation()) { - case 0, 4 -> room.getLayout().getTile((short) x, bed.getY()); - case 2, 8 -> room.getLayout().getTile(bed.getX(), (short) y); - default -> room.getLayout().getTile(bed.getX(), bed.getY()); - }; - - if (pillow != null && room.canLayAt(pillow.getX(), pillow.getY())) { - roomUnit.setGoalLocation(pillow); - return; - } - } - } - - THashSet items = room.getItemsAt(tile); - - if (items.size() > 0) { - for (HabboItem item : items) { - RoomTile overriddenTile = item.getOverrideGoalTile(roomUnit, room, tile); - - if (overriddenTile == null) { - return; // null cancels the entire event - } - - if (!overriddenTile.equals(tile) && overriddenTile.isWalkable()) { - tile = overriddenTile; - break; - } - } - } - - // This is where we set the end location and begin finding a path - if (tile.isWalkable() || room.canSitOrLayAt(tile.getX(), tile.getY())) { - roomUnit.setGoalLocation(tile); - } - } else { + //If teleport command is enabled + if(roomUnit.isCmdTeleportEnabled()) { RoomTile t = room.getLayout().getTile((short) x, (short) y); - room.sendComposer(new RoomUnitOnRollerComposer(roomUnit, t, room).compose()); if (habbo.getHabboInfo().getRiding() != null) { + room.sendComposer(new RoomUnitOnRollerComposer(roomUnit, null, roomUnit.getCurrentPosition(), roomUnit.getCurrentZ(), t, t.getStackHeight() + 1.0D, room).compose()); room.sendComposer(new RoomUnitOnRollerComposer(habbo.getHabboInfo().getRiding().getRoomUnit(), t, room).compose()); + } else { + room.sendComposer(new RoomUnitOnRollerComposer(roomUnit, t, room).compose()); } + + return; + } + + // Don't calculate a new path if we are on a horse + if (habbo.getHabboInfo().getRiding() != null && habbo.getHabboInfo().getRiding().getTask() != null && habbo.getHabboInfo().getRiding().getTask().equals(PetTasks.JUMP)) + return; + + // Reset idle status + if (roomUnit.isIdle()) { + UserIdleEvent event = new UserIdleEvent(habbo, UserIdleEvent.IdleReason.WALKED, false); + Emulator.getPluginManager().fireEvent(event); + + if (!event.isCancelled()) { + if (!event.isIdle()) { + if (roomUnit.getRoom() != null) roomUnit.getRoom().unIdle(habbo); + roomUnit.resetIdleTimer(); + } + } + } + + // Get room height map + RoomTile tile = room.getLayout().getTile((short) x, (short) y); + + // this should never happen, if it does it would be a design flaw + if (tile == null) { + return; + } + + // Don't care + if (habbo.getRoomUnit().hasStatus(RoomUnitStatus.LAY)) { + if (room.getLayout().getTilesInFront(habbo.getRoomUnit().getCurrentPosition(), habbo.getRoomUnit().getBodyRotation().getValue(), 2).contains(tile)) + return; + } + + if (room.canLayAt(tile.getX(), tile.getY())) { + RoomItem bed = room.getTopItemAt(tile.getX(), tile.getY()); + + if (bed != null && bed.getBaseItem().allowLay()) { + room.getLayout().getTile(bed.getX(), bed.getY()); + RoomTile pillow = switch (bed.getRotation()) { + case 0, 4 -> room.getLayout().getTile((short) x, bed.getY()); + case 2, 8 -> room.getLayout().getTile(bed.getX(), (short) y); + default -> room.getLayout().getTile(bed.getX(), bed.getY()); + }; + + if (pillow != null && room.canLayAt(pillow.getX(), pillow.getY())) { + roomUnit.setGoalLocation(pillow); + return; + } + } + } + + THashSet items = room.getItemsAt(tile); + + if (items.size() > 0) { + for (RoomItem item : items) { + RoomTile overriddenTile = item.getOverrideGoalTile(roomUnit, room, tile); + + if (overriddenTile == null) { + return; // null cancels the entire event + } + + if (!overriddenTile.equals(tile) && overriddenTile.isWalkable()) { + tile = overriddenTile; + break; + } + } + } + + // This is where we set the end location and begin finding a path + if (tile.isWalkable() || room.canSitOrLayAt(tile.getX(), tile.getY())) { + roomUnit.setGoalLocation(tile); } } } diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/users/PassCarryItemEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/users/PassCarryItemEvent.java index ef606c0b..a817be2d 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/users/PassCarryItemEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/users/PassCarryItemEvent.java @@ -15,15 +15,15 @@ public class PassCarryItemEvent extends MessageHandler { public void handle() { int userId = this.packet.readInt(); - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); if (room != null) { - Habbo target = room.getHabbo(userId); + Habbo target = room.getRoomUnitManager().getRoomHabboById(userId); if (target != null) { List executable = new ArrayList<>(); executable.add(new HabboGiveHandItemToHabbo(this.client.getHabbo(), target)); - Emulator.getThreading().run(new RoomUnitWalkToRoomUnit(this.client.getHabbo().getRoomUnit(), target.getRoomUnit(), this.client.getHabbo().getHabboInfo().getCurrentRoom(), executable, executable)); + Emulator.getThreading().run(new RoomUnitWalkToRoomUnit(this.client.getHabbo().getRoomUnit(), target.getRoomUnit(), this.client.getHabbo().getRoomUnit().getRoom(), executable, executable)); } } } diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/users/RemoveRightsEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/users/RemoveRightsEvent.java index 3399e52e..867779e6 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/users/RemoveRightsEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/users/RemoveRightsEvent.java @@ -9,12 +9,12 @@ public class RemoveRightsEvent extends MessageHandler { public void handle() { int amount = this.packet.readInt(); - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); if (room == null) return; - if (room.getOwnerId() == this.client.getHabbo().getHabboInfo().getId() || this.client.getHabbo().hasRight(Permission.ACC_ANYROOMOWNER)) { + if (room.getRoomInfo().getOwnerInfo().getId() == this.client.getHabbo().getHabboInfo().getId() || this.client.getHabbo().hasRight(Permission.ACC_ANYROOMOWNER)) { for (int i = 0; i < amount; i++) { int userId = this.packet.readInt(); diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/users/RespectUserEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/users/RespectUserEvent.java index e0211d32..178465a9 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/users/RespectUserEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/users/RespectUserEvent.java @@ -14,7 +14,7 @@ public class RespectUserEvent extends MessageHandler { return; } if (this.client.getHabbo().getHabboStats().getRespectPointsToGive() > 0) { - Habbo target = this.client.getHabbo().getHabboInfo().getCurrentRoom().getHabbo(userId); + Habbo target = this.client.getHabbo().getRoomUnit().getRoom().getRoomUnitManager().getRoomHabboById(userId); if (Emulator.getPluginManager().isRegistered(UserRespectedEvent.class, false)) { if (Emulator.getPluginManager().fireEvent(new UserRespectedEvent(target, this.client.getHabbo())).isCancelled()) diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/users/RoomUserKickEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/users/RoomUserKickEvent.java index 4dac9cb0..33f27912 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/users/RoomUserKickEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/users/RoomUserKickEvent.java @@ -14,14 +14,14 @@ import com.eu.habbo.plugin.events.users.UserKickEvent; public class RoomUserKickEvent extends MessageHandler { @Override public void handle() { - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); if (room == null) return; int userId = this.packet.readInt(); - Habbo target = room.getHabbo(userId); + Habbo target = room.getRoomUnitManager().getRoomHabboById(userId); if (target == null) return; @@ -31,7 +31,7 @@ public class RoomUserKickEvent extends MessageHandler { return; } - if (room.isOwner(target)) { + if (room.getRoomInfo().isRoomOwner(target)) { return; } diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/users/RoomUserMuteEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/users/RoomUserMuteEvent.java index 3b737e69..8aac4969 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/users/RoomUserMuteEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/users/RoomUserMuteEvent.java @@ -15,11 +15,11 @@ public class RoomUserMuteEvent extends MessageHandler { int roomId = this.packet.readInt(); int minutes = this.packet.readInt(); - Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(roomId); + Room room = Emulator.getGameEnvironment().getRoomManager().getActiveRoomById(roomId); if (room != null) { if (room.hasRights(this.client.getHabbo()) || this.client.getHabbo().hasCommand("cmd_mute") || this.client.getHabbo().hasRight(Permission.ACC_AMBASSADOR)) { - Habbo habbo = room.getHabbo(userId); + Habbo habbo = room.getRoomUnitManager().getRoomHabboById(userId); if (habbo != null) { room.muteHabbo(habbo, minutes); diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/users/ShoutEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/users/ShoutEvent.java index 40c2b46f..569495b2 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/users/ShoutEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/users/ShoutEvent.java @@ -13,7 +13,7 @@ public class ShoutEvent extends MessageHandler { @Override public void handle() { - if (this.client.getHabbo().getHabboInfo().getCurrentRoom() == null) + if (this.client.getHabbo().getRoomUnit().getRoom() == null) return; if (!this.client.getHabbo().getHabboStats().allowTalk()) @@ -27,7 +27,7 @@ public class ShoutEvent extends MessageHandler { return; } - this.client.getHabbo().getHabboInfo().getCurrentRoom().talk(this.client.getHabbo(), message, RoomChatType.SHOUT); + this.client.getHabbo().getRoomUnit().getRoom().talk(this.client.getHabbo(), message, RoomChatType.SHOUT); if (!message.isCommand) { if (RoomChatMessage.SAVE_ROOM_CHATS) { diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/users/SignEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/users/SignEvent.java index 9e38ba84..428089c9 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/users/SignEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/users/SignEvent.java @@ -4,7 +4,7 @@ import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.items.interactions.InteractionVoteCounter; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomUnitStatus; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.incoming.MessageHandler; import com.eu.habbo.plugin.events.users.UserSignEvent; @@ -13,7 +13,7 @@ public class SignEvent extends MessageHandler { public void handle() { int signId = this.packet.readInt(); - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); if (room == null) return; @@ -21,12 +21,12 @@ public class SignEvent extends MessageHandler { UserSignEvent event = new UserSignEvent(this.client.getHabbo(), signId); if (!Emulator.getPluginManager().fireEvent(event).isCancelled()) { this.client.getHabbo().getRoomUnit().setStatus(RoomUnitStatus.SIGN, event.getSign() + ""); - this.client.getHabbo().getHabboInfo().getCurrentRoom().unIdle(this.client.getHabbo()); + this.client.getHabbo().getRoomUnit().getRoom().unIdle(this.client.getHabbo()); if(signId <= 10) { int userId = this.client.getHabbo().getHabboInfo().getId(); - for (HabboItem item : room.getFloorItems()) { + for (RoomItem item : room.getFloorItems()) { if (item instanceof InteractionVoteCounter) { ((InteractionVoteCounter)item).vote(room, userId, signId); } diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/users/StartTypingEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/users/StartTypingEvent.java index deda8e53..f352f238 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/users/StartTypingEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/users/StartTypingEvent.java @@ -6,7 +6,7 @@ import com.eu.habbo.messages.outgoing.rooms.users.UserTypingMessageComposer; public class StartTypingEvent extends MessageHandler { @Override public void handle() { - if (this.client.getHabbo().getHabboInfo().getCurrentRoom() == null) { + if (this.client.getHabbo().getRoomUnit().getRoom() == null) { return; } @@ -14,6 +14,6 @@ public class StartTypingEvent extends MessageHandler { return; } - this.client.getHabbo().getHabboInfo().getCurrentRoom().sendComposer(new UserTypingMessageComposer(this.client.getHabbo().getRoomUnit(), true).compose()); + this.client.getHabbo().getRoomUnit().getRoom().sendComposer(new UserTypingMessageComposer(this.client.getHabbo().getRoomUnit(), true).compose()); } } diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/users/UnbanUserFromRoomEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/users/UnbanUserFromRoomEvent.java index 3c1560f9..0741b6d0 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/users/UnbanUserFromRoomEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/users/UnbanUserFromRoomEvent.java @@ -10,10 +10,10 @@ public class UnbanUserFromRoomEvent extends MessageHandler { int userId = this.packet.readInt(); int roomId = this.packet.readInt(); - Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(roomId); + Room room = Emulator.getGameEnvironment().getRoomManager().getActiveRoomById(roomId); if (room != null) { - if (room.isOwner(this.client.getHabbo())) { + if (room.getRoomInfo().isRoomOwner(this.client.getHabbo())) { room.unbanHabbo(userId); } } diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/users/UnignoreUserEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/users/UnignoreUserEvent.java index 81c3773b..91ca8a76 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/users/UnignoreUserEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/users/UnignoreUserEvent.java @@ -8,7 +8,7 @@ import com.eu.habbo.messages.outgoing.rooms.users.IgnoreResultMessageComposer; public class UnignoreUserEvent extends MessageHandler { @Override public void handle() { - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); if (room != null) { String username = this.packet.readString(); diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/users/WhisperEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/users/WhisperEvent.java index 910faaee..6a6fcd1c 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/users/WhisperEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/users/WhisperEvent.java @@ -13,7 +13,7 @@ public class WhisperEvent extends MessageHandler { @Override public void handle() { - if (this.client.getHabbo().getHabboInfo().getCurrentRoom() == null) + if (this.client.getHabbo().getRoomUnit().getRoom() == null) return; RoomChatMessage chatMessage = new RoomChatMessage(this); @@ -26,7 +26,7 @@ public class WhisperEvent extends MessageHandler { return; } - this.client.getHabbo().getHabboInfo().getCurrentRoom().talk(this.client.getHabbo(), chatMessage, RoomChatType.WHISPER, true); + this.client.getHabbo().getRoomUnit().getRoom().talk(this.client.getHabbo(), chatMessage, RoomChatType.WHISPER, true); if (RoomChatMessage.SAVE_ROOM_CHATS) { Emulator.getThreading().run(chatMessage); diff --git a/src/main/java/com/eu/habbo/messages/incoming/trading/AcceptTradingEvent.java b/src/main/java/com/eu/habbo/messages/incoming/trading/AcceptTradingEvent.java index 85870b34..708facba 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/trading/AcceptTradingEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/trading/AcceptTradingEvent.java @@ -9,10 +9,10 @@ public class AcceptTradingEvent extends MessageHandler { public void handle() { Habbo habbo = this.client.getHabbo(); - if (habbo == null || habbo.getHabboInfo() == null || habbo.getHabboInfo().getCurrentRoom() == null) + if (habbo == null || habbo.getHabboInfo() == null || habbo.getRoomUnit().getRoom() == null) return; - RoomTrade trade = habbo.getHabboInfo().getCurrentRoom().getActiveTradeForHabbo(habbo); + RoomTrade trade = habbo.getRoomUnit().getRoom().getActiveTradeForHabbo(habbo); if (trade == null) return; diff --git a/src/main/java/com/eu/habbo/messages/incoming/trading/AddItemToTradeEvent.java b/src/main/java/com/eu/habbo/messages/incoming/trading/AddItemToTradeEvent.java index 233fdec7..f3c16d65 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/trading/AddItemToTradeEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/trading/AddItemToTradeEvent.java @@ -1,21 +1,21 @@ package com.eu.habbo.messages.incoming.trading; import com.eu.habbo.habbohotel.rooms.RoomTrade; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.incoming.MessageHandler; public class AddItemToTradeEvent extends MessageHandler { @Override public void handle() { - if (this.client.getHabbo().getHabboInfo().getCurrentRoom() == null) + if (this.client.getHabbo().getRoomUnit().getRoom() == null) return; - RoomTrade trade = this.client.getHabbo().getHabboInfo().getCurrentRoom().getActiveTradeForHabbo(this.client.getHabbo()); + RoomTrade trade = this.client.getHabbo().getRoomUnit().getRoom().getActiveTradeForHabbo(this.client.getHabbo()); if (trade == null) return; - HabboItem item = this.client.getHabbo().getInventory().getItemsComponent().getHabboItem(this.packet.readInt()); + RoomItem item = this.client.getHabbo().getInventory().getItemsComponent().getHabboItem(this.packet.readInt()); if (item == null || !item.getBaseItem().allowTrade()) return; diff --git a/src/main/java/com/eu/habbo/messages/incoming/trading/AddItemsToTradeEvent.java b/src/main/java/com/eu/habbo/messages/incoming/trading/AddItemsToTradeEvent.java index 716eff81..4adcc2d7 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/trading/AddItemsToTradeEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/trading/AddItemsToTradeEvent.java @@ -1,26 +1,26 @@ package com.eu.habbo.messages.incoming.trading; import com.eu.habbo.habbohotel.rooms.RoomTrade; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.incoming.MessageHandler; import gnu.trove.set.hash.THashSet; public class AddItemsToTradeEvent extends MessageHandler { @Override public void handle() { - if (this.client.getHabbo().getHabboInfo().getCurrentRoom() == null) + if (this.client.getHabbo().getRoomUnit().getRoom() == null) return; - RoomTrade trade = this.client.getHabbo().getHabboInfo().getCurrentRoom().getActiveTradeForHabbo(this.client.getHabbo()); + RoomTrade trade = this.client.getHabbo().getRoomUnit().getRoom().getActiveTradeForHabbo(this.client.getHabbo()); if (trade == null) return; - THashSet items = new THashSet<>(); + THashSet items = new THashSet<>(); int count = this.packet.readInt(); for (int i = 0; i < count; i++) { - HabboItem item = this.client.getHabbo().getInventory().getItemsComponent().getHabboItem(this.packet.readInt()); + RoomItem item = this.client.getHabbo().getInventory().getItemsComponent().getHabboItem(this.packet.readInt()); if (item != null && item.getBaseItem().allowTrade()) { items.add(item); } diff --git a/src/main/java/com/eu/habbo/messages/incoming/trading/ConfirmAcceptTradingEvent.java b/src/main/java/com/eu/habbo/messages/incoming/trading/ConfirmAcceptTradingEvent.java index c75d62bd..1a17b345 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/trading/ConfirmAcceptTradingEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/trading/ConfirmAcceptTradingEvent.java @@ -8,7 +8,7 @@ public class ConfirmAcceptTradingEvent extends MessageHandler { @Override public void handle() { Habbo habbo = this.client.getHabbo(); - RoomTrade trade = habbo.getHabboInfo().getCurrentRoom().getActiveTradeForHabbo(habbo); + RoomTrade trade = habbo.getRoomUnit().getRoom().getActiveTradeForHabbo(habbo); if (trade == null || !trade.getRoomTradeUserForHabbo(habbo).isAccepted()) return; diff --git a/src/main/java/com/eu/habbo/messages/incoming/trading/OpenTradingEvent.java b/src/main/java/com/eu/habbo/messages/incoming/trading/OpenTradingEvent.java index b0661bdc..2a88aefc 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/trading/OpenTradingEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/trading/OpenTradingEvent.java @@ -16,9 +16,9 @@ public class OpenTradingEvent extends MessageHandler { this.client.getHabbo().getHabboStats().setLastTradeTimestamp(Emulator.getIntUnixTimestamp()); int userId = this.packet.readInt(); - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); if (room != null) { - if (userId >= 0 && userId != this.client.getHabbo().getRoomUnit().getId()) { + if (userId >= 0 && userId != this.client.getHabbo().getRoomUnit().getVirtualId()) { Habbo targetUser = room.getHabboByRoomUnitId(userId); boolean tradeAnywhere = this.client.getHabbo().hasRight(Permission.ACC_TRADE_ANYWHERE); @@ -28,7 +28,7 @@ public class OpenTradingEvent extends MessageHandler { return; } - if ((room.getTradeMode() == 0 || (room.getTradeMode() == 1 && this.client.getHabbo().getHabboInfo().getId() != room.getOwnerId())) && !tradeAnywhere) { + if ((room.getRoomInfo().getTradeMode() == 0 || (room.getRoomInfo().getTradeMode() == 1 && this.client.getHabbo().getHabboInfo().getId() != room.getRoomInfo().getOwnerInfo().getId())) && !tradeAnywhere) { this.client.sendResponse(new TradingOpenFailedComposer(TradingOpenFailedComposer.ROOM_TRADING_NOT_ALLOWED)); return; } diff --git a/src/main/java/com/eu/habbo/messages/incoming/trading/RemoveItemFromTradeEvent.java b/src/main/java/com/eu/habbo/messages/incoming/trading/RemoveItemFromTradeEvent.java index ee8245f1..e3213a64 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/trading/RemoveItemFromTradeEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/trading/RemoveItemFromTradeEvent.java @@ -1,7 +1,7 @@ package com.eu.habbo.messages.incoming.trading; import com.eu.habbo.habbohotel.rooms.RoomTrade; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.incoming.MessageHandler; public class RemoveItemFromTradeEvent extends MessageHandler { @@ -9,9 +9,9 @@ public class RemoveItemFromTradeEvent extends MessageHandler { public void handle() { int itemId = this.packet.readInt(); - RoomTrade trade = this.client.getHabbo().getHabboInfo().getCurrentRoom().getActiveTradeForHabbo(this.client.getHabbo()); + RoomTrade trade = this.client.getHabbo().getRoomUnit().getRoom().getActiveTradeForHabbo(this.client.getHabbo()); if (trade != null) { - HabboItem item = trade.getRoomTradeUserForHabbo(this.client.getHabbo()).getItem(itemId); + RoomItem item = trade.getRoomTradeUserForHabbo(this.client.getHabbo()).getItem(itemId); if (!trade.getRoomTradeUserForHabbo(this.client.getHabbo()).isAccepted() && item != null) { trade.removeItem(this.client.getHabbo(), item); diff --git a/src/main/java/com/eu/habbo/messages/incoming/trading/TradingEvent.java b/src/main/java/com/eu/habbo/messages/incoming/trading/TradingEvent.java index a2fb005a..188da4d9 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/trading/TradingEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/trading/TradingEvent.java @@ -7,7 +7,7 @@ import com.eu.habbo.messages.incoming.MessageHandler; public abstract class TradingEvent extends MessageHandler { protected void stopTrade(Habbo habbo) { - Room room = habbo.getHabboInfo().getCurrentRoom(); + Room room = habbo.getRoomUnit().getRoom(); if (room == null) return; diff --git a/src/main/java/com/eu/habbo/messages/incoming/trading/UnacceptTradingEvent.java b/src/main/java/com/eu/habbo/messages/incoming/trading/UnacceptTradingEvent.java index ac788b39..d5d3db0c 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/trading/UnacceptTradingEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/trading/UnacceptTradingEvent.java @@ -8,7 +8,7 @@ public class UnacceptTradingEvent extends MessageHandler { @Override public void handle() { Habbo habbo = this.client.getHabbo(); - RoomTrade trade = habbo.getHabboInfo().getCurrentRoom().getActiveTradeForHabbo(habbo); + RoomTrade trade = habbo.getRoomUnit().getRoom().getActiveTradeForHabbo(habbo); if (trade == null) return; diff --git a/src/main/java/com/eu/habbo/messages/incoming/users/AvatarEffectSelectedEvent.java b/src/main/java/com/eu/habbo/messages/incoming/users/AvatarEffectSelectedEvent.java index 7146433a..91e190fa 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/users/AvatarEffectSelectedEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/users/AvatarEffectSelectedEvent.java @@ -14,8 +14,8 @@ public class AvatarEffectSelectedEvent extends MessageHandler { } else { this.client.getHabbo().getInventory().getEffectsComponent().setActivatedEffect(0); - if (this.client.getHabbo().getHabboInfo().getCurrentRoom() != null) { - this.client.getHabbo().getHabboInfo().getCurrentRoom().giveEffect(this.client.getHabbo().getRoomUnit(), 0, -1); + if (this.client.getHabbo().getRoomUnit().getRoom() != null) { + this.client.getHabbo().getRoomUnit().getRoom().giveEffect(this.client.getHabbo().getRoomUnit(), 0, -1); } } } diff --git a/src/main/java/com/eu/habbo/messages/incoming/users/ChangeMottoEvent.java b/src/main/java/com/eu/habbo/messages/incoming/users/ChangeMottoEvent.java index 6d2405e5..aceeab5f 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/users/ChangeMottoEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/users/ChangeMottoEvent.java @@ -21,8 +21,8 @@ public class ChangeMottoEvent extends MessageHandler { this.client.getHabbo().getHabboInfo().run(); } - if (this.client.getHabbo().getHabboInfo().getCurrentRoom() != null) { - this.client.getHabbo().getHabboInfo().getCurrentRoom().sendComposer(new UserChangeMessageComposer(this.client.getHabbo()).compose()); + if (this.client.getHabbo().getRoomUnit().getRoom() != null) { + this.client.getHabbo().getRoomUnit().getRoom().sendComposer(new UserChangeMessageComposer(this.client.getHabbo()).compose()); } else { this.client.sendResponse(new UserChangeMessageComposer(this.client.getHabbo())); } diff --git a/src/main/java/com/eu/habbo/messages/incoming/users/ChangeUserNameEvent.java b/src/main/java/com/eu/habbo/messages/incoming/users/ChangeUserNameEvent.java index 241ac1c9..af63c7c2 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/users/ChangeUserNameEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/users/ChangeUserNameEvent.java @@ -1,12 +1,12 @@ package com.eu.habbo.messages.incoming.users; import com.eu.habbo.Emulator; +import com.eu.habbo.habbohotel.achievements.AchievementManager; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.users.HabboInfo; import com.eu.habbo.habbohotel.users.HabboManager; import com.eu.habbo.messages.incoming.MessageHandler; import com.eu.habbo.messages.outgoing.rooms.users.ChangeUserNameResultMessageEvent; -import com.eu.habbo.habbohotel.achievements.AchievementManager; import com.eu.habbo.messages.outgoing.rooms.users.UserNameChangedMessageComposer; import com.eu.habbo.messages.outgoing.users.CheckUserNameResultMessageComposer; import com.eu.habbo.messages.outgoing.users.UserObjectComposer; @@ -58,7 +58,6 @@ public class ChangeUserNameEvent extends MessageHandler { Emulator.getPluginManager().fireEvent(new UserNameChangedEvent(this.client.getHabbo(), oldName)); for (Room room : Emulator.getGameEnvironment().getRoomManager().getRoomsForHabbo(this.client.getHabbo())) { - room.setOwnerName(name); room.setNeedsUpdate(true); room.save(); } @@ -69,13 +68,13 @@ public class ChangeUserNameEvent extends MessageHandler { this.client.sendResponse(new ChangeUserNameResultMessageEvent(this.client.getHabbo())); - if (this.client.getHabbo().getHabboInfo().getCurrentRoom() != null) { - this.client.getHabbo().getHabboInfo().getCurrentRoom().sendComposer(new UserNameChangedMessageComposer(this.client.getHabbo()).compose()); + if (this.client.getHabbo().getRoomUnit().getRoom() != null) { + this.client.getHabbo().getRoomUnit().getRoom().sendComposer(new UserNameChangedMessageComposer(this.client.getHabbo()).compose()); } else { this.client.sendResponse(new UserNameChangedMessageComposer(this.client.getHabbo()).compose()); } - this.client.getHabbo().getMessenger().connectionChanged(this.client.getHabbo(), true, this.client.getHabbo().getHabboInfo().getCurrentRoom() != null); + this.client.getHabbo().getMessenger().connectionChanged(this.client.getHabbo(), true, this.client.getHabbo().getRoomUnit().getRoom() != null); this.client.getHabbo().getClient().sendResponse(new UserObjectComposer(this.client.getHabbo())); try (Connection connection = Emulator.getDatabase().getDataSource().getConnection(); PreparedStatement statement = connection.prepareStatement("INSERT INTO namechange_log (user_id, old_name, new_name, timestamp) VALUES (?, ?, ?, ?) ")) { diff --git a/src/main/java/com/eu/habbo/messages/incoming/users/SetActivatedBadgesEvent.java b/src/main/java/com/eu/habbo/messages/incoming/users/SetActivatedBadgesEvent.java index c7509697..e798c4b7 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/users/SetActivatedBadgesEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/users/SetActivatedBadgesEvent.java @@ -35,8 +35,8 @@ public class SetActivatedBadgesEvent extends MessageHandler { } } - if (this.client.getHabbo().getHabboInfo().getCurrentRoom() != null) { - this.client.getHabbo().getHabboInfo().getCurrentRoom().sendComposer(new UserBadgesComposer(updatedBadges, this.client.getHabbo().getHabboInfo().getId()).compose()); + if (this.client.getHabbo().getRoomUnit().getRoom() != null) { + this.client.getHabbo().getRoomUnit().getRoom().sendComposer(new UserBadgesComposer(updatedBadges, this.client.getHabbo().getHabboInfo().getId()).compose()); } else { this.client.sendResponse(new UserBadgesComposer(updatedBadges, this.client.getHabbo().getHabboInfo().getId())); } diff --git a/src/main/java/com/eu/habbo/messages/incoming/users/UpdateFigureDataEvent.java b/src/main/java/com/eu/habbo/messages/incoming/users/UpdateFigureDataEvent.java index d2e1b78d..2e1dbbd7 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/users/UpdateFigureDataEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/users/UpdateFigureDataEvent.java @@ -39,8 +39,8 @@ public class UpdateFigureDataEvent extends MessageHandler { this.client.getHabbo().getHabboInfo().setGender(lookEvent.getGender()); Emulator.getThreading().run(this.client.getHabbo().getHabboInfo()); this.client.sendResponse(new FigureUpdateComposer(this.client.getHabbo())); - if (this.client.getHabbo().getHabboInfo().getCurrentRoom() != null) { - this.client.getHabbo().getHabboInfo().getCurrentRoom().sendComposer(new UserChangeMessageComposer(this.client.getHabbo()).compose()); + if (this.client.getHabbo().getRoomUnit().getRoom() != null) { + this.client.getHabbo().getRoomUnit().getRoom().sendComposer(new UserChangeMessageComposer(this.client.getHabbo()).compose()); } AchievementManager.progressAchievement(this.client.getHabbo(), Emulator.getGameEnvironment().getAchievementManager().getAchievement("AvatarLooks")); diff --git a/src/main/java/com/eu/habbo/messages/incoming/wired/ApplySnapshotEvent.java b/src/main/java/com/eu/habbo/messages/incoming/wired/ApplySnapshotEvent.java index 6971d6ca..20b952e8 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/wired/ApplySnapshotEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/wired/ApplySnapshotEvent.java @@ -5,7 +5,7 @@ import com.eu.habbo.habbohotel.rooms.FurnitureMovementError; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; import com.eu.habbo.habbohotel.rooms.RoomTileState; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.incoming.MessageHandler; import com.eu.habbo.messages.outgoing.generic.alerts.BubbleAlertKeys; import com.eu.habbo.messages.outgoing.generic.alerts.NotificationDialogMessageComposer; @@ -35,19 +35,19 @@ public class ApplySnapshotEvent extends MessageHandler { return; } - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); // Executing Habbo should be able to edit wireds - if (room == null || (!room.hasRights(this.client.getHabbo()) && !room.isOwner(this.client.getHabbo()))) { + if (room == null || (!room.hasRights(this.client.getHabbo()) && !room.getRoomInfo().isRoomOwner(this.client.getHabbo()))) { return; } - List wireds = new ArrayList<>(); + List wireds = new ArrayList<>(); wireds.addAll(room.getRoomSpecialTypes().getConditions()); wireds.addAll(room.getRoomSpecialTypes().getEffects()); // Find the item with the given ID in the room - Optional item = wireds.stream() + Optional item = wireds.stream() .filter(wired -> wired.getId() == itemId) .findFirst(); @@ -56,13 +56,13 @@ public class ApplySnapshotEvent extends MessageHandler { return; } - HabboItem wiredItem = item.get(); + RoomItem wiredItem = item.get(); // The item should have settings to match furni state, position and rotation if (wiredItem instanceof InteractionWiredMatchFurniSettings wired) { // Try to apply the set settings to each item wired.getMatchSettings().forEach(setting -> { - HabboItem matchItem = room.getHabboItem(setting.getItem_id()); + RoomItem matchItem = room.getHabboItem(setting.getItem_id()); // Match state if (wired.shouldMatchState() && matchItem.allowWiredResetState() && !setting.getState().equals(" ") && !matchItem.getExtradata().equals(setting.getState())) { diff --git a/src/main/java/com/eu/habbo/messages/incoming/wired/UpdateActionEvent.java b/src/main/java/com/eu/habbo/messages/incoming/wired/UpdateActionEvent.java index 80c3d987..32fd699b 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/wired/UpdateActionEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/wired/UpdateActionEvent.java @@ -13,10 +13,10 @@ public class UpdateActionEvent extends MessageHandler { public void handle() { int itemId = this.packet.readInt(); - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); if (room != null) { - if (room.hasRights(this.client.getHabbo()) || room.getOwnerId() == this.client.getHabbo().getHabboInfo().getId() || this.client.getHabbo().hasRight(Permission.ACC_ANYROOMOWNER) || this.client.getHabbo().hasRight(Permission.ACC_MOVEROTATE)) { + if (room.hasRights(this.client.getHabbo()) || room.getRoomInfo().getOwnerInfo().getId() == this.client.getHabbo().getHabboInfo().getId() || this.client.getHabbo().hasRight(Permission.ACC_ANYROOMOWNER) || this.client.getHabbo().hasRight(Permission.ACC_MOVEROTATE)) { //TODO Check SUPER WIRED PERMISSIONS TOO InteractionWiredEffect effect = room.getRoomSpecialTypes().getEffect(itemId); diff --git a/src/main/java/com/eu/habbo/messages/incoming/wired/UpdateConditionEvent.java b/src/main/java/com/eu/habbo/messages/incoming/wired/UpdateConditionEvent.java index 24ce1cb6..96d3be2a 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/wired/UpdateConditionEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/wired/UpdateConditionEvent.java @@ -13,10 +13,10 @@ public class UpdateConditionEvent extends MessageHandler { public void handle() { int itemId = this.packet.readInt(); - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); if (room != null) { - if (room.hasRights(this.client.getHabbo()) || room.getOwnerId() == this.client.getHabbo().getHabboInfo().getId() || this.client.getHabbo().hasRight(Permission.ACC_ANYROOMOWNER) || this.client.getHabbo().hasRight(Permission.ACC_MOVEROTATE)) { + if (room.hasRights(this.client.getHabbo()) || room.getRoomInfo().getOwnerInfo().getId() == this.client.getHabbo().getHabboInfo().getId() || this.client.getHabbo().hasRight(Permission.ACC_ANYROOMOWNER) || this.client.getHabbo().hasRight(Permission.ACC_MOVEROTATE)) { InteractionWiredCondition condition = room.getRoomSpecialTypes().getCondition(itemId); try { diff --git a/src/main/java/com/eu/habbo/messages/incoming/wired/UpdateTriggerEvent.java b/src/main/java/com/eu/habbo/messages/incoming/wired/UpdateTriggerEvent.java index 7f3d0ff7..b277efb1 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/wired/UpdateTriggerEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/wired/UpdateTriggerEvent.java @@ -13,10 +13,10 @@ public class UpdateTriggerEvent extends MessageHandler { public void handle() { int itemId = this.packet.readInt(); - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.client.getHabbo().getRoomUnit().getRoom(); if (room != null) { - if (room.hasRights(this.client.getHabbo()) || room.getOwnerId() == this.client.getHabbo().getHabboInfo().getId() || this.client.getHabbo().hasRight(Permission.ACC_ANYROOMOWNER) || this.client.getHabbo().hasRight(Permission.ACC_MOVEROTATE)) { + if (room.hasRights(this.client.getHabbo()) || room.getRoomInfo().getOwnerInfo().getId() == this.client.getHabbo().getHabboInfo().getId() || this.client.getHabbo().hasRight(Permission.ACC_ANYROOMOWNER) || this.client.getHabbo().hasRight(Permission.ACC_MOVEROTATE)) { InteractionWiredTrigger trigger = room.getRoomSpecialTypes().getTrigger(itemId); try { diff --git a/src/main/java/com/eu/habbo/messages/outgoing/guides/GuideSessionInvitedToGuideRoomMessageComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/guides/GuideSessionInvitedToGuideRoomMessageComposer.java index 0db1cc67..f044aea3 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/guides/GuideSessionInvitedToGuideRoomMessageComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/guides/GuideSessionInvitedToGuideRoomMessageComposer.java @@ -15,8 +15,8 @@ public class GuideSessionInvitedToGuideRoomMessageComposer extends MessageCompos @Override protected ServerMessage composeInternal() { this.response.init(Outgoing.guideSessionInvitedToGuideRoomMessageComposer); - this.response.appendInt(this.room != null ? this.room.getId() : 0); - this.response.appendString(this.room != null ? this.room.getName() : ""); + this.response.appendInt(this.room != null ? this.room.getRoomInfo().getId() : 0); + this.response.appendString(this.room != null ? this.room.getRoomInfo().getName() : ""); return this.response; } } diff --git a/src/main/java/com/eu/habbo/messages/outgoing/guides/GuideSessionRequesterRoomMessageComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/guides/GuideSessionRequesterRoomMessageComposer.java index bcce411b..61d95616 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/guides/GuideSessionRequesterRoomMessageComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/guides/GuideSessionRequesterRoomMessageComposer.java @@ -12,7 +12,7 @@ public class GuideSessionRequesterRoomMessageComposer extends MessageComposer { @Override protected ServerMessage composeInternal() { this.response.init(Outgoing.guideSessionRequesterRoomMessageComposer); - this.response.appendInt(this.room != null ? this.room.getId() : 0); + this.response.appendInt(this.room != null ? this.room.getRoomInfo().getId() : 0); return this.response; } } diff --git a/src/main/java/com/eu/habbo/messages/outgoing/guilds/FavoriteMembershipUpdateMessageComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/guilds/FavoriteMembershipUpdateMessageComposer.java index 28b34815..72aad389 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/guilds/FavoriteMembershipUpdateMessageComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/guilds/FavoriteMembershipUpdateMessageComposer.java @@ -1,7 +1,7 @@ package com.eu.habbo.messages.outgoing.guilds; import com.eu.habbo.habbohotel.guilds.Guild; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.messages.outgoing.MessageComposer; import com.eu.habbo.messages.outgoing.Outgoing; @@ -16,7 +16,7 @@ public class FavoriteMembershipUpdateMessageComposer extends MessageComposer { @Override protected ServerMessage composeInternal() { this.response.init(Outgoing.favoriteMembershipUpdateMessageComposer); - this.response.appendInt(this.roomUnit.getId()); + this.response.appendInt(this.roomUnit.getVirtualId()); this.response.appendInt(this.guild != null ? this.guild.getId() : 0); this.response.appendInt(this.guild != null ? this.guild.getState().getState() : 3); this.response.appendString(this.guild != null ? this.guild.getName() : ""); diff --git a/src/main/java/com/eu/habbo/messages/outgoing/guilds/GuildCreationInfoMessageComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/guilds/GuildCreationInfoMessageComposer.java index 670715c3..2edf2412 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/guilds/GuildCreationInfoMessageComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/guilds/GuildCreationInfoMessageComposer.java @@ -18,8 +18,8 @@ public class GuildCreationInfoMessageComposer extends MessageComposer { this.response.appendInt(this.rooms.size()); for (Room room : this.rooms) { - this.response.appendInt(room.getId()); - this.response.appendString(room.getName()); + this.response.appendInt(room.getRoomInfo().getId()); + this.response.appendString(room.getRoomInfo().getName()); this.response.appendBoolean(false); } diff --git a/src/main/java/com/eu/habbo/messages/outgoing/guilds/GuildFurniContextMenuInfoMessageComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/guilds/GuildFurniContextMenuInfoMessageComposer.java index 3fc033e8..ff968a33 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/guilds/GuildFurniContextMenuInfoMessageComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/guilds/GuildFurniContextMenuInfoMessageComposer.java @@ -3,7 +3,7 @@ package com.eu.habbo.messages.outgoing.guilds; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.guilds.Guild; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.messages.outgoing.MessageComposer; import com.eu.habbo.messages.outgoing.Outgoing; @@ -13,7 +13,7 @@ import lombok.AllArgsConstructor; public class GuildFurniContextMenuInfoMessageComposer extends MessageComposer { private final Habbo habbo; private final Guild guild; - private final HabboItem item; + private final RoomItem item; @Override protected ServerMessage composeInternal() { diff --git a/src/main/java/com/eu/habbo/messages/outgoing/inventory/FurniListAddOrUpdateComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/inventory/FurniListAddOrUpdateComposer.java index 34809b06..fc797a33 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/inventory/FurniListAddOrUpdateComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/inventory/FurniListAddOrUpdateComposer.java @@ -1,7 +1,7 @@ package com.eu.habbo.messages.outgoing.inventory; import com.eu.habbo.habbohotel.items.FurnitureType; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.messages.outgoing.MessageComposer; import com.eu.habbo.messages.outgoing.Outgoing; @@ -9,43 +9,43 @@ import lombok.AllArgsConstructor; @AllArgsConstructor public class FurniListAddOrUpdateComposer extends MessageComposer { - private final HabboItem habboItem; + private final RoomItem roomItem; @Override protected ServerMessage composeInternal() { this.response.init(Outgoing.furniListAddOrUpdateComposer); - this.response.appendInt(this.habboItem.getGiftAdjustedId()); - this.response.appendString(this.habboItem.getBaseItem().getType().code); - this.response.appendInt(this.habboItem.getId()); - this.response.appendInt(this.habboItem.getBaseItem().getSpriteId()); + this.response.appendInt(this.roomItem.getGiftAdjustedId()); + this.response.appendString(this.roomItem.getBaseItem().getType().code); + this.response.appendInt(this.roomItem.getId()); + this.response.appendInt(this.roomItem.getBaseItem().getSpriteId()); - switch (this.habboItem.getBaseItem().getName()) { + switch (this.roomItem.getBaseItem().getName()) { case "landscape" -> this.response.appendInt(4); case "floor" -> this.response.appendInt(3); case "wallpaper" -> this.response.appendInt(2); case "poster" -> this.response.appendInt(6); } - if (this.habboItem.isLimited()) { + if (this.roomItem.isLimited()) { this.response.appendInt(1); this.response.appendInt(256); - this.response.appendString(this.habboItem.getExtradata()); - this.response.appendInt(this.habboItem.getLimitedSells()); - this.response.appendInt(this.habboItem.getLimitedStack()); + this.response.appendString(this.roomItem.getExtradata()); + this.response.appendInt(this.roomItem.getLimitedSells()); + this.response.appendInt(this.roomItem.getLimitedStack()); } else { this.response.appendInt(1); this.response.appendInt(0); - this.response.appendString(this.habboItem.getExtradata()); + this.response.appendString(this.roomItem.getExtradata()); } - this.response.appendBoolean(this.habboItem.getBaseItem().allowRecyle()); - this.response.appendBoolean(this.habboItem.getBaseItem().allowTrade()); - this.response.appendBoolean(!this.habboItem.isLimited() && this.habboItem.getBaseItem().allowInventoryStack()); - this.response.appendBoolean(this.habboItem.getBaseItem().allowMarketplace()); + this.response.appendBoolean(this.roomItem.getBaseItem().allowRecyle()); + this.response.appendBoolean(this.roomItem.getBaseItem().allowTrade()); + this.response.appendBoolean(!this.roomItem.isLimited() && this.roomItem.getBaseItem().allowInventoryStack()); + this.response.appendBoolean(this.roomItem.getBaseItem().allowMarketplace()); this.response.appendInt(-1); this.response.appendBoolean(false); this.response.appendInt(-1); - if (this.habboItem.getBaseItem().getType() == FurnitureType.FLOOR) { + if (this.roomItem.getBaseItem().getType() == FurnitureType.FLOOR) { this.response.appendString(""); //slotId this.response.appendInt(0); } diff --git a/src/main/java/com/eu/habbo/messages/outgoing/inventory/FurniListComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/inventory/FurniListComposer.java index 9def2fb0..71f01bec 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/inventory/FurniListComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/inventory/FurniListComposer.java @@ -2,7 +2,7 @@ package com.eu.habbo.messages.outgoing.inventory; import com.eu.habbo.habbohotel.items.FurnitureType; import com.eu.habbo.habbohotel.items.interactions.InteractionGift; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.messages.outgoing.MessageComposer; import com.eu.habbo.messages.outgoing.Outgoing; @@ -16,11 +16,11 @@ import java.util.List; @Slf4j @AllArgsConstructor -public class FurniListComposer extends MessageComposer implements TIntObjectProcedure { +public class FurniListComposer extends MessageComposer implements TIntObjectProcedure { private final int fragmentNumber; private final int totalFragments; - private final TIntObjectMap items; + private final TIntObjectMap items; @Override @@ -41,14 +41,14 @@ public class FurniListComposer extends MessageComposer implements TIntObjectProc } @Override - public boolean execute(int a, HabboItem habboItem) { - this.response.appendInt(habboItem.getGiftAdjustedId()); - this.response.appendString(habboItem.getBaseItem().getType().code); - this.response.appendInt(habboItem.getId()); - this.response.appendInt(habboItem.getBaseItem().getSpriteId()); + public boolean execute(int a, RoomItem roomItem) { + this.response.appendInt(roomItem.getGiftAdjustedId()); + this.response.appendString(roomItem.getBaseItem().getType().code); + this.response.appendInt(roomItem.getId()); + this.response.appendInt(roomItem.getBaseItem().getSpriteId()); - if (habboItem.getBaseItem().getName().equals("floor") || habboItem.getBaseItem().getName().equals("song_disk") || habboItem.getBaseItem().getName().equals("landscape") || habboItem.getBaseItem().getName().equals("wallpaper") || habboItem.getBaseItem().getName().equals("poster")) { - switch (habboItem.getBaseItem().getName()) { + if (roomItem.getBaseItem().getName().equals("floor") || roomItem.getBaseItem().getName().equals("song_disk") || roomItem.getBaseItem().getName().equals("landscape") || roomItem.getBaseItem().getName().equals("wallpaper") || roomItem.getBaseItem().getName().equals("poster")) { + switch (roomItem.getBaseItem().getName()) { case "landscape" -> this.response.appendInt(4); case "floor" -> this.response.appendInt(3); case "wallpaper" -> this.response.appendInt(2); @@ -57,39 +57,39 @@ public class FurniListComposer extends MessageComposer implements TIntObjectProc } this.response.appendInt(0); - this.response.appendString(habboItem.getExtradata()); + this.response.appendString(roomItem.getExtradata()); } else { - if (habboItem.getBaseItem().getName().equals("gnome_box")) + if (roomItem.getBaseItem().getName().equals("gnome_box")) this.response.appendInt(13); else - this.response.appendInt(habboItem instanceof InteractionGift ? ((((InteractionGift) habboItem).getColorId() * 1000) + ((InteractionGift) habboItem).getRibbonId()) : 1); + this.response.appendInt(roomItem instanceof InteractionGift ? ((((InteractionGift) roomItem).getColorId() * 1000) + ((InteractionGift) roomItem).getRibbonId()) : 1); - habboItem.serializeExtradata(this.response); + roomItem.serializeExtradata(this.response); } - this.response.appendBoolean(habboItem.getBaseItem().allowRecyle()); - this.response.appendBoolean(habboItem.getBaseItem().allowTrade()); - this.response.appendBoolean(!habboItem.isLimited() && habboItem.getBaseItem().allowInventoryStack()); - this.response.appendBoolean(habboItem.getBaseItem().allowMarketplace()); + this.response.appendBoolean(roomItem.getBaseItem().allowRecyle()); + this.response.appendBoolean(roomItem.getBaseItem().allowTrade()); + this.response.appendBoolean(!roomItem.isLimited() && roomItem.getBaseItem().allowInventoryStack()); + this.response.appendBoolean(roomItem.getBaseItem().allowMarketplace()); this.response.appendInt(-1); this.response.appendBoolean(true); this.response.appendInt(-1); - if (habboItem.getBaseItem().getType() == FurnitureType.FLOOR) { + if (roomItem.getBaseItem().getType() == FurnitureType.FLOOR) { this.response.appendString(""); - if(habboItem.getBaseItem().getName().equals("song_disk")) { - List extraDataAsList = Arrays.asList(habboItem.getExtradata().split("\n")); + if(roomItem.getBaseItem().getName().equals("song_disk")) { + List extraDataAsList = Arrays.asList(roomItem.getExtradata().split("\n")); this.response.appendInt(Integer.valueOf(extraDataAsList.get(extraDataAsList.size() - 1))); return true; } - this.response.appendInt(habboItem instanceof InteractionGift ? ((((InteractionGift) habboItem).getColorId() * 1000) + ((InteractionGift) habboItem).getRibbonId()) : 1); + this.response.appendInt(roomItem instanceof InteractionGift ? ((((InteractionGift) roomItem).getColorId() * 1000) + ((InteractionGift) roomItem).getRibbonId()) : 1); } return true; } - public void addExtraDataToResponse(HabboItem habboItem) { + public void addExtraDataToResponse(RoomItem roomItem) { this.response.appendInt(0); - this.response.appendString(habboItem.getExtradata()); + this.response.appendString(roomItem.getExtradata()); } } diff --git a/src/main/java/com/eu/habbo/messages/outgoing/inventory/UnseenItemsComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/inventory/UnseenItemsComposer.java index 670f204e..2f7313ef 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/inventory/UnseenItemsComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/inventory/UnseenItemsComposer.java @@ -1,6 +1,6 @@ package com.eu.habbo.messages.outgoing.inventory; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.messages.outgoing.MessageComposer; import com.eu.habbo.messages.outgoing.Outgoing; @@ -10,18 +10,18 @@ import java.util.List; import java.util.Map; public class UnseenItemsComposer extends MessageComposer { - private THashSet itemsList; - private HabboItem item; + private THashSet itemsList; + private RoomItem item; private int[] ids; private AddHabboItemCategory category; private Map> entries; - public UnseenItemsComposer(THashSet itemsList) { + public UnseenItemsComposer(THashSet itemsList) { this.itemsList = itemsList; this.category = AddHabboItemCategory.OWNED_FURNI; } - public UnseenItemsComposer(HabboItem item) { + public UnseenItemsComposer(RoomItem item) { this.item = item; this.category = AddHabboItemCategory.OWNED_FURNI; } @@ -67,8 +67,8 @@ public class UnseenItemsComposer extends MessageComposer { this.response.appendInt(1); this.response.appendInt(1); this.response.appendInt(this.itemsList.size()); - for (HabboItem habboItem : this.itemsList) { - this.response.appendInt(habboItem.getId()); + for (RoomItem roomItem : this.itemsList) { + this.response.appendInt(roomItem.getId()); } } else { this.response.appendInt(1); diff --git a/src/main/java/com/eu/habbo/messages/outgoing/modtool/CfhChatlogComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/modtool/CfhChatlogComposer.java index ff356e02..d4e763d2 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/modtool/CfhChatlogComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/modtool/CfhChatlogComposer.java @@ -73,8 +73,8 @@ public class CfhChatlogComposer extends MessageComposer { this.response.appendInt(this.issue.roomId); ModToolChatRecordDataContext.GROUP_ID.append(this.response); - Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(this.issue.roomId); - this.response.appendInt(room == null ? 0 : room.getGuildId()); + Room room = Emulator.getGameEnvironment().getRoomManager().getActiveRoomById(this.issue.roomId); + this.response.appendInt(room == null ? 0 : room.getRoomInfo().getGuild().getId()); } this.response.appendShort(this.chatlog.size()); diff --git a/src/main/java/com/eu/habbo/messages/outgoing/modtool/ModeratorRoomInfoComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/modtool/ModeratorRoomInfoComposer.java index 4e05d6f0..44d93cdd 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/modtool/ModeratorRoomInfoComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/modtool/ModeratorRoomInfoComposer.java @@ -13,17 +13,17 @@ public class ModeratorRoomInfoComposer extends MessageComposer { @Override protected ServerMessage composeInternal() { this.response.init(Outgoing.moderatorRoomInfoComposer); - this.response.appendInt(this.room.getId()); - this.response.appendInt(this.room.getCurrentHabbos().size()); - this.response.appendBoolean(this.room.getHabbo(this.room.getOwnerId()) != null); - this.response.appendInt(this.room.getOwnerId()); - this.response.appendString(this.room.getOwnerName()); + this.response.appendInt(this.room.getRoomInfo().getId()); + this.response.appendInt(this.room.getRoomUnitManager().getCurrentRoomHabbos().size()); + this.response.appendBoolean(this.room.getRoomUnitManager().getRoomHabboById(this.room.getRoomInfo().getOwnerInfo().getId()) != null); + this.response.appendInt(this.room.getRoomInfo().getOwnerInfo().getId()); + this.response.appendString(this.room.getRoomInfo().getOwnerInfo().getUsername()); this.response.appendBoolean(true); - this.response.appendString(this.room.getName()); - this.response.appendString(this.room.getDescription()); - this.response.appendInt(this.room.getTags().split(";").length); - for (int i = 0; i < this.room.getTags().split(";").length; i++) { - this.response.appendString(this.room.getTags().split(";")[i]); + this.response.appendString(this.room.getRoomInfo().getName()); + this.response.appendString(this.room.getRoomInfo().getDescription()); + this.response.appendInt(this.room.getRoomInfo().getTags().split(";").length); + for (int i = 0; i < this.room.getRoomInfo().getTags().split(";").length; i++) { + this.response.appendString(this.room.getRoomInfo().getTags().split(";")[i]); } return this.response; } diff --git a/src/main/java/com/eu/habbo/messages/outgoing/modtool/RoomChatlogComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/modtool/RoomChatlogComposer.java index e7118bda..1d16b565 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/modtool/RoomChatlogComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/modtool/RoomChatlogComposer.java @@ -23,10 +23,10 @@ public class RoomChatlogComposer extends MessageComposer { this.response.appendShort(2); this.response.appendString("roomName"); this.response.appendByte(2); - this.response.appendString(this.room.getName()); + this.response.appendString(this.room.getRoomInfo().getName()); this.response.appendString("roomId"); this.response.appendByte(1); - this.response.appendInt(this.room.getId()); + this.response.appendInt(this.room.getRoomInfo().getId()); SimpleDateFormat formatDate = new SimpleDateFormat("HH:mm"); diff --git a/src/main/java/com/eu/habbo/messages/outgoing/navigator/FlatCreatedComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/navigator/FlatCreatedComposer.java index 5b7ebaf1..04e32e6c 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/navigator/FlatCreatedComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/navigator/FlatCreatedComposer.java @@ -13,8 +13,8 @@ public class FlatCreatedComposer extends MessageComposer { @Override protected ServerMessage composeInternal() { this.response.init(Outgoing.flatCreatedComposer); - this.response.appendInt(this.room.getId()); - this.response.appendString(this.room.getName()); + this.response.appendInt(this.room.getRoomInfo().getId()); + this.response.appendString(this.room.getRoomInfo().getName()); return this.response; } } diff --git a/src/main/java/com/eu/habbo/messages/outgoing/rooms/BannedUsersFromRoomComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/rooms/BannedUsersFromRoomComposer.java index c09508f2..7e7eaded 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/rooms/BannedUsersFromRoomComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/rooms/BannedUsersFromRoomComposer.java @@ -39,7 +39,7 @@ public class BannedUsersFromRoomComposer extends MessageComposer { return null; this.response.init(Outgoing.bannedUsersFromRoomComposer); - this.response.appendInt(this.room.getId()); + this.response.appendInt(this.room.getRoomInfo().getId()); this.response.appendInt(roomBans.size()); for (RoomBan ban : roomBans) { diff --git a/src/main/java/com/eu/habbo/messages/outgoing/rooms/FlatControllerAddedComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/rooms/FlatControllerAddedComposer.java index 8534955a..99fd4b5d 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/rooms/FlatControllerAddedComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/rooms/FlatControllerAddedComposer.java @@ -15,7 +15,7 @@ public class FlatControllerAddedComposer extends MessageComposer { @Override protected ServerMessage composeInternal() { this.response.init(Outgoing.flatControllerAddedComposer); - this.response.appendInt(this.room.getId()); + this.response.appendInt(this.room.getRoomInfo().getId()); this.response.appendInt(this.userId); this.response.appendString(this.userName); return this.response; diff --git a/src/main/java/com/eu/habbo/messages/outgoing/rooms/FlatControllerRemovedComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/rooms/FlatControllerRemovedComposer.java index 4300380c..3c2d73c9 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/rooms/FlatControllerRemovedComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/rooms/FlatControllerRemovedComposer.java @@ -15,7 +15,7 @@ public class FlatControllerRemovedComposer extends MessageComposer { @Override protected ServerMessage composeInternal() { this.response.init(Outgoing.flatControllerRemovedComposer); - this.response.appendInt(this.room.getId()); + this.response.appendInt(this.room.getRoomInfo().getId()); this.response.appendInt(this.userId); return this.response; } diff --git a/src/main/java/com/eu/habbo/messages/outgoing/rooms/FlatControllersComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/rooms/FlatControllersComposer.java index 079357f7..77a70991 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/rooms/FlatControllersComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/rooms/FlatControllersComposer.java @@ -16,7 +16,7 @@ public class FlatControllersComposer extends MessageComposer { @Override protected ServerMessage composeInternal() { this.response.init(Outgoing.flatControllersComposer); - this.response.appendInt(this.room.getId()); + this.response.appendInt(this.room.getRoomInfo().getId()); THashMap rightsMap = this.room.getUsersWithRights(); diff --git a/src/main/java/com/eu/habbo/messages/outgoing/rooms/FloorHeightMapComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/rooms/FloorHeightMapComposer.java index 253b4ee0..321a481f 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/rooms/FloorHeightMapComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/rooms/FloorHeightMapComposer.java @@ -14,7 +14,7 @@ public class FloorHeightMapComposer extends MessageComposer { protected ServerMessage composeInternal() { this.response.init(Outgoing.floorHeightMapComposer); this.response.appendBoolean(true); - this.response.appendInt(this.room.getWallHeight()); //FixedWallsHeight + this.response.appendInt(this.room.getRoomInfo().getWallThickness()); //FixedWallsHeight this.response.appendString(this.room.getLayout().getRelativeMap()); return this.response; } diff --git a/src/main/java/com/eu/habbo/messages/outgoing/rooms/GamePlayerValueMessageComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/rooms/GamePlayerValueMessageComposer.java index 14017806..96ecebbe 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/rooms/GamePlayerValueMessageComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/rooms/GamePlayerValueMessageComposer.java @@ -13,7 +13,7 @@ public class GamePlayerValueMessageComposer extends MessageComposer { @Override protected ServerMessage composeInternal() { this.response.init(Outgoing.gamePlayerValueMessageComposer); - this.response.appendInt(this.gamePlayer.getHabbo().getRoomUnit().getId()); + this.response.appendInt(this.gamePlayer.getHabbo().getRoomUnit().getVirtualId()); this.response.appendInt(this.gamePlayer.getLives()); return this.response; } diff --git a/src/main/java/com/eu/habbo/messages/outgoing/rooms/GetGuestRoomResultComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/rooms/GetGuestRoomResultComposer.java index 0f37d218..e2a73ccf 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/rooms/GetGuestRoomResultComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/rooms/GetGuestRoomResultComposer.java @@ -1,7 +1,6 @@ package com.eu.habbo.messages.outgoing.rooms; import com.eu.habbo.Emulator; -import com.eu.habbo.habbohotel.guilds.Guild; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.messages.ServerMessage; @@ -20,89 +19,31 @@ public class GetGuestRoomResultComposer extends MessageComposer { protected ServerMessage composeInternal() { this.response.init(Outgoing.getGuestRoomResultComposer); this.response.appendBoolean(this.enterRoom); - this.response.appendInt(this.room.getId()); - this.response.appendString(this.room.getName()); - if (this.room.isPublicRoom()) { - this.response.appendInt(0); - this.response.appendString(""); - } else { - this.response.appendInt(this.room.getOwnerId()); - this.response.appendString(this.room.getOwnerName()); - } - this.response.appendInt(this.room.getState().ordinal()); - this.response.appendInt(this.room.getUserCount()); - this.response.appendInt(this.room.getUsersMax()); - this.response.appendString(this.room.getDescription()); - this.response.appendInt(this.room.getTradeMode()); - this.response.appendInt(this.room.getScore()); - this.response.appendInt(2);//Top rated room rank - this.response.appendInt(this.room.getCategory()); - if (!this.room.getTags().isEmpty()) { - String[] tags = this.room.getTags().split(";"); - this.response.appendInt(tags.length); - for (String s : tags) { - this.response.appendString(s); - } - } else { - this.response.appendInt(0); - } - - int base = 0; - - if (this.room.getGuildId() > 0) { - base = base | 2; - } - - if (!this.room.isPublicRoom()) { - base = base | 8; - } - - if (this.room.isPromoted()) { - base = base | 4; - } - - if (this.room.isAllowPets()) { - base = base | 16; - } - - this.response.appendInt(base); - - if (this.room.getGuildId() > 0) { - Guild g = Emulator.getGameEnvironment().getGuildManager().getGuild(this.room.getGuildId()); - if (g != null) { - this.response.appendInt(g.getId()); - this.response.appendString(g.getName()); - this.response.appendString(g.getBadge()); - } else { - this.response.appendInt(0); - this.response.appendString(""); - this.response.appendString(""); - } - } - - if (this.room.isPromoted()) { - this.response.appendString(this.room.getPromotion().getTitle()); - this.response.appendString(this.room.getPromotion().getDescription()); - this.response.appendInt((this.room.getPromotion().getEndTimestamp() - Emulator.getIntUnixTimestamp()) / 60); - } + this.response.append(this.room); this.response.appendBoolean(this.roomForward); - this.response.appendBoolean(this.room.isStaffPromotedRoom()); // staffpicked - this.response.appendBoolean(this.room.hasGuild() && Emulator.getGameEnvironment().getGuildManager().getGuildMember(this.room.getGuildId(), this.habbo.getHabboInfo().getId()) != null); // is group member + this.response.appendBoolean(this.room.getRoomInfo().isStaffPicked()); // staffpicked + + if(this.room.getRoomInfo().hasGuild()) { + this.response.appendBoolean(Emulator.getGameEnvironment().getGuildManager().getGuildMember(this.room.getRoomInfo().getGuild().getId(), this.habbo.getHabboInfo().getId()) != null); + } else { + this.response.appendBoolean(false); + } + this.response.appendBoolean(this.room.isMuted()); // isroommuted - this.response.appendInt(this.room.getMuteOption()); - this.response.appendInt(this.room.getKickOption()); - this.response.appendInt(this.room.getBanOption()); + this.response.appendInt(this.room.getRoomInfo().getWhoCanMuteOption()); + this.response.appendInt(this.room.getRoomInfo().getWhoCanKickOption()); + this.response.appendInt(this.room.getRoomInfo().getWhoCanBanOption()); this.response.appendBoolean(this.room.hasRights(this.habbo)); //mute all button - this.response.appendInt(this.room.getChatMode()); - this.response.appendInt(this.room.getChatWeight()); - this.response.appendInt(this.room.getChatSpeed()); - this.response.appendInt(this.room.getChatDistance()); - this.response.appendInt(this.room.getChatProtection()); + this.response.appendInt(this.room.getRoomInfo().getChatMode()); + this.response.appendInt(this.room.getRoomInfo().getChatWeight()); + this.response.appendInt(this.room.getRoomInfo().getChatSpeed()); + this.response.appendInt(this.room.getRoomInfo().getChatDistance()); + this.response.appendInt(this.room.getRoomInfo().getChatProtection()); return this.response; diff --git a/src/main/java/com/eu/habbo/messages/outgoing/rooms/RoomChatSettingsMessageComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/rooms/RoomChatSettingsMessageComposer.java index 0f51fb6a..d73702f8 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/rooms/RoomChatSettingsMessageComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/rooms/RoomChatSettingsMessageComposer.java @@ -13,11 +13,11 @@ public class RoomChatSettingsMessageComposer extends MessageComposer { @Override protected ServerMessage composeInternal() { this.response.init(Outgoing.roomChatSettingsMessageComposer); - this.response.appendInt(this.room.getChatMode()); - this.response.appendInt(this.room.getChatWeight()); - this.response.appendInt(this.room.getChatSpeed()); - this.response.appendInt(this.room.getChatDistance()); - this.response.appendInt(this.room.getChatProtection()); + this.response.appendInt(this.room.getRoomInfo().getChatMode()); + this.response.appendInt(this.room.getRoomInfo().getChatWeight()); + this.response.appendInt(this.room.getRoomInfo().getChatSpeed()); + this.response.appendInt(this.room.getRoomInfo().getChatDistance()); + this.response.appendInt(this.room.getRoomInfo().getChatProtection()); return this.response; } } diff --git a/src/main/java/com/eu/habbo/messages/outgoing/rooms/RoomEntryInfoComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/rooms/RoomEntryInfoComposer.java index b236b606..74e1ee07 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/rooms/RoomEntryInfoComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/rooms/RoomEntryInfoComposer.java @@ -13,8 +13,8 @@ public class RoomEntryInfoComposer extends MessageComposer { @Override protected ServerMessage composeInternal() { this.response.init(Outgoing.roomEntryInfoComposer); - this.response.appendInt(this.room.getId()); - this.response.appendString(this.room.getOwnerName()); + this.response.appendInt(this.room.getRoomInfo().getId()); + this.response.appendString(this.room.getRoomInfo().getOwnerInfo().getUsername()); return this.response; } } diff --git a/src/main/java/com/eu/habbo/messages/outgoing/rooms/RoomEntryInfoMessageComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/rooms/RoomEntryInfoMessageComposer.java index cad2f54f..254611a9 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/rooms/RoomEntryInfoMessageComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/rooms/RoomEntryInfoMessageComposer.java @@ -14,7 +14,7 @@ public class RoomEntryInfoMessageComposer extends MessageComposer { @Override protected ServerMessage composeInternal() { this.response.init(Outgoing.roomEntryInfoMessageComposer); - this.response.appendInt(this.room.getId()); + this.response.appendInt(this.room.getRoomInfo().getId()); this.response.appendBoolean(this.roomOwner); return this.response; } diff --git a/src/main/java/com/eu/habbo/messages/outgoing/rooms/RoomFloorThicknessUpdatedComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/rooms/RoomFloorThicknessUpdatedComposer.java index f123933c..a5475d47 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/rooms/RoomFloorThicknessUpdatedComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/rooms/RoomFloorThicknessUpdatedComposer.java @@ -13,9 +13,9 @@ public class RoomFloorThicknessUpdatedComposer extends MessageComposer { @Override protected ServerMessage composeInternal() { this.response.init(Outgoing.roomFloorThicknessUpdatedComposer); - this.response.appendBoolean(this.room.isHideWall()); //Hide walls? - this.response.appendInt(this.room.getFloorSize()); //Floor Thickness - this.response.appendInt(this.room.getWallSize()); //Wall Thickness + this.response.appendBoolean(this.room.getRoomInfo().isHideWalls()); + this.response.appendInt(this.room.getRoomInfo().getFloorThickness()); + this.response.appendInt(this.room.getRoomInfo().getWallThickness()); return this.response; } } \ No newline at end of file diff --git a/src/main/java/com/eu/habbo/messages/outgoing/rooms/RoomInfoUpdatedComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/rooms/RoomInfoUpdatedComposer.java index 77ed4d97..a0e2e673 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/rooms/RoomInfoUpdatedComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/rooms/RoomInfoUpdatedComposer.java @@ -13,7 +13,7 @@ public class RoomInfoUpdatedComposer extends MessageComposer { @Override protected ServerMessage composeInternal() { this.response.init(Outgoing.roomInfoUpdatedComposer); - this.response.appendInt(this.room.getId()); + this.response.appendInt(this.room.getRoomInfo().getId()); return this.response; } } diff --git a/src/main/java/com/eu/habbo/messages/outgoing/rooms/RoomReadyMessageComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/rooms/RoomReadyMessageComposer.java index d57b2c22..641e07c8 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/rooms/RoomReadyMessageComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/rooms/RoomReadyMessageComposer.java @@ -14,7 +14,7 @@ public class RoomReadyMessageComposer extends MessageComposer { protected ServerMessage composeInternal() { this.response.init(Outgoing.roomReadyMessageComposer); this.response.appendString(this.room.getLayout().getName()); - this.response.appendInt(this.room.getId()); + this.response.appendInt(this.room.getRoomInfo().getId()); return this.response; } } diff --git a/src/main/java/com/eu/habbo/messages/outgoing/rooms/RoomSettingsDataComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/rooms/RoomSettingsDataComposer.java index 6e461e65..84ff0674 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/rooms/RoomSettingsDataComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/rooms/RoomSettingsDataComposer.java @@ -12,17 +12,17 @@ public class RoomSettingsDataComposer extends MessageComposer { @Override protected ServerMessage composeInternal() { this.response.init(Outgoing.roomSettingsDataComposer); - this.response.appendInt(this.room.getId()); - this.response.appendString(this.room.getName()); - this.response.appendString(this.room.getDescription()); - this.response.appendInt(this.room.getState().ordinal()); - this.response.appendInt(this.room.getCategory()); - this.response.appendInt(this.room.getUsersMax()); - this.response.appendInt(this.room.getUsersMax()); + this.response.appendInt(this.room.getRoomInfo().getId()); + this.response.appendString(this.room.getRoomInfo().getName()); + this.response.appendString(this.room.getRoomInfo().getDescription()); + this.response.appendInt(this.room.getRoomInfo().getState().ordinal()); + this.response.appendInt(this.room.getRoomInfo().getCategory().getId()); + this.response.appendInt(this.room.getRoomInfo().getMaxUsers()); + this.response.appendInt(this.room.getRoomInfo().getMaxUsers()); - if (!this.room.getTags().isEmpty()) { - this.response.appendInt(this.room.getTags().split(";").length); - for (String tag : this.room.getTags().split(";")) { + if (!this.room.getRoomInfo().getTags().isEmpty()) { + this.response.appendInt(this.room.getRoomInfo().getTags().split(";").length); + for (String tag : this.room.getRoomInfo().getTags().split(";")) { this.response.appendString(tag); } } else { @@ -30,25 +30,25 @@ public class RoomSettingsDataComposer extends MessageComposer { } //this.response.appendInt(this.room.getRights().size()); - this.response.appendInt(this.room.getTradeMode()); //Trade Mode - this.response.appendInt(this.room.isAllowPets() ? 1 : 0); - this.response.appendInt(this.room.isAllowPetsEat() ? 1 : 0); - this.response.appendInt(this.room.isAllowWalkthrough() ? 1 : 0); - this.response.appendInt(this.room.isHideWall() ? 1 : 0); - this.response.appendInt(this.room.getWallSize()); - this.response.appendInt(this.room.getFloorSize()); + this.response.appendInt(this.room.getRoomInfo().getTradeMode()); //Trade Mode + this.response.appendInt(this.room.getRoomInfo().isAllowPets() ? 1 : 0); + this.response.appendInt(this.room.getRoomInfo().isAllowPetsEat() ? 1 : 0); + this.response.appendInt(this.room.getRoomInfo().isAllowWalkthrough() ? 1 : 0); + this.response.appendInt(this.room.getRoomInfo().isHideWalls() ? 1 : 0); + this.response.appendInt(this.room.getRoomInfo().getWallThickness()); + this.response.appendInt(this.room.getRoomInfo().getFloorThickness()); - this.response.appendInt(this.room.getChatMode()); - this.response.appendInt(this.room.getChatWeight()); - this.response.appendInt(this.room.getChatSpeed()); - this.response.appendInt(this.room.getChatDistance()); - this.response.appendInt(this.room.getChatProtection()); + this.response.appendInt(this.room.getRoomInfo().getChatMode()); + this.response.appendInt(this.room.getRoomInfo().getChatWeight()); + this.response.appendInt(this.room.getRoomInfo().getChatSpeed()); + this.response.appendInt(this.room.getRoomInfo().getChatDistance()); + this.response.appendInt(this.room.getRoomInfo().getChatProtection()); this.response.appendBoolean(false); //IDK? - this.response.appendInt(this.room.getMuteOption()); - this.response.appendInt(this.room.getKickOption()); - this.response.appendInt(this.room.getBanOption()); + this.response.appendInt(this.room.getRoomInfo().getWhoCanMuteOption()); + this.response.appendInt(this.room.getRoomInfo().getWhoCanKickOption()); + this.response.appendInt(this.room.getRoomInfo().getWhoCanBanOption()); return this.response; } } diff --git a/src/main/java/com/eu/habbo/messages/outgoing/rooms/RoomSettingsSavedComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/rooms/RoomSettingsSavedComposer.java index 5ebf1aa1..6240dde0 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/rooms/RoomSettingsSavedComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/rooms/RoomSettingsSavedComposer.java @@ -13,7 +13,7 @@ public class RoomSettingsSavedComposer extends MessageComposer { @Override protected ServerMessage composeInternal() { this.response.init(Outgoing.roomSettingsSavedComposer); - this.response.appendInt(this.room.getId()); + this.response.appendInt(this.room.getRoomInfo().getId()); return this.response; } } diff --git a/src/main/java/com/eu/habbo/messages/outgoing/rooms/RoomVisualizationSettingsComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/rooms/RoomVisualizationSettingsComposer.java index 4982e0db..a434684c 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/rooms/RoomVisualizationSettingsComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/rooms/RoomVisualizationSettingsComposer.java @@ -13,9 +13,9 @@ public class RoomVisualizationSettingsComposer extends MessageComposer { @Override protected ServerMessage composeInternal() { this.response.init(Outgoing.roomVisualizationSettingsComposer); - this.response.appendBoolean(this.room.isHideWall()); - this.response.appendInt(this.room.getWallSize()); - this.response.appendInt(this.room.getFloorSize()); + this.response.appendBoolean(this.room.getRoomInfo().isHideWalls()); + this.response.appendInt(this.room.getRoomInfo().getWallThickness()); + this.response.appendInt(this.room.getRoomInfo().getFloorThickness()); return this.response; } } diff --git a/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/FloorItemOnRollerComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/FloorItemOnRollerComposer.java index 40629d13..092a2e9c 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/FloorItemOnRollerComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/FloorItemOnRollerComposer.java @@ -2,7 +2,7 @@ package com.eu.habbo.messages.outgoing.rooms.items; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.messages.outgoing.MessageComposer; import com.eu.habbo.messages.outgoing.Outgoing; @@ -12,8 +12,8 @@ import lombok.AllArgsConstructor; @AllArgsConstructor public class FloorItemOnRollerComposer extends MessageComposer { // THIS IS WRONG SlideObjectBundleMessageComposer - private final HabboItem item; - private final HabboItem roller; + private final RoomItem item; + private final RoomItem roller; private final RoomTile oldLocation; private final double oldZ; private final RoomTile newLocation; @@ -21,7 +21,7 @@ public class FloorItemOnRollerComposer extends MessageComposer { private final double heightOffset; private final Room room; - public FloorItemOnRollerComposer(HabboItem item, HabboItem roller, RoomTile newLocation, double heightOffset, Room room) { + public FloorItemOnRollerComposer(RoomItem item, RoomItem roller, RoomTile newLocation, double heightOffset, Room room) { this.item = item; this.roller = roller; this.newLocation = newLocation; diff --git a/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/ItemAddMessageComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/ItemAddMessageComposer.java index 88325771..84d63be3 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/ItemAddMessageComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/ItemAddMessageComposer.java @@ -1,6 +1,6 @@ package com.eu.habbo.messages.outgoing.rooms.items; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.messages.outgoing.MessageComposer; import com.eu.habbo.messages.outgoing.Outgoing; @@ -8,7 +8,7 @@ import lombok.AllArgsConstructor; @AllArgsConstructor public class ItemAddMessageComposer extends MessageComposer { - private final HabboItem item; + private final RoomItem item; private final String itemOwnerName; diff --git a/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/ItemRemoveMessageComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/ItemRemoveMessageComposer.java index 50fa9538..79954732 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/ItemRemoveMessageComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/ItemRemoveMessageComposer.java @@ -1,6 +1,6 @@ package com.eu.habbo.messages.outgoing.rooms.items; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.messages.outgoing.MessageComposer; import com.eu.habbo.messages.outgoing.Outgoing; @@ -8,7 +8,7 @@ import lombok.AllArgsConstructor; @AllArgsConstructor public class ItemRemoveMessageComposer extends MessageComposer { - private final HabboItem item; + private final RoomItem item; @Override protected ServerMessage composeInternal() { diff --git a/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/ItemUpdateMessageComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/ItemUpdateMessageComposer.java index d2b3ecf0..52a974e7 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/ItemUpdateMessageComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/ItemUpdateMessageComposer.java @@ -1,6 +1,6 @@ package com.eu.habbo.messages.outgoing.rooms.items; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.messages.outgoing.MessageComposer; import com.eu.habbo.messages.outgoing.Outgoing; @@ -8,7 +8,7 @@ import lombok.AllArgsConstructor; @AllArgsConstructor public class ItemUpdateMessageComposer extends MessageComposer { - private final HabboItem item; + private final RoomItem item; @Override diff --git a/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/ItemsComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/ItemsComposer.java index 13ff6004..64ab747a 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/ItemsComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/ItemsComposer.java @@ -1,7 +1,7 @@ package com.eu.habbo.messages.outgoing.rooms.items; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.messages.outgoing.MessageComposer; import com.eu.habbo.messages.outgoing.Outgoing; @@ -42,10 +42,10 @@ public class ItemsComposer extends MessageComposer { this.response.appendString(set.getValue()); } - List items = this.room.getWallItems(); + List items = this.room.getWallItems(); this.response.appendInt(items.size()); - for (HabboItem item : items) { + for (RoomItem item : items) { item.serializeWallData(this.response); } return this.response; diff --git a/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/ItemsDataUpdateComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/ItemsDataUpdateComposer.java index 76359e60..0777a895 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/ItemsDataUpdateComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/ItemsDataUpdateComposer.java @@ -1,6 +1,6 @@ package com.eu.habbo.messages.outgoing.rooms.items; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.messages.outgoing.MessageComposer; import com.eu.habbo.messages.outgoing.Outgoing; @@ -10,14 +10,14 @@ import java.util.Set; @AllArgsConstructor public class ItemsDataUpdateComposer extends MessageComposer { - private final Set items; + private final Set items; @Override protected ServerMessage composeInternal() { this.response.init(Outgoing.objectsDataUpdateMessageComposer); this.response.appendInt(this.items.size()); - for (HabboItem item : this.items) { + for (RoomItem item : this.items) { this.response.appendInt(item.getId()); item.serializeExtradata(this.response); } diff --git a/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/ObjectAddMessageComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/ObjectAddMessageComposer.java index 6f89621e..e6776dbc 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/ObjectAddMessageComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/ObjectAddMessageComposer.java @@ -1,7 +1,7 @@ package com.eu.habbo.messages.outgoing.rooms.items; import com.eu.habbo.habbohotel.items.interactions.*; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.messages.outgoing.MessageComposer; import com.eu.habbo.messages.outgoing.Outgoing; @@ -9,7 +9,7 @@ import lombok.AllArgsConstructor; @AllArgsConstructor public class ObjectAddMessageComposer extends MessageComposer { - private final HabboItem item; + private final RoomItem item; private final String itemOwnerName; diff --git a/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/ObjectDataUpdateMessageComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/ObjectDataUpdateMessageComposer.java index 76b98b6f..08e461bb 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/ObjectDataUpdateMessageComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/ObjectDataUpdateMessageComposer.java @@ -1,6 +1,6 @@ package com.eu.habbo.messages.outgoing.rooms.items; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.messages.outgoing.MessageComposer; import com.eu.habbo.messages.outgoing.Outgoing; @@ -8,7 +8,7 @@ import lombok.AllArgsConstructor; @AllArgsConstructor public class ObjectDataUpdateMessageComposer extends MessageComposer { - private final HabboItem item; + private final RoomItem item; @Override protected ServerMessage composeInternal() { diff --git a/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/ObjectUpdateMessageComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/ObjectUpdateMessageComposer.java index 9f48b749..1dcf506d 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/ObjectUpdateMessageComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/ObjectUpdateMessageComposer.java @@ -2,7 +2,7 @@ package com.eu.habbo.messages.outgoing.rooms.items; import com.eu.habbo.habbohotel.items.interactions.InteractionGift; import com.eu.habbo.habbohotel.items.interactions.InteractionMusicDisc; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.messages.outgoing.MessageComposer; import com.eu.habbo.messages.outgoing.Outgoing; @@ -10,7 +10,7 @@ import lombok.AllArgsConstructor; @AllArgsConstructor public class ObjectUpdateMessageComposer extends MessageComposer { - private final HabboItem item; + private final RoomItem item; @Override diff --git a/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/ObjectsMessageComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/ObjectsMessageComposer.java index 797533a0..30062513 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/ObjectsMessageComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/ObjectsMessageComposer.java @@ -1,7 +1,7 @@ package com.eu.habbo.messages.outgoing.rooms.items; import com.eu.habbo.habbohotel.items.interactions.*; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.messages.outgoing.MessageComposer; import com.eu.habbo.messages.outgoing.Outgoing; @@ -15,7 +15,7 @@ import java.util.NoSuchElementException; @AllArgsConstructor public class ObjectsMessageComposer extends MessageComposer { private final TIntObjectMap furniOwnerNames; - private final THashSet items; + private final THashSet items; @Override @@ -37,7 +37,7 @@ public class ObjectsMessageComposer extends MessageComposer { this.response.appendInt(this.items.size()); - for (HabboItem item : this.items) { + for (RoomItem item : this.items) { item.serializeFloorData(this.response); this.response.appendInt(item instanceof InteractionGift ? ((((InteractionGift) item).getColorId() * 1000) + ((InteractionGift) item).getRibbonId()) : (item instanceof InteractionMusicDisc ? ((InteractionMusicDisc) item).getSongId() : 1)); item.serializeExtradata(this.response); diff --git a/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/OneWayDoorStatusMessageComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/OneWayDoorStatusMessageComposer.java index dfaa9c36..9ee6f7af 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/OneWayDoorStatusMessageComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/OneWayDoorStatusMessageComposer.java @@ -1,6 +1,6 @@ package com.eu.habbo.messages.outgoing.rooms.items; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.messages.outgoing.MessageComposer; import com.eu.habbo.messages.outgoing.Outgoing; @@ -8,7 +8,7 @@ import lombok.AllArgsConstructor; @AllArgsConstructor public class OneWayDoorStatusMessageComposer extends MessageComposer { - private final HabboItem item; + private final RoomItem item; @Override protected ServerMessage composeInternal() { diff --git a/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/PresentOpenedMessageComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/PresentOpenedMessageComposer.java index 21e5773a..11ade4fa 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/PresentOpenedMessageComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/PresentOpenedMessageComposer.java @@ -1,6 +1,6 @@ package com.eu.habbo.messages.outgoing.rooms.items; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.messages.outgoing.MessageComposer; import com.eu.habbo.messages.outgoing.Outgoing; @@ -8,7 +8,7 @@ import lombok.AllArgsConstructor; @AllArgsConstructor public class PresentOpenedMessageComposer extends MessageComposer { - private final HabboItem item; + private final RoomItem item; private final String text; private final boolean unknown; diff --git a/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/RemoveFloorItemComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/RemoveFloorItemComposer.java index 724b51a6..36e7daf8 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/RemoveFloorItemComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/RemoveFloorItemComposer.java @@ -1,6 +1,6 @@ package com.eu.habbo.messages.outgoing.rooms.items; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.messages.outgoing.MessageComposer; import com.eu.habbo.messages.outgoing.Outgoing; @@ -8,10 +8,10 @@ import lombok.AllArgsConstructor; @AllArgsConstructor public class RemoveFloorItemComposer extends MessageComposer { - private final HabboItem item; + private final RoomItem item; private final boolean noUser; - public RemoveFloorItemComposer(HabboItem item) { + public RemoveFloorItemComposer(RoomItem item) { this.item = item; this.noUser = false; } diff --git a/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/RequestSpamWallPostItMessageComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/RequestSpamWallPostItMessageComposer.java index f3016dd0..fb230aee 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/RequestSpamWallPostItMessageComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/RequestSpamWallPostItMessageComposer.java @@ -1,6 +1,6 @@ package com.eu.habbo.messages.outgoing.rooms.items; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.messages.outgoing.MessageComposer; import com.eu.habbo.messages.outgoing.Outgoing; @@ -8,7 +8,7 @@ import lombok.AllArgsConstructor; @AllArgsConstructor public class RequestSpamWallPostItMessageComposer extends MessageComposer { - private final HabboItem item; + private final RoomItem item; @Override protected ServerMessage composeInternal() { diff --git a/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/UpdateStackHeightTileHeightComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/UpdateStackHeightTileHeightComposer.java index c9c07747..749d9580 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/UpdateStackHeightTileHeightComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/UpdateStackHeightTileHeightComposer.java @@ -1,6 +1,6 @@ package com.eu.habbo.messages.outgoing.rooms.items; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.messages.outgoing.MessageComposer; import com.eu.habbo.messages.outgoing.Outgoing; @@ -8,7 +8,7 @@ import lombok.AllArgsConstructor; @AllArgsConstructor public class UpdateStackHeightTileHeightComposer extends MessageComposer { - private final HabboItem item; + private final RoomItem item; private final int height; @Override diff --git a/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/rentablespaces/RentableSpaceStatusMessageComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/rentablespaces/RentableSpaceStatusMessageComposer.java index 0061c9a6..4a130394 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/rentablespaces/RentableSpaceStatusMessageComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/rentablespaces/RentableSpaceStatusMessageComposer.java @@ -3,7 +3,7 @@ package com.eu.habbo.messages.outgoing.rooms.items.rentablespaces; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.items.interactions.InteractionRentableSpace; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.messages.outgoing.MessageComposer; import com.eu.habbo.messages.outgoing.Outgoing; @@ -27,7 +27,7 @@ public class RentableSpaceStatusMessageComposer extends MessageComposer { //:test 194 b:1 i:101 i:1 s:Admin i:10 i:10 private final Habbo habbo; - private final HabboItem item; + private final RoomItem item; private int errorCode = 0; @Override diff --git a/src/main/java/com/eu/habbo/messages/outgoing/rooms/pets/OpenPetPackageRequestedMessageComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/rooms/pets/OpenPetPackageRequestedMessageComposer.java index d360906a..f72de30a 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/rooms/pets/OpenPetPackageRequestedMessageComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/rooms/pets/OpenPetPackageRequestedMessageComposer.java @@ -1,6 +1,6 @@ package com.eu.habbo.messages.outgoing.rooms.pets; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.messages.outgoing.MessageComposer; import com.eu.habbo.messages.outgoing.Outgoing; @@ -8,7 +8,7 @@ import lombok.AllArgsConstructor; @AllArgsConstructor public class OpenPetPackageRequestedMessageComposer extends MessageComposer { - private final HabboItem item; + private final RoomItem item; @Override diff --git a/src/main/java/com/eu/habbo/messages/outgoing/rooms/pets/PetExperienceComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/rooms/pets/PetExperienceComposer.java index 63a0d18b..9822184e 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/rooms/pets/PetExperienceComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/rooms/pets/PetExperienceComposer.java @@ -16,7 +16,7 @@ public class PetExperienceComposer extends MessageComposer { protected ServerMessage composeInternal() { this.response.init(Outgoing.petExperienceComposer); this.response.appendInt(this.pet.getId()); - this.response.appendInt(this.pet.getRoomUnit().getId()); + this.response.appendInt(this.pet.getRoomUnit().getVirtualId()); this.response.appendInt(this.amount); return this.response; } diff --git a/src/main/java/com/eu/habbo/messages/outgoing/rooms/pets/PetFigureUpdateComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/rooms/pets/PetFigureUpdateComposer.java index f393d9e2..392d5203 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/rooms/pets/PetFigureUpdateComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/rooms/pets/PetFigureUpdateComposer.java @@ -14,7 +14,7 @@ public class PetFigureUpdateComposer extends MessageComposer { @Override protected ServerMessage composeInternal() { this.response.init(Outgoing.petFigureUpdateComposer); - this.response.appendInt(this.pet.getRoomUnit().getId()); + this.response.appendInt(this.pet.getRoomUnit().getVirtualId()); this.response.appendInt(this.pet.getId()); this.response.appendInt(this.pet.getPetData().getType()); this.response.appendInt(this.pet.getRace()); diff --git a/src/main/java/com/eu/habbo/messages/outgoing/rooms/pets/PetLevelUpdatedComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/rooms/pets/PetLevelUpdatedComposer.java index 01583576..dbcc7382 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/rooms/pets/PetLevelUpdatedComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/rooms/pets/PetLevelUpdatedComposer.java @@ -14,7 +14,7 @@ public class PetLevelUpdatedComposer extends MessageComposer { @Override protected ServerMessage composeInternal() { this.response.init(Outgoing.petLevelUpdateComposer); - this.response.appendInt(this.pet.getRoomUnit().getId()); + this.response.appendInt(this.pet.getRoomUnit().getVirtualId()); this.response.appendInt(this.pet.getId()); this.response.appendInt(this.pet.getLevel()); return this.response; diff --git a/src/main/java/com/eu/habbo/messages/outgoing/rooms/pets/PetStatusUpdateComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/rooms/pets/PetStatusUpdateComposer.java index 0b4c7408..5f5b065a 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/rooms/pets/PetStatusUpdateComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/rooms/pets/PetStatusUpdateComposer.java @@ -15,7 +15,7 @@ public class PetStatusUpdateComposer extends MessageComposer { @Override protected ServerMessage composeInternal() { this.response.init(Outgoing.petStatusUpdateComposer); - this.response.appendInt(this.pet.getRoomUnit().getId()); + this.response.appendInt(this.pet.getRoomUnit().getVirtualId()); this.response.appendInt(this.pet instanceof RideablePet && ((RideablePet) this.pet).anyoneCanRide() ? 1 : 0); this.response.appendBoolean((this.pet instanceof MonsterplantPet && ((MonsterplantPet) this.pet).canBreed())); //unknown 1 this.response.appendBoolean((this.pet instanceof MonsterplantPet && !((MonsterplantPet) this.pet).isFullyGrown())); diff --git a/src/main/java/com/eu/habbo/messages/outgoing/rooms/pets/RoomPetComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/rooms/pets/RoomPetComposer.java index 2d942965..b5285772 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/rooms/pets/RoomPetComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/rooms/pets/RoomPetComposer.java @@ -4,17 +4,16 @@ import com.eu.habbo.habbohotel.pets.*; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.messages.outgoing.MessageComposer; import com.eu.habbo.messages.outgoing.Outgoing; -import gnu.trove.map.TIntObjectMap; -import gnu.trove.map.hash.TIntObjectHashMap; -import gnu.trove.procedure.TIntObjectProcedure; import lombok.AllArgsConstructor; +import java.util.concurrent.ConcurrentHashMap; + @AllArgsConstructor -public class RoomPetComposer extends MessageComposer implements TIntObjectProcedure { - private final TIntObjectMap pets; +public class RoomPetComposer extends MessageComposer { + private final ConcurrentHashMap pets; public RoomPetComposer(Pet pet) { - this.pets = new TIntObjectHashMap<>(); + this.pets = new ConcurrentHashMap<>(); this.pets.put(pet.getId(), pet); } @@ -23,11 +22,10 @@ public class RoomPetComposer extends MessageComposer implements TIntObjectProced protected ServerMessage composeInternal() { this.response.init(Outgoing.usersComposer); this.response.appendInt(this.pets.size()); - this.pets.forEachEntry(this); + this.pets.forEach((a, p) -> this.execute(a, p)); return this.response; } - @Override public boolean execute(int a, Pet pet) { this.response.appendInt(pet.getId()); this.response.appendString(pet.getName()); @@ -38,10 +36,10 @@ public class RoomPetComposer extends MessageComposer implements TIntObjectProced // TODO: It will never be a type of MonsterplantPet in this scenario? this.response.appendString(pet.getPetData().getType() + " " + pet.getRace() + " " + pet.getColor() + " " + ((pet instanceof HorsePet ? (((HorsePet) pet).hasSaddle() ? "3" : "2") + " 2 " + ((HorsePet) pet).getHairStyle() + " " + ((HorsePet) pet).getHairColor() + " 3 " + ((HorsePet) pet).getHairStyle() + " " + ((HorsePet) pet).getHairColor() + (((HorsePet) pet).hasSaddle() ? " 4 9 0" : "") : pet instanceof MonsterplantPet ? (((MonsterplantPet) pet).look.isEmpty() ? "2 1 8 6 0 -1 -1" : ((MonsterplantPet) pet).look) : "2 2 -1 0 3 -1 0"))); } - this.response.appendInt(pet.getRoomUnit().getId()); - this.response.appendInt(pet.getRoomUnit().getX()); - this.response.appendInt(pet.getRoomUnit().getY()); - this.response.appendString(pet.getRoomUnit().getZ() + ""); + this.response.appendInt(pet.getRoomUnit().getVirtualId()); + this.response.appendInt(pet.getRoomUnit().getCurrentPosition().getX()); + this.response.appendInt(pet.getRoomUnit().getCurrentPosition().getY()); + this.response.appendString(pet.getRoomUnit().getCurrentZ() + ""); this.response.appendInt(0); this.response.appendInt(2); this.response.appendInt(pet.getPetData().getType()); diff --git a/src/main/java/com/eu/habbo/messages/outgoing/rooms/promotions/RoomAdPurchaseInfoComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/rooms/promotions/RoomAdPurchaseInfoComposer.java index 437f05dd..7d75dc76 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/rooms/promotions/RoomAdPurchaseInfoComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/rooms/promotions/RoomAdPurchaseInfoComposer.java @@ -24,8 +24,8 @@ public class RoomAdPurchaseInfoComposer extends MessageComposer { this.response.appendBoolean(true); this.response.appendInt(this.rooms.size()); for (Room room : this.rooms) { - this.response.appendInt(room.getId()); - this.response.appendString(room.getName()); + this.response.appendInt(room.getRoomInfo().getId()); + this.response.appendString(room.getRoomInfo().getName()); this.response.appendBoolean(true); //IDK what the fuck this is. } return this.response; diff --git a/src/main/java/com/eu/habbo/messages/outgoing/rooms/promotions/RoomEventComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/rooms/promotions/RoomEventComposer.java index 0f5f1ebd..5d0a6cd1 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/rooms/promotions/RoomEventComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/rooms/promotions/RoomEventComposer.java @@ -30,11 +30,11 @@ public class RoomEventComposer extends MessageComposer { this.response.appendInt(0); this.response.appendInt(0); } else { - this.response.appendInt(this.room.getId()); // promotion id - this.response.appendInt(this.room.getOwnerId()); - this.response.appendString(this.room.getOwnerName()); + this.response.appendInt(this.room.getRoomInfo().getId()); // promotion id + this.response.appendInt(this.room.getRoomInfo().getOwnerInfo().getId()); + this.response.appendString(this.room.getRoomInfo().getOwnerInfo().getUsername()); - this.response.appendInt(this.room.getId()); // room id + this.response.appendInt(this.room.getRoomInfo().getId()); // room id this.response.appendInt(1); // "type" this.response.appendString(this.roomPromotion.getTitle()); diff --git a/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/AvatarEffectMessageComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/AvatarEffectMessageComposer.java index 3004bd7b..41926d47 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/AvatarEffectMessageComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/AvatarEffectMessageComposer.java @@ -1,6 +1,6 @@ package com.eu.habbo.messages.outgoing.rooms.users; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.types.RoomAvatar; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.messages.outgoing.MessageComposer; import com.eu.habbo.messages.outgoing.Outgoing; @@ -8,11 +8,11 @@ import lombok.AllArgsConstructor; @AllArgsConstructor public class AvatarEffectMessageComposer extends MessageComposer { - private final RoomUnit roomUnit; + private final RoomAvatar roomAvatar; private final int effectId; - public AvatarEffectMessageComposer(RoomUnit roomUnit) { - this.roomUnit = roomUnit; + public AvatarEffectMessageComposer(RoomAvatar roomAvatar) { + this.roomAvatar = roomAvatar; this.effectId = -1; } @@ -20,8 +20,8 @@ public class AvatarEffectMessageComposer extends MessageComposer { @Override protected ServerMessage composeInternal() { this.response.init(Outgoing.avatarEffectMessageComposer); - this.response.appendInt(this.roomUnit.getId()); - this.response.appendInt(this.effectId == -1 ? this.roomUnit.getEffectId() : this.effectId); + this.response.appendInt(this.roomAvatar.getVirtualId()); + this.response.appendInt(this.effectId == -1 ? this.roomAvatar.getEffectId() : this.effectId); this.response.appendInt(0); return this.response; } diff --git a/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/CarryObjectMessageComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/CarryObjectMessageComposer.java index 5d3e1947..31171227 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/CarryObjectMessageComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/CarryObjectMessageComposer.java @@ -1,6 +1,6 @@ package com.eu.habbo.messages.outgoing.rooms.users; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.types.RoomAvatar; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.messages.outgoing.MessageComposer; import com.eu.habbo.messages.outgoing.Outgoing; @@ -8,14 +8,14 @@ import lombok.AllArgsConstructor; @AllArgsConstructor public class CarryObjectMessageComposer extends MessageComposer { - private final RoomUnit roomUnit; + private final RoomAvatar roomAvatar; @Override protected ServerMessage composeInternal() { this.response.init(Outgoing.carryObjectMessageComposer); - this.response.appendInt(this.roomUnit.getId()); - this.response.appendInt(this.roomUnit.getHandItem()); + this.response.appendInt(this.roomAvatar.getVirtualId()); + this.response.appendInt(this.roomAvatar.getHandItem()); return this.response; } } diff --git a/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/DanceMessageComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/DanceMessageComposer.java index 5da8c5b0..fbac4cf0 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/DanceMessageComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/DanceMessageComposer.java @@ -1,6 +1,6 @@ package com.eu.habbo.messages.outgoing.rooms.users; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.messages.outgoing.MessageComposer; import com.eu.habbo.messages.outgoing.Outgoing; @@ -14,7 +14,7 @@ public class DanceMessageComposer extends MessageComposer { @Override protected ServerMessage composeInternal() { this.response.init(Outgoing.danceMessageComposer); - this.response.appendInt(this.roomUnit.getId()); + this.response.appendInt(this.roomUnit.getVirtualId()); this.response.appendInt(this.roomUnit.getDanceType().getType()); return this.response; } diff --git a/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/ExpressionMessageComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/ExpressionMessageComposer.java index e4a3aef5..370c450f 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/ExpressionMessageComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/ExpressionMessageComposer.java @@ -1,6 +1,6 @@ package com.eu.habbo.messages.outgoing.rooms.users; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.rooms.RoomUserAction; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.messages.outgoing.MessageComposer; @@ -15,7 +15,7 @@ public class ExpressionMessageComposer extends MessageComposer { @Override protected ServerMessage composeInternal() { this.response.init(Outgoing.expressionMessageComposer); - this.response.appendInt(this.roomUnit.getId()); + this.response.appendInt(this.roomUnit.getVirtualId()); this.response.appendInt(this.action.getAction()); return this.response; } diff --git a/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/HandItemReceivedMessageComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/HandItemReceivedMessageComposer.java index aa9914e5..7774d2b3 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/HandItemReceivedMessageComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/HandItemReceivedMessageComposer.java @@ -1,6 +1,6 @@ package com.eu.habbo.messages.outgoing.rooms.users; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.messages.outgoing.MessageComposer; import com.eu.habbo.messages.outgoing.Outgoing; @@ -14,7 +14,7 @@ public class HandItemReceivedMessageComposer extends MessageComposer { @Override protected ServerMessage composeInternal() { this.response.init(Outgoing.handItemReceivedMessageComposer); - this.response.appendInt(this.from.getId()); + this.response.appendInt(this.from.getVirtualId()); this.response.appendInt(this.handItem); return this.response; } diff --git a/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/NoSuchFlatComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/NoSuchFlatComposer.java index 559cbc76..cf6fad8f 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/NoSuchFlatComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/NoSuchFlatComposer.java @@ -15,7 +15,7 @@ public class NoSuchFlatComposer extends MessageComposer { @Override protected ServerMessage composeInternal() { this.response.init(Outgoing.noSuchFlatComposer); - this.response.appendInt(this.room.getId()); + this.response.appendInt(this.room.getRoomInfo().getId()); this.response.appendInt(this.habboId); return this.response; } diff --git a/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/RoomUnitOnRollerComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/RoomUnitOnRollerComposer.java index 36d8ee4e..34fef1f7 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/RoomUnitOnRollerComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/RoomUnitOnRollerComposer.java @@ -4,8 +4,8 @@ import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.items.interactions.InteractionRoller; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.messages.outgoing.MessageComposer; import com.eu.habbo.messages.outgoing.Outgoing; @@ -18,7 +18,7 @@ public class RoomUnitOnRollerComposer extends MessageComposer { // THIS IS WRONG SlideObjectBundleMessageComposer private static final Logger LOGGER = LoggerFactory.getLogger(RoomUnitOnRollerComposer.class); private final RoomUnit roomUnit; - private final HabboItem roller; + private final RoomItem roller; private final RoomTile oldLocation; private final double oldZ; private final RoomTile newLocation; @@ -26,9 +26,9 @@ public class RoomUnitOnRollerComposer extends MessageComposer { private final Room room; private int x; private int y; - private final HabboItem oldTopItem; + private final RoomItem oldTopItem; - public RoomUnitOnRollerComposer(RoomUnit roomUnit, HabboItem roller, RoomTile oldLocation, double oldZ, RoomTile newLocation, double newZ, Room room) { + public RoomUnitOnRollerComposer(RoomUnit roomUnit, RoomItem roller, RoomTile oldLocation, double oldZ, RoomTile newLocation, double newZ, Room room) { this.roomUnit = roomUnit; this.roller = roller; this.oldLocation = oldLocation; @@ -42,8 +42,8 @@ public class RoomUnitOnRollerComposer extends MessageComposer { public RoomUnitOnRollerComposer(RoomUnit roomUnit, RoomTile newLocation, Room room) { this.roomUnit = roomUnit; this.roller = null; - this.oldLocation = this.roomUnit.getCurrentLocation(); - this.oldZ = this.roomUnit.getZ(); + this.oldLocation = this.roomUnit.getCurrentPosition(); + this.oldZ = this.roomUnit.getCurrentZ(); this.newLocation = newLocation; this.newZ = this.newLocation.getStackHeight(); this.room = room; @@ -63,15 +63,15 @@ public class RoomUnitOnRollerComposer extends MessageComposer { this.response.appendInt(0); this.response.appendInt(this.roller == null ? 0 : this.roller.getId()); this.response.appendInt(2); - this.response.appendInt(this.roomUnit.getId()); + this.response.appendInt(this.roomUnit.getVirtualId()); this.response.appendString(this.oldZ + ""); this.response.appendString(this.newZ + ""); if (this.roller != null && room.getLayout() != null) { Emulator.getThreading().run(() -> { - if(!this.roomUnit.isWalking() && this.roomUnit.getCurrentLocation() == this.oldLocation) { - HabboItem topItem = this.room.getTopItemAt(this.oldLocation.getX(), this.oldLocation.getY()); - HabboItem topItemNewLocation = this.room.getTopItemAt(this.newLocation.getX(), this.newLocation.getY()); + if(!this.roomUnit.isWalking() && this.roomUnit.getCurrentPosition() == this.oldLocation) { + RoomItem topItem = this.room.getTopItemAt(this.oldLocation.getX(), this.oldLocation.getY()); + RoomItem topItemNewLocation = this.room.getTopItemAt(this.newLocation.getX(), this.newLocation.getY()); if (topItem != null && (oldTopItem == null || oldTopItem != topItemNewLocation)) { try { @@ -82,7 +82,7 @@ public class RoomUnitOnRollerComposer extends MessageComposer { } this.roomUnit.setLocation(this.newLocation); - this.roomUnit.setZ(this.newLocation.getStackHeight()); + this.roomUnit.setCurrentZ(this.newLocation.getStackHeight()); this.roomUnit.setPreviousLocationZ(this.newLocation.getStackHeight()); if (topItemNewLocation != null && topItemNewLocation != roller && oldTopItem != topItemNewLocation) { @@ -93,7 +93,7 @@ public class RoomUnitOnRollerComposer extends MessageComposer { } } } - }, this.room.getRollerSpeed() == 0 ? 250 : InteractionRoller.DELAY); + }, this.room.getRoomInfo().getRollerSpeed() == 0 ? 250 : InteractionRoller.DELAY); /* RoomTile rollerTile = room.getLayout().getTile(this.roller.getX(), this.roller.getY()); Emulator.getThreading().run(() -> { @@ -117,7 +117,7 @@ public class RoomUnitOnRollerComposer extends MessageComposer { */ } else { this.roomUnit.setLocation(this.newLocation); - this.roomUnit.setZ(this.newZ); + this.roomUnit.setCurrentZ(this.newZ); } return this.response; diff --git a/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/RoomUsersComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/RoomUsersComposer.java index 10225e60..c491cb35 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/RoomUsersComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/RoomUsersComposer.java @@ -41,10 +41,10 @@ public class RoomUsersComposer extends MessageComposer { this.response.appendString(this.habbo.getHabboInfo().getUsername()); this.response.appendString(this.habbo.getHabboInfo().getMotto()); this.response.appendString(this.habbo.getHabboInfo().getLook()); - this.response.appendInt(this.habbo.getRoomUnit().getId()); //Room Unit ID - this.response.appendInt(this.habbo.getRoomUnit().getX()); - this.response.appendInt(this.habbo.getRoomUnit().getY()); - this.response.appendString(this.habbo.getRoomUnit().getZ() + ""); + this.response.appendInt(this.habbo.getRoomUnit().getVirtualId()); //Room Unit ID + this.response.appendInt(this.habbo.getRoomUnit().getCurrentPosition().getX()); + this.response.appendInt(this.habbo.getRoomUnit().getCurrentPosition().getY()); + this.response.appendString(this.habbo.getRoomUnit().getCurrentZ() + ""); this.response.appendInt(this.habbo.getRoomUnit().getBodyRotation().getValue()); this.response.appendInt(1); this.response.appendString(this.habbo.getHabboInfo().getGender().name().toUpperCase()); @@ -71,10 +71,10 @@ public class RoomUsersComposer extends MessageComposer { this.response.appendString(habbo.getHabboInfo().getUsername()); this.response.appendString(habbo.getHabboInfo().getMotto()); this.response.appendString(habbo.getHabboInfo().getLook()); - this.response.appendInt(habbo.getRoomUnit().getId()); //Room Unit ID - this.response.appendInt(habbo.getRoomUnit().getX()); - this.response.appendInt(habbo.getRoomUnit().getY()); - this.response.appendString(habbo.getRoomUnit().getZ() + ""); + this.response.appendInt(habbo.getRoomUnit().getVirtualId()); //Room Unit ID + this.response.appendInt(habbo.getRoomUnit().getCurrentPosition().getX()); + this.response.appendInt(habbo.getRoomUnit().getCurrentPosition().getY()); + this.response.appendString(habbo.getRoomUnit().getCurrentZ() + ""); this.response.appendInt(habbo.getRoomUnit().getBodyRotation().getValue()); this.response.appendInt(1); this.response.appendString(habbo.getHabboInfo().getGender().name().toUpperCase()); @@ -99,10 +99,10 @@ public class RoomUsersComposer extends MessageComposer { this.response.appendString(this.bot.getName()); this.response.appendString(this.bot.getMotto()); this.response.appendString(this.bot.getFigure()); - this.response.appendInt(this.bot.getRoomUnit().getId()); - this.response.appendInt(this.bot.getRoomUnit().getX()); - this.response.appendInt(this.bot.getRoomUnit().getY()); - this.response.appendString(this.bot.getRoomUnit().getZ() + ""); + this.response.appendInt(this.bot.getRoomUnit().getVirtualId()); + this.response.appendInt(this.bot.getRoomUnit().getCurrentPosition().getX()); + this.response.appendInt(this.bot.getRoomUnit().getCurrentPosition().getY()); + this.response.appendString(this.bot.getRoomUnit().getCurrentZ() + ""); this.response.appendInt(this.bot.getRoomUnit().getBodyRotation().getValue()); this.response.appendInt(4); this.response.appendString(this.bot.getGender().name().toUpperCase()); @@ -126,10 +126,10 @@ public class RoomUsersComposer extends MessageComposer { this.response.appendString(bot.getName()); this.response.appendString(bot.getMotto()); this.response.appendString(bot.getFigure()); - this.response.appendInt(bot.getRoomUnit().getId()); - this.response.appendInt(bot.getRoomUnit().getX()); - this.response.appendInt(bot.getRoomUnit().getY()); - this.response.appendString(bot.getRoomUnit().getZ() + ""); + this.response.appendInt(bot.getRoomUnit().getVirtualId()); + this.response.appendInt(bot.getRoomUnit().getCurrentPosition().getX()); + this.response.appendInt(bot.getRoomUnit().getCurrentPosition().getY()); + this.response.appendString(bot.getRoomUnit().getCurrentZ() + ""); this.response.appendInt(bot.getRoomUnit().getBodyRotation().getValue()); this.response.appendInt(4); this.response.appendString(bot.getGender().name().toUpperCase()); diff --git a/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/SleepMessageComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/SleepMessageComposer.java index 778f4fc0..68e9148f 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/SleepMessageComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/SleepMessageComposer.java @@ -1,6 +1,6 @@ package com.eu.habbo.messages.outgoing.rooms.users; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.messages.outgoing.MessageComposer; import com.eu.habbo.messages.outgoing.Outgoing; @@ -14,7 +14,7 @@ public class SleepMessageComposer extends MessageComposer { @Override protected ServerMessage composeInternal() { this.response.init(Outgoing.sleepMessageComposer); - this.response.appendInt(this.roomUnit.getId()); + this.response.appendInt(this.roomUnit.getVirtualId()); this.response.appendBoolean(this.roomUnit.isIdle()); return this.response; } diff --git a/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/UserChangeMessageComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/UserChangeMessageComposer.java index d35c7dbb..1eee6ba2 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/UserChangeMessageComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/UserChangeMessageComposer.java @@ -13,7 +13,7 @@ public class UserChangeMessageComposer extends MessageComposer { @Override protected ServerMessage composeInternal() { this.response.init(Outgoing.userChangeMessageComposer); - this.response.appendInt(this.habbo.getRoomUnit() == null ? -1 : this.habbo.getRoomUnit().getId()); + this.response.appendInt(this.habbo.getRoomUnit() == null ? -1 : this.habbo.getRoomUnit().getVirtualId()); this.response.appendString(this.habbo.getHabboInfo().getLook()); this.response.appendString(this.habbo.getHabboInfo().getGender().name() + ""); this.response.appendString(this.habbo.getHabboInfo().getMotto()); diff --git a/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/UserNameChangedMessageComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/UserNameChangedMessageComposer.java index 80d4a998..83d43b65 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/UserNameChangedMessageComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/UserNameChangedMessageComposer.java @@ -20,7 +20,7 @@ public class UserNameChangedMessageComposer extends MessageComposer { public UserNameChangedMessageComposer(Habbo habbo, boolean includePrefix) { this.userId = habbo.getHabboInfo().getId(); - this.roomId = habbo.getRoomUnit().getId(); + this.roomId = habbo.getRoomUnit().getVirtualId(); this.name = (includePrefix ? Room.PREFIX_FORMAT.replace("%color%", habbo.getHabboInfo().getPermissionGroup().getPrefixColor()).replace("%prefix%", habbo.getHabboInfo().getPermissionGroup().getPrefix()) : "") + habbo.getHabboInfo().getUsername(); } diff --git a/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/UserRemoveMessageComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/UserRemoveMessageComposer.java index b1bb08b8..deab7c0f 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/UserRemoveMessageComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/UserRemoveMessageComposer.java @@ -1,6 +1,6 @@ package com.eu.habbo.messages.outgoing.rooms.users; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.messages.outgoing.MessageComposer; import com.eu.habbo.messages.outgoing.Outgoing; @@ -13,7 +13,7 @@ public class UserRemoveMessageComposer extends MessageComposer { @Override protected ServerMessage composeInternal() { this.response.init(Outgoing.userRemoveMessageComposer); - this.response.appendString(this.roomUnit.getId() + ""); + this.response.appendString(this.roomUnit.getVirtualId() + ""); return this.response; } } diff --git a/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/UserTagsMessageComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/UserTagsMessageComposer.java index 72a1482a..d23e22b2 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/UserTagsMessageComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/UserTagsMessageComposer.java @@ -13,7 +13,7 @@ public class UserTagsMessageComposer extends MessageComposer { @Override protected ServerMessage composeInternal() { this.response.init(Outgoing.userTagsMessageComposer); - this.response.appendInt(this.habbo.getRoomUnit().getId()); + this.response.appendInt(this.habbo.getRoomUnit().getVirtualId()); this.response.appendInt(this.habbo.getHabboStats().getTags().length); for (String tag : this.habbo.getHabboStats().getTags()) { diff --git a/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/UserTypingMessageComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/UserTypingMessageComposer.java index f9e91566..b7da4c61 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/UserTypingMessageComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/UserTypingMessageComposer.java @@ -1,6 +1,6 @@ package com.eu.habbo.messages.outgoing.rooms.users; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.messages.outgoing.MessageComposer; import com.eu.habbo.messages.outgoing.Outgoing; @@ -14,7 +14,7 @@ public class UserTypingMessageComposer extends MessageComposer { @Override protected ServerMessage composeInternal() { this.response.init(Outgoing.userTypingMessageComposer); - this.response.appendInt(this.roomUnit.getId()); + this.response.appendInt(this.roomUnit.getVirtualId()); this.response.appendInt(this.typing ? 1 : 0); return this.response; } diff --git a/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/UserUnbannedFromRoomComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/UserUnbannedFromRoomComposer.java index 917b0ebc..5aa02593 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/UserUnbannedFromRoomComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/UserUnbannedFromRoomComposer.java @@ -14,7 +14,7 @@ public class UserUnbannedFromRoomComposer extends MessageComposer { @Override protected ServerMessage composeInternal() { this.response.init(Outgoing.userUnbannedFromRoomComposer); - this.response.appendInt(this.room.getId()); + this.response.appendInt(this.room.getRoomInfo().getId()); this.response.appendInt(this.userId); return this.response; } diff --git a/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/UserUpdateComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/UserUpdateComposer.java index e1f23e2b..6df02fa0 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/UserUpdateComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/UserUpdateComposer.java @@ -1,7 +1,7 @@ package com.eu.habbo.messages.outgoing.rooms.users; -import com.eu.habbo.habbohotel.rooms.RoomUnit; import com.eu.habbo.habbohotel.rooms.RoomUnitStatus; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.messages.outgoing.MessageComposer; @@ -40,7 +40,7 @@ public class UserUpdateComposer extends MessageComposer { if (this.roomUnits != null) { this.response.appendInt(this.roomUnits.size()); for (RoomUnit roomUnit : this.roomUnits) { - this.response.appendInt(roomUnit.getId()); + this.response.appendInt(roomUnit.getVirtualId()); this.response.appendInt(roomUnit.getPreviousLocation().getX()); this.response.appendInt(roomUnit.getPreviousLocation().getY()); this.response.appendString((this.overrideZ != -1 ? this.overrideZ : roomUnit.getPreviousLocationZ()) + ""); @@ -50,18 +50,18 @@ public class UserUpdateComposer extends MessageComposer { this.response.appendInt(roomUnit.getBodyRotation().getValue()); StringBuilder status = new StringBuilder("/"); - for (Map.Entry entry : roomUnit.getStatus().entrySet()) { + for (Map.Entry entry : roomUnit.getStatuses().entrySet()) { status.append(entry.getKey()).append(" ").append(entry.getValue()).append("/"); } this.response.appendString(status.toString()); - roomUnit.setPreviousLocation(roomUnit.getCurrentLocation()); + roomUnit.setPreviousLocation(roomUnit.getCurrentPosition()); } } else { synchronized (this.habbos) { this.response.appendInt(this.habbos.size()); for (Habbo habbo : this.habbos) { - this.response.appendInt(habbo.getRoomUnit().getId()); + this.response.appendInt(habbo.getRoomUnit().getVirtualId()); this.response.appendInt(habbo.getRoomUnit().getPreviousLocation().getX()); this.response.appendInt(habbo.getRoomUnit().getPreviousLocation().getY()); this.response.appendString(habbo.getRoomUnit().getPreviousLocationZ() + ""); @@ -72,11 +72,11 @@ public class UserUpdateComposer extends MessageComposer { StringBuilder status = new StringBuilder("/"); - for (Map.Entry entry : habbo.getRoomUnit().getStatus().entrySet()) { + for (Map.Entry entry : habbo.getRoomUnit().getStatuses().entrySet()) { status.append(entry.getKey()).append(" ").append(entry.getValue()).append("/"); } this.response.appendString(status.toString()); - habbo.getRoomUnit().setPreviousLocation(habbo.getRoomUnit().getCurrentLocation()); + habbo.getRoomUnit().setPreviousLocation(habbo.getRoomUnit().getCurrentPosition()); } } } diff --git a/src/main/java/com/eu/habbo/messages/outgoing/trading/TradingItemListComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/trading/TradingItemListComposer.java index f0ecff94..d21a0231 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/trading/TradingItemListComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/trading/TradingItemListComposer.java @@ -3,7 +3,7 @@ package com.eu.habbo.messages.outgoing.trading; import com.eu.habbo.habbohotel.items.FurnitureType; import com.eu.habbo.habbohotel.rooms.RoomTrade; import com.eu.habbo.habbohotel.rooms.RoomTradeUser; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.messages.outgoing.MessageComposer; import com.eu.habbo.messages.outgoing.Outgoing; @@ -20,7 +20,7 @@ public class TradingItemListComposer extends MessageComposer { this.response.appendInt(roomTradeUser.getUserId()); this.response.appendInt(roomTradeUser.getItems().size()); - for (HabboItem item : roomTradeUser.getItems()) { + for (RoomItem item : roomTradeUser.getItems()) { this.response.appendInt(item.getId()); this.response.appendString(item.getBaseItem().getType().code); this.response.appendInt(item.getId()); diff --git a/src/main/java/com/eu/habbo/messages/outgoing/unknown/PostItPlacedComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/unknown/PostItPlacedComposer.java index c4bf530a..718bb50d 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/unknown/PostItPlacedComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/unknown/PostItPlacedComposer.java @@ -1,6 +1,6 @@ package com.eu.habbo.messages.outgoing.unknown; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.messages.outgoing.MessageComposer; import com.eu.habbo.messages.outgoing.Outgoing; @@ -8,7 +8,7 @@ import lombok.AllArgsConstructor; @AllArgsConstructor public class PostItPlacedComposer extends MessageComposer { - private final HabboItem item; + private final RoomItem item; private final int unknownInt; @Override diff --git a/src/main/java/com/eu/habbo/messages/outgoing/unknown/RoomMessageNotificationMessageComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/unknown/RoomMessageNotificationMessageComposer.java index 9b74bbd7..06f34882 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/unknown/RoomMessageNotificationMessageComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/unknown/RoomMessageNotificationMessageComposer.java @@ -15,8 +15,8 @@ public class RoomMessageNotificationMessageComposer extends MessageComposer { @Override protected ServerMessage composeInternal() { this.response.init(Outgoing.roomMessageNotificationMessageComposer); - this.response.appendInt(this.room.getId()); - this.response.appendString(this.room.getName()); + this.response.appendInt(this.room.getRoomInfo().getId()); + this.response.appendString(this.room.getRoomInfo().getName()); this.response.appendInt(this.count); return this.response; } diff --git a/src/main/java/com/eu/habbo/messages/outgoing/wired/OpenComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/wired/OpenComposer.java index 1fb6f4ee..1885bf52 100644 --- a/src/main/java/com/eu/habbo/messages/outgoing/wired/OpenComposer.java +++ b/src/main/java/com/eu/habbo/messages/outgoing/wired/OpenComposer.java @@ -1,6 +1,6 @@ package com.eu.habbo.messages.outgoing.wired; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.messages.outgoing.MessageComposer; import com.eu.habbo.messages.outgoing.Outgoing; @@ -8,7 +8,7 @@ import lombok.AllArgsConstructor; @AllArgsConstructor public class OpenComposer extends MessageComposer { - private final HabboItem item; + private final RoomItem item; @Override diff --git a/src/main/java/com/eu/habbo/messages/rcon/ChangeRoomOwner.java b/src/main/java/com/eu/habbo/messages/rcon/ChangeRoomOwner.java index 262b60be..b5348e2f 100644 --- a/src/main/java/com/eu/habbo/messages/rcon/ChangeRoomOwner.java +++ b/src/main/java/com/eu/habbo/messages/rcon/ChangeRoomOwner.java @@ -2,6 +2,7 @@ package com.eu.habbo.messages.rcon; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.users.Habbo; import com.google.gson.Gson; public class ChangeRoomOwner extends RCONMessage { @@ -11,15 +12,22 @@ public class ChangeRoomOwner extends RCONMessage { @Override public void handle(Gson gson, JSON json) { - Room room = Emulator.getGameEnvironment().getRoomManager().loadRoom(json.room_id); + Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(json.room_id); - if (room != null) { - room.setOwnerId(json.user_id); - room.setOwnerName(json.username); - room.setNeedsUpdate(true); - room.save(); - Emulator.getGameEnvironment().getRoomManager().unloadRoom(room); + if(room == null) { + return; } + + Habbo newOwner = Emulator.getGameEnvironment().getHabboManager().getHabbo(json.user_id); + + if(newOwner == null) { + return; + } + + room.getRoomInfo().setOwnerInfo(newOwner.getHabboInfo()); + room.setNeedsUpdate(true); + room.save(); + Emulator.getGameEnvironment().getRoomManager().unloadRoom(room); } static class JSON { diff --git a/src/main/java/com/eu/habbo/messages/rcon/ForwardUser.java b/src/main/java/com/eu/habbo/messages/rcon/ForwardUser.java index 62629656..af576538 100644 --- a/src/main/java/com/eu/habbo/messages/rcon/ForwardUser.java +++ b/src/main/java/com/eu/habbo/messages/rcon/ForwardUser.java @@ -17,11 +17,11 @@ public class ForwardUser extends RCONMessage { Habbo habbo = Emulator.getGameEnvironment().getHabboManager().getHabbo(object.user_id); if (habbo != null) { - Room room = Emulator.getGameEnvironment().getRoomManager().loadRoom(object.room_id); + Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(object.room_id); if (room != null) { - if (habbo.getHabboInfo().getCurrentRoom() != null) { - Emulator.getGameEnvironment().getRoomManager().leaveRoom(habbo, habbo.getHabboInfo().getCurrentRoom()); + if (habbo.getRoomUnit().getRoom() != null) { + Emulator.getGameEnvironment().getRoomManager().leaveRoom(habbo, habbo.getRoomUnit().getRoom()); } habbo.getClient().sendResponse(new RoomForwardMessageComposer(object.room_id)); diff --git a/src/main/java/com/eu/habbo/messages/rcon/SendGift.java b/src/main/java/com/eu/habbo/messages/rcon/SendGift.java index 450e0b38..051c706c 100644 --- a/src/main/java/com/eu/habbo/messages/rcon/SendGift.java +++ b/src/main/java/com/eu/habbo/messages/rcon/SendGift.java @@ -3,7 +3,7 @@ package com.eu.habbo.messages.rcon; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.outgoing.inventory.FurniListInvalidateComposer; import com.google.gson.Gson; import lombok.extern.slf4j.Slf4j; @@ -70,7 +70,7 @@ public class SendGift extends RCONMessage { return; } - HabboItem item = Emulator.getGameEnvironment().getItemManager().createItem(0, baseItem, 0, 0, ""); + RoomItem item = Emulator.getGameEnvironment().getItemManager().createItem(0, baseItem, 0, 0, ""); Item giftItem = Emulator.getGameEnvironment().getItemManager().getItem((Integer) Emulator.getGameEnvironment().getCatalogManager().giftFurnis.values().toArray()[Emulator.getRandom().nextInt(Emulator.getGameEnvironment().getCatalogManager().giftFurnis.size())]); String extraData = "1\t" + item.getId(); diff --git a/src/main/java/com/eu/habbo/messages/rcon/SetMotto.java b/src/main/java/com/eu/habbo/messages/rcon/SetMotto.java index ec83db61..ffd0bc14 100644 --- a/src/main/java/com/eu/habbo/messages/rcon/SetMotto.java +++ b/src/main/java/com/eu/habbo/messages/rcon/SetMotto.java @@ -23,7 +23,7 @@ public class SetMotto extends RCONMessage { if (habbo != null) { habbo.getHabboInfo().setMotto(json.motto); - habbo.getHabboInfo().getCurrentRoom().sendComposer(new UserChangeMessageComposer(habbo).compose()); + habbo.getRoomUnit().getRoom().sendComposer(new UserChangeMessageComposer(habbo).compose()); } else { try (Connection connection = Emulator.getDatabase().getDataSource().getConnection()) { try (PreparedStatement statement = connection.prepareStatement("UPDATE users SET motto = ? WHERE id = ? LIMIT 1")) { diff --git a/src/main/java/com/eu/habbo/messages/rcon/StalkUser.java b/src/main/java/com/eu/habbo/messages/rcon/StalkUser.java index 3e2a61fb..9a47fe13 100644 --- a/src/main/java/com/eu/habbo/messages/rcon/StalkUser.java +++ b/src/main/java/com/eu/habbo/messages/rcon/StalkUser.java @@ -23,7 +23,7 @@ public class StalkUser extends RCONMessage { return; } - if (target.getHabboInfo().getCurrentRoom() == null) { + if (target.getRoomUnit().getRoom() == null) { this.message = Emulator.getTexts().getValue("commands.error.cmd_stalk.not_room").replace("%user%", json.user_id + ""); this.status = STATUS_ERROR; return; @@ -35,14 +35,14 @@ public class StalkUser extends RCONMessage { return; } - if (target.getHabboInfo().getCurrentRoom() == habbo.getHabboInfo().getCurrentRoom()) { + if (target.getRoomUnit().getRoom() == habbo.getRoomUnit().getRoom()) { this.message = Emulator.getTexts().getValue("commands.generic.cmd_stalk.same_room").replace("%user%", json.user_id + ""); this.status = STATUS_ERROR; return; } if (this.status == 0) { - habbo.getClient().sendResponse(new RoomForwardMessageComposer(target.getHabboInfo().getCurrentRoom().getId())); + habbo.getClient().sendResponse(new RoomForwardMessageComposer(target.getRoomUnit().getRoom().getRoomInfo().getId())); } } } diff --git a/src/main/java/com/eu/habbo/messages/rcon/UpdateUser.java b/src/main/java/com/eu/habbo/messages/rcon/UpdateUser.java index cfb39f08..c73cd92c 100644 --- a/src/main/java/com/eu/habbo/messages/rcon/UpdateUser.java +++ b/src/main/java/com/eu/habbo/messages/rcon/UpdateUser.java @@ -53,8 +53,8 @@ public class UpdateUser extends RCONMessage { habbo.getClient().sendResponse(new FigureUpdateComposer(habbo).compose()); } - if (habbo.getHabboInfo().getCurrentRoom() != null) { - habbo.getHabboInfo().getCurrentRoom().sendComposer(new UserChangeMessageComposer(habbo).compose()); + if (habbo.getRoomUnit().getRoom() != null) { + habbo.getRoomUnit().getRoom().sendComposer(new UserChangeMessageComposer(habbo).compose()); } } diff --git a/src/main/java/com/eu/habbo/plugin/events/furniture/FurnitureBuildheightEvent.java b/src/main/java/com/eu/habbo/plugin/events/furniture/FurnitureBuildheightEvent.java index ada589e7..eac552ac 100644 --- a/src/main/java/com/eu/habbo/plugin/events/furniture/FurnitureBuildheightEvent.java +++ b/src/main/java/com/eu/habbo/plugin/events/furniture/FurnitureBuildheightEvent.java @@ -1,7 +1,7 @@ package com.eu.habbo.plugin.events.furniture; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; public class FurnitureBuildheightEvent extends FurnitureUserEvent { @@ -12,7 +12,7 @@ public class FurnitureBuildheightEvent extends FurnitureUserEvent { private boolean changedHeight = false; - public FurnitureBuildheightEvent(HabboItem furniture, Habbo habbo, double oldHeight, double newHeight) { + public FurnitureBuildheightEvent(RoomItem furniture, Habbo habbo, double oldHeight, double newHeight) { super(furniture, habbo); this.oldHeight = oldHeight; diff --git a/src/main/java/com/eu/habbo/plugin/events/furniture/FurnitureDiceRolledEvent.java b/src/main/java/com/eu/habbo/plugin/events/furniture/FurnitureDiceRolledEvent.java index 228a6568..b6c191d6 100644 --- a/src/main/java/com/eu/habbo/plugin/events/furniture/FurnitureDiceRolledEvent.java +++ b/src/main/java/com/eu/habbo/plugin/events/furniture/FurnitureDiceRolledEvent.java @@ -1,7 +1,7 @@ package com.eu.habbo.plugin.events.furniture; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import lombok.Getter; @Getter @@ -10,7 +10,7 @@ public class FurnitureDiceRolledEvent extends FurnitureUserEvent { private final int result; - public FurnitureDiceRolledEvent(HabboItem furniture, Habbo habbo, int result) { + public FurnitureDiceRolledEvent(RoomItem furniture, Habbo habbo, int result) { super(furniture, habbo); this.result = result; diff --git a/src/main/java/com/eu/habbo/plugin/events/furniture/FurnitureEvent.java b/src/main/java/com/eu/habbo/plugin/events/furniture/FurnitureEvent.java index 00e5db80..c21048fe 100644 --- a/src/main/java/com/eu/habbo/plugin/events/furniture/FurnitureEvent.java +++ b/src/main/java/com/eu/habbo/plugin/events/furniture/FurnitureEvent.java @@ -1,14 +1,14 @@ package com.eu.habbo.plugin.events.furniture; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.plugin.Event; public abstract class FurnitureEvent extends Event { - public final HabboItem furniture; + public final RoomItem furniture; - public FurnitureEvent(HabboItem furniture) { + public FurnitureEvent(RoomItem furniture) { this.furniture = furniture; } } diff --git a/src/main/java/com/eu/habbo/plugin/events/furniture/FurnitureMovedEvent.java b/src/main/java/com/eu/habbo/plugin/events/furniture/FurnitureMovedEvent.java index cbf4e1e5..f0eddd0a 100644 --- a/src/main/java/com/eu/habbo/plugin/events/furniture/FurnitureMovedEvent.java +++ b/src/main/java/com/eu/habbo/plugin/events/furniture/FurnitureMovedEvent.java @@ -2,7 +2,7 @@ package com.eu.habbo.plugin.events.furniture; import com.eu.habbo.habbohotel.rooms.RoomTile; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; public class FurnitureMovedEvent extends FurnitureUserEvent { @@ -11,7 +11,7 @@ public class FurnitureMovedEvent extends FurnitureUserEvent { private boolean pluginHelper; - public FurnitureMovedEvent(HabboItem furniture, Habbo habbo, RoomTile oldPosition, RoomTile newPosition) { + public FurnitureMovedEvent(RoomItem furniture, Habbo habbo, RoomTile oldPosition, RoomTile newPosition) { super(furniture, habbo); this.oldPosition = oldPosition; diff --git a/src/main/java/com/eu/habbo/plugin/events/furniture/FurniturePickedUpEvent.java b/src/main/java/com/eu/habbo/plugin/events/furniture/FurniturePickedUpEvent.java index 37114d2f..d42eebaa 100644 --- a/src/main/java/com/eu/habbo/plugin/events/furniture/FurniturePickedUpEvent.java +++ b/src/main/java/com/eu/habbo/plugin/events/furniture/FurniturePickedUpEvent.java @@ -1,11 +1,11 @@ package com.eu.habbo.plugin.events.furniture; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; public class FurniturePickedUpEvent extends FurnitureUserEvent { - public FurniturePickedUpEvent(HabboItem furniture, Habbo habbo) { + public FurniturePickedUpEvent(RoomItem furniture, Habbo habbo) { super(furniture, habbo); } } diff --git a/src/main/java/com/eu/habbo/plugin/events/furniture/FurniturePlacedEvent.java b/src/main/java/com/eu/habbo/plugin/events/furniture/FurniturePlacedEvent.java index 6af5747e..ef6b028b 100644 --- a/src/main/java/com/eu/habbo/plugin/events/furniture/FurniturePlacedEvent.java +++ b/src/main/java/com/eu/habbo/plugin/events/furniture/FurniturePlacedEvent.java @@ -2,14 +2,14 @@ package com.eu.habbo.plugin.events.furniture; import com.eu.habbo.habbohotel.rooms.RoomTile; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; public class FurniturePlacedEvent extends FurnitureUserEvent { public final RoomTile location; private boolean pluginHelper; - public FurniturePlacedEvent(HabboItem furniture, Habbo habbo, RoomTile location) { + public FurniturePlacedEvent(RoomItem furniture, Habbo habbo, RoomTile location) { super(furniture, habbo); this.location = location; diff --git a/src/main/java/com/eu/habbo/plugin/events/furniture/FurnitureRedeemedEvent.java b/src/main/java/com/eu/habbo/plugin/events/furniture/FurnitureRedeemedEvent.java index ce2dd0dc..11c4c519 100644 --- a/src/main/java/com/eu/habbo/plugin/events/furniture/FurnitureRedeemedEvent.java +++ b/src/main/java/com/eu/habbo/plugin/events/furniture/FurnitureRedeemedEvent.java @@ -1,7 +1,7 @@ package com.eu.habbo.plugin.events.furniture; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; public class FurnitureRedeemedEvent extends FurnitureUserEvent { public static final int CREDITS = -1; @@ -11,7 +11,7 @@ public class FurnitureRedeemedEvent extends FurnitureUserEvent { public final int amount; public final int currencyID; - public FurnitureRedeemedEvent(HabboItem furniture, Habbo habbo, int amount, int currencyID) { + public FurnitureRedeemedEvent(RoomItem furniture, Habbo habbo, int amount, int currencyID) { super(furniture, habbo); this.amount = amount; diff --git a/src/main/java/com/eu/habbo/plugin/events/furniture/FurnitureRolledEvent.java b/src/main/java/com/eu/habbo/plugin/events/furniture/FurnitureRolledEvent.java index 92da1e6b..ff446c80 100644 --- a/src/main/java/com/eu/habbo/plugin/events/furniture/FurnitureRolledEvent.java +++ b/src/main/java/com/eu/habbo/plugin/events/furniture/FurnitureRolledEvent.java @@ -1,17 +1,17 @@ package com.eu.habbo.plugin.events.furniture; import com.eu.habbo.habbohotel.rooms.RoomTile; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; public class FurnitureRolledEvent extends FurnitureEvent { - public final HabboItem roller; + public final RoomItem roller; public final RoomTile newLocation; - public FurnitureRolledEvent(HabboItem furniture, HabboItem roller, RoomTile newLocation) { + public FurnitureRolledEvent(RoomItem furniture, RoomItem roller, RoomTile newLocation) { super(furniture); this.roller = roller; diff --git a/src/main/java/com/eu/habbo/plugin/events/furniture/FurnitureRoomTonerEvent.java b/src/main/java/com/eu/habbo/plugin/events/furniture/FurnitureRoomTonerEvent.java index 402b16f8..ef6942c9 100644 --- a/src/main/java/com/eu/habbo/plugin/events/furniture/FurnitureRoomTonerEvent.java +++ b/src/main/java/com/eu/habbo/plugin/events/furniture/FurnitureRoomTonerEvent.java @@ -1,7 +1,7 @@ package com.eu.habbo.plugin.events.furniture; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import lombok.Getter; @Getter @@ -12,7 +12,7 @@ public class FurnitureRoomTonerEvent extends FurnitureUserEvent { private final int brightness; - public FurnitureRoomTonerEvent(HabboItem furniture, Habbo habbo, int hue, int saturation, int brightness) { + public FurnitureRoomTonerEvent(RoomItem furniture, Habbo habbo, int hue, int saturation, int brightness) { super(furniture, habbo); this.hue = hue; diff --git a/src/main/java/com/eu/habbo/plugin/events/furniture/FurnitureRotatedEvent.java b/src/main/java/com/eu/habbo/plugin/events/furniture/FurnitureRotatedEvent.java index da314b59..29d931de 100644 --- a/src/main/java/com/eu/habbo/plugin/events/furniture/FurnitureRotatedEvent.java +++ b/src/main/java/com/eu/habbo/plugin/events/furniture/FurnitureRotatedEvent.java @@ -1,14 +1,14 @@ package com.eu.habbo.plugin.events.furniture; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; public class FurnitureRotatedEvent extends FurnitureUserEvent { public final int oldRotation; - public FurnitureRotatedEvent(HabboItem furniture, Habbo habbo, int oldRotation) { + public FurnitureRotatedEvent(RoomItem furniture, Habbo habbo, int oldRotation) { super(furniture, habbo); this.oldRotation = oldRotation; diff --git a/src/main/java/com/eu/habbo/plugin/events/furniture/FurnitureToggleEvent.java b/src/main/java/com/eu/habbo/plugin/events/furniture/FurnitureToggleEvent.java index 89386461..e9c00479 100644 --- a/src/main/java/com/eu/habbo/plugin/events/furniture/FurnitureToggleEvent.java +++ b/src/main/java/com/eu/habbo/plugin/events/furniture/FurnitureToggleEvent.java @@ -1,14 +1,14 @@ package com.eu.habbo.plugin.events.furniture; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import lombok.Getter; @Getter public class FurnitureToggleEvent extends FurnitureUserEvent { private final int state; - public FurnitureToggleEvent(HabboItem furniture, Habbo habbo, int state) { + public FurnitureToggleEvent(RoomItem furniture, Habbo habbo, int state) { super(furniture, habbo); this.state = state; diff --git a/src/main/java/com/eu/habbo/plugin/events/furniture/FurnitureUserEvent.java b/src/main/java/com/eu/habbo/plugin/events/furniture/FurnitureUserEvent.java index 54017a4b..2d2f79cc 100644 --- a/src/main/java/com/eu/habbo/plugin/events/furniture/FurnitureUserEvent.java +++ b/src/main/java/com/eu/habbo/plugin/events/furniture/FurnitureUserEvent.java @@ -1,14 +1,14 @@ package com.eu.habbo.plugin.events.furniture; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; public abstract class FurnitureUserEvent extends FurnitureEvent { public final Habbo habbo; - public FurnitureUserEvent(HabboItem furniture, Habbo habbo) { + public FurnitureUserEvent(RoomItem furniture, Habbo habbo) { super(furniture); this.habbo = habbo; } diff --git a/src/main/java/com/eu/habbo/plugin/events/furniture/wired/WiredConditionFailedEvent.java b/src/main/java/com/eu/habbo/plugin/events/furniture/wired/WiredConditionFailedEvent.java index c8e420f1..2d259087 100644 --- a/src/main/java/com/eu/habbo/plugin/events/furniture/wired/WiredConditionFailedEvent.java +++ b/src/main/java/com/eu/habbo/plugin/events/furniture/wired/WiredConditionFailedEvent.java @@ -3,7 +3,7 @@ package com.eu.habbo.plugin.events.furniture.wired; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredCondition; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredTrigger; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.plugin.events.roomunit.RoomUnitEvent; public class WiredConditionFailedEvent extends RoomUnitEvent { diff --git a/src/main/java/com/eu/habbo/plugin/events/furniture/wired/WiredStackExecutedEvent.java b/src/main/java/com/eu/habbo/plugin/events/furniture/wired/WiredStackExecutedEvent.java index 9ed4385a..011af408 100644 --- a/src/main/java/com/eu/habbo/plugin/events/furniture/wired/WiredStackExecutedEvent.java +++ b/src/main/java/com/eu/habbo/plugin/events/furniture/wired/WiredStackExecutedEvent.java @@ -4,7 +4,7 @@ import com.eu.habbo.habbohotel.items.interactions.InteractionWiredCondition; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredEffect; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredTrigger; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.plugin.events.roomunit.RoomUnitEvent; import gnu.trove.set.hash.THashSet; diff --git a/src/main/java/com/eu/habbo/plugin/events/furniture/wired/WiredStackTriggeredEvent.java b/src/main/java/com/eu/habbo/plugin/events/furniture/wired/WiredStackTriggeredEvent.java index 59e3f8ac..3ca3e482 100644 --- a/src/main/java/com/eu/habbo/plugin/events/furniture/wired/WiredStackTriggeredEvent.java +++ b/src/main/java/com/eu/habbo/plugin/events/furniture/wired/WiredStackTriggeredEvent.java @@ -4,7 +4,7 @@ import com.eu.habbo.habbohotel.items.interactions.InteractionWiredCondition; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredEffect; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredTrigger; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.plugin.events.roomunit.RoomUnitEvent; import gnu.trove.set.hash.THashSet; diff --git a/src/main/java/com/eu/habbo/plugin/events/inventory/InventoryItemAddedEvent.java b/src/main/java/com/eu/habbo/plugin/events/inventory/InventoryItemAddedEvent.java index af3ed727..3802e5ce 100644 --- a/src/main/java/com/eu/habbo/plugin/events/inventory/InventoryItemAddedEvent.java +++ b/src/main/java/com/eu/habbo/plugin/events/inventory/InventoryItemAddedEvent.java @@ -1,10 +1,10 @@ package com.eu.habbo.plugin.events.inventory; import com.eu.habbo.habbohotel.users.HabboInventory; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; public class InventoryItemAddedEvent extends InventoryItemEvent { - public InventoryItemAddedEvent(HabboInventory inventory, HabboItem item) { + public InventoryItemAddedEvent(HabboInventory inventory, RoomItem item) { super(inventory, item); } } diff --git a/src/main/java/com/eu/habbo/plugin/events/inventory/InventoryItemEvent.java b/src/main/java/com/eu/habbo/plugin/events/inventory/InventoryItemEvent.java index 11581a4f..c8e70499 100644 --- a/src/main/java/com/eu/habbo/plugin/events/inventory/InventoryItemEvent.java +++ b/src/main/java/com/eu/habbo/plugin/events/inventory/InventoryItemEvent.java @@ -1,14 +1,14 @@ package com.eu.habbo.plugin.events.inventory; import com.eu.habbo.habbohotel.users.HabboInventory; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import lombok.Getter; @Getter public class InventoryItemEvent extends InventoryEvent { - private final HabboItem item; + private final RoomItem item; - public InventoryItemEvent(HabboInventory inventory, HabboItem item) { + public InventoryItemEvent(HabboInventory inventory, RoomItem item) { super(inventory); this.item = item; diff --git a/src/main/java/com/eu/habbo/plugin/events/inventory/InventoryItemRemovedEvent.java b/src/main/java/com/eu/habbo/plugin/events/inventory/InventoryItemRemovedEvent.java index 26330b8a..e8259475 100644 --- a/src/main/java/com/eu/habbo/plugin/events/inventory/InventoryItemRemovedEvent.java +++ b/src/main/java/com/eu/habbo/plugin/events/inventory/InventoryItemRemovedEvent.java @@ -1,10 +1,10 @@ package com.eu.habbo.plugin.events.inventory; import com.eu.habbo.habbohotel.users.HabboInventory; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; public class InventoryItemRemovedEvent extends InventoryItemEvent { - public InventoryItemRemovedEvent(HabboInventory inventory, HabboItem item) { + public InventoryItemRemovedEvent(HabboInventory inventory, RoomItem item) { super(inventory, item); } } diff --git a/src/main/java/com/eu/habbo/plugin/events/inventory/InventoryItemsAddedEvent.java b/src/main/java/com/eu/habbo/plugin/events/inventory/InventoryItemsAddedEvent.java index a0ead84f..4bf32cfd 100644 --- a/src/main/java/com/eu/habbo/plugin/events/inventory/InventoryItemsAddedEvent.java +++ b/src/main/java/com/eu/habbo/plugin/events/inventory/InventoryItemsAddedEvent.java @@ -1,13 +1,13 @@ package com.eu.habbo.plugin.events.inventory; import com.eu.habbo.habbohotel.users.HabboInventory; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import gnu.trove.set.hash.THashSet; public class InventoryItemsAddedEvent extends InventoryEvent { - public final THashSet items; + public final THashSet items; - public InventoryItemsAddedEvent(HabboInventory inventory, THashSet items) { + public InventoryItemsAddedEvent(HabboInventory inventory, THashSet items) { super(inventory); this.items = items; } diff --git a/src/main/java/com/eu/habbo/plugin/events/marketplace/MarketPlaceItemOfferedEvent.java b/src/main/java/com/eu/habbo/plugin/events/marketplace/MarketPlaceItemOfferedEvent.java index 100228e4..4a3d39e8 100644 --- a/src/main/java/com/eu/habbo/plugin/events/marketplace/MarketPlaceItemOfferedEvent.java +++ b/src/main/java/com/eu/habbo/plugin/events/marketplace/MarketPlaceItemOfferedEvent.java @@ -1,16 +1,16 @@ package com.eu.habbo.plugin.events.marketplace; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import lombok.Getter; @Getter public class MarketPlaceItemOfferedEvent extends MarketPlaceEvent { private final Habbo habbo; - private final HabboItem item; + private final RoomItem item; private final int price; - public MarketPlaceItemOfferedEvent(Habbo habbo, HabboItem item, int price) { + public MarketPlaceItemOfferedEvent(Habbo habbo, RoomItem item, int price) { this.habbo = habbo; this.item = item; this.price = price; diff --git a/src/main/java/com/eu/habbo/plugin/events/marketplace/MarketPlaceItemSoldEvent.java b/src/main/java/com/eu/habbo/plugin/events/marketplace/MarketPlaceItemSoldEvent.java index 2f6957b8..5dfc03ca 100644 --- a/src/main/java/com/eu/habbo/plugin/events/marketplace/MarketPlaceItemSoldEvent.java +++ b/src/main/java/com/eu/habbo/plugin/events/marketplace/MarketPlaceItemSoldEvent.java @@ -1,15 +1,15 @@ package com.eu.habbo.plugin.events.marketplace; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; public class MarketPlaceItemSoldEvent extends MarketPlaceEvent { public final Habbo seller; public final Habbo purchaser; - public final HabboItem item; + public final RoomItem item; public int price; - public MarketPlaceItemSoldEvent(Habbo seller, Habbo purchaser, HabboItem item, int price) { + public MarketPlaceItemSoldEvent(Habbo seller, Habbo purchaser, RoomItem item, int price) { this.seller = seller; this.purchaser = purchaser; this.item = item; diff --git a/src/main/java/com/eu/habbo/plugin/events/rooms/RoomFloorItemsLoadEvent.java b/src/main/java/com/eu/habbo/plugin/events/rooms/RoomFloorItemsLoadEvent.java index 01bea305..659ab411 100644 --- a/src/main/java/com/eu/habbo/plugin/events/rooms/RoomFloorItemsLoadEvent.java +++ b/src/main/java/com/eu/habbo/plugin/events/rooms/RoomFloorItemsLoadEvent.java @@ -1,21 +1,21 @@ package com.eu.habbo.plugin.events.rooms; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.plugin.events.users.UserEvent; import gnu.trove.set.hash.THashSet; public class RoomFloorItemsLoadEvent extends UserEvent { - private THashSet floorItems; + private THashSet floorItems; private boolean changedFloorItems; - public RoomFloorItemsLoadEvent(Habbo habbo, THashSet floorItems) { + public RoomFloorItemsLoadEvent(Habbo habbo, THashSet floorItems) { super(habbo); this.floorItems = floorItems; this.changedFloorItems = false; } - public void setFloorItems(THashSet floorItems) { + public void setFloorItems(THashSet floorItems) { this.changedFloorItems = true; this.floorItems = floorItems; } @@ -24,7 +24,7 @@ public class RoomFloorItemsLoadEvent extends UserEvent { return this.changedFloorItems; } - public THashSet getFloorItems() { + public THashSet getFloorItems() { return this.floorItems; } } diff --git a/src/main/java/com/eu/habbo/plugin/events/roomunit/RoomUnitEvent.java b/src/main/java/com/eu/habbo/plugin/events/roomunit/RoomUnitEvent.java index 6979df52..dbb1cb13 100644 --- a/src/main/java/com/eu/habbo/plugin/events/roomunit/RoomUnitEvent.java +++ b/src/main/java/com/eu/habbo/plugin/events/roomunit/RoomUnitEvent.java @@ -1,7 +1,7 @@ package com.eu.habbo.plugin.events.roomunit; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.plugin.Event; public abstract class RoomUnitEvent extends Event { diff --git a/src/main/java/com/eu/habbo/plugin/events/roomunit/RoomUnitLookAtPointEvent.java b/src/main/java/com/eu/habbo/plugin/events/roomunit/RoomUnitLookAtPointEvent.java index b1e5c280..a18290a8 100644 --- a/src/main/java/com/eu/habbo/plugin/events/roomunit/RoomUnitLookAtPointEvent.java +++ b/src/main/java/com/eu/habbo/plugin/events/roomunit/RoomUnitLookAtPointEvent.java @@ -2,7 +2,7 @@ package com.eu.habbo.plugin.events.roomunit; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; public class RoomUnitLookAtPointEvent extends RoomUnitEvent { diff --git a/src/main/java/com/eu/habbo/plugin/events/roomunit/RoomUnitSetGoalEvent.java b/src/main/java/com/eu/habbo/plugin/events/roomunit/RoomUnitSetGoalEvent.java index c7583272..4e1e0902 100644 --- a/src/main/java/com/eu/habbo/plugin/events/roomunit/RoomUnitSetGoalEvent.java +++ b/src/main/java/com/eu/habbo/plugin/events/roomunit/RoomUnitSetGoalEvent.java @@ -2,7 +2,7 @@ package com.eu.habbo.plugin.events.roomunit; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; public class RoomUnitSetGoalEvent extends RoomUnitEvent { diff --git a/src/main/java/com/eu/habbo/plugin/events/users/UserRolledEvent.java b/src/main/java/com/eu/habbo/plugin/events/users/UserRolledEvent.java index c38f36a3..0f1037ed 100644 --- a/src/main/java/com/eu/habbo/plugin/events/users/UserRolledEvent.java +++ b/src/main/java/com/eu/habbo/plugin/events/users/UserRolledEvent.java @@ -2,17 +2,17 @@ package com.eu.habbo.plugin.events.users; import com.eu.habbo.habbohotel.rooms.RoomTile; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; public class UserRolledEvent extends UserEvent { - public final HabboItem roller; + public final RoomItem roller; public final RoomTile location; - public UserRolledEvent(Habbo habbo, HabboItem roller, RoomTile location) { + public UserRolledEvent(Habbo habbo, RoomItem roller, RoomTile location) { super(habbo); this.roller = roller; diff --git a/src/main/java/com/eu/habbo/plugin/events/users/catalog/UserCatalogFurnitureBoughtEvent.java b/src/main/java/com/eu/habbo/plugin/events/users/catalog/UserCatalogFurnitureBoughtEvent.java index 2e38aa88..df686a54 100644 --- a/src/main/java/com/eu/habbo/plugin/events/users/catalog/UserCatalogFurnitureBoughtEvent.java +++ b/src/main/java/com/eu/habbo/plugin/events/users/catalog/UserCatalogFurnitureBoughtEvent.java @@ -2,15 +2,15 @@ package com.eu.habbo.plugin.events.users.catalog; import com.eu.habbo.habbohotel.catalog.CatalogItem; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import gnu.trove.set.hash.THashSet; public class UserCatalogFurnitureBoughtEvent extends UserCatalogEvent { - public final THashSet furniture; + public final THashSet furniture; - public UserCatalogFurnitureBoughtEvent(Habbo habbo, CatalogItem catalogItem, THashSet furniture) { + public UserCatalogFurnitureBoughtEvent(Habbo habbo, CatalogItem catalogItem, THashSet furniture) { super(habbo, catalogItem); this.furniture = furniture; diff --git a/src/main/java/com/eu/habbo/plugin/events/users/catalog/UserCatalogItemPurchasedEvent.java b/src/main/java/com/eu/habbo/plugin/events/users/catalog/UserCatalogItemPurchasedEvent.java index 6875591b..1895d858 100644 --- a/src/main/java/com/eu/habbo/plugin/events/users/catalog/UserCatalogItemPurchasedEvent.java +++ b/src/main/java/com/eu/habbo/plugin/events/users/catalog/UserCatalogItemPurchasedEvent.java @@ -2,7 +2,7 @@ package com.eu.habbo.plugin.events.users.catalog; import com.eu.habbo.habbohotel.catalog.CatalogItem; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import gnu.trove.set.hash.THashSet; import lombok.Getter; @@ -11,13 +11,13 @@ import java.util.List; @Getter public class UserCatalogItemPurchasedEvent extends UserCatalogEvent { - public final THashSet itemsList; + public final THashSet itemsList; private final int totalCredits; private final int totalPoints; private final List badges; - public UserCatalogItemPurchasedEvent(Habbo habbo, CatalogItem catalogItem, THashSet itemsList, int totalCredits, int totalPoints, List badges) { + public UserCatalogItemPurchasedEvent(Habbo habbo, CatalogItem catalogItem, THashSet itemsList, int totalCredits, int totalPoints, List badges) { super(habbo, catalogItem); this.itemsList = itemsList; diff --git a/src/main/java/com/eu/habbo/threading/runnables/BackgroundAnimation.java b/src/main/java/com/eu/habbo/threading/runnables/BackgroundAnimation.java index 2e275877..7ac9c258 100644 --- a/src/main/java/com/eu/habbo/threading/runnables/BackgroundAnimation.java +++ b/src/main/java/com/eu/habbo/threading/runnables/BackgroundAnimation.java @@ -2,12 +2,12 @@ package com.eu.habbo.threading.runnables; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import lombok.RequiredArgsConstructor; @RequiredArgsConstructor public class BackgroundAnimation implements Runnable { - private final HabboItem toner; + private final RoomItem toner; private final Room room; private int length = 1000; private int state = 0; diff --git a/src/main/java/com/eu/habbo/threading/runnables/BanzaiRandomTeleport.java b/src/main/java/com/eu/habbo/threading/runnables/BanzaiRandomTeleport.java index 7c034d46..96e781ef 100644 --- a/src/main/java/com/eu/habbo/threading/runnables/BanzaiRandomTeleport.java +++ b/src/main/java/com/eu/habbo/threading/runnables/BanzaiRandomTeleport.java @@ -3,24 +3,24 @@ package com.eu.habbo.threading.runnables; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.rooms.RoomUserRotation; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.RoomRotation; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import lombok.AllArgsConstructor; import org.slf4j.LoggerFactory; @AllArgsConstructor public class BanzaiRandomTeleport implements Runnable { - private final HabboItem item; - private final HabboItem toItem; + private final RoomItem item; + private final RoomItem toItem; private final RoomUnit habbo; private final Room room; @Override public void run() { - HabboItem topItemNow = this.room.getTopItemAt(this.habbo.getX(), this.habbo.getY()); - RoomTile lastLocation = this.habbo.getCurrentLocation(); + RoomItem topItemNow = this.room.getTopItemAt(this.habbo.getCurrentPosition().getX(), this.habbo.getCurrentPosition().getY()); + RoomTile lastLocation = this.habbo.getCurrentPosition(); RoomTile newLocation = this.room.getLayout().getTile(toItem.getX(), toItem.getY()); if(topItemNow != null) { @@ -45,7 +45,7 @@ public class BanzaiRandomTeleport implements Runnable { Emulator.getThreading().run(() -> { this.habbo.setCanWalk(true); - HabboItem topItemNext = this.room.getTopItemAt(this.habbo.getX(), this.habbo.getY()); + RoomItem topItemNext = this.room.getTopItemAt(this.habbo.getCurrentPosition().getX(), this.habbo.getCurrentPosition().getY()); if(topItemNext != null) { try { @@ -62,7 +62,7 @@ public class BanzaiRandomTeleport implements Runnable { }, 750); Emulator.getThreading().run(() -> { - this.habbo.setRotation(RoomUserRotation.fromValue(Emulator.getRandom().nextInt(8))); + this.habbo.setRotation(RoomRotation.fromValue(Emulator.getRandom().nextInt(8))); this.room.teleportRoomUnitToLocation(this.habbo, newLocation.getX(), newLocation.getY(), newLocation.getStackHeight()); }, 250); diff --git a/src/main/java/com/eu/habbo/threading/runnables/BattleBanzaiTilesFlicker.java b/src/main/java/com/eu/habbo/threading/runnables/BattleBanzaiTilesFlicker.java index 8828e86d..0e4670f3 100644 --- a/src/main/java/com/eu/habbo/threading/runnables/BattleBanzaiTilesFlicker.java +++ b/src/main/java/com/eu/habbo/threading/runnables/BattleBanzaiTilesFlicker.java @@ -4,14 +4,14 @@ import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.games.GameTeamColors; import com.eu.habbo.habbohotel.items.interactions.games.battlebanzai.InteractionBattleBanzaiSphere; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.outgoing.rooms.items.ItemsDataUpdateComposer; import gnu.trove.set.hash.THashSet; import lombok.RequiredArgsConstructor; @RequiredArgsConstructor public class BattleBanzaiTilesFlicker implements Runnable { - private final THashSet items; + private final THashSet items; private final GameTeamColors color; private final Room room; @@ -32,14 +32,14 @@ public class BattleBanzaiTilesFlicker implements Runnable { this.on = true; } - for (HabboItem item : this.items) { + for (RoomItem item : this.items) { item.setExtradata(state + ""); } this.room.sendComposer(new ItemsDataUpdateComposer(this.items).compose()); if (this.count == 9) { - for (HabboItem item : this.room.getRoomSpecialTypes().getItemsOfType(InteractionBattleBanzaiSphere.class)) { + for (RoomItem item : this.room.getRoomSpecialTypes().getItemsOfType(InteractionBattleBanzaiSphere.class)) { item.setExtradata("0"); this.room.updateItemState(item); } diff --git a/src/main/java/com/eu/habbo/threading/runnables/BotFollowHabbo.java b/src/main/java/com/eu/habbo/threading/runnables/BotFollowHabbo.java index 493497a6..478c4168 100644 --- a/src/main/java/com/eu/habbo/threading/runnables/BotFollowHabbo.java +++ b/src/main/java/com/eu/habbo/threading/runnables/BotFollowHabbo.java @@ -20,16 +20,16 @@ public class BotFollowHabbo implements Runnable { public void run() { if (this.bot != null) { if (this.habbo != null && this.bot.getFollowingHabboId() == this.habbo.getHabboInfo().getId()) { - if (this.habbo.getHabboInfo().getCurrentRoom() != null && this.habbo.getHabboInfo().getCurrentRoom() == this.room) { + if (this.habbo.getRoomUnit().getRoom() != null && this.habbo.getRoomUnit().getRoom() == this.room) { if (this.habbo.getRoomUnit() != null) { if (this.bot.getRoomUnit() != null) { - RoomTile target = this.room.getLayout().getTileInFront(this.habbo.getRoomUnit().getCurrentLocation(), Math.abs((this.habbo.getRoomUnit().getBodyRotation().getValue() + 4)) % 8); + RoomTile target = this.room.getLayout().getTileInFront(this.habbo.getRoomUnit().getCurrentPosition(), Math.abs((this.habbo.getRoomUnit().getBodyRotation().getValue() + 4)) % 8); if (target != null) { if (target.getX() < 0 || target.getY() < 0) - target = this.room.getLayout().getTileInFront(this.habbo.getRoomUnit().getCurrentLocation(), this.habbo.getRoomUnit().getBodyRotation().getValue()); + target = this.room.getLayout().getTileInFront(this.habbo.getRoomUnit().getCurrentPosition(), this.habbo.getRoomUnit().getBodyRotation().getValue()); - if(this.habbo.getRoomUnit().getCurrentLocation().distance(this.bot.getRoomUnit().getCurrentLocation()) < 2) { + if(this.habbo.getRoomUnit().getCurrentPosition().distance(this.bot.getRoomUnit().getCurrentPosition()) < 2) { if(!hasReached) { WiredHandler.handle(WiredTriggerType.BOT_REACHED_AVTR, bot.getRoomUnit(), room, new Object[]{}); hasReached = true; diff --git a/src/main/java/com/eu/habbo/threading/runnables/CannonKickAction.java b/src/main/java/com/eu/habbo/threading/runnables/CannonKickAction.java index 68fa5b31..65970b1f 100644 --- a/src/main/java/com/eu/habbo/threading/runnables/CannonKickAction.java +++ b/src/main/java/com/eu/habbo/threading/runnables/CannonKickAction.java @@ -37,10 +37,12 @@ public class CannonKickAction implements Runnable { ServerMessage message = new NotificationDialogMessageComposer("cannon.png", dater).compose(); for (RoomTile t : tiles) { - for (Habbo habbo : this.room.getHabbosAt(t.getX(), t.getY())) { - if (!habbo.hasRight(Permission.ACC_UNKICKABLE) && !this.room.isOwner(habbo)) { - Emulator.getGameEnvironment().getRoomManager().leaveRoom(habbo, this.room); - habbo.getClient().sendResponse(message); //kicked composer + for (Habbo habbo : this.room.getRoomUnitManager().getHabbosAt(t)) { + if (!habbo.hasRight(Permission.ACC_UNKICKABLE)) { + if (!this.room.getRoomInfo().isRoomOwner(habbo)) { + Emulator.getGameEnvironment().getRoomManager().leaveRoom(habbo, this.room); + habbo.getClient().sendResponse(message); //kicked composer + } } } } diff --git a/src/main/java/com/eu/habbo/threading/runnables/ClearRentedSpace.java b/src/main/java/com/eu/habbo/threading/runnables/ClearRentedSpace.java index 4d4ff335..233f312d 100644 --- a/src/main/java/com/eu/habbo/threading/runnables/ClearRentedSpace.java +++ b/src/main/java/com/eu/habbo/threading/runnables/ClearRentedSpace.java @@ -5,7 +5,7 @@ import com.eu.habbo.habbohotel.items.interactions.InteractionRentableSpace; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.outgoing.inventory.UnseenItemsComposer; import gnu.trove.set.hash.THashSet; import lombok.AllArgsConstructor; @@ -17,10 +17,10 @@ public class ClearRentedSpace implements Runnable { @Override public void run() { - THashSet items = new THashSet<>(); + THashSet items = new THashSet<>(); for (RoomTile t : this.room.getLayout().getTilesAt(this.room.getLayout().getTile(this.item.getX(), this.item.getY()), this.item.getBaseItem().getWidth(), this.item.getBaseItem().getLength(), this.item.getRotation())) { - for (HabboItem i : this.room.getItemsAt(t)) { + for (RoomItem i : this.room.getItemsAt(t)) { if (i.getUserId() == this.item.getRenterId()) { items.add(i); i.setRoomId(0); @@ -36,7 +36,7 @@ public class ClearRentedSpace implements Runnable { owner.getHabboStats().setRentedItemId(0); owner.getHabboStats().setRentedTimeEnd(0); } else { - for (HabboItem i : items) { + for (RoomItem i : items) { i.run(); } } diff --git a/src/main/java/com/eu/habbo/threading/runnables/CloseGate.java b/src/main/java/com/eu/habbo/threading/runnables/CloseGate.java index 2a092f01..22033b4a 100644 --- a/src/main/java/com/eu/habbo/threading/runnables/CloseGate.java +++ b/src/main/java/com/eu/habbo/threading/runnables/CloseGate.java @@ -1,19 +1,26 @@ package com.eu.habbo.threading.runnables; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.RoomTile; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import lombok.AllArgsConstructor; @AllArgsConstructor public class CloseGate implements Runnable { - private final HabboItem gate; + private final RoomItem gate; private final Room room; @Override public void run() { - if (this.gate.getRoomId() == this.room.getId()) { + if (this.gate.getRoomId() == this.room.getRoomInfo().getId()) { if (this.room.isLoaded()) { - if (this.room.getHabbosAt(this.gate.getX(), this.gate.getY()).isEmpty()) { + RoomTile tile = this.room.getLayout().getTile(this.gate.getX(), this.gate.getY()); + + if(tile == null) { + return; + } + + if (!this.room.getRoomUnitManager().hasHabbosAt(tile)) { this.gate.setExtradata("0"); this.room.updateItem(this.gate); this.gate.needsUpdate(true); diff --git a/src/main/java/com/eu/habbo/threading/runnables/CrackableExplode.java b/src/main/java/com/eu/habbo/threading/runnables/CrackableExplode.java index 22d9aafa..bd9619a9 100644 --- a/src/main/java/com/eu/habbo/threading/runnables/CrackableExplode.java +++ b/src/main/java/com/eu/habbo/threading/runnables/CrackableExplode.java @@ -5,8 +5,8 @@ import com.eu.habbo.habbohotel.items.FurnitureType; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionCrackable; import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; import com.eu.habbo.messages.outgoing.inventory.FurniListInvalidateComposer; import com.eu.habbo.messages.outgoing.inventory.UnseenItemsComposer; import com.eu.habbo.messages.outgoing.rooms.items.ObjectAddMessageComposer; @@ -40,7 +40,7 @@ public class CrackableExplode implements Runnable { Item rewardItem = Emulator.getGameEnvironment().getItemManager().getCrackableReward(this.habboItem.getBaseItem().getId()); if (rewardItem != null) { - HabboItem newItem = Emulator.getGameEnvironment().getItemManager().createItem(this.habboItem.allowAnyone() ? this.habbo.getHabboInfo().getId() : this.habboItem.getUserId(), rewardItem, 0, 0, ""); + RoomItem newItem = Emulator.getGameEnvironment().getItemManager().createItem(this.habboItem.allowAnyone() ? this.habbo.getHabboInfo().getId() : this.habboItem.getUserId(), rewardItem, 0, 0, ""); if (newItem != null) { //Add to inventory in case if isn't possible place the item or in case is wall item @@ -52,7 +52,7 @@ public class CrackableExplode implements Runnable { newItem.setX(this.x); newItem.setY(this.y); newItem.setZ(this.room.getStackHeight(this.x, this.y, false)); - newItem.setRoomId(this.room.getId()); + newItem.setRoomId(this.room.getRoomInfo().getId()); newItem.needsUpdate(true); this.room.addHabboItem(newItem); this.room.updateItem(newItem); diff --git a/src/main/java/com/eu/habbo/threading/runnables/HabboGiveHandItemToHabbo.java b/src/main/java/com/eu/habbo/threading/runnables/HabboGiveHandItemToHabbo.java index bdc2b307..4e114026 100644 --- a/src/main/java/com/eu/habbo/threading/runnables/HabboGiveHandItemToHabbo.java +++ b/src/main/java/com/eu/habbo/threading/runnables/HabboGiveHandItemToHabbo.java @@ -12,22 +12,22 @@ public class HabboGiveHandItemToHabbo implements Runnable { @Override public void run() { - if (this.from.getHabboInfo().getCurrentRoom() == null || this.target.getHabboInfo().getCurrentRoom() == null) + if (this.from.getRoomUnit().getRoom() == null || this.target.getRoomUnit().getRoom() == null) return; - if (this.from.getHabboInfo().getCurrentRoom() != this.target.getHabboInfo().getCurrentRoom()) + if (this.from.getRoomUnit().getRoom() != this.target.getRoomUnit().getRoom()) return; int itemId = this.from.getRoomUnit().getHandItem(); if (itemId > 0) { this.from.getRoomUnit().setHandItem(0); - this.from.getHabboInfo().getCurrentRoom().sendComposer(new CarryObjectMessageComposer(this.from.getRoomUnit()).compose()); - this.target.getRoomUnit().lookAtPoint(this.from.getRoomUnit().getCurrentLocation()); - this.target.getRoomUnit().statusUpdate(true); + this.from.getRoomUnit().getRoom().sendComposer(new CarryObjectMessageComposer(this.from.getRoomUnit()).compose()); + this.target.getRoomUnit().lookAtPoint(this.from.getRoomUnit().getCurrentPosition()); + this.target.getRoomUnit().setStatusUpdateNeeded(true); this.target.getClient().sendResponse(new HandItemReceivedMessageComposer(this.from.getRoomUnit(), itemId)); this.target.getRoomUnit().setHandItem(itemId); - this.target.getHabboInfo().getCurrentRoom().sendComposer(new CarryObjectMessageComposer(this.target.getRoomUnit()).compose()); + this.target.getRoomUnit().getRoom().sendComposer(new CarryObjectMessageComposer(this.target.getRoomUnit()).compose()); } } } diff --git a/src/main/java/com/eu/habbo/threading/runnables/HabboItemNewState.java b/src/main/java/com/eu/habbo/threading/runnables/HabboItemNewState.java index 8a6492c5..a2e8ed07 100644 --- a/src/main/java/com/eu/habbo/threading/runnables/HabboItemNewState.java +++ b/src/main/java/com/eu/habbo/threading/runnables/HabboItemNewState.java @@ -1,12 +1,12 @@ package com.eu.habbo.threading.runnables; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import lombok.AllArgsConstructor; @AllArgsConstructor public class HabboItemNewState implements Runnable { - private final HabboItem item; + private final RoomItem item; private final Room room; private final String state; @@ -14,7 +14,7 @@ public class HabboItemNewState implements Runnable { public void run() { this.item.setExtradata(this.state); - if (this.item.getRoomId() == this.room.getId()) { + if (this.item.getRoomId() == this.room.getRoomInfo().getId()) { this.room.updateItemState(this.item); } } diff --git a/src/main/java/com/eu/habbo/threading/runnables/KickBallAction.java b/src/main/java/com/eu/habbo/threading/runnables/KickBallAction.java index d1305f7e..7afad767 100644 --- a/src/main/java/com/eu/habbo/threading/runnables/KickBallAction.java +++ b/src/main/java/com/eu/habbo/threading/runnables/KickBallAction.java @@ -4,8 +4,8 @@ import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.items.interactions.InteractionPushable; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.rooms.RoomUserRotation; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.RoomRotation; import com.eu.habbo.messages.outgoing.rooms.items.FloorItemOnRollerComposer; @@ -16,11 +16,11 @@ public class KickBallAction implements Runnable { private final RoomUnit kicker; //The Habbo which initiated the move of the item private final int totalSteps; //The total number of steps in the move sequence public boolean dead = false; //When true the run() function will not execute. Used when another user kicks the ball whilst it is arleady moving. - private RoomUserRotation currentDirection; //The current direction the item is moving in + private RoomRotation currentDirection; //The current direction the item is moving in private int currentStep; //The current step of the move sequence public final boolean isDrag; - public KickBallAction(InteractionPushable ball, Room room, RoomUnit kicker, RoomUserRotation direction, int steps, boolean isDrag) { + public KickBallAction(InteractionPushable ball, Room room, RoomUnit kicker, RoomRotation direction, int steps, boolean isDrag) { this.ball = ball; this.room = room; this.kicker = kicker; @@ -40,7 +40,7 @@ public class KickBallAction implements Runnable { RoomTile next = this.room.getLayout().getTileInFront(currentTile, this.currentDirection.getValue()); if (next == null || !this.ball.validMove(this.room, this.room.getLayout().getTile(this.ball.getX(), this.ball.getY()), next)) { - RoomUserRotation oldDirection = this.currentDirection; + RoomRotation oldDirection = this.currentDirection; if(!this.isDrag) { this.currentDirection = this.ball.getBounceDirection(this.room, this.currentDirection); diff --git a/src/main/java/com/eu/habbo/threading/runnables/OneWayGateActionOne.java b/src/main/java/com/eu/habbo/threading/runnables/OneWayGateActionOne.java index 428d53e3..36a01410 100644 --- a/src/main/java/com/eu/habbo/threading/runnables/OneWayGateActionOne.java +++ b/src/main/java/com/eu/habbo/threading/runnables/OneWayGateActionOne.java @@ -4,7 +4,7 @@ import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.outgoing.rooms.users.UserUpdateComposer; import lombok.AllArgsConstructor; @@ -12,7 +12,7 @@ import lombok.AllArgsConstructor; public class OneWayGateActionOne implements Runnable { private final GameClient client; private final Room room; - private final HabboItem oneWayGate; + private final RoomItem oneWayGate; @Override @@ -26,7 +26,7 @@ public class OneWayGateActionOne implements Runnable { } if (t.isWalkable()) { - if (this.room.tileWalkable(t) && this.client.getHabbo().getRoomUnit().getX() == this.oneWayGate.getX() && this.client.getHabbo().getRoomUnit().getY() == this.oneWayGate.getY()) { + if (this.room.tileWalkable(t) && this.client.getHabbo().getRoomUnit().getCurrentPosition().getX() == this.oneWayGate.getX() && this.client.getHabbo().getRoomUnit().getCurrentPosition().getY() == this.oneWayGate.getY()) { this.client.getHabbo().getRoomUnit().setGoalLocation(t); if (!this.oneWayGate.getExtradata().equals("0")) { diff --git a/src/main/java/com/eu/habbo/threading/runnables/OpenGift.java b/src/main/java/com/eu/habbo/threading/runnables/OpenGift.java index e711e000..5434592c 100644 --- a/src/main/java/com/eu/habbo/threading/runnables/OpenGift.java +++ b/src/main/java/com/eu/habbo/threading/runnables/OpenGift.java @@ -5,7 +5,7 @@ import com.eu.habbo.habbohotel.items.interactions.InteractionGift; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.outgoing.inventory.FurniListAddOrUpdateComposer; import com.eu.habbo.messages.outgoing.inventory.FurniListInvalidateComposer; import com.eu.habbo.messages.outgoing.inventory.UnseenItemsComposer; @@ -23,17 +23,17 @@ import java.util.Map; @AllArgsConstructor public class OpenGift implements Runnable { - private final HabboItem item; + private final RoomItem item; private final Habbo habbo; private final Room room; @Override public void run() { try { - HabboItem inside = null; + RoomItem inside = null; - THashSet items = ((InteractionGift) this.item).loadItems(); - for (HabboItem i : items) { + THashSet items = ((InteractionGift) this.item).loadItems(); + for (RoomItem i : items) { if (inside == null) inside = i; @@ -58,7 +58,7 @@ public class OpenGift implements Runnable { Map> unseenItems = new HashMap<>(); - for (HabboItem item : items) { + for (RoomItem item : items) { switch (item.getBaseItem().getType()) { case WALL, FLOOR -> { if (!unseenItems.containsKey(UnseenItemsComposer.AddHabboItemCategory.OWNED_FURNI)) diff --git a/src/main/java/com/eu/habbo/threading/runnables/PetFollowHabbo.java b/src/main/java/com/eu/habbo/threading/runnables/PetFollowHabbo.java index 3cf9613e..ec9c04e3 100644 --- a/src/main/java/com/eu/habbo/threading/runnables/PetFollowHabbo.java +++ b/src/main/java/com/eu/habbo/threading/runnables/PetFollowHabbo.java @@ -22,11 +22,11 @@ public class PetFollowHabbo implements Runnable { if (this.habbo != null) { if (this.habbo.getRoomUnit() != null) { if (this.pet.getRoomUnit() != null) { - RoomTile target = this.habbo.getHabboInfo().getCurrentRoom().getLayout().getTileInFront(this.habbo.getRoomUnit().getCurrentLocation(), Math.abs((this.habbo.getRoomUnit().getBodyRotation().getValue() + this.directionOffset + 4) % 8)); + RoomTile target = this.habbo.getRoomUnit().getRoom().getLayout().getTileInFront(this.habbo.getRoomUnit().getCurrentPosition(), Math.abs((this.habbo.getRoomUnit().getBodyRotation().getValue() + this.directionOffset + 4) % 8)); if (target != null) { if (target.getX() < 0 || target.getY() < 0) - target = this.habbo.getHabboInfo().getCurrentRoom().getLayout().getTileInFront(this.habbo.getRoomUnit().getCurrentLocation(), this.habbo.getRoomUnit().getBodyRotation().getValue()); + target = this.habbo.getRoomUnit().getRoom().getLayout().getTileInFront(this.habbo.getRoomUnit().getCurrentPosition(), this.habbo.getRoomUnit().getBodyRotation().getValue()); if (target.getX() >= 0 && target.getY() >= 0) { if (this.pet.getRoom().getLayout().tileWalkable(target.getX(), target.getY())) { @@ -35,7 +35,7 @@ public class PetFollowHabbo implements Runnable { this.pet.setTask(PetTasks.FOLLOW); } } - if(target.distance(this.pet.getRoomUnit().getCurrentLocation()) > 1) { + if(target.distance(this.pet.getRoomUnit().getCurrentPosition()) > 1) { Emulator.getThreading().run(this, 500); } else { this.pet.setTask(PetTasks.FREE); diff --git a/src/main/java/com/eu/habbo/threading/runnables/QueryDeleteHabboItem.java b/src/main/java/com/eu/habbo/threading/runnables/QueryDeleteHabboItem.java index f0493e9f..796df747 100644 --- a/src/main/java/com/eu/habbo/threading/runnables/QueryDeleteHabboItem.java +++ b/src/main/java/com/eu/habbo/threading/runnables/QueryDeleteHabboItem.java @@ -1,7 +1,7 @@ package com.eu.habbo.threading.runnables; import com.eu.habbo.Emulator; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -16,7 +16,7 @@ public class QueryDeleteHabboItem implements Runnable { private final int itemId; - public QueryDeleteHabboItem(HabboItem item) { + public QueryDeleteHabboItem(RoomItem item) { this.itemId = item.getId(); } diff --git a/src/main/java/com/eu/habbo/threading/runnables/QueryDeleteHabboItems.java b/src/main/java/com/eu/habbo/threading/runnables/QueryDeleteHabboItems.java index 6ee3bc53..fa125375 100644 --- a/src/main/java/com/eu/habbo/threading/runnables/QueryDeleteHabboItems.java +++ b/src/main/java/com/eu/habbo/threading/runnables/QueryDeleteHabboItems.java @@ -1,7 +1,7 @@ package com.eu.habbo.threading.runnables; import com.eu.habbo.Emulator; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import gnu.trove.map.TIntObjectMap; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -14,13 +14,13 @@ import java.sql.SQLException; @AllArgsConstructor public class QueryDeleteHabboItems implements Runnable { - private TIntObjectMap items; + private TIntObjectMap items; @Override public void run() { try (Connection connection = Emulator.getDatabase().getDataSource().getConnection(); PreparedStatement statement = connection.prepareStatement("DELETE FROM items WHERE id = ?")) { - for (HabboItem item : this.items.valueCollection()) { + for (RoomItem item : this.items.valueCollection()) { if (item.getRoomId() > 0) continue; diff --git a/src/main/java/com/eu/habbo/threading/runnables/RandomDiceNumber.java b/src/main/java/com/eu/habbo/threading/runnables/RandomDiceNumber.java index e6c83600..0aa18560 100644 --- a/src/main/java/com/eu/habbo/threading/runnables/RandomDiceNumber.java +++ b/src/main/java/com/eu/habbo/threading/runnables/RandomDiceNumber.java @@ -3,22 +3,22 @@ package com.eu.habbo.threading.runnables; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.items.interactions.InteractionColorWheel; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; public class RandomDiceNumber implements Runnable { - private final HabboItem item; + private final RoomItem item; private final Room room; private final int maxNumber; private int result; - public RandomDiceNumber(HabboItem item, Room room, int maxNumber) { + public RandomDiceNumber(RoomItem item, Room room, int maxNumber) { this.item = item; this.room = room; this.maxNumber = maxNumber; this.result = -1; } - public RandomDiceNumber(Room room, HabboItem item, int result) { + public RandomDiceNumber(Room room, RoomItem item, int result) { this.item = item; this.room = room; this.maxNumber = -1; diff --git a/src/main/java/com/eu/habbo/threading/runnables/RandomSpinningBottleNumber.java b/src/main/java/com/eu/habbo/threading/runnables/RandomSpinningBottleNumber.java index 53f17b63..b699cda0 100644 --- a/src/main/java/com/eu/habbo/threading/runnables/RandomSpinningBottleNumber.java +++ b/src/main/java/com/eu/habbo/threading/runnables/RandomSpinningBottleNumber.java @@ -2,22 +2,22 @@ package com.eu.habbo.threading.runnables; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; public class RandomSpinningBottleNumber implements Runnable { - private final HabboItem item; + private final RoomItem item; private final Room room; private final int maxNumber; private int result; - public RandomSpinningBottleNumber(HabboItem item, Room room, int maxNumber) { + public RandomSpinningBottleNumber(RoomItem item, Room room, int maxNumber) { this.item = item; this.room = room; this.maxNumber = maxNumber; this.result = -1; } - public RandomSpinningBottleNumber(Room room, HabboItem item, int result) { + public RandomSpinningBottleNumber(Room room, RoomItem item, int result) { this.item = item; this.room = room; this.maxNumber = -1; diff --git a/src/main/java/com/eu/habbo/threading/runnables/RemoveFloorItemTask.java b/src/main/java/com/eu/habbo/threading/runnables/RemoveFloorItemTask.java index 27d26b3b..13ac670f 100644 --- a/src/main/java/com/eu/habbo/threading/runnables/RemoveFloorItemTask.java +++ b/src/main/java/com/eu/habbo/threading/runnables/RemoveFloorItemTask.java @@ -2,7 +2,7 @@ package com.eu.habbo.threading.runnables; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.outgoing.rooms.HeightMapUpdateMessageComposer; import com.eu.habbo.messages.outgoing.rooms.items.RemoveFloorItemComposer; import lombok.AllArgsConstructor; @@ -10,7 +10,7 @@ import lombok.AllArgsConstructor; @AllArgsConstructor class RemoveFloorItemTask implements Runnable { private final Room room; - private final HabboItem item; + private final RoomItem item; @Override diff --git a/src/main/java/com/eu/habbo/threading/runnables/RoomTrashing.java b/src/main/java/com/eu/habbo/threading/runnables/RoomTrashing.java index ba50a1d9..2d1e5f22 100644 --- a/src/main/java/com/eu/habbo/threading/runnables/RoomTrashing.java +++ b/src/main/java/com/eu/habbo/threading/runnables/RoomTrashing.java @@ -3,8 +3,8 @@ package com.eu.habbo.threading.runnables; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.messages.outgoing.rooms.items.FloorItemOnRollerComposer; import com.eu.habbo.plugin.EventHandler; @@ -36,11 +36,11 @@ public class RoomTrashing implements Runnable { INSTANCE.habbo = null; if (INSTANCE.habbo == event.habbo) { - if (event.habbo.getHabboInfo().getCurrentRoom() != null) { - if (event.habbo.getHabboInfo().getCurrentRoom().equals(INSTANCE.room)) { + if (event.habbo.getRoomUnit().getRoom() != null) { + if (event.habbo.getRoomUnit().getRoom().equals(INSTANCE.room)) { THashSet messages = new THashSet<>(); - THashSet items = INSTANCE.room.getItemsAt(event.toLocation); + THashSet items = INSTANCE.room.getItemsAt(event.toLocation); int offset = Emulator.getRandom().nextInt(4) + 2; @@ -55,7 +55,7 @@ public class RoomTrashing implements Runnable { } } - for (HabboItem item : items) { + for (RoomItem item : items) { double offsetZ = (INSTANCE.room.getTopHeightAt(t.getX(), t.getY())) - item.getZ(); messages.add(new FloorItemOnRollerComposer(item, null, t, offsetZ, INSTANCE.room).compose()); @@ -75,13 +75,13 @@ public class RoomTrashing implements Runnable { } } - RoomTile s = INSTANCE.room.getLayout().getTileInFront(INSTANCE.habbo.getRoomUnit().getCurrentLocation(), INSTANCE.habbo.getRoomUnit().getBodyRotation().getValue() + 7); + RoomTile s = INSTANCE.room.getLayout().getTileInFront(INSTANCE.habbo.getRoomUnit().getCurrentPosition(), INSTANCE.habbo.getRoomUnit().getBodyRotation().getValue() + 7); if (s != null) { items = INSTANCE.room.getItemsAt(s); } - for (HabboItem item : items) { + for (RoomItem item : items) { double offsetZ = (INSTANCE.room.getTopHeightAt(t.getX(), t.getY())) - item.getZ(); messages.add(new FloorItemOnRollerComposer(item, null, t, offsetZ, INSTANCE.room).compose()); @@ -100,10 +100,10 @@ public class RoomTrashing implements Runnable { } } - s = INSTANCE.getRoom().getLayout().getTileInFront(INSTANCE.habbo.getRoomUnit().getCurrentLocation(), INSTANCE.habbo.getRoomUnit().getBodyRotation().getValue() + 1); + s = INSTANCE.getRoom().getLayout().getTileInFront(INSTANCE.habbo.getRoomUnit().getCurrentPosition(), INSTANCE.habbo.getRoomUnit().getBodyRotation().getValue() + 1); items = INSTANCE.room.getItemsAt(s); - for (HabboItem item : items) { + for (RoomItem item : items) { double offsetZ = (INSTANCE.room.getTopHeightAt(t.getX(), t.getY())) - item.getZ(); messages.add(new FloorItemOnRollerComposer(item, null, t, offsetZ, INSTANCE.room).compose()); diff --git a/src/main/java/com/eu/habbo/threading/runnables/RoomUnitGiveHanditem.java b/src/main/java/com/eu/habbo/threading/runnables/RoomUnitGiveHanditem.java index 8fe54bec..bb05a419 100644 --- a/src/main/java/com/eu/habbo/threading/runnables/RoomUnitGiveHanditem.java +++ b/src/main/java/com/eu/habbo/threading/runnables/RoomUnitGiveHanditem.java @@ -1,21 +1,21 @@ package com.eu.habbo.threading.runnables; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.types.RoomAvatar; import com.eu.habbo.messages.outgoing.rooms.users.CarryObjectMessageComposer; import lombok.AllArgsConstructor; @AllArgsConstructor public class RoomUnitGiveHanditem implements Runnable { - private final RoomUnit roomUnit; + private final RoomAvatar roomAvatar; private final Room room; private final int itemId; @Override public void run() { - if (this.room != null && this.roomUnit.isInRoom()) { - this.roomUnit.setHandItem(this.itemId); - this.room.sendComposer(new CarryObjectMessageComposer(this.roomUnit).compose()); + if (this.room != null && this.roomAvatar.isInRoom()) { + this.roomAvatar.setHandItem(this.itemId); + this.room.sendComposer(new CarryObjectMessageComposer(this.roomAvatar).compose()); } } } diff --git a/src/main/java/com/eu/habbo/threading/runnables/RoomUnitKick.java b/src/main/java/com/eu/habbo/threading/runnables/RoomUnitKick.java index e290ab01..fd3fbe5a 100644 --- a/src/main/java/com/eu/habbo/threading/runnables/RoomUnitKick.java +++ b/src/main/java/com/eu/habbo/threading/runnables/RoomUnitKick.java @@ -14,7 +14,8 @@ public class RoomUnitKick implements Runnable { @Override public void run() { if (this.removeEffect) { - this.habbo.getRoomUnit().setEffectId(0, 0); + this.habbo.getRoomUnit().setEffectId(0); + this.habbo.getRoomUnit().setEffectEndTimestamp(0); } Emulator.getGameEnvironment().getRoomManager().leaveRoom(this.habbo, this.room); diff --git a/src/main/java/com/eu/habbo/threading/runnables/RoomUnitRidePet.java b/src/main/java/com/eu/habbo/threading/runnables/RoomUnitRidePet.java index 75f3ad42..7d30c4a8 100644 --- a/src/main/java/com/eu/habbo/threading/runnables/RoomUnitRidePet.java +++ b/src/main/java/com/eu/habbo/threading/runnables/RoomUnitRidePet.java @@ -18,22 +18,22 @@ public class RoomUnitRidePet implements Runnable { @Override public void run() { - if (this.habbo.getRoomUnit() == null || this.pet.getRoomUnit() == null || this.pet.getRoom() != this.habbo.getHabboInfo().getCurrentRoom() || this.goalTile == null || this.habbo.getRoomUnit().getGoalLocation() != this.goalTile) + if (this.habbo.getRoomUnit() == null || this.pet.getRoomUnit() == null || this.pet.getRoom() != this.habbo.getRoomUnit().getRoom() || this.goalTile == null || this.habbo.getRoomUnit().getGoalLocation() != this.goalTile) return; - if (habbo.getRoomUnit().getCurrentLocation().distance(pet.getRoomUnit().getCurrentLocation()) <= 1) { + if (habbo.getRoomUnit().getCurrentPosition().distance(pet.getRoomUnit().getCurrentPosition()) <= 1) { habbo.getRoomUnit().stopWalking(); - habbo.getHabboInfo().getCurrentRoom().giveEffect(habbo, 77, -1); + habbo.getRoomUnit().getRoom().giveEffect(habbo, 77, -1); habbo.getHabboInfo().setRiding(pet); - habbo.getRoomUnit().setCurrentLocation(this.pet.getRoomUnit().getCurrentLocation()); - habbo.getRoomUnit().setPreviousLocation(this.pet.getRoomUnit().getCurrentLocation()); - habbo.getRoomUnit().setZ(this.pet.getRoomUnit().getZ() + 1); - habbo.getRoomUnit().setPreviousLocationZ(this.pet.getRoomUnit().getZ() + 1); + habbo.getRoomUnit().setCurrentPosition(this.pet.getRoomUnit().getCurrentPosition()); + habbo.getRoomUnit().setPreviousLocation(this.pet.getRoomUnit().getCurrentPosition()); + habbo.getRoomUnit().setCurrentZ(this.pet.getRoomUnit().getCurrentZ() + 1); + habbo.getRoomUnit().setPreviousLocationZ(this.pet.getRoomUnit().getCurrentZ() + 1); habbo.getRoomUnit().setRotation(this.pet.getRoomUnit().getBodyRotation()); - habbo.getRoomUnit().statusUpdate(true); + habbo.getRoomUnit().setStatusUpdateNeeded(true); pet.setRider(habbo); - habbo.getHabboInfo().getCurrentRoom().sendComposer(new UserUpdateComposer(habbo.getRoomUnit()).compose()); - habbo.getHabboInfo().getCurrentRoom().sendComposer(new AvatarEffectMessageComposer(habbo.getRoomUnit()).compose()); + habbo.getRoomUnit().getRoom().sendComposer(new UserUpdateComposer(habbo.getRoomUnit()).compose()); + habbo.getRoomUnit().getRoom().sendComposer(new AvatarEffectMessageComposer(habbo.getRoomUnit()).compose()); pet.setTask(PetTasks.RIDE); } else { pet.getRoomUnit().setWalkTimeOut(3 + Emulator.getIntUnixTimestamp()); diff --git a/src/main/java/com/eu/habbo/threading/runnables/RoomUnitTeleport.java b/src/main/java/com/eu/habbo/threading/runnables/RoomUnitTeleport.java index 58fbcc87..2040c680 100644 --- a/src/main/java/com/eu/habbo/threading/runnables/RoomUnitTeleport.java +++ b/src/main/java/com/eu/habbo/threading/runnables/RoomUnitTeleport.java @@ -2,9 +2,9 @@ package com.eu.habbo.threading.runnables; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; -import com.eu.habbo.habbohotel.rooms.RoomUnit; import com.eu.habbo.habbohotel.rooms.RoomUnitStatus; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -33,10 +33,10 @@ public class RoomUnitTeleport implements Runnable { return; } - RoomTile lastLocation = this.roomUnit.getCurrentLocation(); + RoomTile lastLocation = this.roomUnit.getCurrentPosition(); RoomTile newLocation = this.room.getLayout().getTile((short) this.x, (short) this.y); - HabboItem topItem = this.room.getTopItemAt(this.roomUnit.getCurrentLocation().getX(), this.roomUnit.getCurrentLocation().getY()); + RoomItem topItem = this.room.getTopItemAt(this.roomUnit.getCurrentPosition().getX(), this.roomUnit.getCurrentPosition().getY()); if (topItem != null) { try { topItem.onWalkOff(this.roomUnit, this.room, new Object[]{this}); @@ -45,22 +45,22 @@ public class RoomUnitTeleport implements Runnable { } } this.roomUnit.setPath(new LinkedList<>()); - this.roomUnit.setCurrentLocation(newLocation); + this.roomUnit.setCurrentPosition(newLocation); this.roomUnit.setPreviousLocation(newLocation); - this.roomUnit.setZ(this.z); + this.roomUnit.setCurrentZ(this.z); this.roomUnit.setPreviousLocationZ(this.z); this.roomUnit.removeStatus(RoomUnitStatus.MOVE); //ServerMessage teleportMessage = new RoomUnitOnRollerComposer(this.roomUnit, newLocation, this.room).compose(); this.roomUnit.setLocation(newLocation); //this.room.sendComposer(teleportMessage); - this.roomUnit.statusUpdate(true); + this.roomUnit.setStatusUpdateNeeded(true); roomUnit.setWiredTeleporting(false); - this.room.updateHabbosAt(newLocation.getX(), newLocation.getY()); + this.room.updateHabbosAt(newLocation); this.room.updateBotsAt(newLocation.getX(), newLocation.getY()); topItem = room.getTopItemAt(x, y); - if (topItem != null && roomUnit.getCurrentLocation().equals(room.getLayout().getTile((short) x, (short) y))) { + if (topItem != null && roomUnit.getCurrentPosition().equals(room.getLayout().getTile((short) x, (short) y))) { try { topItem.onWalkOn(roomUnit, room, new Object[]{ lastLocation, newLocation, this }); } catch (Exception ignored) { diff --git a/src/main/java/com/eu/habbo/threading/runnables/RoomUnitTeleportWalkToAction.java b/src/main/java/com/eu/habbo/threading/runnables/RoomUnitTeleportWalkToAction.java index 8285f9cd..2422f360 100644 --- a/src/main/java/com/eu/habbo/threading/runnables/RoomUnitTeleportWalkToAction.java +++ b/src/main/java/com/eu/habbo/threading/runnables/RoomUnitTeleportWalkToAction.java @@ -3,8 +3,8 @@ package com.eu.habbo.threading.runnables; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -13,24 +13,24 @@ import lombok.extern.slf4j.Slf4j; public class RoomUnitTeleportWalkToAction implements Runnable { private final Habbo habbo; - private final HabboItem habboItem; + private final RoomItem roomItem; private final Room room; @Override public void run() { - if (this.habbo.getHabboInfo().getCurrentRoom() != this.room || this.habboItem.getRoomId() != this.room.getId()) { + if (this.habbo.getRoomUnit().getRoom() != this.room || this.roomItem.getRoomId() != this.room.getRoomInfo().getId()) { return; } - RoomTile tile = HabboItem.getSquareInFront(this.room.getLayout(), this.habboItem); + RoomTile tile = RoomItem.getSquareInFront(this.room.getLayout(), this.roomItem); if (!this.habbo.getRoomUnit().getGoalLocation().equals(tile)) { return; } - if (this.habbo.getRoomUnit().getCurrentLocation().equals(tile)) { + if (this.habbo.getRoomUnit().getCurrentPosition().equals(tile)) { try { - this.habboItem.onClick(this.habbo.getClient(), this.room, new Object[]{0}); + this.roomItem.onClick(this.habbo.getClient(), this.room, new Object[]{0}); } catch (Exception e) { log.error("Caught exception", e); } diff --git a/src/main/java/com/eu/habbo/threading/runnables/RoomUnitVendingMachineAction.java b/src/main/java/com/eu/habbo/threading/runnables/RoomUnitVendingMachineAction.java index 786843d8..7a333ae9 100644 --- a/src/main/java/com/eu/habbo/threading/runnables/RoomUnitVendingMachineAction.java +++ b/src/main/java/com/eu/habbo/threading/runnables/RoomUnitVendingMachineAction.java @@ -3,8 +3,8 @@ package com.eu.habbo.threading.runnables; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -13,24 +13,24 @@ import lombok.extern.slf4j.Slf4j; public class RoomUnitVendingMachineAction implements Runnable { private final Habbo habbo; - private final HabboItem habboItem; + private final RoomItem roomItem; private final Room room; @Override public void run() { - if (this.habbo.getHabboInfo().getCurrentRoom() != this.room || this.habboItem.getRoomId() != this.room.getId()) { + if (this.habbo.getRoomUnit().getRoom() != this.room || this.roomItem.getRoomId() != this.room.getRoomInfo().getId()) { return; } - RoomTile tile = HabboItem.getSquareInFront(this.room.getLayout(), this.habboItem); + RoomTile tile = RoomItem.getSquareInFront(this.room.getLayout(), this.roomItem); if (tile == null) { return; } if (this.habbo.getRoomUnit().getGoalLocation().equals(tile)) { - if (this.habbo.getRoomUnit().getCurrentLocation().equals(tile)) { + if (this.habbo.getRoomUnit().getCurrentPosition().equals(tile)) { try { - this.habboItem.onClick(this.habbo.getClient(), this.room, new Object[]{0}); + this.roomItem.onClick(this.habbo.getClient(), this.room, new Object[]{0}); } catch (Exception e) { log.error("Caught exception", e); } diff --git a/src/main/java/com/eu/habbo/threading/runnables/RoomUnitWalkToLocation.java b/src/main/java/com/eu/habbo/threading/runnables/RoomUnitWalkToLocation.java index 4ebf20fc..ed9f3467 100644 --- a/src/main/java/com/eu/habbo/threading/runnables/RoomUnitWalkToLocation.java +++ b/src/main/java/com/eu/habbo/threading/runnables/RoomUnitWalkToLocation.java @@ -3,8 +3,8 @@ package com.eu.habbo.threading.runnables; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; -import com.eu.habbo.habbohotel.rooms.RoomUnit; import com.eu.habbo.habbohotel.rooms.RoomUnitStatus; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import lombok.AllArgsConstructor; import java.util.ArrayList; @@ -33,12 +33,12 @@ public class RoomUnitWalkToLocation implements Runnable { @Override public void run() { - if (this.goalTile == null || this.walker == null || this.room == null || this.walker.getRoom() == null || this.walker.getRoom().getId() != this.room.getId()) { + if (this.goalTile == null || this.walker == null || this.room == null || this.walker.getRoom() == null || this.walker.getRoom().getRoomInfo().getId() != this.room.getRoomInfo().getId()) { onFail(); return; } - if (this.walker.getCurrentLocation().equals(this.goalTile)) { + if (this.walker.getCurrentPosition().equals(this.goalTile)) { onSuccess(); return; } diff --git a/src/main/java/com/eu/habbo/threading/runnables/RoomUnitWalkToRoomUnit.java b/src/main/java/com/eu/habbo/threading/runnables/RoomUnitWalkToRoomUnit.java index 7e84e3c9..193e6d1b 100644 --- a/src/main/java/com/eu/habbo/threading/runnables/RoomUnitWalkToRoomUnit.java +++ b/src/main/java/com/eu/habbo/threading/runnables/RoomUnitWalkToRoomUnit.java @@ -3,7 +3,7 @@ package com.eu.habbo.threading.runnables; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.wired.WiredHandler; import com.eu.habbo.habbohotel.wired.WiredTriggerType; import lombok.RequiredArgsConstructor; @@ -39,7 +39,7 @@ public class RoomUnitWalkToRoomUnit implements Runnable { } if (this.walker.getGoalLocation().equals(this.goalTile)) { // check that the action hasn't been cancelled by changing the goal - if (this.walker.getCurrentLocation().distance(this.goalTile) <= this.minDistance) { + if (this.walker.getCurrentPosition().distance(this.goalTile) <= this.minDistance) { for (Runnable r : this.targetReached) { Emulator.getThreading().run(r); @@ -52,7 +52,7 @@ public class RoomUnitWalkToRoomUnit implements Runnable { } private void findNewLocation() { - this.goalTile = this.walker.getClosestAdjacentTile(this.target.getCurrentLocation().getX(), this.target.getCurrentLocation().getY(), true); + this.goalTile = this.walker.getClosestAdjacentTile(this.target.getCurrentPosition().getX(), this.target.getCurrentPosition().getY(), true); if (this.goalTile == null) { if (this.failedReached != null) { diff --git a/src/main/java/com/eu/habbo/threading/runnables/SaveScoreForTeam.java b/src/main/java/com/eu/habbo/threading/runnables/SaveScoreForTeam.java index 8871b071..7f3cbab6 100644 --- a/src/main/java/com/eu/habbo/threading/runnables/SaveScoreForTeam.java +++ b/src/main/java/com/eu/habbo/threading/runnables/SaveScoreForTeam.java @@ -4,6 +4,7 @@ import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.games.Game; import com.eu.habbo.habbohotel.games.GamePlayer; import com.eu.habbo.habbohotel.games.GameTeam; +import com.eu.habbo.habbohotel.rooms.Room; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -23,7 +24,8 @@ public class SaveScoreForTeam implements Runnable { public void run() { try (Connection connection = Emulator.getDatabase().getDataSource().getConnection(); PreparedStatement statement = connection.prepareStatement("INSERT INTO room_game_scores (room_id, game_start_timestamp, game_name, user_id, team_id, score, team_score) VALUES (?, ?, ?, ?, ?, ?, ?)")) { for (GamePlayer player : this.team.getMembers()) { - statement.setInt(1, this.game.getRoom().getId()); + Room room = this.game.getRoom(); + statement.setInt(1, room.getRoomInfo().getId()); statement.setInt(2, this.game.getStartTime()); statement.setString(3, this.game.getClass().getName()); statement.setInt(4, player.getHabbo().getHabboInfo().getId()); diff --git a/src/main/java/com/eu/habbo/threading/runnables/SendRoomUnitEffectComposer.java b/src/main/java/com/eu/habbo/threading/runnables/SendRoomUnitEffectComposer.java index ec90782f..69312a1c 100644 --- a/src/main/java/com/eu/habbo/threading/runnables/SendRoomUnitEffectComposer.java +++ b/src/main/java/com/eu/habbo/threading/runnables/SendRoomUnitEffectComposer.java @@ -1,20 +1,20 @@ package com.eu.habbo.threading.runnables; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.types.RoomAvatar; import com.eu.habbo.messages.outgoing.rooms.users.AvatarEffectMessageComposer; import lombok.AllArgsConstructor; @AllArgsConstructor public class SendRoomUnitEffectComposer implements Runnable { private final Room room; - private final RoomUnit roomUnit; + private final RoomAvatar roomAvatar; @Override public void run() { - if (this.room != null && this.roomUnit != null) { - this.room.sendComposer(new AvatarEffectMessageComposer(roomUnit).compose()); + if (this.room != null && this.roomAvatar != null) { + this.room.sendComposer(new AvatarEffectMessageComposer(roomAvatar).compose()); } } } \ No newline at end of file diff --git a/src/main/java/com/eu/habbo/threading/runnables/TeleportInteraction.java b/src/main/java/com/eu/habbo/threading/runnables/TeleportInteraction.java index 01366809..7f42f831 100644 --- a/src/main/java/com/eu/habbo/threading/runnables/TeleportInteraction.java +++ b/src/main/java/com/eu/habbo/threading/runnables/TeleportInteraction.java @@ -5,8 +5,8 @@ import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; import com.eu.habbo.habbohotel.rooms.RoomUnitStatus; -import com.eu.habbo.habbohotel.rooms.RoomUserRotation; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.RoomRotation; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.outgoing.rooms.users.AvatarEffectMessageComposer; import com.eu.habbo.messages.outgoing.rooms.users.RoomUsersComposer; import com.eu.habbo.messages.outgoing.rooms.users.UserRemoveMessageComposer; @@ -18,13 +18,13 @@ class TeleportInteraction extends Thread { private final Room room; private final GameClient client; - private final HabboItem teleportOne; + private final RoomItem teleportOne; private int state; private Room targetRoom; - private HabboItem teleportTwo; + private RoomItem teleportTwo; @Deprecated - public TeleportInteraction(Room room, GameClient client, HabboItem teleportOne) { + public TeleportInteraction(Room room, GameClient client, RoomItem teleportOne) { this.room = room; this.client = client; this.teleportOne = teleportOne; @@ -40,7 +40,7 @@ class TeleportInteraction extends Thread { this.teleportTwo.setExtradata("1"); this.targetRoom.updateItem(this.teleportTwo); this.room.updateItem(this.teleportOne); - RoomTile tile = HabboItem.getSquareInFront(this.room.getLayout(), this.teleportTwo); + RoomTile tile = RoomItem.getSquareInFront(this.room.getLayout(), this.teleportTwo); if (tile != null) { this.client.getHabbo().getRoomUnit().setGoalLocation(tile); } @@ -49,7 +49,7 @@ class TeleportInteraction extends Thread { } else if (this.state == 4) { int[] data = Emulator.getGameEnvironment().getItemManager().getTargetTeleportRoomId(this.teleportOne); if (data.length == 2 && data[0] != 0) { - if (this.room.getId() == data[0]) { + if (this.room.getRoomInfo().getId() == data[0]) { this.targetRoom = this.room; this.teleportTwo = this.room.getHabboItem(data[1]); @@ -57,7 +57,7 @@ class TeleportInteraction extends Thread { this.teleportTwo = this.teleportOne; } } else { - this.targetRoom = Emulator.getGameEnvironment().getRoomManager().loadRoom(data[0]); + this.targetRoom = Emulator.getGameEnvironment().getRoomManager().getRoom(data[0]); this.teleportTwo = this.targetRoom.getHabboItem(data[1]); } } else { @@ -70,13 +70,13 @@ class TeleportInteraction extends Thread { if (this.room != this.targetRoom) { Emulator.getGameEnvironment().getRoomManager().logExit(this.client.getHabbo()); - this.room.removeHabbo(this.client.getHabbo(), true); + this.room.getRoomUnitManager().removeHabbo(this.client.getHabbo(), true); Emulator.getGameEnvironment().getRoomManager().enterRoom(this.client.getHabbo(), this.targetRoom); } - this.client.getHabbo().getRoomUnit().setRotation(RoomUserRotation.values()[this.teleportTwo.getRotation()]); + this.client.getHabbo().getRoomUnit().setRotation(RoomRotation.values()[this.teleportTwo.getRotation()]); this.client.getHabbo().getRoomUnit().setLocation(this.room.getLayout().getTile(this.teleportTwo.getX(), this.teleportTwo.getY())); - this.client.getHabbo().getRoomUnit().setZ(this.teleportTwo.getZ()); + this.client.getHabbo().getRoomUnit().setCurrentZ(this.teleportTwo.getZ()); this.room.sendComposer(new UserRemoveMessageComposer(this.client.getHabbo().getRoomUnit()).compose()); this.targetRoom.sendComposer(new UserRemoveMessageComposer(this.client.getHabbo().getRoomUnit()).compose()); @@ -96,7 +96,7 @@ class TeleportInteraction extends Thread { Emulator.getThreading().run(this, 500); } else if (this.state == 2) { this.client.getHabbo().getRoomUnit().setGoalLocation(this.room.getLayout().getTile(this.teleportOne.getX(), this.teleportOne.getY())); - this.client.getHabbo().getRoomUnit().setRotation(RoomUserRotation.values()[this.newRotation(this.teleportOne.getRotation())]); + this.client.getHabbo().getRoomUnit().setRotation(RoomRotation.values()[this.newRotation(this.teleportOne.getRotation())]); this.client.getHabbo().getRoomUnit().setStatus(RoomUnitStatus.MOVE, this.teleportOne.getX() + "," + this.teleportOne.getY() + "," + this.teleportOne.getZ()); //room.sendComposer(new RoomUserStatusComposer(this.client.getHabbo().getRoomUnit())); @@ -104,14 +104,16 @@ class TeleportInteraction extends Thread { Emulator.getThreading().run(this, 500); } else if (this.state == 1) { - RoomTile loc = HabboItem.getSquareInFront(this.room.getLayout(), this.teleportOne); + RoomTile loc = RoomItem.getSquareInFront(this.room.getLayout(), this.teleportOne); - if (this.client.getHabbo().getRoomUnit().getX() == loc.getX() && this.client.getHabbo().getRoomUnit().getY() == loc.getY()) { - this.teleportOne.setExtradata("1"); - this.room.updateItem(this.teleportOne); - this.state = 2; + if (this.client.getHabbo().getRoomUnit().getCurrentPosition().getX() == loc.getX()) { + if (this.client.getHabbo().getRoomUnit().getCurrentPosition().getY() == loc.getY()) { + this.teleportOne.setExtradata("1"); + this.room.updateItem(this.teleportOne); + this.state = 2; - Emulator.getThreading().run(this, 250); + Emulator.getThreading().run(this, 250); + } } } } catch (Exception e) { diff --git a/src/main/java/com/eu/habbo/threading/runnables/WiredCollissionRunnable.java b/src/main/java/com/eu/habbo/threading/runnables/WiredCollissionRunnable.java index 126371c6..4648472c 100644 --- a/src/main/java/com/eu/habbo/threading/runnables/WiredCollissionRunnable.java +++ b/src/main/java/com/eu/habbo/threading/runnables/WiredCollissionRunnable.java @@ -1,7 +1,7 @@ package com.eu.habbo.threading.runnables; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.wired.WiredHandler; import com.eu.habbo.habbohotel.wired.WiredTriggerType; import lombok.AllArgsConstructor; diff --git a/src/main/java/com/eu/habbo/threading/runnables/WiredExecuteTask.java b/src/main/java/com/eu/habbo/threading/runnables/WiredExecuteTask.java index a7479cfa..68be8a64 100644 --- a/src/main/java/com/eu/habbo/threading/runnables/WiredExecuteTask.java +++ b/src/main/java/com/eu/habbo/threading/runnables/WiredExecuteTask.java @@ -26,16 +26,18 @@ public class WiredExecuteTask implements Runnable { @Override public void run() { if (!Emulator.isShuttingDown && Emulator.isReady) { - if (this.room != null && this.room.getId() == this.task.getRoomId()) { - if (this.task instanceof WiredTriggerAtSetTime) { - if (((WiredTriggerAtSetTime) this.task).taskId != this.taskId) - return; + if (this.room != null) { + if (this.room.getRoomInfo().getId() == this.task.getRoomId()) { + if (this.task instanceof WiredTriggerAtSetTime) { + if (((WiredTriggerAtSetTime) this.task).taskId != this.taskId) + return; + } + if (this.task instanceof WiredTriggerAtTimeLong) { + if (((WiredTriggerAtTimeLong) this.task).taskId != this.taskId) + return; + } + WiredHandler.handle(this.task, null, this.room, null); } - if (this.task instanceof WiredTriggerAtTimeLong) { - if (((WiredTriggerAtTimeLong) this.task).taskId != this.taskId) - return; - } - WiredHandler.handle(this.task, null, this.room, null); } } } diff --git a/src/main/java/com/eu/habbo/threading/runnables/WiredRepeatEffectTask.java b/src/main/java/com/eu/habbo/threading/runnables/WiredRepeatEffectTask.java index 36ee8c67..8bcb97da 100644 --- a/src/main/java/com/eu/habbo/threading/runnables/WiredRepeatEffectTask.java +++ b/src/main/java/com/eu/habbo/threading/runnables/WiredRepeatEffectTask.java @@ -15,10 +15,12 @@ class WiredRepeatEffectTask implements Runnable { @Override public void run() { if (!Emulator.isShuttingDown && Emulator.isReady) { - if (this.room != null && this.room.getId() == this.effect.getRoomId()) { - this.effect.execute(null, this.room, null); + if (this.room != null) { + if (this.room.getRoomInfo().getId() == this.effect.getRoomId()) { + this.effect.execute(null, this.room, null); - Emulator.getThreading().run(this, this.delay); + Emulator.getThreading().run(this, this.delay); + } } } } diff --git a/src/main/java/com/eu/habbo/threading/runnables/YouAreAPirate.java b/src/main/java/com/eu/habbo/threading/runnables/YouAreAPirate.java index c1787a10..e7847c9b 100644 --- a/src/main/java/com/eu/habbo/threading/runnables/YouAreAPirate.java +++ b/src/main/java/com/eu/habbo/threading/runnables/YouAreAPirate.java @@ -86,7 +86,7 @@ public class YouAreAPirate implements Runnable { @Override public void run() { - if (this.room == this.habbo.getHabboInfo().getCurrentRoom()) { + if (this.room == this.habbo.getRoomUnit().getRoom()) { if (!iamapirate[this.index].isEmpty()) { this.room.talk(this.habbo, new RoomChatMessage(iamapirate[this.index], this.habbo, RoomChatMessageBubbles.PIRATE), RoomChatType.SHOUT); } diff --git a/src/main/java/com/eu/habbo/threading/runnables/YoutubeAdvanceVideo.java b/src/main/java/com/eu/habbo/threading/runnables/YoutubeAdvanceVideo.java index 9f60fa0c..05e42c1f 100644 --- a/src/main/java/com/eu/habbo/threading/runnables/YoutubeAdvanceVideo.java +++ b/src/main/java/com/eu/habbo/threading/runnables/YoutubeAdvanceVideo.java @@ -14,7 +14,7 @@ public class YoutubeAdvanceVideo implements Runnable { public void run() { if (this.tv.autoAdvance == null) return; - Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(this.tv.getRoomId()); + Room room = Emulator.getGameEnvironment().getRoomManager().getActiveRoomById(this.tv.getRoomId()); if (room == null) return; diff --git a/src/main/java/com/eu/habbo/threading/runnables/freeze/FreezeClearEffects.java b/src/main/java/com/eu/habbo/threading/runnables/freeze/FreezeClearEffects.java index b02f2d17..7fed4683 100644 --- a/src/main/java/com/eu/habbo/threading/runnables/freeze/FreezeClearEffects.java +++ b/src/main/java/com/eu/habbo/threading/runnables/freeze/FreezeClearEffects.java @@ -11,10 +11,11 @@ public class FreezeClearEffects implements Runnable { @Override public void run() { - this.habbo.getRoomUnit().setEffectId(0, 0); + this.habbo.getRoomUnit().setEffectId(0); + this.habbo.getRoomUnit().setEffectEndTimestamp(0); this.habbo.getRoomUnit().setCanWalk(true); - if (this.habbo.getHabboInfo().getCurrentRoom() != null) { - this.habbo.getHabboInfo().getCurrentRoom().sendComposer(new AvatarEffectMessageComposer(this.habbo.getRoomUnit()).compose()); + if (this.habbo.getRoomUnit().getRoom() != null) { + this.habbo.getRoomUnit().getRoom().sendComposer(new AvatarEffectMessageComposer(this.habbo.getRoomUnit()).compose()); } } } diff --git a/src/main/java/com/eu/habbo/threading/runnables/freeze/FreezeHandleSnowballExplosion.java b/src/main/java/com/eu/habbo/threading/runnables/freeze/FreezeHandleSnowballExplosion.java index dde9430e..abd1673f 100644 --- a/src/main/java/com/eu/habbo/threading/runnables/freeze/FreezeHandleSnowballExplosion.java +++ b/src/main/java/com/eu/habbo/threading/runnables/freeze/FreezeHandleSnowballExplosion.java @@ -7,8 +7,8 @@ import com.eu.habbo.habbohotel.games.freeze.FreezeGamePlayer; import com.eu.habbo.habbohotel.items.interactions.games.freeze.InteractionFreezeBlock; import com.eu.habbo.habbohotel.items.interactions.games.freeze.InteractionFreezeTile; import com.eu.habbo.habbohotel.rooms.RoomTile; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; import gnu.trove.set.hash.THashSet; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -52,9 +52,9 @@ class FreezeHandleSnowballExplosion implements Runnable { THashSet freezeTiles = new THashSet<>(); for (RoomTile roomTile : tiles) { - THashSet items = this.thrownData.room.getItemsAt(roomTile); + THashSet items = this.thrownData.room.getItemsAt(roomTile); - for (HabboItem freezeTile : items) { + for (RoomItem freezeTile : items) { if (freezeTile instanceof InteractionFreezeTile || freezeTile instanceof InteractionFreezeBlock) { int distance = 0; if (freezeTile.getX() != this.thrownData.targetTile.getX() && freezeTile.getY() != this.thrownData.targetTile.getY()) { @@ -70,7 +70,8 @@ class FreezeHandleSnowballExplosion implements Runnable { THashSet habbos = new THashSet<>(); - habbos.addAll(this.thrownData.room.getHabbosAt(freezeTile.getX(), freezeTile.getY())); + RoomTile tile = this.thrownData.room.getLayout().getTile(freezeTile.getX(), freezeTile.getY()); + habbos.addAll(this.thrownData.room.getRoomUnitManager().getHabbosAt(tile)); for (Habbo habbo : habbos) { if (habbo.getHabboInfo().getGamePlayer() != null && habbo.getHabboInfo().getGamePlayer() instanceof FreezeGamePlayer hPlayer) { diff --git a/src/main/java/com/eu/habbo/threading/runnables/freeze/FreezeResetExplosionTiles.java b/src/main/java/com/eu/habbo/threading/runnables/freeze/FreezeResetExplosionTiles.java index b81932ac..329543d1 100644 --- a/src/main/java/com/eu/habbo/threading/runnables/freeze/FreezeResetExplosionTiles.java +++ b/src/main/java/com/eu/habbo/threading/runnables/freeze/FreezeResetExplosionTiles.java @@ -2,7 +2,7 @@ package com.eu.habbo.threading.runnables.freeze; import com.eu.habbo.habbohotel.items.interactions.games.freeze.InteractionFreezeTile; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import gnu.trove.set.hash.THashSet; import lombok.AllArgsConstructor; @@ -14,7 +14,7 @@ class FreezeResetExplosionTiles implements Runnable { @Override public void run() { - for (HabboItem item : this.tiles) { + for (RoomItem item : this.tiles) { item.setExtradata("0"); this.room.updateItem(item); } diff --git a/src/main/java/com/eu/habbo/threading/runnables/freeze/FreezeThrowSnowball.java b/src/main/java/com/eu/habbo/threading/runnables/freeze/FreezeThrowSnowball.java index a6101523..2c86bff4 100644 --- a/src/main/java/com/eu/habbo/threading/runnables/freeze/FreezeThrowSnowball.java +++ b/src/main/java/com/eu/habbo/threading/runnables/freeze/FreezeThrowSnowball.java @@ -5,7 +5,7 @@ import com.eu.habbo.habbohotel.games.freeze.FreezeGamePlayer; import com.eu.habbo.habbohotel.items.interactions.games.freeze.InteractionFreezeTile; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.threading.runnables.HabboItemNewState; public class FreezeThrowSnowball implements Runnable { @@ -14,7 +14,7 @@ public class FreezeThrowSnowball implements Runnable { public final Room room; public final int radius; - public FreezeThrowSnowball(Habbo habbo, HabboItem targetTile, Room room) { + public FreezeThrowSnowball(Habbo habbo, RoomItem targetTile, Room room) { this.habbo = habbo; this.targetTile = (InteractionFreezeTile) targetTile; this.room = room; diff --git a/src/main/java/com/eu/habbo/threading/runnables/games/GameTimer.java b/src/main/java/com/eu/habbo/threading/runnables/games/GameTimer.java index fe8124ab..05498a3d 100644 --- a/src/main/java/com/eu/habbo/threading/runnables/games/GameTimer.java +++ b/src/main/java/com/eu/habbo/threading/runnables/games/GameTimer.java @@ -20,7 +20,7 @@ public class GameTimer implements Runnable { return; } - Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(timer.getRoomId()); + Room room = Emulator.getGameEnvironment().getRoomManager().getActiveRoomById(timer.getRoomId()); if (room == null || !timer.isRunning() || timer.isPaused()) { timer.setThreadActive(false); diff --git a/src/main/java/com/eu/habbo/threading/runnables/hopper/HopperActionFive.java b/src/main/java/com/eu/habbo/threading/runnables/hopper/HopperActionFive.java index 1097c8e3..8f1602fe 100644 --- a/src/main/java/com/eu/habbo/threading/runnables/hopper/HopperActionFive.java +++ b/src/main/java/com/eu/habbo/threading/runnables/hopper/HopperActionFive.java @@ -4,13 +4,13 @@ import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.threading.runnables.HabboItemNewState; import lombok.AllArgsConstructor; @AllArgsConstructor class HopperActionFive implements Runnable { - private final HabboItem currentTeleport; + private final RoomItem currentTeleport; private final Room room; private final GameClient client; diff --git a/src/main/java/com/eu/habbo/threading/runnables/hopper/HopperActionFour.java b/src/main/java/com/eu/habbo/threading/runnables/hopper/HopperActionFour.java index d0584b75..9c9c7823 100644 --- a/src/main/java/com/eu/habbo/threading/runnables/hopper/HopperActionFour.java +++ b/src/main/java/com/eu/habbo/threading/runnables/hopper/HopperActionFour.java @@ -3,12 +3,12 @@ package com.eu.habbo.threading.runnables.hopper; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import lombok.AllArgsConstructor; @AllArgsConstructor class HopperActionFour implements Runnable { - private final HabboItem currentTeleport; + private final RoomItem currentTeleport; private final Room room; private final GameClient client; diff --git a/src/main/java/com/eu/habbo/threading/runnables/hopper/HopperActionOne.java b/src/main/java/com/eu/habbo/threading/runnables/hopper/HopperActionOne.java index 88df9fa3..ec1c8c4e 100644 --- a/src/main/java/com/eu/habbo/threading/runnables/hopper/HopperActionOne.java +++ b/src/main/java/com/eu/habbo/threading/runnables/hopper/HopperActionOne.java @@ -4,25 +4,25 @@ import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomUnitStatus; -import com.eu.habbo.habbohotel.rooms.RoomUserRotation; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.RoomRotation; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.outgoing.rooms.users.UserUpdateComposer; import lombok.AllArgsConstructor; @AllArgsConstructor public class HopperActionOne implements Runnable { - private final HabboItem teleportOne; + private final RoomItem teleportOne; private final Room room; private final GameClient client; @Override public void run() { //this.client.getHabbo().getRoomUnit().setGoalLocation(this.teleportOne.getX(), this.teleportOne.getY()); - this.client.getHabbo().getRoomUnit().setRotation(RoomUserRotation.values()[(this.teleportOne.getRotation() + 4) % 8]); + this.client.getHabbo().getRoomUnit().setRotation(RoomRotation.values()[(this.teleportOne.getRotation() + 4) % 8]); this.client.getHabbo().getRoomUnit().setStatus(RoomUnitStatus.MOVE, this.teleportOne.getX() + "," + this.teleportOne.getY() + "," + this.teleportOne.getZ()); this.room.scheduledComposers.add(new UserUpdateComposer(this.client.getHabbo().getRoomUnit()).compose()); this.client.getHabbo().getRoomUnit().setLocation(this.room.getLayout().getTile(this.teleportOne.getX(), this.teleportOne.getY())); - this.client.getHabbo().getRoomUnit().setZ(this.teleportOne.getZ()); + this.client.getHabbo().getRoomUnit().setCurrentZ(this.teleportOne.getZ()); this.client.getHabbo().getRoomUnit().setPreviousLocationZ(this.teleportOne.getZ()); Emulator.getThreading().run(() -> { diff --git a/src/main/java/com/eu/habbo/threading/runnables/hopper/HopperActionThree.java b/src/main/java/com/eu/habbo/threading/runnables/hopper/HopperActionThree.java index 2af1f7f6..247d4c26 100644 --- a/src/main/java/com/eu/habbo/threading/runnables/hopper/HopperActionThree.java +++ b/src/main/java/com/eu/habbo/threading/runnables/hopper/HopperActionThree.java @@ -6,15 +6,15 @@ import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.items.interactions.InteractionCostumeHopper; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomUnitStatus; -import com.eu.habbo.habbohotel.rooms.RoomUserRotation; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.RoomRotation; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.outgoing.rooms.users.UserUpdateComposer; import com.eu.habbo.threading.runnables.HabboItemNewState; import lombok.AllArgsConstructor; @AllArgsConstructor class HopperActionThree implements Runnable { - private final HabboItem teleportOne; + private final RoomItem teleportOne; private final Room room; private final GameClient client; private final int targetRoomId; @@ -23,13 +23,13 @@ class HopperActionThree implements Runnable { @Override public void run() { - HabboItem targetTeleport; + RoomItem targetTeleport; Room targetRoom = this.room; if (this.teleportOne.getRoomId() != this.targetRoomId) { Emulator.getGameEnvironment().getRoomManager().leaveRoom(this.client.getHabbo(), this.room, false); - targetRoom = Emulator.getGameEnvironment().getRoomManager().loadRoom(this.targetRoomId); - Emulator.getGameEnvironment().getRoomManager().enterRoom(this.client.getHabbo(), targetRoom.getId(), "", false); + targetRoom = Emulator.getGameEnvironment().getRoomManager().getRoom(this.targetRoomId); + Emulator.getGameEnvironment().getRoomManager().enterRoom(this.client.getHabbo(), targetRoom.getRoomInfo().getId(), "", false); } targetTeleport = targetRoom.getHabboItem(this.targetItemId); @@ -44,8 +44,8 @@ class HopperActionThree implements Runnable { targetRoom.updateItem(targetTeleport); this.client.getHabbo().getRoomUnit().setLocation(this.room.getLayout().getTile(targetTeleport.getX(), targetTeleport.getY())); this.client.getHabbo().getRoomUnit().setPreviousLocationZ(targetTeleport.getZ()); - this.client.getHabbo().getRoomUnit().setZ(targetTeleport.getZ()); - this.client.getHabbo().getRoomUnit().setRotation(RoomUserRotation.values()[targetTeleport.getRotation() % 8]); + this.client.getHabbo().getRoomUnit().setCurrentZ(targetTeleport.getZ()); + this.client.getHabbo().getRoomUnit().setRotation(RoomRotation.values()[targetTeleport.getRotation() % 8]); this.client.getHabbo().getRoomUnit().removeStatus(RoomUnitStatus.MOVE); targetRoom.sendComposer(new UserUpdateComposer(this.client.getHabbo().getRoomUnit()).compose()); diff --git a/src/main/java/com/eu/habbo/threading/runnables/hopper/HopperActionTwo.java b/src/main/java/com/eu/habbo/threading/runnables/hopper/HopperActionTwo.java index 0eb672c7..3a7c7831 100644 --- a/src/main/java/com/eu/habbo/threading/runnables/hopper/HopperActionTwo.java +++ b/src/main/java/com/eu/habbo/threading/runnables/hopper/HopperActionTwo.java @@ -3,7 +3,7 @@ package com.eu.habbo.threading.runnables.hopper; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -16,7 +16,7 @@ import java.sql.SQLException; @AllArgsConstructor class HopperActionTwo implements Runnable { - private final HabboItem teleportOne; + private final RoomItem teleportOne; private final Room room; private final GameClient client; diff --git a/src/main/java/com/eu/habbo/threading/runnables/teleport/TeleportActionFive.java b/src/main/java/com/eu/habbo/threading/runnables/teleport/TeleportActionFive.java index 6d4d0732..bed23943 100644 --- a/src/main/java/com/eu/habbo/threading/runnables/teleport/TeleportActionFive.java +++ b/src/main/java/com/eu/habbo/threading/runnables/teleport/TeleportActionFive.java @@ -5,8 +5,8 @@ import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.items.interactions.InteractionTeleportTile; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; +import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.threading.runnables.HabboItemNewState; import com.eu.habbo.threading.runnables.RoomUnitWalkToLocation; import lombok.AllArgsConstructor; @@ -16,7 +16,7 @@ import java.util.List; @AllArgsConstructor class TeleportActionFive implements Runnable { - private final HabboItem currentTeleport; + private final RoomItem currentTeleport; private final Room room; private final GameClient client; @@ -30,7 +30,7 @@ class TeleportActionFive implements Runnable { unit.setTeleporting(false); unit.setCanWalk(true); - if (this.client.getHabbo().getHabboInfo().getCurrentRoom() != this.room) + if (this.client.getHabbo().getRoomUnit().getRoom() != this.room) return; //if (!(this.currentTeleport instanceof InteractionTeleportTile)) @@ -50,7 +50,7 @@ class TeleportActionFive implements Runnable { unit.setCanLeaveRoomByDoor(false); unit.setGoalLocation(tile); - unit.statusUpdate(true); + unit.setStatusUpdateNeeded(true); unit.setLeavingTeleporter(true); Emulator.getThreading().run(new RoomUnitWalkToLocation(unit, tile, room, onSuccess, onSuccess)); } @@ -60,7 +60,7 @@ class TeleportActionFive implements Runnable { Emulator.getThreading().run(new HabboItemNewState(this.currentTeleport, this.room, "0"), 1000); - HabboItem teleportTile = this.room.getTopItemAt(unit.getX(), unit.getY()); + RoomItem teleportTile = this.room.getTopItemAt(unit.getCurrentPosition().getX(), unit.getCurrentPosition().getY()); if (teleportTile instanceof InteractionTeleportTile && teleportTile != this.currentTeleport) { try { diff --git a/src/main/java/com/eu/habbo/threading/runnables/teleport/TeleportActionFour.java b/src/main/java/com/eu/habbo/threading/runnables/teleport/TeleportActionFour.java index 817ec8aa..6ed4fef4 100644 --- a/src/main/java/com/eu/habbo/threading/runnables/teleport/TeleportActionFour.java +++ b/src/main/java/com/eu/habbo/threading/runnables/teleport/TeleportActionFour.java @@ -3,19 +3,19 @@ package com.eu.habbo.threading.runnables.teleport; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import lombok.AllArgsConstructor; @AllArgsConstructor class TeleportActionFour implements Runnable { - private final HabboItem currentTeleport; + private final RoomItem currentTeleport; private final Room room; private final GameClient client; @Override public void run() { - if (this.client.getHabbo().getHabboInfo().getCurrentRoom() != this.room) { + if (this.client.getHabbo().getRoomUnit().getRoom() != this.room) { this.client.getHabbo().getRoomUnit().setCanWalk(true); this.currentTeleport.setExtradata("0"); this.room.updateItem(this.currentTeleport); diff --git a/src/main/java/com/eu/habbo/threading/runnables/teleport/TeleportActionOne.java b/src/main/java/com/eu/habbo/threading/runnables/teleport/TeleportActionOne.java index 03128e18..652b2bb1 100644 --- a/src/main/java/com/eu/habbo/threading/runnables/teleport/TeleportActionOne.java +++ b/src/main/java/com/eu/habbo/threading/runnables/teleport/TeleportActionOne.java @@ -5,20 +5,20 @@ import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.items.interactions.InteractionTeleportTile; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomUnitStatus; -import com.eu.habbo.habbohotel.rooms.RoomUserRotation; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.RoomRotation; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.outgoing.rooms.users.UserUpdateComposer; import lombok.AllArgsConstructor; @AllArgsConstructor public class TeleportActionOne implements Runnable { - private final HabboItem currentTeleport; + private final RoomItem currentTeleport; private final Room room; private final GameClient client; @Override public void run() { - if (this.client.getHabbo().getHabboInfo().getCurrentRoom() != this.room) + if (this.client.getHabbo().getRoomUnit().getRoom() != this.room) return; int delay = 500; @@ -27,9 +27,9 @@ public class TeleportActionOne implements Runnable { delay = 0; } - if (this.client.getHabbo().getRoomUnit().getCurrentLocation() != this.room.getLayout().getTile(this.currentTeleport.getX(), this.currentTeleport.getY())) { + if (this.client.getHabbo().getRoomUnit().getCurrentPosition() != this.room.getLayout().getTile(this.currentTeleport.getX(), this.currentTeleport.getY())) { this.client.getHabbo().getRoomUnit().setLocation(this.room.getLayout().getTile(this.currentTeleport.getX(), this.currentTeleport.getY())); - this.client.getHabbo().getRoomUnit().setRotation(RoomUserRotation.values()[(this.currentTeleport.getRotation() + 4) % 8]); + this.client.getHabbo().getRoomUnit().setRotation(RoomRotation.values()[(this.currentTeleport.getRotation() + 4) % 8]); this.client.getHabbo().getRoomUnit().setStatus(RoomUnitStatus.MOVE, this.currentTeleport.getX() + "," + this.currentTeleport.getY() + "," + this.currentTeleport.getZ()); this.room.scheduledComposers.add(new UserUpdateComposer(this.client.getHabbo().getRoomUnit()).compose()); this.client.getHabbo().getRoomUnit().setLocation(this.room.getLayout().getTile(this.currentTeleport.getX(), this.currentTeleport.getY())); diff --git a/src/main/java/com/eu/habbo/threading/runnables/teleport/TeleportActionThree.java b/src/main/java/com/eu/habbo/threading/runnables/teleport/TeleportActionThree.java index 1083f9af..38b3e68e 100644 --- a/src/main/java/com/eu/habbo/threading/runnables/teleport/TeleportActionThree.java +++ b/src/main/java/com/eu/habbo/threading/runnables/teleport/TeleportActionThree.java @@ -7,26 +7,26 @@ import com.eu.habbo.habbohotel.items.interactions.InteractionTeleportTile; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; import com.eu.habbo.habbohotel.rooms.RoomUnitStatus; -import com.eu.habbo.habbohotel.rooms.RoomUserRotation; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.RoomRotation; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import lombok.AllArgsConstructor; @AllArgsConstructor class TeleportActionThree implements Runnable { - private final HabboItem currentTeleport; + private final RoomItem currentTeleport; private final Room room; private final GameClient client; @Override public void run() { - if (this.client.getHabbo().getHabboInfo().getCurrentRoom() != this.room) + if (this.client.getHabbo().getRoomUnit().getRoom() != this.room) return; - HabboItem targetTeleport; + RoomItem targetTeleport; Room targetRoom = this.room; if (this.currentTeleport.getRoomId() != ((InteractionTeleport) this.currentTeleport).getTargetRoomId()) { - targetRoom = Emulator.getGameEnvironment().getRoomManager().loadRoom(((InteractionTeleport) this.currentTeleport).getTargetRoomId()); + targetRoom = Emulator.getGameEnvironment().getRoomManager().getRoom(((InteractionTeleport) this.currentTeleport).getTargetRoomId()); } if (targetRoom == null) { @@ -54,22 +54,22 @@ class TeleportActionThree implements Runnable { this.client.getHabbo().getRoomUnit().setLocation(teleportLocation); this.client.getHabbo().getRoomUnit().getPath().clear(); this.client.getHabbo().getRoomUnit().removeStatus(RoomUnitStatus.MOVE); - this.client.getHabbo().getRoomUnit().setZ(teleportLocation.getStackHeight()); + this.client.getHabbo().getRoomUnit().setCurrentZ(teleportLocation.getStackHeight()); this.client.getHabbo().getRoomUnit().setPreviousLocationZ(teleportLocation.getStackHeight()); if (targetRoom != this.room) { - this.room.removeHabbo(this.client.getHabbo(), false); - Emulator.getGameEnvironment().getRoomManager().enterRoom(this.client.getHabbo(), targetRoom.getId(), "", Emulator.getConfig().getBoolean("hotel.teleport.locked.allowed"), teleportLocation); + this.room.getRoomUnitManager().removeHabbo(this.client.getHabbo(), false); + Emulator.getGameEnvironment().getRoomManager().enterRoom(this.client.getHabbo(), targetRoom.getRoomInfo().getId(), "", Emulator.getConfig().getBoolean("hotel.teleport.locked.allowed"), teleportLocation); } - this.client.getHabbo().getRoomUnit().setRotation(RoomUserRotation.values()[targetTeleport.getRotation() % 8]); - this.client.getHabbo().getRoomUnit().statusUpdate(true); + this.client.getHabbo().getRoomUnit().setRotation(RoomRotation.values()[targetTeleport.getRotation() % 8]); + this.client.getHabbo().getRoomUnit().setStatusUpdateNeeded(true); targetTeleport.setExtradata("2"); targetRoom.updateItem(targetTeleport); //targetRoom.updateHabbo(this.client.getHabbo()); //LOGGER.info((targetTeleport.getX() + " | " + targetTeleport.getY()); - this.client.getHabbo().getHabboInfo().setCurrentRoom(targetRoom); + this.client.getHabbo().getRoomUnit().setRoom(targetRoom); //Emulator.getThreading().run(new HabboItemNewState(this.currentTeleport, this.room, "0"), 500); Emulator.getThreading().run(new TeleportActionFour(targetTeleport, targetRoom, this.client), this.currentTeleport instanceof InteractionTeleportTile ? 0 : 500); diff --git a/src/main/java/com/eu/habbo/threading/runnables/teleport/TeleportActionTwo.java b/src/main/java/com/eu/habbo/threading/runnables/teleport/TeleportActionTwo.java index 377a4812..b86acdd0 100644 --- a/src/main/java/com/eu/habbo/threading/runnables/teleport/TeleportActionTwo.java +++ b/src/main/java/com/eu/habbo/threading/runnables/teleport/TeleportActionTwo.java @@ -6,7 +6,7 @@ import com.eu.habbo.habbohotel.items.interactions.InteractionTeleport; import com.eu.habbo.habbohotel.items.interactions.InteractionTeleportTile; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomUnitStatus; -import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.messages.outgoing.rooms.users.UserUpdateComposer; import com.eu.habbo.threading.runnables.HabboItemNewState; import lombok.AllArgsConstructor; @@ -21,7 +21,7 @@ import java.sql.SQLException; @AllArgsConstructor class TeleportActionTwo implements Runnable { - private final HabboItem currentTeleport; + private final RoomItem currentTeleport; private final Room room; private final GameClient client; @@ -34,14 +34,14 @@ class TeleportActionTwo implements Runnable { delayOffset = 0; } - if (this.client.getHabbo().getHabboInfo().getCurrentRoom() != this.room) + if (this.client.getHabbo().getRoomUnit().getRoom() != this.room) return; this.client.getHabbo().getRoomUnit().removeStatus(RoomUnitStatus.MOVE); this.room.sendComposer(new UserUpdateComposer(this.client.getHabbo().getRoomUnit()).compose()); if (((InteractionTeleport) this.currentTeleport).getTargetRoomId() > 0 && ((InteractionTeleport) this.currentTeleport).getTargetId() > 0) { - HabboItem item = this.room.getHabboItem(((InteractionTeleport) this.currentTeleport).getTargetId()); + RoomItem item = this.room.getHabboItem(((InteractionTeleport) this.currentTeleport).getTargetId()); if (item == null) { ((InteractionTeleport) this.currentTeleport).setTargetRoomId(0); ((InteractionTeleport) this.currentTeleport).setTargetId(0);