aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/DungeonsGuideReloadListener.java3
-rwxr-xr-xloader/src/main/java/kr/syeyoung/dungeonsguide/launcher/Main.java150
-rw-r--r--loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/AuthManager.java179
-rw-r--r--loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/AuthUtil.java57
-rw-r--r--loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/DGResponse.java15
-rw-r--r--loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/DgAuthUtil.java163
-rw-r--r--loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/InvalidDungeonsGuideCredentialsException.java8
-rw-r--r--loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/ResourceManager.java164
-rw-r--r--loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/authprovider/AuthProvider.java16
-rw-r--r--loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/authprovider/DgAuth/DgAuth.java46
-rw-r--r--loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/authprovider/DgAuth/DgAuthUtil.java88
-rw-r--r--loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/authprovider/NullAuth.java62
-rw-r--r--loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/token/AuthToken.java19
-rw-r--r--loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/token/DGAuthToken.java57
-rw-r--r--loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/token/FailedAuthToken.java41
-rw-r--r--loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/token/NullToken.java31
-rw-r--r--loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/token/PrivacyPolicyRequiredToken.java56
-rwxr-xr-xloader/src/main/java/kr/syeyoung/dungeonsguide/launcher/authentication/Authenticator.java257
-rw-r--r--loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/authentication/TokenStatus.java27
-rw-r--r--loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/branch/UpdateRetrieverUtil.java182
-rw-r--r--loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/events/AuthChangedEvent.java12
-rw-r--r--loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/exceptions/AssetNotFoundException.java (renamed from mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/api/DungeonSpecificData.java)18
-rw-r--r--loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/exceptions/AuthFailedExeption.java7
-rw-r--r--loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/exceptions/AuthServerException.java16
-rw-r--r--loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/exceptions/AuthenticationUnavailableException.java12
-rw-r--r--loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/exceptions/InvalidSignatureException.java (renamed from mod/src/main/java/kr/syeyoung/dungeonsguide/events/PlayerInteractEntityEvent.java)26
-rw-r--r--loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/exceptions/NoVersionFoundException.java (renamed from mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/api/Skill.java)21
-rw-r--r--loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/exceptions/PrivacyPolicyRequiredException.java2
-rw-r--r--loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/exceptions/ResponseParsingException.java (renamed from mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/api/FloorSpecificData.java)18
-rw-r--r--loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/exceptions/TokenExpiredException.java2
-rw-r--r--loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/gui/screen/GuiDisplayer.java44
-rw-r--r--loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/gui/screen/GuiLoadingError.java (renamed from loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/gui/GuiLoadingError.java)12
-rw-r--r--loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/gui/screen/GuiPrivacyPolicy.java (renamed from loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/gui/GuiPrivacyPolicy.java)14
-rw-r--r--loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/gui/screen/GuiReferenceLeak.java90
-rw-r--r--loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/gui/screen/SpecialGuiScreen.java17
-rw-r--r--loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/loader/ByteStreamURLHandler.java46
-rw-r--r--loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/loader/DGClassLoader.java81
-rw-r--r--loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/loader/IDGLoader.java10
-rw-r--r--loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/loader/JarLoader.java76
-rw-r--r--loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/loader/LocalLoader.java59
-rw-r--r--loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/loader/RemoteLoader.java152
-rw-r--r--loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/loader/SignatureValidator.java43
-rwxr-xr-xloader/src/main/java/kr/syeyoung/dungeonsguide/launcher/url/DGConnection.java49
-rwxr-xr-xloader/src/main/java/kr/syeyoung/dungeonsguide/launcher/url/DGStreamHandler.java34
-rwxr-xr-xloader/src/main/java/kr/syeyoung/dungeonsguide/launcher/url/DGStreamHandlerFactory.java35
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/IDungeonGuide.java10
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/config/types/TCBoolean.java39
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/config/types/TCColor.java41
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/config/types/TCFloat.java39
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/config/types/TCInteger.java39
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/config/types/TCString.java39
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/config/types/TypeConverter.java29
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/cosmetics/ActiveCosmetic.java30
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/cosmetics/CosmeticData.java32
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/actions/ActionComplete.java41
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/actions/ActionRoot.java48
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/doorfinder/DungeonSpecificDataProvider.java38
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/events/DungeonCryptBrokenEvent.java34
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/events/DungeonDeathEvent.java35
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/events/DungeonEvent.java41
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/events/DungeonEventData.java25
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/events/DungeonEventHolder.java32
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/events/DungeonMapUpdateEvent.java33
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/events/DungeonNodataEvent.java28
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/events/DungeonPuzzleFailureEvent.java33
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/events/DungeonRoomDiscoverEvent.java44
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/events/DungeonSecretCountChangeEvent.java36
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/events/DungeonStateChangeEvent.java39
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/mechanics/DungeonMechanic.java40
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/mechanics/RouteBlocker.java25
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/events/BossroomEnterEvent.java24
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/events/DungeonContextInitializationEvent.java24
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/events/DungeonEndedEvent.java24
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/events/DungeonLeftEvent.java24
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/events/DungeonStartedEvent.java24
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/events/HypixelJoinedEvent.java24
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/events/SkyblockJoinedEvent.java24
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/events/SkyblockLeftEvent.java24
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/events/StompConnectedEvent.java30
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/events/TitleEvent.java30
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/events/WindowUpdateEvent.java32
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/features/SimpleFeature.java33
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/terminal/TerminalSolution.java30
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/terminal/TerminalSolutionProvider.java29
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureRepartyCommand.java29
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/ability/SkyblockAbility.java32
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/ability/UsedAbility.java31
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/api/DungeonClass.java46
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/api/DungeonType.java39
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/playerpreview/DataRenderer.java33
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/BossroomEnterListener.java23
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/ChatListener.java25
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/ChatListenerGlobal.java25
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/DungeonContextInitializationListener.java23
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/DungeonEndListener.java23
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/DungeonQuitListener.java23
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/DungeonStartListener.java23
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/EntityLivingRenderListener.java26
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/GuiBackgroundRenderListener.java25
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/GuiClickListener.java25
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/GuiOpenListener.java25
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/GuiPostRenderListener.java25
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/GuiPreRenderListener.java25
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/GuiUpdateListener.java25
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/InteractListener.java25
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/KeyInputListener.java25
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/PlayerRenderListener.java26
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/ScreenRenderListener.java23
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/SkyblockJoinListener.java23
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/SkyblockLeaveListener.java23
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/SoundListener.java25
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/StompConnectedListener.java25
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/TextureStichListener.java25
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/TickListener.java23
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/TitleListener.java25
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/TooltipListener.java25
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/WorldRenderListener.java23
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/features/text/StyledText.java29
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/features/text/StyledTextProvider.java30
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/features/text/TextStyle.java34
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/mod/ArrayUtils.java (renamed from mod/src/main/java/kr/syeyoung/dungeonsguide/utils/ArrayUtils.java)2
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/mod/DungeonsGuide.java72
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/mod/Keybinds.java4
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/mod/SkyblockStatus.java13
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/YoMamaOutdated.java (renamed from mod/src/main/java/kr/syeyoung/dungeonsguide/YoMamaOutdated.java)2
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/commands/CommandDgDebug.java72
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/commands/CommandReparty.java6
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/config/guiconfig/MFeatureEdit.java10
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/config/guiconfig/MPanelCategory.java7
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/config/guiconfig/MParameterEdit.java11
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/config/guiconfig/RootConfigPanel.java10
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/config/guiconfig/location/PanelDelegate.java10
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/config/types/TCTextStyle.java7
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/config/types/TCTextStyleList.java7
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/config/types/TypeConverterRegistry.java4
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/cosmetics/CosmeticsManager.java15
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/cosmetics/CustomPacketPlayerListItem.java6
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/GameSDK.java7
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/GameSDKTypeMapper.java7
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/datastruct/DiscordCreateParams.java11
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/datastruct/DiscordStruct.java6
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/datastruct/DiscordUser.java6
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/interfacestruct/IDiscordImageManager.java6
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/interfacestruct/IDiscordUserManager.java11
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/typedef/DiscordClientID.java6
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/typedef/DiscordNetworkChannelId.java6
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/typedef/DiscordNetworkPeerId.java6
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/typedef/DiscordSnowflake.java6
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/typedef/DiscordTimestamp.java6
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/typedef/DiscordVersion.java6
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/rpc/RichPresenceManager.java22
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/DungeonContext.java17
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/actions/ActionChangeState.java6
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/actions/ActionInteract.java9
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/actions/ActionKill.java9
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/actions/ActionMove.java10
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/actions/ActionMoveNearestAir.java6
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/actions/tree/ActionRoute.java8
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/EditingContext.java7
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/gui/GuiDungeonAddSet.java13
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/gui/GuiDungeonParameterEdit.java20
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/gui/GuiDungeonRoomEdit.java10
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/gui/GuiDungeonValueEdit.java19
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/mechanicedit/ValueEditBreakableWall.java17
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/mechanicedit/ValueEditDoor.java17
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/mechanicedit/ValueEditDummy.java19
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/mechanicedit/ValueEditFairySoul.java20
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/mechanicedit/ValueEditLever.java20
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/mechanicedit/ValueEditNPC.java19
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/mechanicedit/ValueEditOnewayDoor.java17
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/mechanicedit/ValueEditSecret.java17
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/mechanicedit/ValueEditTomb.java20
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/panes/ActionDisplayPane.java12
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/panes/ActionTreeDisplayPane.java10
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/panes/GeneralEditPane.java13
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/panes/RoomDataDisplayPane.java7
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/valueedit/ValueEditBoolean.java11
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/valueedit/ValueEditColor.java12
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/valueedit/ValueEditOffsetPoint.java16
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/valueedit/ValueEditRegistry.java14
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomfinder/DungeonRoom.java22
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomfinder/DungeonRoomInfoRegistry.java5
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomfinder/RoomMatcher.java6
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/GeneralRoomProcessor.java33
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/RoomProcessorBlazeSolver.java12
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/RoomProcessorCreeperSolver.java9
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/RoomProcessorRedRoom.java12
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/RoomProcessorRiddle.java11
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/RoomProcessorTeleportMazeSolver.java9
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/RoomProcessorTrivia.java5
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/RoomProcessorBombDefuseSolver.java34
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/GeneralDefuseChamberProcessor.java11
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/arrow/ArrowRightProcessor.java10
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/color/ColorLeftProcessor.java11
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/color/ColorRightProcessor.java11
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/creeper/CreeperLeftProcessor.java10
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/creeper/CreeperRightProcessor.java10
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/goldenpath/GoldenPathProcessorMatcher.java11
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/maze/MazeLeftProcessor.java9
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/maze/MazeProcessorMatcher.java11
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/maze/MazeRightProcessor.java10
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/number/NumberLeftProcessor.java10
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/number/NumberRightProcessor.java10
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bossfight/BossfightProcessorBonzo.java7
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/boxpuzzle/RoomProcessorBoxSolver.java6
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/icefill/RoomProcessorIcePath2.java5
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/waterpuzzle/WaterBoard.java7
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/events/impl/DiscordUserUpdateEvent.java6
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/events/listener/FeatureListener.java14
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/events/listener/PacketListener.java16
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/GuiFeature.java17
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/advanced/FeatureDebug.java6
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/advanced/FeatureDebuggableMap.java11
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/advanced/FeatureRoomCoordDisplay.java12
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/FeatureAutoReparty.java8
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/FeatureBossHealth.java18
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/FeatureBoxRealLivid.java16
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/FeatureChestPrice.java12
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/FeatureCurrentPhase.java13
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/FeatureHideAnimals.java13
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/FeatureTerracotaTimer.java16
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/FeatureThornBearPercentage.java14
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/FeatureThornSpiritBowTimer.java20
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/FeatureWarningOnPortal.java25
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/terminal/FeatureSimonSaysSolver.java16
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/terminal/FeatureTerminalSolvers.java8
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/discord/inviteViewer/PartyInviteViewer.java14
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/discord/invteTooltip/MTooltipInvite.java17
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/discord/invteTooltip/MTooltipInviteElement.java12
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/discord/onlinealarm/PlayingDGAlarm.java22
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureBoxBats.java12
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureBoxSkelemaster.java12
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureBoxStarMobs.java12
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureDungeonCurrentRoomSecrets.java15
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureDungeonDeaths.java20
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureDungeonMilestone.java19
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureDungeonRealTime.java17
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureDungeonRoomName.java15
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureDungeonScore.java23
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureDungeonSecrets.java17
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureDungeonTombs.java15
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureHideNameTags.java9
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeaturePlayerESP.java10
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeaturePressAnyKeyToCloseChest.java11
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureWarnLowHealth.java16
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureWatcherWarning.java19
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/etc/FeatureAutoAcceptReparty.java13
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/etc/FeatureCooldownCounter.java10
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/etc/FeatureCopyMessages.java9
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/etc/FeatureDecreaseExplosionSound.java10
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/etc/FeatureDisableMessage.java10
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/etc/FeaturePenguins.java10
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/etc/FeatureTooltipDungeonStat.java7
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/etc/FeatureTooltipPrice.java10
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/etc/FeatureUpdateAlarm.java16
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/etc/ability/FeatureAbilityCooldown.java20
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/APIKey.java10
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/FeatureGoodParties.java11
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/FeaturePartyList.java13
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/FeaturePartyReady.java20
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/api/CachedData.java (renamed from mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/api/CachedData.java)2
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/api/ClassSpecificData.java (renamed from mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/api/ClassSpecificData.java)2
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/api/Pet.java (renamed from mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/api/Pet.java)2
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/customgui/FeatureCustomPartyFinder.java14
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/customgui/PanelPartyFinder.java17
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/customgui/PanelPartyFinderSettings.java12
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/api/playerprofile/PlayerProfileParser.java22
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/datarenders/impl/DataRenderDungeonFloorStat.java9
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/datarenders/impl/DataRenderDungeonHighestFloorStat.java9
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/datarenders/impl/DataRendererClassLv.java17
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/datarenders/impl/DataRendererLilyWeight.java6
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/FeatureActions.java18
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/FeatureBloodRush.java11
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/FeatureCreateRefreshLine.java12
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/FeaturePathfindStrategy.java13
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/FeatureSoulRoomWarning.java34
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/FeatureTogglePathfind.java10
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/PathfindLineProperties.java14
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/mechanicbrowser/FeatureMechanicBrowse.java23
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/mechanicbrowser/MechanicBrowserElement.java8
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/mechanicbrowser/PanelMechanicBrowser.java17
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/listener/DiscordUserJoinRequestListener.java6
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/text/TextHUDFeature.java17
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/gui/elements/MColor.java6
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/mod/gui/elements/MLabelAndElement.java6
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/mod/gui/elements/MNavigatingPane.java6
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/mod/gui/elements/MParameter.java12
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/gui/elements/MPortableColorEdit.java8
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/gui/elements/MScrollBar.java10
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/mod/gui/elements/MTabbedPane.java6
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/mod/gui/elements/MTextField.java8
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/mod/gui/elements/MToggleButton.java8
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/mod/gui/elements/MValue.java9
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/resources/DGTexturePack.java32
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/stomp/StompInterface.java (renamed from mod/src/main/java/kr/syeyoung/dungeonsguide/stomp/StompInterface.java)2
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/stomp/StompManager.java4
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/utils/AhUtils.java14
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/utils/TimeScoreUtil.java6
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/utils/cursor/GLCursors.java10
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/resources/DGTexturePack.java68
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/Parameter.java39
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/panes/DynamicEditor.java29
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEdit.java27
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEditCreator.java29
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEditNull.java38
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/RoomProcessorGenerator.java25
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/bombdefuse/chambers/BombDefuseChamberGenerator.java30
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/bombdefuse/chambers/ChamberProcessor.java27
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/bombdefuse/chambers/DummyDefuseChamberProcessor.java32
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/bossfight/BossfightProcessor.java33
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/bossfight/HealthData.java33
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/waterpuzzle/LeverState.java33
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/waterpuzzle/LeverStateContradict.java25
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/waterpuzzle/WaterNode.java36
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/stomp/CloseListener.java23
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/stomp/StompClientStatus.java23
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/stomp/StompHeader.java23
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/stomp/StompMessageHandler.java23
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/stomp/StompSubscription.java41
-rwxr-xr-xmod/src/main/resources/assets/dungeonsguide/cursors/IBeamCursor.cur (renamed from mod/src/main/resources/assets/dg/cursors/IBeamCursor.cur)bin8774 -> 8774 bytes
-rwxr-xr-xmod/src/main/resources/assets/dungeonsguide/cursors/arrowCursor.cur (renamed from mod/src/main/resources/assets/dg/cursors/arrowCursor.cur)bin136606 -> 136606 bytes
-rw-r--r--mod/src/main/resources/assets/dungeonsguide/cursors/closedHandCursor.cur (renamed from mod/src/main/resources/assets/dg/cursors/closedHandCursor.cur)bin136606 -> 136606 bytes
-rwxr-xr-xmod/src/main/resources/assets/dungeonsguide/cursors/crosshairCursor.cur (renamed from mod/src/main/resources/assets/dg/cursors/crosshairCursor.cur)bin8774 -> 8774 bytes
-rw-r--r--mod/src/main/resources/assets/dungeonsguide/cursors/openHandCursor.cur (renamed from mod/src/main/resources/assets/dg/cursors/openHandCursor.cur)bin136606 -> 136606 bytes
-rwxr-xr-xmod/src/main/resources/assets/dungeonsguide/cursors/operationNotAllowedCursor.cur (renamed from mod/src/main/resources/assets/dg/cursors/operationNotAllowedCursor.cur)bin136606 -> 136606 bytes
-rwxr-xr-xmod/src/main/resources/assets/dungeonsguide/cursors/pointingHandCursor.cur (renamed from mod/src/main/resources/assets/dg/cursors/pointingHandCursor.cur)bin136606 -> 136606 bytes
-rwxr-xr-xmod/src/main/resources/assets/dungeonsguide/cursors/resizeDownCursor.cur (renamed from mod/src/main/resources/assets/dg/cursors/resizeDownCursor.cur)bin136606 -> 136606 bytes
-rwxr-xr-xmod/src/main/resources/assets/dungeonsguide/cursors/resizeLeftCursor.cur (renamed from mod/src/main/resources/assets/dg/cursors/resizeLeftCursor.cur)bin136606 -> 136606 bytes
-rwxr-xr-xmod/src/main/resources/assets/dungeonsguide/cursors/resizeLeftRightCursor.cur (renamed from mod/src/main/resources/assets/dg/cursors/resizeLeftRightCursor.cur)bin136606 -> 136606 bytes
-rwxr-xr-xmod/src/main/resources/assets/dungeonsguide/cursors/resizeNE.cur (renamed from mod/src/main/resources/assets/dg/cursors/resizeNE.cur)bin136606 -> 136606 bytes
-rwxr-xr-xmod/src/main/resources/assets/dungeonsguide/cursors/resizeNESW.cur (renamed from mod/src/main/resources/assets/dg/cursors/resizeNESW.cur)bin136606 -> 136606 bytes
-rwxr-xr-xmod/src/main/resources/assets/dungeonsguide/cursors/resizeNW.cur (renamed from mod/src/main/resources/assets/dg/cursors/resizeNW.cur)bin136606 -> 136606 bytes
-rwxr-xr-xmod/src/main/resources/assets/dungeonsguide/cursors/resizeNWSE.cur (renamed from mod/src/main/resources/assets/dg/cursors/resizeNWSE.cur)bin136606 -> 136606 bytes
-rwxr-xr-xmod/src/main/resources/assets/dungeonsguide/cursors/resizeRightCursor.cur (renamed from mod/src/main/resources/assets/dg/cursors/resizeRightCursor.cur)bin136606 -> 136606 bytes
-rwxr-xr-xmod/src/main/resources/assets/dungeonsguide/cursors/resizeSE.cur (renamed from mod/src/main/resources/assets/dg/cursors/resizeSE.cur)bin136606 -> 136606 bytes
-rwxr-xr-xmod/src/main/resources/assets/dungeonsguide/cursors/resizeSW.cur (renamed from mod/src/main/resources/assets/dg/cursors/resizeSW.cur)bin136606 -> 136606 bytes
-rwxr-xr-xmod/src/main/resources/assets/dungeonsguide/cursors/resizeUpCursor.cur (renamed from mod/src/main/resources/assets/dg/cursors/resizeUpCursor.cur)bin136606 -> 136606 bytes
-rwxr-xr-xmod/src/main/resources/assets/dungeonsguide/cursors/resizeUpDownCursor.cur (renamed from mod/src/main/resources/assets/dg/cursors/resizeUpDownCursor.cur)bin136606 -> 136606 bytes
-rw-r--r--mod/src/main/resources/assets/dungeonsguide/models/penguin.mtl (renamed from mod/src/main/resources/assets/dg/models/penguin.mtl)0
-rw-r--r--mod/src/main/resources/assets/dungeonsguide/models/penguin.obj (renamed from mod/src/main/resources/assets/dg/models/penguin.obj)0
-rw-r--r--mod/src/main/resources/assets/dungeonsguide/sounds.json (renamed from mod/src/main/resources/assets/dg/sounds.json)0
-rw-r--r--mod/src/main/resources/assets/dungeonsguide/sounds/readysetgo.ogg (renamed from mod/src/main/resources/assets/dg/sounds/readysetgo.ogg)bin161265 -> 161265 bytes
-rw-r--r--mod/src/main/resources/assets/dungeonsguide/textures/dglogox128.png (renamed from mod/src/main/resources/assets/dg/textures/dglogox128.png)bin3024 -> 3024 bytes
-rw-r--r--mod/src/main/resources/assets/dungeonsguide/textures/dglogox32.png (renamed from mod/src/main/resources/assets/dg/textures/dglogox32.png)bin648 -> 648 bytes
-rw-r--r--mod/src/main/resources/assets/dungeonsguide/textures/penguin.png (renamed from mod/src/main/resources/assets/dg/textures/penguin.png)bin207 -> 207 bytes
-rw-r--r--mod/src/main/resources/pack.mcmeta6
346 files changed, 1783 insertions, 5834 deletions
diff --git a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/DungeonsGuideReloadListener.java b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/DungeonsGuideReloadListener.java
index 7252a9db..a96805c1 100644
--- a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/DungeonsGuideReloadListener.java
+++ b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/DungeonsGuideReloadListener.java
@@ -19,6 +19,9 @@
package kr.syeyoung.dungeonsguide.launcher;
public interface DungeonsGuideReloadListener {
+ /**
+ * @implNote This is very important that you GET RID OF referene to DGInterface when this is called, or else dg is gonna crash with ReferenceLeakedException.
+ */
public void unloadReference();
public void onLoad(DGInterface dgInterface);
}
diff --git a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/Main.java b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/Main.java
index 7cc0f806..e8d3e36b 100755
--- a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/Main.java
+++ b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/Main.java
@@ -18,25 +18,21 @@
package kr.syeyoung.dungeonsguide.launcher;
-import com.mojang.authlib.exceptions.AuthenticationUnavailableException;
-import com.mojang.authlib.exceptions.InvalidCredentialsException;
-import kr.syeyoung.dungeonsguide.launcher.exceptions.AuthServerException;
-import kr.syeyoung.dungeonsguide.launcher.authentication.Authenticator;
-import kr.syeyoung.dungeonsguide.launcher.branch.ModDownloader;
+import kr.syeyoung.dungeonsguide.launcher.auth.AuthManager;
+import kr.syeyoung.dungeonsguide.launcher.branch.UpdateRetrieverUtil;
import kr.syeyoung.dungeonsguide.launcher.exceptions.NoSuitableLoaderFoundException;
-import kr.syeyoung.dungeonsguide.launcher.exceptions.PrivacyPolicyRequiredException;
+import kr.syeyoung.dungeonsguide.launcher.exceptions.NoVersionFoundException;
import kr.syeyoung.dungeonsguide.launcher.exceptions.ReferenceLeakedException;
-import kr.syeyoung.dungeonsguide.launcher.exceptions.TokenExpiredException;
-import kr.syeyoung.dungeonsguide.launcher.gui.GuiLoadingError;
-import kr.syeyoung.dungeonsguide.launcher.gui.GuiPrivacyPolicy;
+import kr.syeyoung.dungeonsguide.launcher.gui.screen.GuiDisplayer;
+import kr.syeyoung.dungeonsguide.launcher.gui.screen.GuiLoadingError;
+import kr.syeyoung.dungeonsguide.launcher.gui.screen.GuiReferenceLeak;
+import kr.syeyoung.dungeonsguide.launcher.gui.screen.SpecialGuiScreen;
import kr.syeyoung.dungeonsguide.launcher.loader.IDGLoader;
import kr.syeyoung.dungeonsguide.launcher.loader.JarLoader;
import kr.syeyoung.dungeonsguide.launcher.loader.LocalLoader;
+import kr.syeyoung.dungeonsguide.launcher.loader.RemoteLoader;
import net.minecraft.client.Minecraft;
-import net.minecraft.client.gui.GuiMainMenu;
-import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.resources.IReloadableResourceManager;
-import net.minecraftforge.client.event.GuiOpenEvent;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.config.Configuration;
import net.minecraftforge.fml.common.Mod;
@@ -44,13 +40,9 @@ import net.minecraftforge.fml.common.Mod.EventHandler;
import net.minecraftforge.fml.common.ProgressManager;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
-import net.minecraftforge.fml.common.eventhandler.EventPriority;
-import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import java.io.*;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
@Mod(modid = Main.MOD_ID, version = Main.VERSION)
public class Main
@@ -61,13 +53,15 @@ public class Main
private static Main main;
- private File configDir;
+ private static File configDir;
private DGInterface dgInterface;
- private Authenticator authenticator = new Authenticator();
- private ModDownloader modDownloader = new ModDownloader(authenticator);
- private List<DungeonsGuideReloadListener> listeners = new ArrayList<>();
+ private final List<DungeonsGuideReloadListener> listeners = new ArrayList<>();
+
+ public static File getConfigDir() {
+ return configDir;
+ }
public void addDGReloadListener(DungeonsGuideReloadListener dungeonsGuideReloadListener) {
listeners.add(Objects.requireNonNull(dungeonsGuideReloadListener));
@@ -77,28 +71,18 @@ public class Main
}
private IDGLoader currentLoader;
-
- private Throwable lastError;
- private boolean isMcLoaded;
-
-
-
-
@EventHandler
- public void initEvent(FMLInitializationEvent initializationEvent)
- {
+ public void initEvent(FMLInitializationEvent initializationEvent) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
MinecraftForge.EVENT_BUS.register(this);
- if (dgInterface != null) {
- try {
- dgInterface.init(configDir);
-
- for (DungeonsGuideReloadListener listener : listeners) {
- listener.onLoad(dgInterface);
- }
- } catch (Exception e) {
- e.printStackTrace();
- setLastFatalError(e);
- }
+ MinecraftForge.EVENT_BUS.register(GuiDisplayer.INSTANCE);
+
+ try {
+ File f = new File(configDir, "loader.cfg");
+ Configuration configuration = new Configuration(f);
+ IDGLoader idgLoader = obtainLoader(configuration);
+ load(idgLoader);
+ } catch (Throwable e) {
+ GuiDisplayer.INSTANCE.displayGui(obtainErrorGUI(e));
}
}
@@ -111,12 +95,14 @@ public class Main
listener.unloadReference();
}
if (currentLoader != null) {
- currentLoader.unloadJar();
+ currentLoader.unloadDungeonsGuide();
}
currentLoader = null;
}
- private void load(IDGLoader newLoader) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
- partialLoad(newLoader);
+ private void load(IDGLoader newLoader) throws ClassNotFoundException, InstantiationException, IllegalAccessException, IOException {
+ if (dgInterface != null) throw new IllegalStateException("DG is loaded");
+ dgInterface = newLoader.loadDungeonsGuide();
+ currentLoader = newLoader;
dgInterface.init(configDir);
@@ -124,13 +110,6 @@ public class Main
listener.onLoad(dgInterface);
}
}
- private void partialLoad(IDGLoader newLoader) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
- if (dgInterface != null) throw new IllegalStateException("DG is loaded");
- newLoader.loadJar(authenticator);
- dgInterface = newLoader.getInstance();
- currentLoader = newLoader;
- }
-
public void reload(IDGLoader newLoader) {
try {
unload();
@@ -140,49 +119,25 @@ public class Main
currentLoader = null;
e.printStackTrace();
- setLastFatalError(e);
- }
- }
- public void tryOpenError() {
- if (isMcLoaded) Minecraft.getMinecraft().displayGuiScreen(obtainErrorGUI());
+ GuiDisplayer.INSTANCE.displayGui(obtainErrorGUI(e));
+ }
}
- public GuiScreen obtainErrorGUI() {
- if (lastError instanceof PrivacyPolicyRequiredException) {
- return new GuiPrivacyPolicy();
- } else if (lastError instanceof TokenExpiredException) {
-
+ public SpecialGuiScreen obtainErrorGUI(Throwable lastError) {
+ if (lastError instanceof kr.syeyoung.dungeonsguide.launcher.exceptions.AuthenticationUnavailableException) {
+ return null;
} else if (lastError instanceof NoSuitableLoaderFoundException) {
-
+ return new GuiLoadingError(lastError);
} else if (lastError instanceof ReferenceLeakedException) {
-
- } else if (lastError instanceof AuthServerException) {
-
- } else if (lastError instanceof InvalidCredentialsException) {
-
- } else if (lastError instanceof AuthenticationUnavailableException) {
-
+ return new GuiReferenceLeak(lastError);
} else if (lastError != null){
- return new GuiLoadingError(lastError, () -> {lastError = null;});
+ return new GuiLoadingError(lastError);
}
- if (lastError != null)
- lastError.printStackTrace();
// when gets called init and stuff remove thing
return null;
}
- @SubscribeEvent(priority = EventPriority.LOWEST)
- public void onGuiOpen(GuiOpenEvent guiOpenEvent) {
- if (guiOpenEvent.gui instanceof GuiMainMenu) {
- isMcLoaded = true;
- }
- if (lastError != null && guiOpenEvent.gui instanceof GuiMainMenu) {
- GuiScreen gui = obtainErrorGUI();
- if (gui != null)
- guiOpenEvent.gui = gui;
- }
- }
public String getLoaderName(Configuration configuration) {
String loader = System.getProperty("dg.loader");
@@ -205,7 +160,19 @@ public class Main
return new JarLoader();
} else if (loader.equals("auto") ){
// remote load
- throw new UnsupportedOperationException(""); // yet
+ String branch = System.getProperty("branch") == null ? configuration.get("loader", "remoteBranch", "$default").getString() : System.getProperty("branch");
+ String version = System.getProperty("version") == null ? configuration.get("loader", "remoteVersion", "latest").getString() : System.getProperty("version");
+ try {
+ UpdateRetrieverUtil.VersionInfo versionInfo = UpdateRetrieverUtil.getIds(
+ branch,
+ version
+ );
+ if (versionInfo == null) throw new NoVersionFoundException(branch, version);
+
+ return new RemoteLoader(versionInfo.getFriendlyBranchName(), versionInfo.getBranchId(), versionInfo.getUpdateId());
+ } catch (IOException e) {
+ throw new NoVersionFoundException(branch, version, e);
+ }
} else {
throw new NoSuitableLoaderFoundException(System.getProperty("dg.loader"), configuration.get("loader", "modsource", "auto").getString());
}
@@ -218,20 +185,17 @@ public class Main
configDir = preInitializationEvent.getModConfigurationDirectory();
// setup preinit progress bar for well, progress bar!
- ProgressManager.ProgressBar bar = ProgressManager.push("DungeonsGuide", 2);
+ ProgressManager.ProgressBar bar = ProgressManager.push("DungeonsGuide", 1);
try {
// Try authenticate
bar.step("Authenticating...");
- authenticator.repeatAuthenticate(5);
+ AuthManager.getInstance().init();
// If authentication succeeds, obtain loader and partially load dungeons guide
+
File f = new File(preInitializationEvent.getModConfigurationDirectory(), "loader.cfg");
Configuration configuration = new Configuration(f);
-
- bar.step("Instantiating...");
- partialLoad(obtainLoader(configuration));
-
// Save config because... well to generate it
configuration.save();
} catch (Throwable t) {
@@ -239,7 +203,6 @@ public class Main
currentLoader = null;
t.printStackTrace();
- setLastFatalError(t);
} finally {
while(bar.getStep() < bar.getSteps()) bar.step("");
ProgressManager.pop(bar);
@@ -250,11 +213,6 @@ public class Main
});
}
- public void setLastFatalError(Throwable t) {
- lastError = t;
- tryOpenError();
- }
-
public static Main getMain() {
return main;
}
diff --git a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/AuthManager.java b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/AuthManager.java
index f0c346c6..c3dd747a 100644
--- a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/AuthManager.java
+++ b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/AuthManager.java
@@ -2,149 +2,142 @@ package kr.syeyoung.dungeonsguide.launcher.auth;
import com.google.common.base.Throwables;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
-import com.google.gson.JsonObject;
import com.mojang.authlib.exceptions.AuthenticationException;
-import kr.syeyoung.dungeonsguide.launcher.auth.authprovider.AuthProvider;
-import kr.syeyoung.dungeonsguide.launcher.auth.authprovider.DgAuth.DgAuth;
-import kr.syeyoung.dungeonsguide.launcher.auth.authprovider.DgAuth.DgAuthUtil;
-import kr.syeyoung.dungeonsguide.mod.chat.ChatTransmitter;
-import kr.syeyoung.dungeonsguide.mod.events.impl.AuthChangedEvent;
-import kr.syeyoung.dungeonsguide.mod.stomp.StompManager;
+import kr.syeyoung.dungeonsguide.launcher.Main;
+import kr.syeyoung.dungeonsguide.launcher.auth.token.*;
+import kr.syeyoung.dungeonsguide.launcher.events.AuthChangedEvent;
+import kr.syeyoung.dungeonsguide.launcher.exceptions.AuthFailedExeption;
+import kr.syeyoung.dungeonsguide.launcher.exceptions.PrivacyPolicyRequiredException;
+import kr.syeyoung.dungeonsguide.launcher.gui.screen.GuiDisplayer;
+import kr.syeyoung.dungeonsguide.launcher.gui.screen.GuiPrivacyPolicy;
import lombok.Setter;
import net.minecraft.client.Minecraft;
import net.minecraftforge.common.MinecraftForge;
-import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
-import net.minecraftforge.fml.common.gameevent.TickEvent;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
+import javax.crypto.BadPaddingException;
+import javax.crypto.IllegalBlockSizeException;
+import javax.crypto.NoSuchPaddingException;
import java.io.IOException;
-import java.security.KeyPair;
+import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
-import java.util.Objects;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.ThreadFactory;
-import java.util.concurrent.TimeUnit;
+import java.security.spec.InvalidKeySpecException;
+import java.util.concurrent.*;
public class AuthManager {
Logger logger = LogManager.getLogger("AuthManger");
- private static AuthManager instance;
+ private static AuthManager INSTANCE;
public static AuthManager getInstance() {
- if(instance == null) instance = new AuthManager();
- return instance;
+ if(INSTANCE == null) INSTANCE = new AuthManager();
+ return INSTANCE;
}
+ private AuthToken currentToken = new NullToken();
-
- @Setter
- private String baseserverurl = "https://dungeons.guide";
-
- private AuthProvider currentProvider;
-
- public String getToken() {
- if (currentProvider != null && currentProvider.getToken() != null) {
- return currentProvider.getToken();
- }
- return null;
+ public AuthToken getToken() {
+ return currentToken;
+ }
+ public String getWorkingTokenOrNull() {
+ if (currentToken instanceof DGAuthToken) return currentToken.getToken();
+ else return null;
}
- public KeyPair getKeyPair(){
- if (currentProvider != null && currentProvider.getToken() != null) {
- return currentProvider.getRsaKey();
- }
- return null;
+ public String getWorkingTokenOrThrow() {
+ if (currentToken instanceof DGAuthToken) return currentToken.getToken();
+ else if (currentToken instanceof FailedAuthToken) throw new AuthFailedExeption(((FailedAuthToken) currentToken).getException());
+ else if (currentToken instanceof NullToken) throw new IllegalStateException("No Token");
+ else if (currentToken instanceof PrivacyPolicyRequiredToken) throw new PrivacyPolicyRequiredException();
+ throw new IllegalStateException("weird token: "+currentToken);
}
- boolean initlock = false;
+ private volatile boolean initlock = false;
public void init() {
if (initlock) {
logger.info("Cannot init AuthManger twice");
- return;
+ throw new IllegalStateException("Can not init AuthManager twice");
}
- reauth();
-
initlock = true;
-
- MinecraftForge.EVENT_BUS.register(this);
-
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder().setNameFormat("DgAuth Pool").build();
final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1, namedThreadFactory);
scheduler.scheduleAtFixedRate(() -> {
- if (getToken() != null) {
- JsonObject obj = DgAuthUtil.getJwtPayload(getToken());
- if (!obj.get("uuid").getAsString().replace("-", "").equals(Minecraft.getMinecraft().getSession().getPlayerID())) {
- shouldReAuth = true;
- }
+ boolean shouldReAuth = false;
+ if (!getToken().getUID().replace("-", "").equals(Minecraft.getMinecraft().getSession().getPlayerID())) {
+ shouldReAuth = true;
+ }
+ if (!getToken().isAuthenticated()) {
+ shouldReAuth = true;
}
+ if (shouldReAuth)
+ reAuth();
}, 10,2000, TimeUnit.MILLISECONDS);
- }
-
- boolean shouldReAuth = true;
- int tickCounter;
- @SubscribeEvent
- public void onTickClientTick(TickEvent.ClientTickEvent event) {
- if (event.phase != TickEvent.Phase.START) return;
- if (tickCounter % 200 == 0) {
- tickCounter = 0;
- reauth();
- }
- tickCounter++;
-
- }
-
- public boolean isPlebUser(){
- return Objects.equals(getInstance().getPlanType(), "OPENSOURCE");
+ reAuth();
}
- public String getPlanType(){
- if(getToken() == null) return null;
+ private volatile boolean reauthLock = false;
- JsonObject jwt = DgAuthUtil.getJwtPayload(getToken());
- if(!jwt.has("plan")) return null;
+ AuthToken reAuth() {
+ if (reauthLock) {
+ while (reauthLock) ;
+ return currentToken;
+ }
- return jwt.get("plan").getAsString();
+ reauthLock = true;
+ try {
+ String token = DgAuthUtil.requestAuth();
+ byte[] encSecret = DgAuthUtil.checkSessionAuthenticityAndReturnEncryptedSecret(token);
+ currentToken = DgAuthUtil.verifyAuth(token, encSecret);
+ MinecraftForge.EVENT_BUS.post(new AuthChangedEvent(currentToken));
+
+ if (currentToken instanceof PrivacyPolicyRequiredToken) {
+ GuiDisplayer.INSTANCE.displayGui(new GuiPrivacyPolicy());
+ throw new PrivacyPolicyRequiredException();
+ }
+ } catch (NoSuchAlgorithmException | AuthenticationException | IOException | NoSuchPaddingException |
+ InvalidKeyException | InvalidKeySpecException | IllegalBlockSizeException | BadPaddingException e) {
+ currentToken = new FailedAuthToken(e);
+ // TODO: loader notifications on bottom right?
+// ChatTransmitter.addToQueue("§eDungeons Guide §7:: §r§cDG auth failed, trying again in ten seconds", true);
+ logger.error("Re-auth failed with message {}, trying again in a 2 seconds", String.valueOf(Throwables.getRootCause(e)));
+ throw new AuthFailedExeption(e);
+ } finally {
+ reauthLock = false;
+ }
+ return currentToken;
}
- void reauth() {
- if (!shouldReAuth) return;
- shouldReAuth = false;
+ AuthToken acceptPrivacyPolicy() throws IOException {
+ if (reauthLock) {
+ while(reauthLock);
+ return currentToken;
+ }
- currentProvider = null;
- try {
- currentProvider = new DgAuth(baseserverurl).createAuthProvider();
- if (currentProvider.getToken() == null) {
- shouldReAuth = true;
- currentProvider = null;
- ChatTransmitter.addToQueue("§eDungeons Guide §7:: §r§cDG auth failed, trying again in ten seconds", true);
- logger.info("DG auth failed, trying again in a second");
- } else {
- // RE-AUTHed SUCCESSFULLY HOORAY
- // for some reason the forge events don't work in pre init, so I call the callback directly
- StompManager.getInstance().init();
- MinecraftForge.EVENT_BUS.post(new AuthChangedEvent());
+ if (currentToken instanceof PrivacyPolicyRequiredToken) {
+ reauthLock = true;
+ try {
+ currentToken = DgAuthUtil.acceptNewPrivacyPolicy(currentToken.getToken());
+ if (currentToken instanceof PrivacyPolicyRequiredToken) throw new PrivacyPolicyRequiredException();
+ } catch (IOException e) {
+ currentToken = new FailedAuthToken(e);
+ // TODO: loader notifications on bottom right?
+ logger.error("Accepting Privacy Policy failed with message {}, trying again in a 2 seconds", String.valueOf(Throwables.getRootCause(e)));
+ throw e;
+ } finally {
+ reauthLock = false;
}
- } catch (NoSuchAlgorithmException | AuthenticationException | IOException e) {
-
- shouldReAuth = true;
- currentProvider = null;
- ChatTransmitter.addToQueue("§eDungeons Guide §7:: §r§cDG auth failed, trying again in ten seconds", true);
- logger.error("Re-auth failed with message {}, trying again in a ten seconds", String.valueOf(Throwables.getRootCause(e)));
}
-
+ return currentToken;
}
-
-
}
diff --git a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/AuthUtil.java b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/AuthUtil.java
index 9ce02643..e5408f0b 100644
--- a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/AuthUtil.java
+++ b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/AuthUtil.java
@@ -12,59 +12,16 @@ import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.security.*;
+import java.security.spec.InvalidKeySpecException;
+import java.security.spec.X509EncodedKeySpec;
public class AuthUtil {
private AuthUtil() {}
- public static KeyPair getKeyPair() throws NoSuchAlgorithmException {
- KeyPairGenerator a = null;
- a = KeyPairGenerator.getInstance("RSA");
- a.initialize(1024);
- return a.generateKeyPair();
- }
-
-
- public static JsonElement getJsonSecured(String u) throws IOException, NoSuchPaddingException, NoSuchAlgorithmException, InvalidKeyException, BadPaddingException, IllegalBlockSizeException, InvalidAlgorithmParameterException{
-
- int length = 0;
- CipherInputStream cipherInputStream = null;
-
- HttpsURLConnection httpsURLConnection = (HttpsURLConnection) new URL(u).openConnection();
- httpsURLConnection.setRequestProperty("User-Agent", "DungeonsGuide/1.0");
- httpsURLConnection.setRequestProperty("Content-Type", "application/json");
- httpsURLConnection.setRequestMethod("GET");
- httpsURLConnection.setRequestProperty("Authorization", AuthManager.getInstance().getToken());
- httpsURLConnection.setDoInput(true);
- httpsURLConnection.setDoOutput(true);
-
- InputStream inputStream = httpsURLConnection.getInputStream();
- byte[] lengthPayload = new byte[4];
- inputStream.read(lengthPayload);
- length = ((lengthPayload[0] & 0xFF) << 24) |
- ((lengthPayload[1] & 0xFF) << 16) |
- ((lengthPayload[2] & 0xFF) << 8) |
- ((lengthPayload[3] & 0xFF));
- while (inputStream.available() < length) ;
- byte[] keyPayload = new byte[length];
- inputStream.read(keyPayload);
-
- Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
- cipher.init(Cipher.DECRYPT_MODE, AuthManager.getInstance().getKeyPair().getPrivate());
- byte[] AESKey = cipher.doFinal(keyPayload);
-
- cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
- SecretKeySpec secretKeySpec = new SecretKeySpec(AESKey, "AES");
- IvParameterSpec ivParameterSpec = new IvParameterSpec(AESKey);
- cipher.init(Cipher.DECRYPT_MODE, secretKeySpec, ivParameterSpec);
- cipherInputStream = new CipherInputStream(inputStream, cipher);
- cipherInputStream.read(lengthPayload);
- length = ((lengthPayload[0] & 0xFF) << 24) |
- ((lengthPayload[1] & 0xFF) << 16) |
- ((lengthPayload[2] & 0xFF) << 8) |
- ((lengthPayload[3] & 0xFF));
-
- httpsURLConnection.disconnect();
-
- return new JsonParser().parse(new InputStreamReader(cipherInputStream));
+ public static PublicKey getPublicKey(byte[] bytes) throws NoSuchAlgorithmException, InvalidKeySpecException {
+ PublicKey publicKey =
+ KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(bytes));
+ publicKey.getEncoded();
+ return publicKey;
}
}
diff --git a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/DGResponse.java b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/DGResponse.java
new file mode 100644
index 00000000..5873fbda
--- /dev/null
+++ b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/DGResponse.java
@@ -0,0 +1,15 @@
+package kr.syeyoung.dungeonsguide.launcher.auth;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import org.json.JSONObject;
+
+@Data
+@AllArgsConstructor
+public class DGResponse<T> {
+ private final String status;
+ private final T data;
+ private final String errorMessage;
+ private final String qrCode;
+}
+
diff --git a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/DgAuthUtil.java b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/DgAuthUtil.java
new file mode 100644
index 00000000..78fc91c9
--- /dev/null
+++ b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/DgAuthUtil.java
@@ -0,0 +1,163 @@
+package kr.syeyoung.dungeonsguide.launcher.auth;
+
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+import com.mojang.authlib.GameProfile;
+import com.mojang.authlib.exceptions.AuthenticationException;
+import com.mojang.authlib.minecraft.MinecraftSessionService;
+import kr.syeyoung.dungeonsguide.launcher.Main;
+import kr.syeyoung.dungeonsguide.launcher.auth.token.AuthToken;
+import kr.syeyoung.dungeonsguide.launcher.auth.token.DGAuthToken;
+import kr.syeyoung.dungeonsguide.launcher.auth.token.PrivacyPolicyRequiredToken;
+import kr.syeyoung.dungeonsguide.launcher.exceptions.AuthServerException;
+import kr.syeyoung.dungeonsguide.launcher.exceptions.PrivacyPolicyRequiredException;
+import kr.syeyoung.dungeonsguide.launcher.exceptions.ResponseParsingException;
+import net.minecraft.client.Minecraft;
+import net.minecraft.util.Session;
+import org.apache.commons.codec.binary.Base64;
+import org.apache.commons.io.IOUtils;
+import org.json.JSONObject;
+
+import javax.crypto.BadPaddingException;
+import javax.crypto.Cipher;
+import javax.crypto.IllegalBlockSizeException;
+import javax.crypto.NoSuchPaddingException;
+import javax.net.ssl.HttpsURLConnection;
+import java.io.IOException;
+import java.io.InputStream;
+import java.math.BigInteger;
+import java.net.URL;
+import java.security.*;
+import java.security.spec.InvalidKeySpecException;
+import java.util.stream.Collectors;
+
+public class DgAuthUtil {
+ private static final SecureRandom random = new SecureRandom();
+ private DgAuthUtil(){}
+
+
+ private static <T> DGResponse<T> getResponse(HttpsURLConnection connection, Class<T> data) throws IOException {
+ connection.getResponseCode();
+ InputStream toRead = connection.getErrorStream();
+ if (toRead == null)
+ toRead = connection.getInputStream();
+ String payload = IOUtils.readLines(toRead).stream().collect(Collectors.joining("\n"));
+
+ try {
+ JSONObject json = new JSONObject(payload);
+ return new DGResponse(
+ json.getString("status"),
+ (T) json.get("data"),
+ json.getString("errorMessage"),
+ json.getString("qrCode")
+ );
+ } catch (Exception e) {
+ throw new ResponseParsingException(payload, e.getMessage());
+ } finally {
+ toRead.close();
+ }
+
+ }
+
+ public static String requestAuth() throws IOException {
+ GameProfile profile = Minecraft.getMinecraft().getSession().getProfile();
+
+ HttpsURLConnection connection = (HttpsURLConnection) new URL(Main.DOMAIN + "/auth/requestAuth").openConnection();
+ connection.setRequestProperty("User-Agent", "DungeonsGuide/1.0");
+ connection.setRequestProperty("Content-Type", "application/json");
+ connection.setRequestMethod("POST");
+ connection.setDoInput(true);
+ connection.setDoOutput(true);
+
+ connection.getOutputStream().write(("{\"uuid\":\""+profile.getId().toString()+"\",\"nickname\":\""+profile.getName()+"\"}").getBytes());
+
+ DGResponse<String> preToken = getResponse(connection, String.class);
+ if (!"SUCCESS".equals(preToken.getStatus())) {
+ throw new AuthServerException(preToken);
+ }
+
+ return preToken.getData();
+ }
+
+ public static byte[] checkSessionAuthenticityAndReturnEncryptedSecret(String tempToken) throws NoSuchAlgorithmException, AuthenticationException, NoSuchPaddingException, InvalidKeySpecException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException {
+ JSONObject d = getJwtPayload(tempToken);
+ byte[] sharedSecret = new byte[16];
+ random.nextBytes(sharedSecret);
+ byte[] publicKey =Base64.decodeBase64(d.getString("publicKey"));
+
+ Cipher cipher = Cipher.getInstance("RSA");
+ cipher.init(Cipher.ENCRYPT_MODE, AuthUtil.getPublicKey(publicKey));
+ byte[] result = cipher.doFinal(sharedSecret);
+
+
+ String hash = calculateServerHash(sharedSecret, publicKey);
+
+ Session session = Minecraft.getMinecraft().getSession();
+ MinecraftSessionService yggdrasilMinecraftSessionService = Minecraft.getMinecraft().getSessionService();
+ yggdrasilMinecraftSessionService.joinServer(session.getProfile(), session.getToken(), hash);
+
+ return result;
+ }
+
+ public static AuthToken verifyAuth(String tempToken, byte[] encSecret) throws IOException {
+ HttpsURLConnection urlConnection = (HttpsURLConnection) new URL(Main.DOMAIN + "/auth/authenticate").openConnection();
+ urlConnection.setRequestMethod("POST");
+ urlConnection.setRequestProperty("User-Agent", "DungeonsGuide/1.0");
+ urlConnection.setRequestProperty("Content-Type", "application/json");
+ urlConnection.setDoInput(true);
+ urlConnection.setDoOutput(true);
+
+ urlConnection.getOutputStream().write(("{\"jwt\":\""+tempToken+"\",\"sharedSecret\":\""+Base64.encodeBase64URLSafeString(encSecret)+"\"}").getBytes());
+
+ DGResponse<JSONObject> postToken = getResponse(urlConnection, JSONObject.class);
+ if (!"SUCCESS".equals(postToken.getStatus())) {
+ throw new AuthServerException(postToken);
+ }
+ JSONObject data = postToken.getData();
+ if (data.getString("result").equals("TOS_PRIVACY_POLICY_ACCEPT_REQUIRED")) {
+ return new PrivacyPolicyRequiredToken(data.getString("jwt"));
+ } else if (data.getString("result").equals("SUCCESSFUL")) {
+ return new DGAuthToken(data.getString("jwt"));
+ } else {
+ throw new AuthServerException(postToken);
+ }
+ }
+
+ public static AuthToken acceptNewPrivacyPolicy(String tempToken) throws IOException {
+ HttpsURLConnection urlConnection = (HttpsURLConnection) new URL(Main.DOMAIN + "/auth/acceptPrivacyPolicy").openConnection();
+ urlConnection.setRequestMethod("POST");
+ urlConnection.setRequestProperty("User-Agent", "DungeonsGuide/1.0");
+ urlConnection.setRequestProperty("Content-Type", "application/json");
+ urlConnection.setDoInput(true);
+ urlConnection.setDoOutput(true);
+
+ urlConnection.getOutputStream().write(tempToken.getBytes());
+
+ DGResponse<JSONObject> postToken = getResponse(urlConnection, JSONObject.class);
+ if (!"SUCCESS".equals(postToken.getStatus())) {
+ throw new AuthServerException(postToken);
+ }
+ JSONObject data = postToken.getData();
+ if (data.getString("result").equals("TOS_PRIVACY_POLICY_ACCEPT_REQUIRED")) {
+ return new PrivacyPolicyRequiredToken(data.getString("jwt"));
+ } else if (data.getString("result").equals("SUCCESSFUL")) {
+ return new DGAuthToken(data.getString("jwt"));
+ } else {
+ throw new AuthServerException(postToken);
+ }
+ }
+ public static JSONObject getJwtPayload(String jwt) {
+ String midPart = jwt.split("\\.")[1].replace("+", "-").replace("/", "_");
+ String base64Decode = new String(Base64.decodeBase64(midPart)); // padding
+ return new JSONObject(base64Decode);
+ }
+
+ public static String calculateServerHash(byte[] a, byte[] b) throws NoSuchAlgorithmException {
+ MessageDigest c = MessageDigest.getInstance("SHA-1");
+ c.update("".getBytes());
+ c.update(a);
+ c.update(b);
+ byte[] d = c.digest();
+ return new BigInteger(d).toString(16);
+ }
+}
diff --git a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/InvalidDungeonsGuideCredentialsException.java b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/InvalidDungeonsGuideCredentialsException.java
deleted file mode 100644
index ebe78196..00000000
--- a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/InvalidDungeonsGuideCredentialsException.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package kr.syeyoung.dungeonsguide.launcher.auth;
-
-public class InvalidDungeonsGuideCredentialsException extends Throwable {
-
- public InvalidDungeonsGuideCredentialsException(String message) {
- super(message);
- }
-}
diff --git a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/ResourceManager.java b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/ResourceManager.java
deleted file mode 100644
index 721b629f..00000000
--- a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/ResourceManager.java
+++ /dev/null
@@ -1,164 +0,0 @@
-package kr.syeyoung.dungeonsguide.launcher.auth;
-
-import lombok.Setter;
-import net.minecraftforge.common.MinecraftForge;
-import org.apache.commons.codec.binary.Base64;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import javax.crypto.*;
-import javax.crypto.spec.IvParameterSpec;
-import javax.crypto.spec.SecretKeySpec;
-import javax.net.ssl.HttpsURLConnection;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.security.*;
-import java.security.spec.InvalidKeySpecException;
-import java.security.spec.X509EncodedKeySpec;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipInputStream;
-
-public class ResourceManager {
-
- Logger logger = LogManager.getLogger("ResourceManager");
-
- @Setter
- private String baseUrl;
- @Setter
- private String BASE64_X509ENCODEDKEYSPEC;
- private final HashMap<String, byte[]> loadedResources = new HashMap<>();
-
-
- private static ResourceManager instance;
- public static ResourceManager getInstance() {
- if(instance == null) {
- instance = new ResourceManager();
- MinecraftForge.EVENT_BUS.register(instance);
- }
- return instance;
- }
-
- private ResourceManager() {
- }
-
- public Map<String, byte[]> getResources() {
- return loadedResources;
- }
-
-
- public void downloadAssets(String version) throws InvalidDungeonsGuideCredentialsException {
- if(AuthManager.getInstance().getToken() == null) throw new InvalidDungeonsGuideCredentialsException("Not Authenticated while downloading assets");
- try {
- // version not being null indicates that the user is "premium"
- // so we download the special version
- if (version != null)
- downloadSafe( baseUrl + "/resource/version?v=" + version, true);
-
- if(!AuthManager.getInstance().isPlebUser()){
- downloadSafe(baseUrl + "/resource/roomdata", false);
- } else {
- logger.error("The current User is a pleb not downloading user data");
- }
-
- } catch (Exception t) {
- t.printStackTrace();
- }
-
- }
-
- private void downloadSafe(String url, boolean isValidateSignature) throws IOException, NoSuchPaddingException, NoSuchAlgorithmException, InvalidKeyException, BadPaddingException, IllegalBlockSizeException, InvalidAlgorithmParameterException, SignatureException, InvalidKeySpecException {
- HttpsURLConnection dgConnection = (HttpsURLConnection) new URL(url).openConnection();
- dgConnection.setRequestProperty("User-Agent", "DungeonsGuide/1.0");
- dgConnection.setRequestProperty("Content-Type", "application/json");
- dgConnection.setRequestMethod("GET");
- dgConnection.setRequestProperty("Authorization", AuthManager.getInstance().getToken());
- dgConnection.setDoInput(true);
- dgConnection.setDoOutput(true);
-
- InputStream inputStream = dgConnection.getInputStream();
- byte[] lengthBytes = new byte[4];
- inputStream.read(lengthBytes);
- int length = ((lengthBytes[0] & 0xFF) << 24) |
- ((lengthBytes[1] & 0xFF) << 16) |
- ((lengthBytes[2] & 0xFF) << 8) |
- ((lengthBytes[3] & 0xFF));
- while (inputStream.available() < length) ;
- byte[] keyPayload = new byte[length];
- inputStream.read(keyPayload);
-
- Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
- cipher.init(Cipher.DECRYPT_MODE, AuthManager.getInstance().getKeyPair().getPrivate());
- byte[] h = cipher.doFinal(keyPayload);
-
- cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
- SecretKeySpec keySpec = new SecretKeySpec(h, "AES");
- IvParameterSpec ivSpec = new IvParameterSpec(h);
- cipher.init(Cipher.DECRYPT_MODE, keySpec, ivSpec);
- CipherInputStream cipherInputStream = new CipherInputStream(inputStream, cipher);
-
- cipherInputStream.read(lengthBytes);
- length = ((lengthBytes[0] & 0xFF) << 24) |
- ((lengthBytes[1] & 0xFF) << 16) |
- ((lengthBytes[2] & 0xFF) << 8) |
- ((lengthBytes[3] & 0xFF));
-
- int totalLen = length;
- ByteArrayOutputStream bos = new ByteArrayOutputStream();
- byte[] buff = new byte[256];
- while (totalLen > 0) {
- int len = cipherInputStream.read(buff, 0, Math.min(buff.length, totalLen));
- totalLen -= len;
- bos.write(buff, 0, len);
- }
- byte[] body = bos.toByteArray();
-
- byte[] signed;
- if (isValidateSignature) {
- cipherInputStream.read(lengthBytes,0 , 4);
- length = ((lengthBytes[0] & 0xFF) << 24) |
- ((lengthBytes[1] & 0xFF) << 16) |
- ((lengthBytes[2] & 0xFF) << 8) |
- ((lengthBytes[3] & 0xFF));
-
- totalLen = length;
- bos = new ByteArrayOutputStream();
- while (totalLen > 0) {
- int len = cipherInputStream.read(buff, 0, Math.min(buff.length, totalLen));
- totalLen -= len;
- bos.write(buff, 0, len);
- }
- signed = bos.toByteArray();
-
- Signature sign = Signature.getInstance("SHA512withRSA");
- sign.initVerify(getPublicKey(BASE64_X509ENCODEDKEYSPEC));
- sign.update(body);
- boolean truth = sign.verify(signed);
- if (!truth) throw new SignatureException("DG SIGNATURE FORGED");
- }
-
- ZipInputStream zipInputStream = new ZipInputStream(new ByteArrayInputStream(body));
- ZipEntry zipEntry;
- while ((zipEntry=zipInputStream.getNextEntry()) != null) {
- byte[] buffer = new byte[256];
- ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
- int p;
- while((p = zipInputStream.read(buffer)) > 0) {
- byteArrayOutputStream.write(buffer, 0, p);
- }
- this.loadedResources.put(zipEntry.getName(), byteArrayOutputStream.toByteArray());
- }
- }
-
-
- public static PublicKey getPublicKey(String base64X509EncodedKeySpec) throws NoSuchAlgorithmException, InvalidKeySpecException {
- X509EncodedKeySpec spec = new X509EncodedKeySpec(Base64.decodeBase64(base64X509EncodedKeySpec));
-
- return KeyFactory.getInstance("RSA").generatePublic(spec);
- }
-
-}
diff --git a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/authprovider/AuthProvider.java b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/authprovider/AuthProvider.java
deleted file mode 100644
index d469c729..00000000
--- a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/authprovider/AuthProvider.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package kr.syeyoung.dungeonsguide.launcher.auth.authprovider;
-
-import com.mojang.authlib.exceptions.AuthenticationException;
-
-import java.io.IOException;
-import java.security.KeyPair;
-import java.security.NoSuchAlgorithmException;
-
-public interface AuthProvider {
- String getToken();
-
- KeyPair getRsaKey();
-
-
- AuthProvider createAuthProvider() throws NoSuchAlgorithmException, AuthenticationException, IOException;
-}
diff --git a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/authprovider/DgAuth/DgAuth.java b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/authprovider/DgAuth/DgAuth.java
deleted file mode 100644
index dca9ce33..00000000
--- a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/authprovider/DgAuth/DgAuth.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package kr.syeyoung.dungeonsguide.launcher.auth.authprovider.DgAuth;
-
-import com.mojang.authlib.exceptions.AuthenticationException;
-import kr.syeyoung.dungeonsguide.launcher.auth.AuthUtil;
-import kr.syeyoung.dungeonsguide.launcher.auth.authprovider.AuthProvider;
-
-import java.io.IOException;
-import java.security.KeyPair;
-import java.security.NoSuchAlgorithmException;
-
-public class DgAuth implements AuthProvider {
-
- private final String authServerUrl;
-
- public DgAuth(String authServerUrl){
- this.authServerUrl = authServerUrl;
- }
-
- private String token;
- private KeyPair rsaKey;
-
- @Override
- public String getToken() {
- return token;
- }
-
- @Override
- public KeyPair getRsaKey() {
- return rsaKey;
- }
-
-
- @Override
- public AuthProvider createAuthProvider() throws NoSuchAlgorithmException, AuthenticationException, IOException {
- this.rsaKey = AuthUtil.getKeyPair();
-
- String tempToken = DgAuthUtil.requestAuth(this.authServerUrl);
-
- DgAuthUtil.checkSessionAuthenticity(tempToken);
-
- this.token = DgAuthUtil.verifyAuth(tempToken, rsaKey.getPublic(), authServerUrl);
-
- return this;
- }
-
-}
diff --git a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/authprovider/DgAuth/DgAuthUtil.java b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/authprovider/DgAuth/DgAuthUtil.java
deleted file mode 100644
index 53b57e1a..00000000
--- a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/authprovider/DgAuth/DgAuthUtil.java
+++ /dev/null
@@ -1,88 +0,0 @@
-package kr.syeyoung.dungeonsguide.launcher.auth.authprovider.DgAuth;
-
-import com.google.gson.JsonObject;
-import com.google.gson.JsonParser;
-import com.mojang.authlib.GameProfile;
-import com.mojang.authlib.exceptions.AuthenticationException;
-import com.mojang.authlib.minecraft.MinecraftSessionService;
-import net.minecraft.client.Minecraft;
-import net.minecraft.util.Session;
-import org.apache.commons.codec.binary.Base64;
-import org.apache.commons.io.IOUtils;
-
-import javax.net.ssl.HttpsURLConnection;
-import java.io.IOException;
-import java.math.BigInteger;
-import java.net.URL;
-import java.security.MessageDigest;
-import java.security.NoSuchAlgorithmException;
-import java.security.PublicKey;
-
-public class DgAuthUtil {
- private DgAuthUtil(){}
-
- public static String requestAuth(String baseurl) throws IOException {
- GameProfile profile = Minecraft.getMinecraft().getSession().getProfile();
-
- HttpsURLConnection connection = (HttpsURLConnection) new URL(baseurl + "/auth/requestAuth").openConnection();
- connection.setRequestProperty("User-Agent", "DungeonsGuide/1.0");
- connection.setRequestProperty("Content-Type", "application/json");
- connection.setRequestMethod("POST");
- connection.setDoInput(true);
- connection.setDoOutput(true);
-
- connection.getOutputStream().write(("{\"uuid\":\""+profile.getId().toString()+"\",\"nickname\":\""+profile.getName()+"\"}").getBytes());
- String payload = String.join("\n", IOUtils.readLines(connection.getErrorStream() == null ? connection.getInputStream() : connection.getErrorStream()));
-
- JsonObject json = (JsonObject) new JsonParser().parse(payload);
-
- if (!"ok".equals(json.get("status").getAsString())) {
- return null;
- }
- return json.get("data").getAsString();
- }
-
- public static void checkSessionAuthenticity(String tempToken) throws NoSuchAlgorithmException, AuthenticationException {
- JsonObject d = getJwtPayload(tempToken);
- byte[] sharedSecret = Base64.decodeBase64(d.get("sharedSecret").getAsString());
- byte[] publicKey =Base64.decodeBase64(d.get("publicKey").getAsString());
- String hash = calculateServerHash(sharedSecret, publicKey);
-
- Session session = Minecraft.getMinecraft().getSession();
- MinecraftSessionService yggdrasilMinecraftSessionService = Minecraft.getMinecraft().getSessionService();
- yggdrasilMinecraftSessionService.joinServer(session.getProfile(), session.getToken(), hash);
- }
-
- public static String verifyAuth(String tempToken, PublicKey clientKey, String baseurl) throws IOException {
- HttpsURLConnection urlConnection = (HttpsURLConnection) new URL(baseurl + "/auth/authenticate").openConnection();
- urlConnection.setRequestMethod("POST");
- urlConnection.setRequestProperty("User-Agent", "DungeonsGuide/1.0");
- urlConnection.setRequestProperty("Content-Type", "application/json");
- urlConnection.setDoInput(true);
- urlConnection.setDoOutput(true);
-
- urlConnection.getOutputStream().write(("{\"jwt\":\""+tempToken+"\",\"publicKey\":\""+Base64.encodeBase64URLSafeString(clientKey.getEncoded())+"\"}").getBytes());
- String payload = String.join("\n", IOUtils.readLines(urlConnection.getErrorStream() == null ? urlConnection.getInputStream() : urlConnection.getErrorStream()));
-
- JsonObject jsonObject = (JsonObject) new JsonParser().parse(payload);
- if (!"ok".equals(jsonObject.get("status").getAsString())) {
- return null;
- }
- return jsonObject.get("data").getAsString();
- }
-
- public static JsonObject getJwtPayload(String jwt) {
- String midPart = jwt.split("\\.")[1].replace("+", "-").replace("/", "_");
- String base64Decode = new String(Base64.decodeBase64(midPart)); // padding
- return (JsonObject) new JsonParser().parse(base64Decode);
- }
-
- public static String calculateServerHash(byte[] a, byte[] b) throws NoSuchAlgorithmException {
- MessageDigest c = MessageDigest.getInstance("SHA-1");
- c.update("".getBytes());
- c.update(a);
- c.update(b);
- byte[] d = c.digest();
- return new BigInteger(d).toString(16);
- }
-}
diff --git a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/authprovider/NullAuth.java b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/authprovider/NullAuth.java
deleted file mode 100644
index 303cfb0a..00000000
--- a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/authprovider/NullAuth.java
+++ /dev/null
@@ -1,62 +0,0 @@
-package kr.syeyoung.dungeonsguide.launcher.auth.authprovider;
-
-import com.mojang.authlib.exceptions.AuthenticationException;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.io.IOException;
-import java.security.KeyPair;
-import java.security.NoSuchAlgorithmException;
-import java.security.PrivateKey;
-import java.security.PublicKey;
-
-public class NullAuth implements AuthProvider {
-
- Logger logger = LogManager.getLogger("NullAuth");
-
- @Override
- public String getToken() {
- return "TOKEN";
- }
-
- @Override
- public KeyPair getRsaKey() {
- return new KeyPair(new PublicKey() {
- @Override
- public String getAlgorithm() {
- return null;
- }
-
- @Override
- public String getFormat() {
- return null;
- }
-
- @Override
- public byte[] getEncoded() {
- return new byte[0];
- }
- }, new PrivateKey() {
- @Override
- public String getAlgorithm() {
- return null;
- }
-
- @Override
- public String getFormat() {
- return null;
- }
-
- @Override
- public byte[] getEncoded() {
- return new byte[0];
- }
- });
- }
-
- @Override
- public AuthProvider createAuthProvider() throws NoSuchAlgorithmException, AuthenticationException, IOException {
- return new NullAuth();
- }
-
-}
diff --git a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/token/AuthToken.java b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/token/AuthToken.java
new file mode 100644
index 00000000..6bbfec7b
--- /dev/null
+++ b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/token/AuthToken.java
@@ -0,0 +1,19 @@
+package kr.syeyoung.dungeonsguide.launcher.auth.token;
+
+import java.security.KeyPair;
+import java.security.interfaces.RSAKey;
+import java.time.Instant;
+
+public interface AuthToken {
+ boolean isUserVerified();
+ boolean hasFullCapability();
+ boolean isAuthenticated();
+
+ Instant getExpiryInstant();
+
+ default String getUID() {return null;}
+ default String getUUID() {return null;}
+ default String getUsername() {return null;}
+
+ String getToken();
+}
diff --git a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/token/DGAuthToken.java b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/token/DGAuthToken.java
new file mode 100644
index 00000000..702c23a1
--- /dev/null
+++ b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/token/DGAuthToken.java
@@ -0,0 +1,57 @@
+package kr.syeyoung.dungeonsguide.launcher.auth.token;
+
+import kr.syeyoung.dungeonsguide.launcher.auth.AuthUtil;
+import kr.syeyoung.dungeonsguide.launcher.auth.DgAuthUtil;
+import org.json.JSONObject;
+
+import java.time.Instant;
+
+public class DGAuthToken implements AuthToken {
+ private String token;
+ private JSONObject parsed;
+
+ public DGAuthToken(String token) {
+ this.token = token;
+ this.parsed = DgAuthUtil.getJwtPayload(token);
+ }
+
+ @Override
+ public boolean isUserVerified() {
+ return true;
+ }
+
+ @Override
+ public boolean hasFullCapability() {
+ return true;
+ }
+
+ @Override
+ public boolean isAuthenticated() {
+ return true;
+ }
+
+ @Override
+ public Instant getExpiryInstant() {
+ return Instant.ofEpochSecond(Long.parseLong(parsed.getString("exp")));
+ }
+
+ @Override
+ public String getUID() {
+ return parsed.getString("userid");
+ }
+
+ @Override
+ public String getUUID() {
+ return parsed.getString("uuid");
+ }
+
+ @Override
+ public String getUsername() {
+ return parsed.getString("nickname");
+ }
+
+ @Override
+ public String getToken() {
+ return token;
+ }
+}
diff --git a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/token/FailedAuthToken.java b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/token/FailedAuthToken.java
new file mode 100644
index 00000000..de5fe2f7
--- /dev/null
+++ b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/token/FailedAuthToken.java
@@ -0,0 +1,41 @@
+package kr.syeyoung.dungeonsguide.launcher.auth.token;
+
+import java.security.KeyPair;
+import java.time.Instant;
+
+public class FailedAuthToken implements AuthToken {
+ private final Throwable exeption;
+
+ public FailedAuthToken(Throwable exception) {
+ this.exeption = exception;
+ }
+
+ @Override
+ public boolean isUserVerified() {
+ return false;
+ }
+
+ @Override
+ public boolean hasFullCapability() {
+ return false;
+ }
+
+ @Override
+ public boolean isAuthenticated() {
+ return false;
+ }
+
+ @Override
+ public Instant getExpiryInstant() {
+ return Instant.MIN;
+ }
+
+ @Override
+ public String getToken() {
+ return null;
+ }
+
+ public Throwable getException() {
+ return exeption;
+ }
+}
diff --git a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/token/NullToken.java b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/token/NullToken.java
new file mode 100644
index 00000000..d2799a02
--- /dev/null
+++ b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/token/NullToken.java
@@ -0,0 +1,31 @@
+package kr.syeyoung.dungeonsguide.launcher.auth.token;
+
+import java.security.KeyPair;
+import java.time.Instant;
+
+public class NullToken implements AuthToken {
+ @Override
+ public boolean isUserVerified() {
+ return false;
+ }
+
+ @Override
+ public boolean hasFullCapability() {
+ return false;
+ }
+
+ @Override
+ public boolean isAuthenticated() {
+ return false;
+ }
+
+ @Override
+ public Instant getExpiryInstant() {
+ return Instant.MIN;
+ }
+
+ @Override
+ public String getToken() {
+ return null;
+ }
+}
diff --git a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/token/PrivacyPolicyRequiredToken.java b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/token/PrivacyPolicyRequiredToken.java
new file mode 100644
index 00000000..62fad840
--- /dev/null
+++ b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/auth/token/PrivacyPolicyRequiredToken.java
@@ -0,0 +1,56 @@
+package kr.syeyoung.dungeonsguide.launcher.auth.token;
+
+import kr.syeyoung.dungeonsguide.launcher.auth.DgAuthUtil;
+import org.json.JSONObject;
+
+import java.time.Instant;
+
+public class PrivacyPolicyRequiredToken implements AuthToken {
+ private String token;
+ private JSONObject parsed;
+
+ public PrivacyPolicyRequiredToken(String token) {
+ this.token = token;
+ this.parsed = DgAuthUtil.getJwtPayload(token);
+ }
+
+ @Override
+ public boolean isUserVerified() {
+ return true;
+ }
+
+ @Override
+ public boolean hasFullCapability() {
+ return false;
+ }
+
+ @Override
+ public boolean isAuthenticated() {
+ return true;
+ }
+
+ @Override
+ public Instant getExpiryInstant() {
+ return Instant.ofEpochSecond(Long.parseLong(parsed.getString("exp")));
+ }
+
+ @Override
+ public String getUID() {
+ return parsed.getString("userid");
+ }
+
+ @Override
+ public String getUUID() {
+ return parsed.getString("uuid");
+ }
+
+ @Override
+ public String getUsername() {
+ return parsed.getString("nickname");
+ }
+
+ @Override
+ public String getToken() {
+ return token;
+ }
+}
diff --git a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/authentication/Authenticator.java b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/authentication/Authenticator.java
deleted file mode 100755
index ac30c5e3..00000000
--- a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/authentication/Authenticator.java
+++ /dev/null
@@ -1,257 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.launcher.authentication;
-
-import com.mojang.authlib.exceptions.AuthenticationException;
-import com.mojang.authlib.minecraft.MinecraftSessionService;
-import kr.syeyoung.dungeonsguide.launcher.Main;
-import kr.syeyoung.dungeonsguide.launcher.exceptions.AuthServerException;
-import kr.syeyoung.dungeonsguide.launcher.exceptions.PrivacyPolicyRequiredException;
-import kr.syeyoung.dungeonsguide.launcher.exceptions.TokenExpiredException;
-import lombok.Getter;
-import net.minecraft.client.Minecraft;
-import net.minecraft.util.Session;
-import org.apache.commons.codec.binary.Base64;
-import org.apache.commons.io.IOUtils;
-import org.json.JSONObject;
-import sun.reflect.Reflection;
-
-import javax.crypto.*;
-import java.io.*;
-import java.math.BigInteger;
-import java.net.*;
-import java.security.*;
-import java.security.spec.InvalidKeySpecException;
-import java.security.spec.X509EncodedKeySpec;
-import java.time.Instant;
-import java.util.UUID;
-import java.util.concurrent.locks.Lock;
-import java.util.concurrent.locks.ReentrantLock;
-
-public class Authenticator {
- private String dgAccessToken;
- @Getter
- private TokenStatus tokenStatus = TokenStatus.UNAUTHENTICATED;
-
- private final SecureRandom secureRandom = new SecureRandom();
-
- private Lock authenticationLock = new ReentrantLock();
-
- static {
- Reflection.registerFieldsToFilter(Authenticator.class, "dgAccessToken"); // Please do not touch this field. I know there is a way to block it completely, but I won't do it here.
- }
-
- public String getRawToken() {
- return dgAccessToken;
- }
- public String getUnexpiredToken() { // THIS METHOD MAY BLOCK.
- if (tokenStatus != TokenStatus.AUTHENTICATED) throw new IllegalStateException("Token is not available");
- long expiry = getJwtPayload(dgAccessToken).getLong("exp");
- if (System.currentTimeMillis() >= expiry-2000 || tokenStatus == TokenStatus.EXPIRED) {
- tokenStatus = TokenStatus.EXPIRED;
- try {
- repeatAuthenticate(5);
- } catch (Throwable t) {
- Main.getMain().setLastFatalError(t);
- throw new TokenExpiredException(t);
- }
- }
- return dgAccessToken;
- }
-
-
- private byte[] generateSharedSecret() {
- byte[] bts = new byte[32];
- secureRandom.nextBytes(bts);
- return bts;
- }
-
- public String repeatAuthenticate(int tries) {
- int cnt = 0;
- while(true) {
- try {
- reauthenticate();
- break;
- } catch (IOException | AuthenticationException | NoSuchAlgorithmException e) {
- e.printStackTrace();
- if (cnt == tries) throw new RuntimeException(e);
- try {
- Thread.sleep((long) Math.max(Math.pow(2, tries)* 100, 1000 * 10));
- } catch (InterruptedException ex) {}
- }
- cnt++;
- }
- return dgAccessToken;
- }
- public String reauthenticate() throws IOException, AuthenticationException, NoSuchAlgorithmException {
- try {
- authenticationLock.lock();
-
- tokenStatus = TokenStatus.UNAUTHENTICATED;
- dgAccessToken = null;
-
- MinecraftSessionService yggdrasilMinecraftSessionService = Minecraft.getMinecraft().getSessionService();
-
- Session SECURE_USER_SESSION = Minecraft.getMinecraft().getSession();
- dgAccessToken = requestAuth(SECURE_USER_SESSION.getProfile().getId(), SECURE_USER_SESSION.getProfile().getName()); // id: uuid, name: username
-
- JSONObject d = getJwtPayload(dgAccessToken);
- byte[] sharedSecret = generateSharedSecret(); // Notice.... shared secret is generated on the client side unlike dg 3.0. Yep, I was a stupid when making 3.0.
-
- String hash = calculateServerHash(sharedSecret, Base64.decodeBase64(d.getString("publicKey"))); // Public Key here is server's public key.
-
- byte[] encodedSharedSecret;
- try {
- Cipher cipher = Cipher.getInstance("RSA");
- cipher.init(Cipher.ENCRYPT_MODE, KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(Base64.decodeBase64(d.getString("publicKey")))));
- encodedSharedSecret = cipher.doFinal(sharedSecret);
- } catch (NoSuchPaddingException | IllegalBlockSizeException | BadPaddingException |
- InvalidKeySpecException |
- InvalidKeyException e) {
- throw new RuntimeException(e);
- } // Server connection is SSL but I still encrypt it using publicKey. Additional layer of security considering the request goes through cloudflare. (it's not like I don't trust cloudflare, but idk)
-
- yggdrasilMinecraftSessionService.joinServer(SECURE_USER_SESSION.getProfile(), SECURE_USER_SESSION.getToken(), hash); // Sent to "MOJANG" Server.
-
- JSONObject furtherStuff = verifyAuth(dgAccessToken, encodedSharedSecret);
-
- dgAccessToken = furtherStuff.getString("jwt");
- if ("TOS_PRIVACY_POLICY_ACCEPT_REQUIRED".equals(furtherStuff.getString("result"))) {
- tokenStatus = TokenStatus.PP_REQUIRED;
- throw new PrivacyPolicyRequiredException();
- }
- tokenStatus = TokenStatus.AUTHENTICATED;
- return this.dgAccessToken;
- } finally {
- authenticationLock.unlock();
- }
- }
-
- public String acceptLatestTOS() throws IOException {
- try {
- authenticationLock.lock();
- if (tokenStatus != TokenStatus.PP_REQUIRED) throw new IllegalStateException("Already accepted TOS");
- JSONObject furtherStuff = acceptPrivacyPolicy(dgAccessToken);
- dgAccessToken = furtherStuff.getString("jwt");
- if ("TOS_PRIVACY_POLICY_ACCEPT_REQUIRED".equals(furtherStuff.getString("result"))) {
- tokenStatus = TokenStatus.PP_REQUIRED;
- throw new PrivacyPolicyRequiredException();
- }
- tokenStatus = TokenStatus.AUTHENTICATED;
- return this.dgAccessToken;
- } finally {
- authenticationLock.unlock();
- }
- }
-
- public JSONObject getJwtPayload(String jwt) {
- String midPart = jwt.split("\\.")[1].replace("+", "-").replace("/", "_");
- String base64Decode = new String(Base64.decodeBase64(midPart)); // padding
- return new JSONObject(base64Decode);
- }
-
- private String requestAuth(UUID uuid, String nickname) throws IOException {
- HttpURLConnection urlConnection = request("POST", "/auth/v2/requestAuth");
- urlConnection.setRequestProperty("Content-Type", "application/json");
-
- urlConnection.getOutputStream().write(("{\"uuid\":\""+uuid.toString()+"\",\"nickname\":\""+nickname+"\"}").getBytes());
- try (InputStream is = obtainInputStream(urlConnection)) {
- String payload = String.join("\n", IOUtils.readLines(is));
- if (urlConnection.getResponseCode() != 200)
- System.out.println("/auth/requestAuth :: Received " + urlConnection.getResponseCode() + " along with\n" + payload);
-
- JSONObject json = new JSONObject(payload);
-
- if ("Success".equals(json.getString("status"))) {
- return json.getString("data");
- } else {
- throw new AuthServerException(json);
- }
- }
- }
- private JSONObject verifyAuth(String tempToken, byte[] encryptedSecret) throws IOException {
- HttpURLConnection urlConnection = request("POST", "/auth/v2/authenticate");
- urlConnection.setRequestProperty("Content-Type", "application/json");
-
- urlConnection.getOutputStream().write(("{\"jwt\":\""+tempToken+"\",\"sharedSecret\":\""+Base64.encodeBase64String(encryptedSecret)+"\"}").getBytes());
- try (InputStream is = obtainInputStream(urlConnection)) {
- String payload = String.join("\n", IOUtils.readLines(is));
- if (urlConnection.getResponseCode() != 200)
- System.out.println("/auth/authenticate :: Received " + urlConnection.getResponseCode() + " along with\n" + payload);
-
- JSONObject json = new JSONObject(payload);
-
- if ("Success".equals(json.getString("status"))) {
- return json.getJSONObject("data");
- } else {
- throw new AuthServerException(json);
- }
- }
- }
- private JSONObject acceptPrivacyPolicy(String tempToken) throws IOException {
- HttpURLConnection urlConnection = request("POST", "/auth/v2/acceptPrivacyPolicy");
-
- urlConnection.getOutputStream().write(tempToken.getBytes());
- try (InputStream is = obtainInputStream(urlConnection)) {
- String payload = String.join("\n", IOUtils.readLines(is));
- if (urlConnection.getResponseCode() != 200)
- System.out.println("/auth/authenticate :: Received " + urlConnection.getResponseCode() + " along with\n" + payload);
-
- JSONObject json = new JSONObject(payload);
-
- if ("Success".equals(json.getString("status"))) {
- return json.getJSONObject("data");
- } else {
- throw new AuthServerException(json);
- }
- }
- }
-
-
- private String calculateServerHash(byte[] a, byte[] b) throws NoSuchAlgorithmException {
- MessageDigest c = MessageDigest.getInstance("SHA-1");
- c.update("".getBytes());
- c.update(a);
- c.update(b);
- byte[] d = c.digest();
- return new BigInteger(d).toString(16);
- }
-
- public InputStream obtainInputStream(HttpURLConnection huc) {
- InputStream inputStream = null;
- try {
- inputStream = huc.getInputStream();
- } catch (Exception e) {
- inputStream = huc.getErrorStream();
- }
- return inputStream;
- }
-
- public HttpURLConnection request(String method, String url) throws IOException {
- HttpURLConnection urlConnection = (HttpURLConnection) new URL(Main.DOMAIN+url).openConnection();
- urlConnection.setRequestMethod(method); // TODO: setup SSL certificate here, because.... SOME PEOPLE HAVE THAT ISSUE, I HAVE NO IDEA WHY THEY DONT HAVE CLOUDFLARE CERTS INSTALLED ON THEM
- urlConnection.setRequestProperty("User-Agent", "DungeonsGuide/1.0");
- urlConnection.setDoInput(true);
- urlConnection.setDoOutput(true);
- urlConnection.setAllowUserInteraction(true);
- if (tokenStatus == TokenStatus.AUTHENTICATED)
- urlConnection.setRequestProperty("Authorization", "Bearer "+getUnexpiredToken());
- return urlConnection;
- }
-}
diff --git a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/authentication/TokenStatus.java b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/authentication/TokenStatus.java
deleted file mode 100644
index a83818b8..00000000
--- a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/authentication/TokenStatus.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.launcher.authentication;
-
-public enum TokenStatus {
- UNAUTHENTICATED,
- BANNED,
- PP_REQUIRED,
- AUTHENTICATED,
- EXPIRED
-}
diff --git a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/branch/UpdateRetrieverUtil.java b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/branch/UpdateRetrieverUtil.java
new file mode 100644
index 00000000..fe7e54dd
--- /dev/null
+++ b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/branch/UpdateRetrieverUtil.java
@@ -0,0 +1,182 @@
+package kr.syeyoung.dungeonsguide.launcher.branch;
+
+import kr.syeyoung.dungeonsguide.launcher.Main;
+import kr.syeyoung.dungeonsguide.launcher.auth.DGResponse;
+import kr.syeyoung.dungeonsguide.launcher.exceptions.AssetNotFoundException;
+import kr.syeyoung.dungeonsguide.launcher.exceptions.NoVersionFoundException;
+import kr.syeyoung.dungeonsguide.launcher.exceptions.ResponseParsingException;
+import lombok.Builder;
+import lombok.Data;
+import org.apache.commons.io.IOUtils;
+import org.json.JSONArray;
+import org.json.JSONObject;
+
+import javax.net.ssl.HttpsURLConnection;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.ProtocolException;
+import java.net.URL;
+import java.time.Instant;
+import java.util.List;
+import java.util.Optional;
+import java.util.UUID;
+import java.util.stream.Collectors;
+
+public class UpdateRetrieverUtil {
+ private static String getResponse(HttpsURLConnection connection) throws IOException {
+ connection.getResponseCode();
+ InputStream toRead = connection.getErrorStream();
+ if (toRead == null)
+ toRead = connection.getInputStream();
+ String payload = IOUtils.readLines(toRead).stream().collect(Collectors.joining("\n"));
+ return payload;
+ }
+
+ public static List<UpdateBranch> getUpdateBranches() throws IOException {
+ HttpsURLConnection connection = (HttpsURLConnection) new URL(Main.DOMAIN + "/updates/").openConnection();
+ connection.setRequestProperty("User-Agent", "DungeonsGuide/1.0");
+ connection.setRequestProperty("Content-Type", "application/json");
+ connection.setRequestMethod("GET");
+ connection.setDoInput(true);
+ connection.setDoOutput(true);
+
+ JSONArray jsonArray = new JSONArray(getResponse(connection));
+ return jsonArray.toList()
+ .stream()
+ .map(a -> (JSONObject)a)
+ .map(a -> {
+ UpdateBranch updateBranch = new UpdateBranch();
+ updateBranch.setId(a.getLong("id"));
+ updateBranch.setName(a.getString("name"));
+ updateBranch.setMetadata(a.getJSONObject("metadata"));
+ return updateBranch;
+ }).collect(Collectors.toList());
+ }
+
+ public static List<Update> getLatestUpdates(long branchId, int page) throws IOException {
+ HttpsURLConnection connection = (HttpsURLConnection) new URL(Main.DOMAIN + "/updates/"+branchId+"/?page="+page).openConnection();
+ connection.setRequestProperty("User-Agent", "DungeonsGuide/1.0");
+ connection.setRequestMethod("GET");
+ connection.setDoInput(true);
+ connection.setDoOutput(true);
+
+ JSONArray jsonArray = new JSONArray(getResponse(connection));
+ return jsonArray.toList()
+ .stream()
+ .map(a -> (JSONObject)a)
+ .map(a -> {
+ Update update = new Update();
+ update.setId(a.getLong("id"));
+ update.setBranchId(a.getLong("branchId"));
+ update.setName(a.getString("name"));
+ update.setUpdateLog(a.getString("updateLog"));
+ update.setMetadata(a.getJSONObject("metadata"));
+ update.setAssets(a.getJSONObject("assets").getJSONArray("assets").toList().stream().map(b -> (JSONObject)b)
+ .map(b -> {
+ Update.Asset asset = new Update.Asset();
+ asset.setName(b.getString("name"));
+ asset.setAssetId(UUID.fromString(b.getString("assetId")));
+ asset.setSize(b.getLong("size"));
+ asset.setObjectId(b.getString("objectId"));
+ return asset;
+ }).collect(Collectors.toList()));
+ update.setReleaseDate(Instant.parse(a.getString("releaseDate")));
+ return update;
+ }).collect(Collectors.toList());
+ }
+
+ public static Update getUpdate(long branchId, long updateId) throws IOException {
+ HttpsURLConnection connection = (HttpsURLConnection) new URL(Main.DOMAIN + "/updates/"+branchId+"/"+updateId).openConnection();
+ connection.setRequestProperty("User-Agent", "DungeonsGuide/1.0");
+ connection.setRequestMethod("GET");
+ connection.setDoInput(true);
+ connection.setDoOutput(true);
+
+ JSONObject a = new JSONObject(getResponse(connection));
+
+ Update update = new Update();
+ update.setId(a.getLong("id"));
+ update.setBranchId(a.getLong("branchId"));
+ update.setName(a.getString("name"));
+ update.setUpdateLog(a.getString("updateLog"));
+ update.setMetadata(a.getJSONObject("metadata"));
+ update.setAssets(a.getJSONObject("assets").getJSONArray("assets").toList().stream().map(b -> (JSONObject)b)
+ .map(b -> {
+ Update.Asset asset = new Update.Asset();
+ asset.setName(b.getString("name"));
+ asset.setAssetId(UUID.fromString(b.getString("assetId")));
+ asset.setSize(b.getLong("size"));
+ asset.setObjectId(b.getString("objectId"));
+ return asset;
+ }).collect(Collectors.toList()));
+ update.setReleaseDate(Instant.parse(a.getString("releaseDate")));
+ return update;
+ }
+
+ public static InputStream downloadFile(Update update, String assetName) throws IOException {
+ Update.Asset asset = update.getAssets().stream().filter(a -> a.getName().equals(assetName))
+ .findFirst().orElseThrow(() -> new AssetNotFoundException(update.getBranchId()+"", update.getId()+"("+update.getName()+")", assetName));
+
+
+ HttpsURLConnection connection = (HttpsURLConnection) new URL(Main.DOMAIN + "/updates/"+update.getBranchId()+"/"+update.getId()+"/"+asset.getAssetId()).openConnection();
+ connection.setRequestProperty("User-Agent", "DungeonsGuide/1.0");
+ connection.setRequestMethod("GET");
+ connection.setDoInput(true);
+ connection.setDoOutput(true);
+
+ JSONObject result = new JSONObject(getResponse(connection));
+ String url = result.getString("url");
+ String method = result.getString("method");
+
+ connection = (HttpsURLConnection) new URL(url).openConnection();
+ connection.setRequestProperty("User-Agent", "DungeonsGuide/1.0");
+ connection.setRequestMethod(method);
+ return connection.getInputStream();
+ }
+
+ @Data @Builder
+ public static class VersionInfo {
+ String friendlyBranchName = "";
+ long branchId;
+ String friendlyVersionName = "";
+ long updateId;
+ }
+ public static VersionInfo getIds(String branch, String version) throws IOException {
+ long branchId = -1, updateId = -1;
+ UpdateBranch branch1 = null;
+ for (UpdateBranch updateBranch : UpdateRetrieverUtil.getUpdateBranches()) {
+ if (updateBranch.getName().equals(branch) || (branch.equals("$default") &&
+ Optional.ofNullable(updateBranch.getMetadata())
+ .map(a -> a.getJSONObject("additionalMeta"))
+ .map(a -> a.getBoolean("defaultMod")).orElse(false))) {
+ branchId = updateBranch.getId();
+ branch1 = updateBranch;
+ break;
+ }
+ }
+ if (branchId == -1) return null;
+
+ Update target = null;
+ int page = 0;
+ while (updateId == -1) {
+ List<Update> updateList = UpdateRetrieverUtil.getLatestUpdates(branchId, page++);
+ if (updateList == null || updateList.isEmpty()) return null;
+ for (Update update : updateList) {
+ if (update.getName().equals(version) || version.equals("latest")) { // if latest, get the first one.
+ updateId = update.getId();
+ target = update;
+ break;
+ }
+ }
+ }
+
+
+ return VersionInfo.builder()
+ .branchId(branchId)
+ .updateId(updateId)
+ .friendlyBranchName(branch1.getName())
+ .friendlyVersionName(target.getName())
+ .build();
+ }
+}
diff --git a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/events/AuthChangedEvent.java b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/events/AuthChangedEvent.java
new file mode 100644
index 00000000..249c287f
--- /dev/null
+++ b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/events/AuthChangedEvent.java
@@ -0,0 +1,12 @@
+package kr.syeyoung.dungeonsguide.launcher.events;
+
+
+import kr.syeyoung.dungeonsguide.launcher.auth.token.AuthToken;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import net.minecraftforge.fml.common.eventhandler.Event;
+
+@AllArgsConstructor @Getter
+public class AuthChangedEvent extends Event {
+ private AuthToken authToken;
+}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/api/DungeonSpecificData.java b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/exceptions/AssetNotFoundException.java
index 56230e1f..d04608e4 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/api/DungeonSpecificData.java
+++ b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/exceptions/AssetNotFoundException.java
@@ -16,14 +16,20 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
-package kr.syeyoung.dungeonsguide.features.impl.party.api;
+package kr.syeyoung.dungeonsguide.launcher.exceptions;
-import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
-@AllArgsConstructor
-public class DungeonSpecificData<T> {
- private final DungeonType type;
- private final T data;
+public class AssetNotFoundException extends RuntimeException {
+ private String branch;
+ private String version;
+ private String asset;
+
+ public AssetNotFoundException(String branch, String version, String asset) {
+ super("No asset found: "+branch+" - "+version+" - "+asset);
+ this.branch = branch;
+ this.version = version;
+ this.asset = asset;
+ }
}
diff --git a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/exceptions/AuthFailedExeption.java b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/exceptions/AuthFailedExeption.java
new file mode 100644
index 00000000..d860afb6
--- /dev/null
+++ b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/exceptions/AuthFailedExeption.java
@@ -0,0 +1,7 @@
+package kr.syeyoung.dungeonsguide.launcher.exceptions;
+
+public class AuthFailedExeption extends AuthenticationUnavailableException {
+ public AuthFailedExeption(Throwable cause) {
+ super(cause);
+ }
+}
diff --git a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/exceptions/AuthServerException.java b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/exceptions/AuthServerException.java
index be610c3f..67647b9b 100644
--- a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/exceptions/AuthServerException.java
+++ b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/exceptions/AuthServerException.java
@@ -18,17 +18,21 @@
package kr.syeyoung.dungeonsguide.launcher.exceptions;
+import kr.syeyoung.dungeonsguide.launcher.auth.DGResponse;
+import kr.syeyoung.dungeonsguide.launcher.util.QRCodeGenerator;
import org.json.JSONObject;
-public class AuthServerException extends RuntimeException {
- private JSONObject payload;
+import java.util.Objects;
- public AuthServerException(JSONObject payload) {
- super(payload.getString("errorMessage"));
- this.payload = payload;
+public class AuthServerException extends AuthenticationUnavailableException {
+ private DGResponse response;
+
+ public AuthServerException(DGResponse response) {
+ super(response.getErrorMessage() == null ? "Invalid Server Response" : response.getErrorMessage());
+ this.response = response;
}
public String getQRCode() {
- return payload.getString("data");
+ return response.getQrCode() == null ? null : response.getQrCode();
}
}
diff --git a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/exceptions/AuthenticationUnavailableException.java b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/exceptions/AuthenticationUnavailableException.java
new file mode 100644
index 00000000..a42ddd93
--- /dev/null
+++ b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/exceptions/AuthenticationUnavailableException.java
@@ -0,0 +1,12 @@
+package kr.syeyoung.dungeonsguide.launcher.exceptions;
+
+public class AuthenticationUnavailableException extends RuntimeException {
+ public AuthenticationUnavailableException(Throwable cause){
+ super(cause);
+ }
+
+ public AuthenticationUnavailableException(String s) {
+ super(s);
+ }
+ public AuthenticationUnavailableException() {}
+}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/events/PlayerInteractEntityEvent.java b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/exceptions/InvalidSignatureException.java
index e11bf0cb..bda43ea4 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/events/PlayerInteractEntityEvent.java
+++ b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/exceptions/InvalidSignatureException.java
@@ -16,24 +16,22 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
-package kr.syeyoung.dungeonsguide.events;
+package kr.syeyoung.dungeonsguide.launcher.exceptions;
-import lombok.AllArgsConstructor;
+import kr.syeyoung.dungeonsguide.launcher.branch.Update;
import lombok.Getter;
-import lombok.Setter;
-import net.minecraft.entity.Entity;
-import net.minecraftforge.fml.common.eventhandler.Event;
-@AllArgsConstructor
-public class PlayerInteractEntityEvent extends Event {
+@Getter
+public class InvalidSignatureException extends RuntimeException {
+ private Update update;
- @Getter @Setter
- private boolean attack;
- @Getter @Setter
- private Entity entity;
+ public InvalidSignatureException(Update update, String message) {
+ super(message);
+ this.update = update;
+ }
- @Override
- public boolean isCancelable() {
- return true;
+ public InvalidSignatureException(Update update, Throwable t) {
+ super(t);
+ this.update = update;
}
}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/api/Skill.java b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/exceptions/NoVersionFoundException.java
index f0d8e88b..b99d12c1 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/api/Skill.java
+++ b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/exceptions/NoVersionFoundException.java
@@ -16,16 +16,23 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
-package kr.syeyoung.dungeonsguide.features.impl.party.api;
+package kr.syeyoung.dungeonsguide.launcher.exceptions;
-import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
-@AllArgsConstructor
-public enum Skill {
- RUNECRAFTING("runecrafting", "Runecrafting"), COMBAT("combat", "Combat"), MINING("mining", "Mining"), ALCHEMY("alchemy", "Alchemy"), FARMING("farming", "Farming"), TAMING("taming", "Taming"), ENCHANTING("enchanting", "Enchanting"), FISHING("fishing", "Fishing"), FORAGING("foraging", "Foraging"), CARPENTRY("carpentry", "Carpentry");
+public class NoVersionFoundException extends RuntimeException {
+ private String branch;
+ private String version;
- private final String jsonName;
- private final String friendlyName;
+ public NoVersionFoundException(String branch, String version) {
+ super("No version found: "+branch+" - "+version);
+ this.branch = branch;
+ this.version = version;
+ }
+ public NoVersionFoundException(String branch, String version, Throwable e) {
+ super("No version found: "+branch+" - "+version, e);
+ this.branch = branch;
+ this.version = version;
+ }
}
diff --git a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/exceptions/PrivacyPolicyRequiredException.java b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/exceptions/PrivacyPolicyRequiredException.java
index 006e03ca..a48632dc 100644
--- a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/exceptions/PrivacyPolicyRequiredException.java
+++ b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/exceptions/PrivacyPolicyRequiredException.java
@@ -18,5 +18,5 @@
package kr.syeyoung.dungeonsguide.launcher.exceptions;
-public class PrivacyPolicyRequiredException extends RuntimeException{
+public class PrivacyPolicyRequiredException extends AuthenticationUnavailableException {
}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/api/FloorSpecificData.java b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/exceptions/ResponseParsingException.java
index 18641c79..3933b78e 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/api/FloorSpecificData.java
+++ b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/exceptions/ResponseParsingException.java
@@ -16,14 +16,18 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
-package kr.syeyoung.dungeonsguide.features.impl.party.api;
+package kr.syeyoung.dungeonsguide.launcher.exceptions;
-import lombok.AllArgsConstructor;
import lombok.Getter;
+import org.json.JSONObject;
+
+public class ResponseParsingException extends RuntimeException {
+ @Getter
+ private String payload;
+
+ public ResponseParsingException(String payload, String message) {
+ super(message);
+ this.payload = payload;
+ }
-@Getter
-@AllArgsConstructor
-public class FloorSpecificData<T> {
- private final int floor;
- private final T data;
}
diff --git a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/exceptions/TokenExpiredException.java b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/exceptions/TokenExpiredException.java
index 2c115e2f..4826b1ba 100644
--- a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/exceptions/TokenExpiredException.java
+++ b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/exceptions/TokenExpiredException.java
@@ -18,7 +18,7 @@
package kr.syeyoung.dungeonsguide.launcher.exceptions;
-public class TokenExpiredException extends RuntimeException{
+public class TokenExpiredException extends AuthenticationUnavailableException {
public TokenExpiredException(Throwable parent) {
super(parent);
diff --git a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/gui/screen/GuiDisplayer.java b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/gui/screen/GuiDisplayer.java
new file mode 100644
index 00000000..ab772e5d
--- /dev/null
+++ b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/gui/screen/GuiDisplayer.java
@@ -0,0 +1,44 @@
+package kr.syeyoung.dungeonsguide.launcher.gui.screen;
+
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.gui.GuiMainMenu;
+import net.minecraftforge.client.event.GuiOpenEvent;
+import net.minecraftforge.fml.common.eventhandler.EventPriority;
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+
+import java.util.LinkedList;
+import java.util.Queue;
+
+public class GuiDisplayer {
+ public static GuiDisplayer INSTANCE = new GuiDisplayer();
+ private GuiDisplayer() {}
+
+ private Queue<SpecialGuiScreen> guiScreensToShow = new LinkedList<>();
+ private boolean isMcLoaded;
+
+
+ @SubscribeEvent(priority = EventPriority.LOWEST)
+ public void onGuiOpen(GuiOpenEvent guiOpenEvent) {
+ if (guiOpenEvent.gui instanceof GuiMainMenu) {
+ isMcLoaded = true;
+ }
+ if (guiScreensToShow.size() > 0 && guiOpenEvent.gui != guiScreensToShow.peek()) {
+ SpecialGuiScreen gui = guiScreensToShow.peek();
+ if (gui == null) return;
+ gui.setOnDismiss(guiScreensToShow::poll);
+ guiOpenEvent.gui = gui;
+ }
+ }
+
+ public void displayGui(SpecialGuiScreen specialGuiScreen) {
+ if (specialGuiScreen == null) return;
+ if (!guiScreensToShow.contains(specialGuiScreen))
+ guiScreensToShow.add(specialGuiScreen);
+ if (isMcLoaded) {
+ SpecialGuiScreen gui = guiScreensToShow.peek();
+ if (gui == null) return;
+ gui.setOnDismiss(guiScreensToShow::poll);
+ Minecraft.getMinecraft().displayGuiScreen(gui);
+ }
+ }
+}
diff --git a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/gui/GuiLoadingError.java b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/gui/screen/GuiLoadingError.java
index f699b1d7..436d5d8c 100644
--- a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/gui/GuiLoadingError.java
+++ b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/gui/screen/GuiLoadingError.java
@@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
-package kr.syeyoung.dungeonsguide.launcher.gui;
+package kr.syeyoung.dungeonsguide.launcher.gui.screen;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.*;
@@ -27,18 +27,14 @@ import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.PrintStream;
-public class GuiLoadingError extends GuiScreen {
- static Throwable cause;
+public class GuiLoadingError extends SpecialGuiScreen {
private final String stacktrace;
- private final GuiScreen originalGUI;
- public GuiLoadingError(GuiScreen originalGUI) {
+ public GuiLoadingError(Throwable cause) {
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
PrintStream printStream = new PrintStream(byteArrayOutputStream);
cause.printStackTrace(printStream);
this.stacktrace = byteArrayOutputStream.toString();
-
- this.originalGUI = originalGUI;
}
@Override
@@ -54,7 +50,7 @@ public class GuiLoadingError extends GuiScreen {
if (button.id == 0) {
FMLCommonHandler.instance().exitJava(-1,true);
} else if (button.id == 1) {
- Minecraft.getMinecraft().displayGuiScreen(originalGUI);
+ dismiss();
}
}
diff --git a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/gui/GuiPrivacyPolicy.java b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/gui/screen/GuiPrivacyPolicy.java
index b7d21b16..f7acb18a 100644
--- a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/gui/GuiPrivacyPolicy.java
+++ b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/gui/screen/GuiPrivacyPolicy.java
@@ -1,17 +1,12 @@
-package kr.syeyoung.dungeonsguide.launcher.gui;
+package kr.syeyoung.dungeonsguide.launcher.gui.screen;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.*;
-import net.minecraft.client.renderer.GlStateManager;
-import net.minecraft.client.renderer.Tessellator;
-import net.minecraft.client.renderer.WorldRenderer;
-import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
-import net.minecraftforge.fml.common.FMLCommonHandler;
import org.lwjgl.opengl.GL11;
import java.io.IOException;
-public class GuiPrivacyPolicy extends GuiScreen {
+public class GuiPrivacyPolicy extends SpecialGuiScreen {
@Override
public void initGui() {
ScaledResolution sr = new ScaledResolution(Minecraft.getMinecraft());
@@ -25,8 +20,9 @@ public class GuiPrivacyPolicy extends GuiScreen {
super.actionPerformed(button);
if (button.id == 0) {
// accept
+ dismiss();
} else if (button.id == 1) {
- Minecraft.getMinecraft().displayGuiScreen(null);
+ dismiss();
}
}
@@ -38,7 +34,7 @@ public class GuiPrivacyPolicy extends GuiScreen {
ScaledResolution sr = new ScaledResolution(Minecraft.getMinecraft());
FontRenderer fontRenderer = Minecraft.getMinecraft().fontRendererObj;
- fontRenderer.drawString("", (sr.getScaledWidth()-fontRenderer.getStringWidth("Please accept or deny Dungeons Guide Privacy Policy to continue"))/2,40,0xFFFF0000);
+ fontRenderer.drawString("Please accept or deny Dungeons Guide Privacy Policy to continue", (sr.getScaledWidth()-fontRenderer.getStringWidth("Please accept or deny Dungeons Guide Privacy Policy to continue"))/2,40,0xFFFF0000);
super.drawScreen(mouseX, mouseY, partialTicks);
diff --git a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/gui/screen/GuiReferenceLeak.java b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/gui/screen/GuiReferenceLeak.java
new file mode 100644
index 00000000..9c0a5980
--- /dev/null
+++ b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/gui/screen/GuiReferenceLeak.java
@@ -0,0 +1,90 @@
+/*
+ * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
+ * Copyright (C) 2021 cyoung06
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+package kr.syeyoung.dungeonsguide.launcher.gui.screen;
+
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.gui.FontRenderer;
+import net.minecraft.client.gui.Gui;
+import net.minecraft.client.gui.GuiButton;
+import net.minecraft.client.gui.ScaledResolution;
+import net.minecraftforge.fml.common.FMLCommonHandler;
+import org.lwjgl.opengl.GL11;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.PrintStream;
+
+public class GuiReferenceLeak extends SpecialGuiScreen {
+ private final String stacktrace;
+ public GuiReferenceLeak(Throwable cause) {
+
+ ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
+ PrintStream printStream = new PrintStream(byteArrayOutputStream);
+ cause.printStackTrace(printStream);
+ this.stacktrace = byteArrayOutputStream.toString();
+ }
+
+ @Override
+ public void initGui() {
+ ScaledResolution sr = new ScaledResolution(Minecraft.getMinecraft());
+ this.buttonList.add(new GuiButton(0, sr.getScaledWidth()/2-100,sr.getScaledHeight()-70 ,"Close Minecraft"));
+ this.buttonList.add(new GuiButton(1, sr.getScaledWidth()/2-100,sr.getScaledHeight()-40 ,"Play With DG in Inconsistent State"));
+ }
+
+ @Override
+ protected void actionPerformed(GuiButton button) throws IOException {
+ super.actionPerformed(button);
+ if (button.id == 0) {
+ FMLCommonHandler.instance().exitJava(-1,true);
+ } else if (button.id == 1) {
+ dismiss();
+ }
+ }
+
+ @Override
+ public void drawScreen(int mouseX, int mouseY, float partialTicks) {
+ super.drawBackground(1);
+
+ ScaledResolution sr = new ScaledResolution(Minecraft.getMinecraft());
+ FontRenderer fontRenderer = Minecraft.getMinecraft().fontRendererObj;
+ fontRenderer.drawString("DungeonsGuide has ran into error while reloading", (sr.getScaledWidth()-fontRenderer.getStringWidth("DungeonsGuide has ran into error while reloading"))/2,40,0xFFFF0000);
+ fontRenderer.drawString("Please contact DungeonsGuide support with this screen", (sr.getScaledWidth()-fontRenderer.getStringWidth("Please contact developer with this screen"))/2, (int) (40+fontRenderer.FONT_HEIGHT*1.5),0xFFFF0000);
+ fontRenderer.drawString("Playing in this state is VERY UNSUGGESTED. Undesired behaviors might occur.", (sr.getScaledWidth()-fontRenderer.getStringWidth("Playing in this state is VERY UNSUGGESTED. Undesired behaviors might occur."))/2, (int) (40+fontRenderer.FONT_HEIGHT*3),0xFFFF0000);
+
+ int tenth = sr.getScaledWidth() / 10;
+
+ Gui.drawRect(tenth, 90,sr.getScaledWidth()-tenth, sr.getScaledHeight()-80, 0xFF5B5B5B);
+ String[] split = stacktrace.split("\n");
+ clip(sr, tenth, 90,sr.getScaledWidth()-2*tenth, sr.getScaledHeight()-150);
+ GL11.glEnable(GL11.GL_SCISSOR_TEST);
+ for (int i = 0; i < split.length; i++) {
+ fontRenderer.drawString(split[i].replace("\t", " "), tenth+2,i*fontRenderer.FONT_HEIGHT + 92, 0xFFFFFFFF);
+ }
+ GL11.glDisable(GL11.GL_SCISSOR_TEST);
+
+ super.drawScreen(mouseX, mouseY, partialTicks);
+ }
+
+ public static void clip(ScaledResolution resolution, int x, int y, int width, int height) {
+ if (width < 0 || height < 0) return;
+
+ int scale = resolution.getScaleFactor();
+ GL11.glScissor((x ) * scale, Minecraft.getMinecraft().displayHeight - (y + height) * scale, (width) * scale, height * scale);
+ }
+}
diff --git a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/gui/screen/SpecialGuiScreen.java b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/gui/screen/SpecialGuiScreen.java
new file mode 100644
index 00000000..0a9f2602
--- /dev/null
+++ b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/gui/screen/SpecialGuiScreen.java
@@ -0,0 +1,17 @@
+package kr.syeyoung.dungeonsguide.launcher.gui.screen;
+
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.gui.GuiScreen;
+
+public abstract class SpecialGuiScreen extends GuiScreen {
+
+ private Runnable onDismiss;
+ public void setOnDismiss(Runnable dismissed) {
+ this.onDismiss = dismissed;
+ }
+
+ protected void dismiss() {
+ onDismiss.run();
+ Minecraft.getMinecraft().displayGuiScreen(null);
+ }
+}
diff --git a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/loader/ByteStreamURLHandler.java b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/loader/ByteStreamURLHandler.java
new file mode 100644
index 00000000..d0859076
--- /dev/null
+++ b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/loader/ByteStreamURLHandler.java
@@ -0,0 +1,46 @@
+package kr.syeyoung.dungeonsguide.launcher.loader;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.net.URLConnection;
+import java.net.URLStreamHandler;
+
+public class ByteStreamURLHandler extends URLStreamHandler {
+ private InputStreamGenerator converter;
+ public ByteStreamURLHandler(InputStreamGenerator converter) {
+ this.converter = converter;
+ }
+ public interface InputStreamGenerator {
+ InputStream convert(String name);
+ }
+
+ public class ByteStreamURLConnection extends URLConnection {
+
+ /**
+ * Constructs a URL connection to the specified URL. A connection to
+ * the object referenced by the URL is not created.
+ *
+ * @param url the specified URL.
+ */
+ protected ByteStreamURLConnection(URL url) {
+ super(url);
+ connected = false;
+ }
+
+ @Override
+ public void connect() throws IOException {
+ connected = true;
+ }
+
+ @Override
+ public InputStream getInputStream() throws IOException {
+ return converter.convert(url.getPath());
+ }
+ }
+
+ @Override
+ protected URLConnection openConnection(URL u) throws IOException {
+ return new ByteStreamURLConnection(u);
+ }
+}
diff --git a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/loader/DGClassLoader.java b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/loader/DGClassLoader.java
new file mode 100644
index 00000000..1fbc39b0
--- /dev/null
+++ b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/loader/DGClassLoader.java
@@ -0,0 +1,81 @@
+package kr.syeyoung.dungeonsguide.launcher.loader;
+
+import sun.misc.Resource;
+
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URL;
+
+public abstract class DGClassLoader extends ClassLoader implements ByteStreamURLHandler.InputStreamGenerator{
+ public DGClassLoader(ClassLoader parent) {
+ super(parent);
+ }
+
+ public Class<?> loadClass(String name, boolean resolve)
+ throws ClassNotFoundException
+ {
+ synchronized (getClassLoadingLock(name)) {
+ // First, check if the class has already been loaded
+ Class<?> c = findLoadedClass(name);
+ if (c == null) {
+ try {
+ if (c == null) {
+ long t0 = System.nanoTime();
+ c = findClass(name);
+
+ sun.misc.PerfCounter.getFindClassTime().addElapsedTimeFrom(t0);
+ sun.misc.PerfCounter.getFindClasses().increment();
+ }
+ } catch (ClassNotFoundException e) {
+ // ClassNotFoundException thrown if class not found
+ // from the non-null parent class loader
+ }
+ if (getParent() != null && c == null) {
+ long t0 = System.nanoTime();
+ c = getParent().loadClass(name);
+ long t1 = System.nanoTime();
+ sun.misc.PerfCounter.getParentDelegationTime().addTime(t1 - t0);
+ }
+ }
+ if (resolve) {
+ resolveClass(c);
+ }
+ return c;
+ }
+ }
+
+ @Override
+ protected Class<?> findClass(String name) throws ClassNotFoundException {
+ byte[] res;
+ try {
+ res = getClassBytes(name);
+ } catch (IOException e) {
+ throw new ClassNotFoundException(name, e);
+ }
+ if (res != null) {
+ return defineClass(name, res, 0, res.length);
+ } else {
+ throw new ClassNotFoundException(name);
+ }
+ }
+
+ public abstract byte[] getClassBytes(String name) throws IOException;
+
+ public URL getResource(String name) {
+ URL url = findResource(name);
+ if (url == null && getParent() != null ) {
+ url = getParent().getResource(name);
+ }
+ return url;
+ }
+
+ private ByteStreamURLHandler urlHandler = new ByteStreamURLHandler(this);
+ @Override
+ public URL findResource(String name) {
+ try {
+ return new URL("dungeonsguide", "",0, name, urlHandler);
+ } catch (MalformedURLException e) {
+ throw new RuntimeException(e);
+ }
+ }
+}
diff --git a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/loader/IDGLoader.java b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/loader/IDGLoader.java
index 53d9b70d..a79fdb7e 100644
--- a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/loader/IDGLoader.java
+++ b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/loader/IDGLoader.java
@@ -19,21 +19,19 @@
package kr.syeyoung.dungeonsguide.launcher.loader;
import kr.syeyoung.dungeonsguide.launcher.DGInterface;
-import kr.syeyoung.dungeonsguide.launcher.authentication.Authenticator;
import kr.syeyoung.dungeonsguide.launcher.exceptions.ReferenceLeakedException;
-import net.minecraftforge.common.config.Configuration;
-import java.io.InputStream;
+import java.io.IOException;
public interface IDGLoader {
- void loadJar(Authenticator authenticator) throws InstantiationException, IllegalAccessException, ClassNotFoundException;
+ DGInterface loadDungeonsGuide() throws InstantiationException, IllegalAccessException, ClassNotFoundException, IOException;
DGInterface getInstance();
- void unloadJar() throws ReferenceLeakedException;
+ void unloadDungeonsGuide() throws ReferenceLeakedException;
boolean isUnloadable();
boolean isLoaded();
- String strategyName();
+ String loaderName();
String version();
}
diff --git a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/loader/JarLoader.java b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/loader/JarLoader.java
index 0b6cf124..fa86054d 100644
--- a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/loader/JarLoader.java
+++ b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/loader/JarLoader.java
@@ -20,9 +20,13 @@ package kr.syeyoung.dungeonsguide.launcher.loader;
import kr.syeyoung.dungeonsguide.launcher.DGInterface;
import kr.syeyoung.dungeonsguide.launcher.Main;
-import kr.syeyoung.dungeonsguide.launcher.authentication.Authenticator;
import kr.syeyoung.dungeonsguide.launcher.exceptions.ReferenceLeakedException;
+import org.apache.commons.io.IOUtils;
+import sun.misc.Resource;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
import java.io.InputStream;
import java.lang.ref.PhantomReference;
import java.lang.ref.Reference;
@@ -30,6 +34,9 @@ import java.lang.ref.ReferenceQueue;
import java.lang.ref.WeakReference;
import java.net.URL;
import java.net.URLClassLoader;
+import java.util.HashMap;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipInputStream;
public class JarLoader implements IDGLoader {
private DGInterface dgInterface;
@@ -38,61 +45,42 @@ public class JarLoader implements IDGLoader {
private boolean loaded;
- public static class JarClassLoader extends URLClassLoader {
- public JarClassLoader(URL[] urls, ClassLoader parent) {
- super(urls, parent);
- }
+ public static class JarClassLoader extends DGClassLoader {
+ public JarClassLoader(ClassLoader parent, ZipInputStream zipInputStream) throws IOException {
+ super(parent);
- @Override
- protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException {
-
- synchronized (getClassLoadingLock(name)) {
- Class<?> c = findLoadedClass(name);
- if (c == null) {
-
- try {
- if (c == null) {
- long t0 = System.nanoTime();
- c = findClass(name);
-
- sun.misc.PerfCounter.getFindClassTime().addElapsedTimeFrom(t0);
- sun.misc.PerfCounter.getFindClasses().increment();
- }
- } catch (ClassNotFoundException e) {
- // ClassNotFoundException thrown if class not found
- // from the non-null parent class loader
- }
- if (getParent() != null && c == null) {
- long t0 = System.nanoTime();
- c = getParent().loadClass(name);
- long t1 = System.nanoTime();
- sun.misc.PerfCounter.getParentDelegationTime().addTime(t1 - t0);
- }
- }
- if (resolve) {
- resolveClass(c);
- }
- return c;
+ ZipEntry zipEntry;
+ while ((zipEntry=zipInputStream.getNextEntry()) != null) {
+ this.loadedResources.put(zipEntry.getName(), IOUtils.toByteArray(zipInputStream));
}
+
+ zipInputStream.close();
+ }
+ private final HashMap<String, byte[]> loadedResources = new HashMap<String, byte[]>();
+ @Override
+ public byte[] getClassBytes(String name) throws IOException { // . separated.
+ return this.loadedResources.get(name.replace(".", "/"));
}
- public Class<?> loadClassResolve(String name, boolean resolve) throws ClassNotFoundException {
- return this.loadClass(name, resolve);
+ @Override
+ public InputStream convert(String name) { // / separated
+ if (this.loadedResources.containsKey(name.substring(1)))
+ return new ByteArrayInputStream(this.loadedResources.get(name.substring(1)));
+ return null;
}
}
private JarClassLoader classLoader;
@Override
- public void loadJar(Authenticator authenticator) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
+ public DGInterface loadDungeonsGuide() throws ClassNotFoundException, InstantiationException, IllegalAccessException, IOException {
if (dgInterface != null) throw new IllegalStateException("Already loaded");
- classLoader = new JarClassLoader(new URL[] {
- Main.class.getResource("/mod.jar")
- }, this.getClass().getClassLoader());
+ classLoader = new JarClassLoader(this.getClass().getClassLoader(), new ZipInputStream(JarLoader.class.getResourceAsStream("/mod.jar")));
- dgInterface = (DGInterface) classLoader.loadClassResolve("kr.syeyoung.dungeonsguide.DungeonsGuide", true).newInstance();
+ dgInterface = (DGInterface) classLoader.loadClass("kr.syeyoung.dungeonsguide.DungeonsGuide", true).newInstance();
phantomReference = new PhantomReference<>(classLoader, refQueue);
+ return dgInterface;
}
@Override
@@ -101,7 +89,7 @@ public class JarLoader implements IDGLoader {
}
@Override
- public void unloadJar() throws ReferenceLeakedException {
+ public void unloadDungeonsGuide() throws ReferenceLeakedException {
classLoader = null;
dgInterface.unload();
dgInterface = null;
@@ -123,7 +111,7 @@ public class JarLoader implements IDGLoader {
}
@Override
- public String strategyName() {
+ public String loaderName() {
return "jar";
}
diff --git a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/loader/LocalLoader.java b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/loader/LocalLoader.java
index 1338138d..683f77d0 100644
--- a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/loader/LocalLoader.java
+++ b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/loader/LocalLoader.java
@@ -19,18 +19,55 @@
package kr.syeyoung.dungeonsguide.launcher.loader;
import kr.syeyoung.dungeonsguide.launcher.DGInterface;
-import kr.syeyoung.dungeonsguide.launcher.authentication.Authenticator;
import kr.syeyoung.dungeonsguide.launcher.exceptions.ReferenceLeakedException;
+import org.apache.commons.io.IOUtils;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
import java.io.InputStream;
+import java.lang.ref.PhantomReference;
+import java.lang.ref.Reference;
+import java.lang.ref.ReferenceQueue;
+import java.util.HashMap;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipInputStream;
public class LocalLoader implements IDGLoader {
private DGInterface dgInterface;
+ private ReferenceQueue<ClassLoader> refQueue = new ReferenceQueue<>();
+ private PhantomReference<ClassLoader> phantomReference;
+
+ private boolean loaded;
+
+ public static class LocalClassLoader extends DGClassLoader {
+ public LocalClassLoader(ClassLoader parent) throws IOException {
+ super(parent);
+ }
+ @Override
+ public byte[] getClassBytes(String name) throws IOException { // . separated.
+ InputStream in = convert("/"+name.replace(".", "/"));
+ if (in == null) return null;
+ return IOUtils.toByteArray(in);
+ }
+
+ @Override
+ public InputStream convert(String name) { // / separated
+ return LocalLoader.class.getResourceAsStream(name);
+ }
+ }
+
+ private LocalClassLoader classLoader;
+
@Override
- public void loadJar(Authenticator authenticator) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
+ public DGInterface loadDungeonsGuide() throws ClassNotFoundException, InstantiationException, IllegalAccessException, IOException {
if (dgInterface != null) throw new IllegalStateException("Already loaded");
- dgInterface = (DGInterface) Class.forName("kr.syeyoung.dungeonsguide.DungeonsGuide").newInstance();
+
+ classLoader = new LocalClassLoader(this.getClass().getClassLoader());
+
+ dgInterface = (DGInterface) classLoader.loadClass("kr.syeyoung.dungeonsguide.DungeonsGuide", true).newInstance();
+ phantomReference = new PhantomReference<>(classLoader, refQueue);
+ return dgInterface;
}
@Override
@@ -39,12 +76,20 @@ public class LocalLoader implements IDGLoader {
}
@Override
- public void unloadJar() throws ReferenceLeakedException {
- throw new UnsupportedOperationException();
+ public void unloadDungeonsGuide() throws ReferenceLeakedException {
+ classLoader = null;
+ dgInterface.unload();
+ dgInterface = null;
+ System.gc();// pls do
+ Reference<? extends ClassLoader> t = refQueue.poll();
+ if (t == null) throw new ReferenceLeakedException(); // Why do you have to be that strict? Well, to tell them to actually listen on DungeonsGuideReloadListener. If it starts causing issues then I will remove check cus it's not really loaded (classes are loaded by child classloader)
+ t.clear();
+ phantomReference = null;
}
+
@Override
public boolean isUnloadable() {
- return false;
+ return true;
}
@Override
@@ -53,7 +98,7 @@ public class LocalLoader implements IDGLoader {
}
@Override
- public String strategyName() {
+ public String loaderName() {
return "local";
}
diff --git a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/loader/RemoteLoader.java b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/loader/RemoteLoader.java
new file mode 100644
index 00000000..719f5cce
--- /dev/null
+++ b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/loader/RemoteLoader.java
@@ -0,0 +1,152 @@
+/*
+ * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
+ * Copyright (C) 2021 cyoung06
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+package kr.syeyoung.dungeonsguide.launcher.loader;
+
+import kr.syeyoung.dungeonsguide.launcher.DGInterface;
+import kr.syeyoung.dungeonsguide.launcher.branch.Update;
+import kr.syeyoung.dungeonsguide.launcher.branch.UpdateBranch;
+import kr.syeyoung.dungeonsguide.launcher.branch.UpdateRetrieverUtil;
+import kr.syeyoung.dungeonsguide.launcher.exceptions.InvalidSignatureException;
+import kr.syeyoung.dungeonsguide.launcher.exceptions.NoVersionFoundException;
+import kr.syeyoung.dungeonsguide.launcher.exceptions.ReferenceLeakedException;
+import org.apache.commons.io.IOUtils;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.lang.ref.PhantomReference;
+import java.lang.ref.Reference;
+import java.lang.ref.ReferenceQueue;
+import java.util.HashMap;
+import java.util.List;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipInputStream;
+
+public class RemoteLoader implements IDGLoader {
+ private DGInterface dgInterface;
+ private ReferenceQueue<ClassLoader> refQueue = new ReferenceQueue<>();
+ private PhantomReference<ClassLoader> phantomReference;
+
+ private boolean loaded;
+
+ public RemoteLoader(String friendlyBranchName, long branchId, long updateId) {
+ this.friendlyBranchName = friendlyBranchName;
+ this.branchId = branchId;
+ this.updateId = updateId;
+ }
+
+
+ public static class JarClassLoader extends DGClassLoader {
+ public JarClassLoader(ClassLoader parent, ZipInputStream zipInputStream) throws IOException {
+ super(parent);
+
+ ZipEntry zipEntry;
+ while ((zipEntry=zipInputStream.getNextEntry()) != null) {
+ this.loadedResources.put(zipEntry.getName(), IOUtils.toByteArray(zipInputStream));
+ }
+
+ zipInputStream.close();
+ }
+ private final HashMap<String, byte[]> loadedResources = new HashMap<String, byte[]>();
+ @Override
+ public byte[] getClassBytes(String name) throws IOException { // . separated.
+ return this.loadedResources.get(name.replace(".", "/"));
+ }
+
+ @Override
+ public InputStream convert(String name) { // / separated
+ if (this.loadedResources.containsKey(name.substring(1)))
+ return new ByteArrayInputStream(this.loadedResources.get(name.substring(1)));
+ return null;
+ }
+ }
+
+ private JarClassLoader classLoader;
+
+
+
+ @Override
+ public DGInterface loadDungeonsGuide() throws ClassNotFoundException, InstantiationException, IllegalAccessException, IOException {
+ if (dgInterface != null) throw new IllegalStateException("Already loaded");
+
+ Update target = UpdateRetrieverUtil.getUpdate(branchId, updateId);
+ friendlyVersionName = target.getName();
+
+ InputStream in;
+ byte[] mod = IOUtils.toByteArray(in = UpdateRetrieverUtil.downloadFile(target, "mod.jar"));
+ in.close();
+ byte[] signature =IOUtils.toByteArray(in = UpdateRetrieverUtil.downloadFile(target, "signature.asc"));
+ in.close();
+ int version = target.getMetadata().getInt("signatureVersion");
+
+ if (version == 0) {
+ SignatureValidator.validateVersion1Signature(target, mod, signature);
+ } else {
+ throw new InvalidSignatureException(target, "Invalid Signature Version: "+version);
+ }
+
+ classLoader = new JarClassLoader(this.getClass().getClassLoader(), new ZipInputStream(new ByteArrayInputStream(mod)));
+
+ dgInterface = (DGInterface) classLoader.loadClass("kr.syeyoung.dungeonsguide.DungeonsGuide", true).newInstance();
+ phantomReference = new PhantomReference<>(classLoader, refQueue);
+ return dgInterface;
+ }
+
+ @Override
+ public DGInterface getInstance() {
+ return dgInterface;
+ }
+
+ @Override
+ public void unloadDungeonsGuide() throws ReferenceLeakedException {
+ classLoader = null;
+ dgInterface.unload();
+ dgInterface = null;
+ System.gc();// pls do
+ Reference<? extends ClassLoader> t = refQueue.poll();
+ if (t == null) throw new ReferenceLeakedException(); // Why do you have to be that strict? Well, to tell them to actually listen on DungeonsGuideReloadListener. If it starts causing issues then I will remove check cus it's not really loaded (classes are loaded by child classloader)
+ t.clear();
+ phantomReference = null;
+ }
+
+ @Override
+ public boolean isUnloadable() {
+ return true;
+ }
+
+ @Override
+ public boolean isLoaded() {
+ return dgInterface != null;
+ }
+
+ @Override
+ public String loaderName() {
+ return "remote";
+ }
+
+ private long branchId = -1; // pre-retrieved
+ private long updateId = -1; // pre-retrieved
+
+ private String friendlyBranchName = "";
+ private String friendlyVersionName = "";
+ @Override
+ public String version() {
+ return friendlyBranchName+"("+branchId+")@"+friendlyVersionName+"("+updateId+")"; // maybe read the thing...
+ }
+}
diff --git a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/loader/SignatureValidator.java b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/loader/SignatureValidator.java
new file mode 100644
index 00000000..7a8ce832
--- /dev/null
+++ b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/loader/SignatureValidator.java
@@ -0,0 +1,43 @@
+package kr.syeyoung.dungeonsguide.launcher.loader;
+
+import kr.syeyoung.dungeonsguide.launcher.branch.Update;
+import kr.syeyoung.dungeonsguide.launcher.exceptions.InvalidSignatureException;
+import org.apache.commons.codec.binary.Base64;
+
+import java.security.*;
+import java.security.spec.InvalidKeySpecException;
+import java.security.spec.X509EncodedKeySpec;
+
+public class SignatureValidator {
+ private static PublicKey dgPublicKey;
+ private static PublicKey getDGPublicKey() throws NoSuchAlgorithmException, InvalidKeySpecException {
+ if (dgPublicKey != null) return dgPublicKey;
+ X509EncodedKeySpec spec = new X509EncodedKeySpec(Base64.decodeBase64("MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxO89qtwG67jNucQ9Y44c" +
+ "IUs/B+5BeJPs7G+RG2gfs4/2+tzF/c1FLDc33M7yKw8aKk99vsBUY9Oo8gxxiEPB" +
+ "JitP/qfon2THp94oM77ZTpHlmFoqbZMcKGZVI8yfvEL4laTM8Hw+qh5poQwtpEbK" +
+ "Xo47AkxygxJasUnykER2+aSTZ6kWU2D4xiNtFA6lzqN+/oA+NaYfPS0amAvyVlHR" +
+ "n/8IuGkxb5RrlqVssQstFnxsJuv88qdGSEqlcKq2tLeg9hb8eCnl2OFzvXmgbVER" +
+ "0JaV+4Z02fVG1IlR3Xo1mSit7yIU6++3usRCjx2yfXpnGGJUW5pe6YETjNew3ax+" +
+ "FAZ4GePWCdmS7FvBnbbABKo5pE06ZTfDUTCjQlAJQiUgoF6ntMJvQAXPu48Vr8q/" +
+ "mTcuZWVnI6CDgyE7nNq3WNoq3397sBzxRohMxuqzl3T19zkfPKF05iV2Ju1HQMW5" +
+ "I119bYrmVD240aGESZc20Sx/9g1BFpNzQbM5PGUlWJ0dhLjl2ge4ip2hHciY3OEY" +
+ "p2Qy2k+xEdenpKdL+WMRimCQoO9gWe2Tp4NmP5dppDXZgPjXqjZpnGs0Uxs+fXqW" +
+ "cwlg3MbX3rFl9so/fhVf4p9oXZK3ve7z5D6XSSDRYECvsKIa08WAxJ/U6n204E/4" +
+ "xUF+3ZgFPdzZGn2PU7SsnOsCAwEAAQ=="));
+ return dgPublicKey = KeyFactory.getInstance("RSA").generatePublic(spec);
+ }
+
+ public static void validateVersion1Signature(Update update, byte[] payload, byte[] signature) {
+ try {
+ Signature sign = Signature.getInstance("SHA512withRSA");
+ sign.initVerify(getDGPublicKey());
+ sign.update(payload);
+ boolean truth = sign.verify(signature);
+ if (!truth) throw new InvalidSignatureException(update, "DG SIGNATURE FORGED");
+ }catch (NoSuchAlgorithmException | InvalidKeySpecException | SignatureException | InvalidKeyException e) {
+ throw new InvalidSignatureException(update, e);
+ }
+ }
+
+
+}
diff --git a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/url/DGConnection.java b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/url/DGConnection.java
deleted file mode 100755
index 5a310738..00000000
--- a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/url/DGConnection.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.launcher.url;
-
-import kr.syeyoung.dungeonsguide.launcher.auth.ResourceManager;
-
-import java.io.ByteArrayInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.net.URLConnection;
-
-public class DGConnection extends URLConnection {
-
- protected DGConnection(URL url) {
- super(url);
- connected = false;
- }
-
- @Override
- public void connect() throws IOException {
- }
- @Override
- public InputStream getInputStream() throws IOException {
- if (ResourceManager.getInstance().getResources() != null) {
- String path = url.getPath().substring(1);
- if (!ResourceManager.getInstance().getResources().containsKey(path)) throw new FileNotFoundException();
- return new ByteArrayInputStream(ResourceManager.getInstance().getResources().get(path));
- }
- throw new FileNotFoundException();
- }
-}
diff --git a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/url/DGStreamHandler.java b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/url/DGStreamHandler.java
deleted file mode 100755
index 456e7f8c..00000000
--- a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/url/DGStreamHandler.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.launcher.url;
-
-import lombok.AllArgsConstructor;
-
-import java.io.IOException;
-import java.net.URL;
-import java.net.URLConnection;
-import java.net.URLStreamHandler;
-
-@AllArgsConstructor
-public class DGStreamHandler extends URLStreamHandler {
- @Override
- protected URLConnection openConnection(URL url) throws IOException {
- return new DGConnection(url);
- }
-}
diff --git a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/url/DGStreamHandlerFactory.java b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/url/DGStreamHandlerFactory.java
deleted file mode 100755
index a7eefa37..00000000
--- a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/url/DGStreamHandlerFactory.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.launcher.url;
-
-import lombok.AllArgsConstructor;
-
-import java.net.URLStreamHandler;
-import java.net.URLStreamHandlerFactory;
-
-@AllArgsConstructor
-public class DGStreamHandlerFactory implements URLStreamHandlerFactory {
- @Override
- public URLStreamHandler createURLStreamHandler(String protocol) {
- if ("z".equals(protocol)) {
- return new DGStreamHandler();
- }
- return null;
- }
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/IDungeonGuide.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/IDungeonGuide.java
deleted file mode 100644
index a568d827..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/IDungeonGuide.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package kr.syeyoung.dungeonsguide;
-
-/**
- * This exists, so we can reload the mod/ download a more recent version
- */
-public interface IDungeonGuide {
- void init();
- void preinit();
-
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/config/types/TCBoolean.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/config/types/TCBoolean.java
deleted file mode 100644
index 344984e2..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/config/types/TCBoolean.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.config.types;
-
-import com.google.gson.JsonElement;
-import com.google.gson.JsonPrimitive;
-
-public class TCBoolean implements TypeConverter<Boolean> {
- @Override
- public String getTypeString() {
- return "boolean";
- }
-
- @Override
- public Boolean deserialize(JsonElement element) {
- return element.getAsBoolean();
- }
-
- @Override
- public JsonElement serialize(Boolean element) {
- return new JsonPrimitive(element);
- }
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/config/types/TCColor.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/config/types/TCColor.java
deleted file mode 100644
index d91b75be..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/config/types/TCColor.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.config.types;
-
-import com.google.gson.JsonElement;
-import com.google.gson.JsonPrimitive;
-
-import java.awt.*;
-
-public class TCColor implements TypeConverter<Color> {
- @Override
- public String getTypeString() {
- return "color";
- }
-
- @Override
- public Color deserialize(JsonElement element) {
- return new Color(element.getAsInt());
- }
-
- @Override
- public JsonElement serialize(Color element) {
- return new JsonPrimitive(element.getRGB());
- }
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/config/types/TCFloat.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/config/types/TCFloat.java
deleted file mode 100644
index 6fc10b7d..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/config/types/TCFloat.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.config.types;
-
-import com.google.gson.JsonElement;
-import com.google.gson.JsonPrimitive;
-
-public class TCFloat implements TypeConverter<Float> {
- @Override
- public String getTypeString() {
- return "float";
- }
-
- @Override
- public Float deserialize(JsonElement element) {
- return element.getAsFloat();
- }
-
- @Override
- public JsonElement serialize(Float element) {
- return new JsonPrimitive(element);
- }
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/config/types/TCInteger.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/config/types/TCInteger.java
deleted file mode 100644
index e407815c..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/config/types/TCInteger.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.config.types;
-
-import com.google.gson.JsonElement;
-import com.google.gson.JsonPrimitive;
-
-public class TCInteger implements TypeConverter<Integer> {
- @Override
- public String getTypeString() {
- return "integer";
- }
-
- @Override
- public Integer deserialize(JsonElement element) {
- return element.getAsInt();
- }
-
- @Override
- public JsonElement serialize(Integer element) {
- return new JsonPrimitive(element);
- }
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/config/types/TCString.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/config/types/TCString.java
deleted file mode 100644
index d09ae81f..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/config/types/TCString.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.config.types;
-
-import com.google.gson.JsonElement;
-import com.google.gson.JsonPrimitive;
-
-public class TCString implements TypeConverter<String> {
- @Override
- public String getTypeString() {
- return "string";
- }
-
- @Override
- public String deserialize(JsonElement element) {
- return element.getAsString();
- }
-
- @Override
- public JsonElement serialize(String element) {
- return new JsonPrimitive(element);
- }
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/config/types/TypeConverter.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/config/types/TypeConverter.java
deleted file mode 100644
index 0c954e7d..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/config/types/TypeConverter.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.config.types;
-
-import com.google.gson.JsonElement;
-
-public interface TypeConverter<T> {
- String getTypeString();
-
- T deserialize(JsonElement element);
-
- JsonElement serialize(T element);
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/cosmetics/ActiveCosmetic.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/cosmetics/ActiveCosmetic.java
deleted file mode 100644
index c88bbbbc..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/cosmetics/ActiveCosmetic.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.cosmetics;
-
-import lombok.Data;
-import java.util.UUID;
-
-@Data
-public class ActiveCosmetic {
- private UUID activityUID;
- private UUID playerUID;
- private UUID cosmeticData;
- private String username;
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/cosmetics/CosmeticData.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/cosmetics/CosmeticData.java
deleted file mode 100644
index 8b3ac3b4..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/cosmetics/CosmeticData.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.cosmetics;
-
-
-import lombok.Data;
-
-import java.util.UUID;
-
-@Data
-public class CosmeticData {
- private UUID id;
- private String cosmeticType;
- private String reqPerm;
- private String data;
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/actions/ActionComplete.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/actions/ActionComplete.java
deleted file mode 100644
index 646c2171..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/actions/ActionComplete.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.dungeon.actions;
-
-import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom;
-
-import java.util.Collections;
-import java.util.Set;
-
-public class ActionComplete extends AbstractAction {
- @Override
- public Set<Action> getPreRequisites(DungeonRoom dungeonRoom) {
- return Collections.emptySet();
- }
-
- @Override
- public boolean isComplete(DungeonRoom dungeonRoom) {
- return false;
- }
-
- @Override
- public String toString() {
- return "Completed";
- }
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/actions/ActionRoot.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/actions/ActionRoot.java
deleted file mode 100755
index a2527b8b..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/actions/ActionRoot.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.dungeon.actions;
-
-import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom;
-import lombok.Data;
-
-import java.util.HashSet;
-import java.util.Set;
-
-@Data
-public class ActionRoot extends AbstractAction {
- private Set<Action> preRequisite = new HashSet<Action>();
-
- public ActionRoot() {
- }
-
- @Override
- public Set<Action> getPreRequisites(DungeonRoom dungeonRoom) {
- return preRequisite;
- }
-
- @Override
- public boolean isComplete(DungeonRoom dungeonRoom) {
- return true;
- }
-
- @Override
- public String toString() {
- return "Action Root";
- }
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/doorfinder/DungeonSpecificDataProvider.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/doorfinder/DungeonSpecificDataProvider.java
deleted file mode 100755
index 4145188c..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/doorfinder/DungeonSpecificDataProvider.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.dungeon.doorfinder;
-
-import kr.syeyoung.dungeonsguide.roomprocessor.bossfight.BossfightProcessor;
-import net.minecraft.util.BlockPos;
-import net.minecraft.world.World;
-
-import javax.vecmath.Vector2d;
-
-public interface DungeonSpecificDataProvider {
- BlockPos findDoor(World w, String dungeonName);
- Vector2d findDoorOffset(World w, String dungeonName);
-
- BossfightProcessor createBossfightProcessor(World w, String dungeonName);
-
- boolean isTrapSpawn(String dungeonName);
-
- double secretPercentage(String dungeonName);
-
- int speedSecond(String dungeonName);
-} \ No newline at end of file
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/events/DungeonCryptBrokenEvent.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/events/DungeonCryptBrokenEvent.java
deleted file mode 100644
index 9e16498b..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/events/DungeonCryptBrokenEvent.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.dungeon.events;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-
-@Data
-@AllArgsConstructor
-public class DungeonCryptBrokenEvent implements DungeonEventData {
- private int prevCrypts;
- private int newCrypts;
-
- @Override
- public String getEventName() {
- return "CRYPTS_CHANGE";
- }
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/events/DungeonDeathEvent.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/events/DungeonDeathEvent.java
deleted file mode 100644
index bbb2481d..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/events/DungeonDeathEvent.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.dungeon.events;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-
-@Data
-@AllArgsConstructor
-public class DungeonDeathEvent implements DungeonEventData {
- private String playerName;
- private String message;
- private int cnt;
-
- @Override
- public String getEventName() {
- return "PLAYER_DEATH";
- }
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/events/DungeonEvent.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/events/DungeonEvent.java
deleted file mode 100644
index a62997bf..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/events/DungeonEvent.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.dungeon.events;
-
-import kr.syeyoung.dungeonsguide.features.FeatureRegistry;
-import lombok.Data;
-
-import java.io.Serializable;
-
-@Data
-public class DungeonEvent implements Serializable {
- private long UTCTime = System.currentTimeMillis();
- private long realTimeElapsed;
- private long skyblockTimeElapsed;
-
- private String eventName;
- private DungeonEventData data;
-
- public DungeonEvent(DungeonEventData eventData){
- this.data = eventData;
- this.realTimeElapsed = FeatureRegistry.DUNGEON_REALTIME.getTimeElapsed();
- this.skyblockTimeElapsed = FeatureRegistry.DUNGEON_SBTIME.getTimeElapsed();
- this.eventName = eventData.getEventName();
- }
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/events/DungeonEventData.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/events/DungeonEventData.java
deleted file mode 100644
index a75d0f02..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/events/DungeonEventData.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.dungeon.events;
-
-import java.io.Serializable;
-
-public interface DungeonEventData extends Serializable {
- String getEventName();
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/events/DungeonEventHolder.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/events/DungeonEventHolder.java
deleted file mode 100644
index 3e431107..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/events/DungeonEventHolder.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.dungeon.events;
-
-import lombok.Data;
-
-import java.io.Serializable;
-import java.util.List;
-import java.util.Set;
-
-@Data
-public class DungeonEventHolder implements Serializable {
- private long date;
- private Set<String> players;
- private List<DungeonEvent> eventDataList;
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/events/DungeonMapUpdateEvent.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/events/DungeonMapUpdateEvent.java
deleted file mode 100644
index a29d2f01..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/events/DungeonMapUpdateEvent.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.dungeon.events;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-
-@Data
-@AllArgsConstructor
-public class DungeonMapUpdateEvent implements DungeonEventData {
- private byte[] map;
-
- @Override
- public String getEventName() {
- return "MAP_UPDATE";
- }
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/events/DungeonNodataEvent.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/events/DungeonNodataEvent.java
deleted file mode 100644
index 4db127d6..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/events/DungeonNodataEvent.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.dungeon.events;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-
-@Data
-@AllArgsConstructor
-public class DungeonNodataEvent implements DungeonEventData {
- private String eventName;
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/events/DungeonPuzzleFailureEvent.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/events/DungeonPuzzleFailureEvent.java
deleted file mode 100644
index 88d6377f..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/events/DungeonPuzzleFailureEvent.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.dungeon.events;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-
-@Data
-@AllArgsConstructor
-public class DungeonPuzzleFailureEvent implements DungeonEventData {
- private String playerName;
- private String message;
- @Override
- public String getEventName() {
- return "PUZZLE_FAILURE";
- }
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/events/DungeonRoomDiscoverEvent.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/events/DungeonRoomDiscoverEvent.java
deleted file mode 100644
index 8cec640c..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/events/DungeonRoomDiscoverEvent.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.dungeon.events;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-
-import java.awt.*;
-import java.util.UUID;
-
-@Data
-@AllArgsConstructor
-public class DungeonRoomDiscoverEvent implements DungeonEventData {
- private Point unitPt;
- private int rotation;
- private SerializableBlockPos min;
- private SerializableBlockPos max;
- private int shape;
- private int color;
- private UUID roomUID;
- private String roomName;
- private String roomProc;
-
- @Override
- public String getEventName() {
- return "ROOM_DISCOVER";
- }
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/events/DungeonSecretCountChangeEvent.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/events/DungeonSecretCountChangeEvent.java
deleted file mode 100644
index 702d61ba..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/events/DungeonSecretCountChangeEvent.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.dungeon.events;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-
-@Data
-@AllArgsConstructor
-public class DungeonSecretCountChangeEvent implements DungeonEventData {
- private int prevCount;
- private int newCount;
- private int totalSecret;
- private boolean sureTotalSecret;
-
- @Override
- public String getEventName() {
- return "SECRET_CNT_CHANGE";
- }
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/events/DungeonStateChangeEvent.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/events/DungeonStateChangeEvent.java
deleted file mode 100644
index 16cb9661..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/events/DungeonStateChangeEvent.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.dungeon.events;
-
-import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-
-import java.awt.*;
-
-@Data
-@AllArgsConstructor
-public class DungeonStateChangeEvent implements DungeonEventData {
- private Point unitPt;
- private String roomName;
- private DungeonRoom.RoomState from;
- private DungeonRoom.RoomState to;
-
- @Override
- public String getEventName() {
- return "ROOM_STATE_CHANGE";
- }
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/mechanics/DungeonMechanic.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/mechanics/DungeonMechanic.java
deleted file mode 100755
index 677a5489..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/mechanics/DungeonMechanic.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.dungeon.mechanics;
-
-import kr.syeyoung.dungeonsguide.dungeon.actions.Action;
-import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPoint;
-import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom;
-
-import java.awt.*;
-import java.io.Serializable;
-import java.util.Set;
-
-public interface DungeonMechanic extends Serializable {
- Set<Action> getAction(String state, DungeonRoom dungeonRoom);
-
- void highlight(Color color, String name, DungeonRoom dungeonRoom, float partialTicks);
-
- String getCurrentState(DungeonRoom dungeonRoom);
-
- Set<String> getPossibleStates(DungeonRoom dungeonRoom);
- Set<String> getTotalPossibleStates(DungeonRoom dungeonRoom);
-
- OffsetPoint getRepresentingPoint(DungeonRoom dungeonRoom);
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/mechanics/RouteBlocker.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/mechanics/RouteBlocker.java
deleted file mode 100755
index e12d1269..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/mechanics/RouteBlocker.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.dungeon.mechanics;
-
-import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom;
-
-public interface RouteBlocker {
- boolean isBlocking(DungeonRoom dungeonRoom);
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/events/BossroomEnterEvent.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/events/BossroomEnterEvent.java
deleted file mode 100644
index d02e8f84..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/events/BossroomEnterEvent.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.events;
-
-import net.minecraftforge.fml.common.eventhandler.Event;
-
-public class BossroomEnterEvent extends Event {
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/events/DungeonContextInitializationEvent.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/events/DungeonContextInitializationEvent.java
deleted file mode 100644
index 81ceffed..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/events/DungeonContextInitializationEvent.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.events;
-
-import net.minecraftforge.fml.common.eventhandler.Event;
-
-public class DungeonContextInitializationEvent extends Event {
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/events/DungeonEndedEvent.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/events/DungeonEndedEvent.java
deleted file mode 100644
index 7430389f..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/events/DungeonEndedEvent.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.events;
-
-import net.minecraftforge.fml.common.eventhandler.Event;
-
-public class DungeonEndedEvent extends Event {
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/events/DungeonLeftEvent.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/events/DungeonLeftEvent.java
deleted file mode 100644
index a0abaea8..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/events/DungeonLeftEvent.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.events;
-
-import net.minecraftforge.fml.common.eventhandler.Event;
-
-public class DungeonLeftEvent extends Event {
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/events/DungeonStartedEvent.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/events/DungeonStartedEvent.java
deleted file mode 100644
index 6fc7dd02..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/events/DungeonStartedEvent.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.events;
-
-import net.minecraftforge.fml.common.eventhandler.Event;
-
-public class DungeonStartedEvent extends Event {
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/events/HypixelJoinedEvent.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/events/HypixelJoinedEvent.java
deleted file mode 100644
index c442ca62..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/events/HypixelJoinedEvent.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.events;
-
-import net.minecraftforge.fml.common.eventhandler.Event;
-
-public class HypixelJoinedEvent extends Event {
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/events/SkyblockJoinedEvent.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/events/SkyblockJoinedEvent.java
deleted file mode 100644
index 4a04d55c..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/events/SkyblockJoinedEvent.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.events;
-
-import net.minecraftforge.fml.common.eventhandler.Event;
-
-public class SkyblockJoinedEvent extends Event {
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/events/SkyblockLeftEvent.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/events/SkyblockLeftEvent.java
deleted file mode 100644
index 5055b1bc..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/events/SkyblockLeftEvent.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.events;
-
-import net.minecraftforge.fml.common.eventhandler.Event;
-
-public class SkyblockLeftEvent extends Event {
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/events/StompConnectedEvent.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/events/StompConnectedEvent.java
deleted file mode 100644
index 50eba951..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/events/StompConnectedEvent.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.events;
-
-import kr.syeyoung.dungeonsguide.stomp.StompInterface;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import net.minecraftforge.fml.common.eventhandler.Event;
-
-@Data
-@AllArgsConstructor
-public class StompConnectedEvent extends Event {
- private StompInterface stompInterface;
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/events/TitleEvent.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/events/TitleEvent.java
deleted file mode 100644
index 0559524c..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/events/TitleEvent.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.events;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import net.minecraft.network.play.server.S45PacketTitle;
-import net.minecraftforge.fml.common.eventhandler.Event;
-
-@Data
-@AllArgsConstructor
-public class TitleEvent extends Event {
- S45PacketTitle packetTitle;
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/events/WindowUpdateEvent.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/events/WindowUpdateEvent.java
deleted file mode 100644
index 5715687b..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/events/WindowUpdateEvent.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.events;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import net.minecraft.network.play.server.S2FPacketSetSlot;
-import net.minecraft.network.play.server.S30PacketWindowItems;
-import net.minecraftforge.fml.common.eventhandler.Event;
-
-@Data
-@AllArgsConstructor
-public class WindowUpdateEvent extends Event {
- S30PacketWindowItems windowItems;
- S2FPacketSetSlot packetSetSlot;
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/SimpleFeature.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/features/SimpleFeature.java
deleted file mode 100644
index 11adeb67..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/SimpleFeature.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.features;
-
-public class SimpleFeature extends AbstractFeature {
- protected SimpleFeature(String category, String name, String key) {
- this(category, name, name, key);
- }
- protected SimpleFeature(String category, String name, String description, String key) {
- this(category, name, description, key, true);
- }
-
- protected SimpleFeature(String category, String name, String description, String key, boolean enabled) {
- super(category, name, description, key);
- this.setEnabled(enabled);
- }
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/terminal/TerminalSolution.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/terminal/TerminalSolution.java
deleted file mode 100644
index a3f3f558..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/terminal/TerminalSolution.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.features.impl.boss.terminal;
-
-import lombok.Data;
-import net.minecraft.inventory.Slot;
-
-import java.util.List;
-
-@Data
-public class TerminalSolution {
- private List<Slot> currSlots;
- private List<Slot> nextSlots;
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/terminal/TerminalSolutionProvider.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/terminal/TerminalSolutionProvider.java
deleted file mode 100644
index b04b5094..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/terminal/TerminalSolutionProvider.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.features.impl.boss.terminal;
-
-import net.minecraft.inventory.ContainerChest;
-import net.minecraft.inventory.Slot;
-
-import java.util.List;
-
-public interface TerminalSolutionProvider {
- TerminalSolution provideSolution(ContainerChest chest, List<Slot> clicked);
- boolean isApplicable(ContainerChest chest);
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureRepartyCommand.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureRepartyCommand.java
deleted file mode 100644
index e4eb8a22..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureRepartyCommand.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.features.impl.etc;
-
-import kr.syeyoung.dungeonsguide.features.FeatureParameter;
-import kr.syeyoung.dungeonsguide.features.SimpleFeature;
-
-public class FeatureRepartyCommand extends SimpleFeature {
- public FeatureRepartyCommand() {
- super("Party.Reparty", "Enable Reparty Command From DG", "if you disable, /dg reparty will still work, Auto reparty will still work\nRequires Restart to get applied", "qol.reparty");
- parameters.put("command", new FeatureParameter<String>("command", "The Command", "Command that the reparty will be bound to", "reparty", "string"));
- }
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/ability/SkyblockAbility.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/ability/SkyblockAbility.java
deleted file mode 100644
index 6869e8f7..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/ability/SkyblockAbility.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.features.impl.etc.ability;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-
-@Data
-@AllArgsConstructor
-public class SkyblockAbility {
- private String name;
- private int manaCost;
- private int cooldown;
-
- private String itemId;
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/ability/UsedAbility.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/ability/UsedAbility.java
deleted file mode 100644
index 9bd998d8..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/ability/UsedAbility.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.features.impl.etc.ability;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-@Data
-@AllArgsConstructor
-public class UsedAbility {
- private SkyblockAbility ability;
- @EqualsAndHashCode.Exclude
- private long cooldownEnd;
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/api/DungeonClass.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/api/DungeonClass.java
deleted file mode 100644
index a840d29e..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/api/DungeonClass.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.features.impl.party.api;
-
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-
-import java.util.HashMap;
-import java.util.Map;
-
-@Getter
-@AllArgsConstructor
-public enum DungeonClass {
- MAGE("mage", "Mage"), ARCHER("archer","Archer"), HEALER("healer", "Healer"), TANK("tank", "Tank"), BERSERK("berserk", "Berserk");
-
-
- private final String jsonName;
- private final String familarName;
- private static final Map<String, DungeonClass> jsonNameToClazz = new HashMap<>();
- static {
- for (DungeonClass value : values()) {
- jsonNameToClazz.put(value.getJsonName(), value);
- }
- }
-
- public static DungeonClass getClassByJsonName(String name) {
- return jsonNameToClazz.get(name);
- }
-
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/api/DungeonType.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/api/DungeonType.java
deleted file mode 100644
index f1c443e4..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/api/DungeonType.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.features.impl.party.api;
-
-import com.google.common.collect.Sets;
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-
-import java.util.Set;
-
-@Getter
-@AllArgsConstructor
-public enum DungeonType {
- CATACOMBS("catacombs", "The Catacombs",
- Sets.newHashSet(0,1,2,3,4,5,6,7)),
- MASTER_CATACOMBS("master_catacombs", "MasterMode Catacombs", Sets.newHashSet(
- 1,2,3,4,5,6
- ));
-
- private final String jsonName;
- private final String familiarName;
- private final Set<Integer> validFloors ;
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/playerpreview/DataRenderer.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/playerpreview/DataRenderer.java
deleted file mode 100644
index 406963e6..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/playerpreview/DataRenderer.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.features.impl.party.playerpreview;
-
-import kr.syeyoung.dungeonsguide.features.impl.party.api.PlayerProfile;
-
-import java.awt.*;
-
-public interface DataRenderer {
- Dimension renderData(PlayerProfile playerProfile);
- void onHover(PlayerProfile playerProfile, int mouseX, int mouseY);
-
-
- Dimension renderDummy();
-
- Dimension getDimension();
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/BossroomEnterListener.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/BossroomEnterListener.java
deleted file mode 100644
index bb1934b0..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/BossroomEnterListener.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.features.listener;
-
-public interface BossroomEnterListener {
- void onBossroomEnter();
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/ChatListener.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/ChatListener.java
deleted file mode 100644
index 88d8cd2b..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/ChatListener.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.features.listener;
-
-import net.minecraftforge.client.event.ClientChatReceivedEvent;
-
-public interface ChatListener {
- void onChat(ClientChatReceivedEvent clientChatReceivedEvent);
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/ChatListenerGlobal.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/ChatListenerGlobal.java
deleted file mode 100644
index 4f8f61de..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/ChatListenerGlobal.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.features.listener;
-
-import net.minecraftforge.client.event.ClientChatReceivedEvent;
-
-public interface ChatListenerGlobal {
- void onChat(ClientChatReceivedEvent clientChatReceivedEvent);
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/DungeonContextInitializationListener.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/DungeonContextInitializationListener.java
deleted file mode 100644
index 53cea3c3..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/DungeonContextInitializationListener.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.features.listener;
-
-public interface DungeonContextInitializationListener {
- void onDungeonInitialize();
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/DungeonEndListener.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/DungeonEndListener.java
deleted file mode 100644
index ba8ba263..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/DungeonEndListener.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.features.listener;
-
-public interface DungeonEndListener {
- void onDungeonEnd();
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/DungeonQuitListener.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/DungeonQuitListener.java
deleted file mode 100644
index 120d773e..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/DungeonQuitListener.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.features.listener;
-
-public interface DungeonQuitListener {
- void onDungeonQuit();
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/DungeonStartListener.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/DungeonStartListener.java
deleted file mode 100644
index d7497c63..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/DungeonStartListener.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.features.listener;
-
-public interface DungeonStartListener {
- void onDungeonStart();
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/EntityLivingRenderListener.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/EntityLivingRenderListener.java
deleted file mode 100644
index 7b982a7f..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/EntityLivingRenderListener.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.features.listener;
-
-import net.minecraftforge.client.event.RenderLivingEvent;
-
-public interface EntityLivingRenderListener {
- void onEntityRenderPre(RenderLivingEvent.Pre renderPlayerEvent);
- void onEntityRenderPost(RenderLivingEvent.Post renderPlayerEvent);
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/GuiBackgroundRenderListener.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/GuiBackgroundRenderListener.java
deleted file mode 100644
index 03e525bc..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/GuiBackgroundRenderListener.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.features.listener;
-
-import net.minecraftforge.client.event.GuiScreenEvent;
-
-public interface GuiBackgroundRenderListener {
- void onGuiBGRender(GuiScreenEvent.BackgroundDrawnEvent rendered);
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/GuiClickListener.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/GuiClickListener.java
deleted file mode 100644
index f860e39f..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/GuiClickListener.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.features.listener;
-
-import net.minecraftforge.client.event.GuiScreenEvent;
-
-public interface GuiClickListener {
- void onMouseInput(GuiScreenEvent.MouseInputEvent.Pre mouseInputEvent);
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/GuiOpenListener.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/GuiOpenListener.java
deleted file mode 100644
index a28ea7a6..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/GuiOpenListener.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.features.listener;
-
-import net.minecraftforge.client.event.GuiOpenEvent;
-
-public interface GuiOpenListener {
- void onGuiOpen(GuiOpenEvent event);
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/GuiPostRenderListener.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/GuiPostRenderListener.java
deleted file mode 100644
index c6c66f99..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/GuiPostRenderListener.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.features.listener;
-
-import net.minecraftforge.client.event.GuiScreenEvent;
-
-public interface GuiPostRenderListener {
- void onGuiPostRender(GuiScreenEvent.DrawScreenEvent.Post rendered);
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/GuiPreRenderListener.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/GuiPreRenderListener.java
deleted file mode 100644
index 08a44009..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/GuiPreRenderListener.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.features.listener;
-
-import net.minecraftforge.client.event.GuiScreenEvent;
-
-public interface GuiPreRenderListener {
- void onGuiPreRender(GuiScreenEvent.DrawScreenEvent.Pre rendered);
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/GuiUpdateListener.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/GuiUpdateListener.java
deleted file mode 100644
index 2e6389f0..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/GuiUpdateListener.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.features.listener;
-
-import kr.syeyoung.dungeonsguide.events.WindowUpdateEvent;
-
-public interface GuiUpdateListener {
- void onGuiUpdate(WindowUpdateEvent windowUpdateEvent);
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/InteractListener.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/InteractListener.java
deleted file mode 100644
index 4b2fac80..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/InteractListener.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.features.listener;
-
-import net.minecraftforge.event.entity.player.PlayerInteractEvent;
-
-public interface InteractListener {
- void onInteract(PlayerInteractEvent event);
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/KeyInputListener.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/KeyInputListener.java
deleted file mode 100644
index 80ec57d8..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/KeyInputListener.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.features.listener;
-
-import net.minecraftforge.client.event.GuiScreenEvent;
-
-public interface KeyInputListener {
- void onKeyInput(GuiScreenEvent.KeyboardInputEvent keyboardInputEvent);
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/PlayerRenderListener.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/PlayerRenderListener.java
deleted file mode 100644
index 33c91fb8..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/PlayerRenderListener.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.features.listener;
-
-import net.minecraftforge.client.event.RenderPlayerEvent;
-
-public interface PlayerRenderListener {
- void onEntityRenderPre(RenderPlayerEvent.Pre renderPlayerEvent );
- void onEntityRenderPost(RenderPlayerEvent.Post renderPlayerEvent );
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/ScreenRenderListener.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/ScreenRenderListener.java
deleted file mode 100644
index 0f8fec79..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/ScreenRenderListener.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.features.listener;
-
-public interface ScreenRenderListener {
- void drawScreen(float partialTicks);
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/SkyblockJoinListener.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/SkyblockJoinListener.java
deleted file mode 100644
index 67a44f6b..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/SkyblockJoinListener.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.features.listener;
-
-public interface SkyblockJoinListener {
- void onSkyblockJoin();
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/SkyblockLeaveListener.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/SkyblockLeaveListener.java
deleted file mode 100644
index b38c0b75..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/SkyblockLeaveListener.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.features.listener;
-
-public interface SkyblockLeaveListener {
- void onSkyblockQuit();
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/SoundListener.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/SoundListener.java
deleted file mode 100644
index 1b8da9c4..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/SoundListener.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.features.listener;
-
-import net.minecraftforge.client.event.sound.PlaySoundEvent;
-
-public interface SoundListener {
- void onSound(PlaySoundEvent playSoundEvent);
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/StompConnectedListener.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/StompConnectedListener.java
deleted file mode 100644
index e52d0642..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/StompConnectedListener.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.features.listener;
-
-import kr.syeyoung.dungeonsguide.events.StompConnectedEvent;
-
-public interface StompConnectedListener {
- void onStompConnected(StompConnectedEvent event);
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/TextureStichListener.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/TextureStichListener.java
deleted file mode 100644
index 8ecb2315..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/TextureStichListener.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.features.listener;
-
-import net.minecraftforge.client.event.TextureStitchEvent;
-
-public interface TextureStichListener {
- void onTextureStitch(TextureStitchEvent event);
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/TickListener.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/TickListener.java
deleted file mode 100644
index cd3a21a5..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/TickListener.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.features.listener;
-
-public interface TickListener {
- void onTick();
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/TitleListener.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/TitleListener.java
deleted file mode 100644
index ac3e5f48..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/TitleListener.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.features.listener;
-
-import net.minecraft.network.play.server.S45PacketTitle;
-
-public interface TitleListener {
- void onTitle(S45PacketTitle renderPlayerEvent);
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/TooltipListener.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/TooltipListener.java
deleted file mode 100644
index 5bb78da0..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/TooltipListener.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.features.listener;
-
-import net.minecraftforge.event.entity.player.ItemTooltipEvent;
-
-public interface TooltipListener {
- void onTooltip(ItemTooltipEvent event);
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/WorldRenderListener.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/WorldRenderListener.java
deleted file mode 100644
index ee4aeb5c..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/WorldRenderListener.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.features.listener;
-
-public interface WorldRenderListener {
- void drawWorld(float partialTicks);
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/text/StyledText.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/features/text/StyledText.java
deleted file mode 100644
index 074243b9..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/text/StyledText.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.features.text;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-
-@Data
-@AllArgsConstructor
-public class StyledText {
- private String text;
- private String group;
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/text/StyledTextProvider.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/features/text/StyledTextProvider.java
deleted file mode 100644
index 2b68e4a3..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/text/StyledTextProvider.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.features.text;
-
-import java.util.List;
-import java.util.Map;
-
-public interface StyledTextProvider {
- List<StyledText> getDummyText();
- List<StyledText> getText();
-
- List<TextStyle> getStyles();
- Map<String, TextStyle> getStylesMap();
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/text/TextStyle.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/features/text/TextStyle.java
deleted file mode 100644
index 4bf87649..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/text/TextStyle.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.features.text;
-
-import kr.syeyoung.dungeonsguide.config.types.AColor;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-public class TextStyle {
- private String groupName;
- private AColor color;
- private AColor background;
- private boolean shadow = false;
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/utils/ArrayUtils.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/ArrayUtils.java
index 1afb8597..035542b1 100755
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/utils/ArrayUtils.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/ArrayUtils.java
@@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
-package kr.syeyoung.dungeonsguide.utils;
+package kr.syeyoung.dungeonsguide.mod.utils;
public class ArrayUtils {
public static int[][] rotateCounterClockwise(int[][] arr) {
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/DungeonsGuide.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/DungeonsGuide.java
index 45c403fd..aee07553 100755
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/DungeonsGuide.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/DungeonsGuide.java
@@ -19,8 +19,8 @@
package kr.syeyoung.dungeonsguide.mod;
import com.google.common.collect.Sets;
-import kr.syeyoung.dungeonsguide.IDungeonGuide;
-import kr.syeyoung.dungeonsguide.Main;
+import kr.syeyoung.dungeonsguide.launcher.DGInterface;
+import kr.syeyoung.dungeonsguide.launcher.Main;
import kr.syeyoung.dungeonsguide.mod.chat.ChatProcessor;
import kr.syeyoung.dungeonsguide.mod.chat.ChatTransmitter;
import kr.syeyoung.dungeonsguide.mod.commands.CommandDgDebug;
@@ -45,6 +45,7 @@ import lombok.Getter;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.*;
import net.minecraft.client.resources.IReloadableResourceManager;
+import net.minecraft.client.resources.IResourceManager;
import net.minecraft.client.resources.IResourcePack;
import net.minecraft.launchwrapper.LaunchClassLoader;
import net.minecraftforge.client.ClientCommandHandler;
@@ -61,7 +62,7 @@ import java.io.IOException;
import java.util.List;
import java.util.Set;
-public class DungeonsGuide implements IDungeonGuide {
+public class DungeonsGuide implements DGInterface {
@Getter
private static boolean firstTimeUsingDG = false;
@@ -93,8 +94,28 @@ public class DungeonsGuide implements IDungeonGuide {
- public void init() {
+ public void init(File f) {
ProgressManager.ProgressBar progressbar = ProgressManager.push("DungeonsGuide", 4);
+
+ progressbar.step("Creating Configuration");
+
+ File configFile = new File(Main.getConfigDir(), "config.json");
+ if (!configFile.exists()) {
+ Main.getConfigDir().mkdirs();
+ firstTimeUsingDG = true;
+ }
+
+ Config.f = configFile;
+ Minecraft.getMinecraft().getFramebuffer().enableStencil();
+
+ try {
+ List<IResourcePack> resourcePackList = ReflectionHelper.getPrivateValue(Minecraft.class, Minecraft.getMinecraft(), "defaultResourcePacks", "aA", "field_110449_ao");
+ resourcePackList.add(new DGTexturePack());
+ Minecraft.getMinecraft().refreshResources();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
MinecraftForge.EVENT_BUS.register(this);
progressbar.step("Registering Events & Commands");
@@ -135,8 +156,7 @@ public class DungeonsGuide implements IDungeonGuide {
MinecraftForge.EVENT_BUS.register(command);
MinecraftForge.EVENT_BUS.register(commandDungeonsGuide);
- commandReparty = new CommandReparty();
- MinecraftForge.EVENT_BUS.register(commandReparty);
+ MinecraftForge.EVENT_BUS.register(commandReparty = new CommandReparty());
MinecraftForge.EVENT_BUS.register(new FeatureListener());
MinecraftForge.EVENT_BUS.register(new PacketListener());
@@ -150,8 +170,7 @@ public class DungeonsGuide implements IDungeonGuide {
progressbar.step("Opening connection");
- cosmeticsManager = new CosmeticsManager();
- MinecraftForge.EVENT_BUS.register(cosmeticsManager);
+ MinecraftForge.EVENT_BUS.register(cosmeticsManager = new CosmeticsManager());
progressbar.step("Loading Config");
@@ -172,11 +191,22 @@ public class DungeonsGuide implements IDungeonGuide {
MinecraftForge.EVENT_BUS.register(RichPresenceManager.INSTANCE);
TimeScoreUtil.init();
- Main.finishUpProgressBar(progressbar);
-
ProgressManager.pop(progressbar);
- ((IReloadableResourceManager) Minecraft.getMinecraft().getResourceManager()).registerReloadListener(resourceManager -> GLCursors.setupCursors());
+ }
+
+ @Override
+ public void unload() {
+ // have FUN!
+
+// bar.step("Instantiating...");
+// partialLoad(obtainLoader(configuration));
+ throw new UnsupportedOperationException("Who the heck registered events in features?? This will stay unsupported for now");
+ }
+
+ @Override
+ public void onResourceReload(IResourceManager a) {
+ GLCursors.setupCursors();
}
private boolean showedStartUpGuide;
@@ -229,26 +259,6 @@ public class DungeonsGuide implements IDungeonGuide {
}
- public void preinit(){
-
- File configFile = new File(Main.getConfigDir(), "config.json");
- if (!configFile.exists()) {
- Main.getConfigDir().mkdirs();
- firstTimeUsingDG = true;
- }
-
- Config.f = configFile;
- Minecraft.getMinecraft().getFramebuffer().enableStencil();
-
- try {
- List<IResourcePack> resourcePackList = ReflectionHelper.getPrivateValue(Minecraft.class, Minecraft.getMinecraft(), "defaultResourcePacks", "aA", "field_110449_ao");
- resourcePackList.add(new DGTexturePack());
- Minecraft.getMinecraft().refreshResources();
- } catch (Exception e) {
- e.printStackTrace();
- }
-
- }
public SkyblockStatus getSkyblockStatus() {
return skyblockStatus;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/Keybinds.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/Keybinds.java
index 5a4fce71..61abafd1 100755
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/Keybinds.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/Keybinds.java
@@ -18,11 +18,7 @@
package kr.syeyoung.dungeonsguide.mod;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/Keybinds.java
-import kr.syeyoung.dungeonsguide.events.KeyBindPressedEvent;
-========
import kr.syeyoung.dungeonsguide.mod.events.impl.KeyBindPressedEvent;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/Keybinds.java
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.gameevent.InputEvent;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/SkyblockStatus.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/SkyblockStatus.java
index ddc9ad5f..ad8ba028 100755
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/SkyblockStatus.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/SkyblockStatus.java
@@ -19,14 +19,7 @@
package kr.syeyoung.dungeonsguide.mod;
import com.google.common.collect.Sets;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/SkyblockStatus.java
-import kr.syeyoung.dungeonsguide.dungeon.DungeonContext;
-import kr.syeyoung.dungeonsguide.utils.TextUtils;
-import lombok.Getter;
-import lombok.Setter;
-import net.minecraft.client.Minecraft;
-import net.minecraft.scoreboard.*;
-========
+
import kr.syeyoung.dungeonsguide.mod.dungeon.DungeonContext;
import kr.syeyoung.dungeonsguide.mod.events.impl.DungeonLeftEvent;
import kr.syeyoung.dungeonsguide.mod.events.impl.HypixelJoinedEvent;
@@ -44,7 +37,6 @@ import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.gameevent.TickEvent;
import net.minecraftforge.fml.relauncher.Side;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/SkyblockStatus.java
import java.util.Collection;
import java.util.Set;
@@ -99,7 +91,8 @@ public class SkyblockStatus {
private boolean isOnSkyblock;
private boolean isOnDungeon;
- @Getter @Setter
+ @Getter
+ @Setter
private boolean forceIsOnDungeon;
public boolean isOnHypixel() {
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/YoMamaOutdated.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/YoMamaOutdated.java
index ca9b34f4..88bc10f0 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/YoMamaOutdated.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/YoMamaOutdated.java
@@ -1,4 +1,4 @@
-package kr.syeyoung.dungeonsguide;
+package kr.syeyoung.dungeonsguide.mod;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.*;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/commands/CommandDgDebug.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/commands/CommandDgDebug.java
index 693418f3..e28df7e1 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/commands/CommandDgDebug.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/commands/CommandDgDebug.java
@@ -1,4 +1,3 @@
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/commands/CommandDungeonsGuide.java
/*
* Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
* Copyright (C) 2021 cyoung06
@@ -17,57 +16,21 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
-package kr.syeyoung.dungeonsguide.commands;
+package kr.syeyoung.dungeonsguide.mod.commands;
-import com.google.gson.JsonObject;
-import kr.syeyoung.dungeonsguide.SkyblockStatus;
import kr.syeyoung.dungeonsguide.dungeon.data.DungeonRoomInfo;
import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPoint;
-import kr.syeyoung.dungeonsguide.dungeon.events.DungeonEventHolder;
import kr.syeyoung.dungeonsguide.dungeon.mechanics.*;
-import kr.syeyoung.dungeonsguide.DungeonsGuide;
-import kr.syeyoung.dungeonsguide.chat.PartyContext;
-import kr.syeyoung.dungeonsguide.chat.PartyManager;
-import kr.syeyoung.dungeonsguide.rpc.RichPresenceManager;
-import kr.syeyoung.dungeonsguide.config.guiconfig.GuiConfigV2;
-import kr.syeyoung.dungeonsguide.config.guiconfig.NestedCategory;
-import kr.syeyoung.dungeonsguide.cosmetics.CosmeticsManager;
-import kr.syeyoung.dungeonsguide.dungeon.DungeonContext;
-import kr.syeyoung.dungeonsguide.dungeon.MapProcessor;
-import kr.syeyoung.dungeonsguide.dungeon.doorfinder.DungeonSpecificDataProvider;
-import kr.syeyoung.dungeonsguide.dungeon.doorfinder.DungeonSpecificDataProviderRegistry;
-import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom;
-import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoomInfoRegistry;
-import kr.syeyoung.dungeonsguide.events.DungeonLeftEvent;
-import kr.syeyoung.dungeonsguide.features.AbstractFeature;
-import kr.syeyoung.dungeonsguide.features.FeatureRegistry;
-import kr.syeyoung.dungeonsguide.features.impl.party.playerpreview.FeatureViewPlayerOnJoin;
-import kr.syeyoung.dungeonsguide.features.impl.party.api.ApiFetchur;
-import kr.syeyoung.dungeonsguide.roomedit.EditingContext;
-import kr.syeyoung.dungeonsguide.roomedit.gui.GuiDungeonRoomEdit;
-import kr.syeyoung.dungeonsguide.roomprocessor.GeneralRoomProcessor;
-import kr.syeyoung.dungeonsguide.roomprocessor.bossfight.BossfightProcessor;
-import kr.syeyoung.dungeonsguide.stomp.StompPayload;
-import kr.syeyoung.dungeonsguide.utils.AhUtils;
-import kr.syeyoung.dungeonsguide.utils.MapUtils;
-import kr.syeyoung.dungeonsguide.utils.ShortUtils;
-import kr.syeyoung.dungeonsguide.wsresource.StaticResourceCache;
-========
-package kr.syeyoung.dungeonsguide.mod.commands;
-
import kr.syeyoung.dungeonsguide.mod.DungeonsGuide;
-import kr.syeyoung.dungeonsguide.Main;
+import kr.syeyoung.dungeonsguide.launcher.Main;
import kr.syeyoung.dungeonsguide.mod.chat.ChatTransmitter;
import kr.syeyoung.dungeonsguide.mod.config.guiconfig.NestedCategory;
import kr.syeyoung.dungeonsguide.mod.dungeon.DungeonContext;
import kr.syeyoung.dungeonsguide.mod.dungeon.MapProcessor;
-import kr.syeyoung.dungeonsguide.dungeon.data.DungeonRoomInfo;
-import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPoint;
import kr.syeyoung.dungeonsguide.mod.dungeon.doorfinder.DungeonSpecificDataProvider;
import kr.syeyoung.dungeonsguide.mod.dungeon.doorfinder.DungeonSpecificDataProviderRegistry;
-import kr.syeyoung.dungeonsguide.mod.dungeon.events.DungeonEventHolder;
-import kr.syeyoung.dungeonsguide.dungeon.mechanics.*;
import kr.syeyoung.dungeonsguide.dungeon.mechanics.dunegonmechanic.DungeonMechanic;
+import kr.syeyoung.dungeonsguide.mod.dungeon.events.DungeonEventHolder;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.EditingContext;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.gui.GuiDungeonRoomEdit;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomfinder.DungeonRoom;
@@ -81,7 +44,6 @@ import kr.syeyoung.dungeonsguide.mod.party.PartyContext;
import kr.syeyoung.dungeonsguide.mod.party.PartyManager;
import kr.syeyoung.dungeonsguide.mod.utils.*;
import kr.syeyoung.dungeonsguide.mod.wsresource.StaticResourceCache;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/commands/CommandDgDebug.java
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.EntityPlayerSP;
@@ -113,20 +75,13 @@ import java.util.regex.Pattern;
public class CommandDgDebug extends CommandBase {
@Override
public String getCommandName() {
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/commands/CommandDungeonsGuide.java
- return "assets/dg";
-========
return "dgdebug";
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/commands/CommandDgDebug.java
}
@Override
public String getCommandUsage(ICommandSender sender) {
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/commands/CommandDungeonsGuide.java
- return "assets/dg";
-========
+
return "dgdebug";
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/commands/CommandDgDebug.java
}
@Override
@@ -205,25 +160,8 @@ public class CommandDgDebug extends CommandBase {
} else if ("brand".equals(arg)) {
String serverBrand = Minecraft.getMinecraft().thePlayer.getClientBrand();
sender.addChatMessage(new ChatComponentText("§eDungeons Guide §7:: §e" + serverBrand));
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/commands/CommandDungeonsGuide.java
- } else if (args[0].equalsIgnoreCase("reparty")) {
- if (!DungeonsGuide.getDungeonsGuide().getCommandReparty().requestReparty(false)) {
- Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText("§eDungeons Guide §7:: §cCurrently Repartying"));
- }
- } else if (args[0].equalsIgnoreCase("gui")) {
- openConfig = true;
- } else if (args[0].equalsIgnoreCase("info")) {
- JSONObject obj = DungeonsGuide.getDungeonsGuide().getAuthenticator().getJwtPayload(DungeonsGuide.getDungeonsGuide().getAuthenticator().getRawToken());
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
-
- sender.addChatMessage(new ChatComponentText("§eDungeons Guide §7:: §fUser Id§7: §e" + obj.get("userid")));
- sender.addChatMessage(new ChatComponentText("§eDungeons Guide §7:: §fBound to§7: §e" + obj.get("nickname")));
- sender.addChatMessage(new ChatComponentText("§eDungeons Guide §7:: §fBound uuid§7: §e" + obj.get("uuid")));
- sender.addChatMessage(new ChatComponentText("§eDungeons Guide §7:: §fSession Expire§7: §e" + sdf.format(new Date(obj.getLong("exp") * 1000))));
- } else if (args[0].equalsIgnoreCase("pathfind")) {
-========
+
} else if ("pathfind".equals(arg)) {
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/commands/CommandDgDebug.java
try {
DungeonContext context = DungeonsGuide.getDungeonsGuide().getDungeonFacade().getContext();
EntityPlayerSP thePlayer = Minecraft.getMinecraft().thePlayer;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/commands/CommandReparty.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/commands/CommandReparty.java
index 57e9aed4..b5c7965f 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/commands/CommandReparty.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/commands/CommandReparty.java
@@ -18,16 +18,10 @@
package kr.syeyoung.dungeonsguide.mod.commands;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/commands/CommandReparty.java
-import kr.syeyoung.dungeonsguide.chat.ChatProcessor;
-import kr.syeyoung.dungeonsguide.chat.PartyManager;
-import kr.syeyoung.dungeonsguide.features.FeatureRegistry;
-========
import kr.syeyoung.dungeonsguide.mod.chat.ChatProcessor;
import kr.syeyoung.dungeonsguide.mod.chat.ChatTransmitter;
import kr.syeyoung.dungeonsguide.mod.party.PartyManager;
import kr.syeyoung.dungeonsguide.mod.features.FeatureRegistry;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/commands/CommandReparty.java
import net.minecraft.client.Minecraft;
import net.minecraft.command.CommandBase;
import net.minecraft.command.ICommandSender;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/config/guiconfig/MFeatureEdit.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/config/guiconfig/MFeatureEdit.java
index f5766d4c..c7a1e6ab 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/config/guiconfig/MFeatureEdit.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/config/guiconfig/MFeatureEdit.java
@@ -18,21 +18,13 @@
package kr.syeyoung.dungeonsguide.mod.config.guiconfig;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/MFeatureEdit.java
-import kr.syeyoung.dungeonsguide.gui.elements.MButton;
-import kr.syeyoung.dungeonsguide.gui.elements.MList;
-import kr.syeyoung.dungeonsguide.gui.elements.MModalConfirmation;
-import kr.syeyoung.dungeonsguide.features.AbstractFeature;
-import kr.syeyoung.dungeonsguide.features.FeatureParameter;
-import kr.syeyoung.dungeonsguide.gui.MPanel;
-========
+
import kr.syeyoung.dungeonsguide.mod.features.AbstractFeature;
import kr.syeyoung.dungeonsguide.mod.features.FeatureParameter;
import kr.syeyoung.dungeonsguide.mod.gui.MPanel;
import kr.syeyoung.dungeonsguide.mod.gui.elements.MButton;
import kr.syeyoung.dungeonsguide.mod.gui.elements.MList;
import kr.syeyoung.dungeonsguide.mod.gui.elements.MModalConfirmation;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/config/guiconfig/MFeatureEdit.java
import java.awt.*;
import java.util.HashMap;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/config/guiconfig/MPanelCategory.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/config/guiconfig/MPanelCategory.java
index 6c68088d..435940d3 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/config/guiconfig/MPanelCategory.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/config/guiconfig/MPanelCategory.java
@@ -18,17 +18,10 @@
package kr.syeyoung.dungeonsguide.mod.config.guiconfig;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/MPanelCategory.java
-import kr.syeyoung.dungeonsguide.gui.elements.MList;
-import kr.syeyoung.dungeonsguide.features.AbstractFeature;
-import kr.syeyoung.dungeonsguide.features.FeatureRegistry;
-import kr.syeyoung.dungeonsguide.gui.MPanel;
-========
import kr.syeyoung.dungeonsguide.mod.features.AbstractFeature;
import kr.syeyoung.dungeonsguide.mod.features.FeatureRegistry;
import kr.syeyoung.dungeonsguide.mod.gui.MPanel;
import kr.syeyoung.dungeonsguide.mod.gui.elements.MList;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/config/guiconfig/MPanelCategory.java
import java.awt.*;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/config/guiconfig/MParameterEdit.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/config/guiconfig/MParameterEdit.java
index 7575c760..9cf5a6ed 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/config/guiconfig/MParameterEdit.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/config/guiconfig/MParameterEdit.java
@@ -18,22 +18,13 @@
package kr.syeyoung.dungeonsguide.mod.config.guiconfig;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/MParameterEdit.java
-import kr.syeyoung.dungeonsguide.config.types.AColor;
-import kr.syeyoung.dungeonsguide.gui.elements.*;
-import kr.syeyoung.dungeonsguide.features.AbstractFeature;
-import kr.syeyoung.dungeonsguide.features.FeatureParameter;
-import kr.syeyoung.dungeonsguide.gui.MPanel;
-import kr.syeyoung.dungeonsguide.gui.elements.*;
-import kr.syeyoung.dungeonsguide.utils.RenderUtils;
-========
+
import kr.syeyoung.dungeonsguide.mod.config.types.AColor;
import kr.syeyoung.dungeonsguide.mod.features.AbstractFeature;
import kr.syeyoung.dungeonsguide.mod.features.FeatureParameter;
import kr.syeyoung.dungeonsguide.mod.gui.MPanel;
import kr.syeyoung.dungeonsguide.mod.gui.elements.*;
import kr.syeyoung.dungeonsguide.mod.utils.RenderUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/config/guiconfig/MParameterEdit.java
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.Gui;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/config/guiconfig/RootConfigPanel.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/config/guiconfig/RootConfigPanel.java
index 7be988b2..8637bb76 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/config/guiconfig/RootConfigPanel.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/config/guiconfig/RootConfigPanel.java
@@ -19,14 +19,7 @@
package kr.syeyoung.dungeonsguide.mod.config.guiconfig;
import com.google.common.base.Function;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/RootConfigPanel.java
-import kr.syeyoung.dungeonsguide.config.guiconfig.location.GuiGuiLocationConfig;
-import kr.syeyoung.dungeonsguide.gui.elements.*;
-import kr.syeyoung.dungeonsguide.features.AbstractFeature;
-import kr.syeyoung.dungeonsguide.features.FeatureRegistry;
-import kr.syeyoung.dungeonsguide.gui.MPanel;
-import kr.syeyoung.dungeonsguide.utils.RenderUtils;
-========
+
import kr.syeyoung.dungeonsguide.launcher.auth.AuthManager;
import kr.syeyoung.dungeonsguide.mod.config.guiconfig.location.GuiGuiLocationConfig;
import kr.syeyoung.dungeonsguide.mod.features.AbstractFeature;
@@ -34,7 +27,6 @@ import kr.syeyoung.dungeonsguide.mod.features.FeatureRegistry;
import kr.syeyoung.dungeonsguide.mod.gui.MPanel;
import kr.syeyoung.dungeonsguide.mod.gui.elements.*;
import kr.syeyoung.dungeonsguide.mod.utils.RenderUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/config/guiconfig/RootConfigPanel.java
import lombok.Getter;
import lombok.Setter;
import net.minecraft.client.Minecraft;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/config/guiconfig/location/PanelDelegate.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/config/guiconfig/location/PanelDelegate.java
index 369764d4..fe3ebfcc 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/config/guiconfig/location/PanelDelegate.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/config/guiconfig/location/PanelDelegate.java
@@ -18,21 +18,13 @@
package kr.syeyoung.dungeonsguide.mod.config.guiconfig.location;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/location/PanelDelegate.java
-import kr.syeyoung.dungeonsguide.config.types.GUIRectangle;
-import kr.syeyoung.dungeonsguide.gui.elements.MPopupMenu;
-import kr.syeyoung.dungeonsguide.gui.elements.MTooltip;
-import kr.syeyoung.dungeonsguide.features.GuiFeature;
-import kr.syeyoung.dungeonsguide.gui.MPanel;
-import kr.syeyoung.dungeonsguide.utils.cursor.EnumCursor;
-========
+
import kr.syeyoung.dungeonsguide.mod.config.types.GUIRectangle;
import kr.syeyoung.dungeonsguide.mod.features.GuiFeature;
import kr.syeyoung.dungeonsguide.mod.gui.MPanel;
import kr.syeyoung.dungeonsguide.mod.gui.elements.MPopupMenu;
import kr.syeyoung.dungeonsguide.mod.gui.elements.MTooltip;
import kr.syeyoung.dungeonsguide.mod.utils.cursor.EnumCursor;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/config/guiconfig/location/PanelDelegate.java
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.Gui;
import net.minecraft.client.renderer.GlStateManager;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/config/types/TCTextStyle.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/config/types/TCTextStyle.java
index 09706c02..b66133cc 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/config/types/TCTextStyle.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/config/types/TCTextStyle.java
@@ -20,11 +20,8 @@ package kr.syeyoung.dungeonsguide.mod.config.types;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/config/types/TCTextStyle.java
-import kr.syeyoung.dungeonsguide.features.text.TextStyle;
-========
-import kr.syeyoung.dungeonsguide.mod.features.text.TextStyle;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/config/types/TCTextStyle.java
+
+
public class TCTextStyle implements TypeConverter<TextStyle> {
@Override
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/config/types/TCTextStyleList.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/config/types/TCTextStyleList.java
index e987567e..12a570bd 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/config/types/TCTextStyleList.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/config/types/TCTextStyleList.java
@@ -20,11 +20,8 @@ package kr.syeyoung.dungeonsguide.mod.config.types;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/config/types/TCTextStyleList.java
-import kr.syeyoung.dungeonsguide.features.text.TextStyle;
-========
-import kr.syeyoung.dungeonsguide.mod.features.text.TextStyle;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/config/types/TCTextStyleList.java
+
+
import java.util.ArrayList;
import java.util.List;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/config/types/TypeConverterRegistry.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/config/types/TypeConverterRegistry.java
index 599d1640..9dbafe05 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/config/types/TypeConverterRegistry.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/config/types/TypeConverterRegistry.java
@@ -16,11 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/config/types/TypeConverterRegistry.java
-package kr.syeyoung.dungeonsguide.config.types;
-========
package kr.syeyoung.dungeonsguide.mod.config.types;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/config/types/TypeConverterRegistry.java
import java.util.HashMap;
import java.util.Map;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/cosmetics/CosmeticsManager.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/cosmetics/CosmeticsManager.java
index ffda11a6..4908a170 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/cosmetics/CosmeticsManager.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/cosmetics/CosmeticsManager.java
@@ -18,19 +18,14 @@
package kr.syeyoung.dungeonsguide.mod.cosmetics;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/cosmetics/CosmeticsManager.java
-import kr.syeyoung.dungeonsguide.cosmetics.chatreplacers.*;
-import kr.syeyoung.dungeonsguide.DungeonsGuide;
-import kr.syeyoung.dungeonsguide.cosmetics.chatreplacers.*;
-import kr.syeyoung.dungeonsguide.events.PlayerListItemPacketEvent;
-import kr.syeyoung.dungeonsguide.events.StompConnectedEvent;
-import kr.syeyoung.dungeonsguide.stomp.*;
-========
+
import kr.syeyoung.dungeonsguide.mod.cosmetics.chatreplacers.*;
import kr.syeyoung.dungeonsguide.mod.events.impl.PlayerListItemPacketEvent;
+
import kr.syeyoung.dungeonsguide.mod.events.impl.StompConnectedEvent;
-import kr.syeyoung.dungeonsguide.mod.stomp.*;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/cosmetics/CosmeticsManager.java
+import kr.syeyoung.dungeonsguide.mod.stomp.StompHeader;
+import kr.syeyoung.dungeonsguide.mod.stomp.StompManager;
+import kr.syeyoung.dungeonsguide.mod.stomp.StompPayload;
import lombok.Getter;
import lombok.Setter;
import net.minecraft.client.Minecraft;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/cosmetics/CustomPacketPlayerListItem.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/cosmetics/CustomPacketPlayerListItem.java
index 5afd7ea1..541ec392 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/cosmetics/CustomPacketPlayerListItem.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/cosmetics/CustomPacketPlayerListItem.java
@@ -18,11 +18,9 @@
package kr.syeyoung.dungeonsguide.mod.cosmetics;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/cosmetics/CustomPacketPlayerListItem.java
-import kr.syeyoung.dungeonsguide.events.PlayerListItemPacketEvent;
-========
+
import kr.syeyoung.dungeonsguide.mod.events.impl.PlayerListItemPacketEvent;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/cosmetics/CustomPacketPlayerListItem.java
+
import net.minecraft.network.play.INetHandlerPlayClient;
import net.minecraft.network.play.server.S38PacketPlayerListItem;
import net.minecraftforge.common.MinecraftForge;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/GameSDK.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/GameSDK.java
index e57d0cd3..70d8b8b7 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/GameSDK.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/GameSDK.java
@@ -21,13 +21,10 @@ package kr.syeyoung.dungeonsguide.mod.discord.gamesdk;
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Platform;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/gamesdk/GameSDK.java
-import kr.syeyoung.dungeonsguide.gamesdk.jna.GameSDKTypeMapper;
-import kr.syeyoung.dungeonsguide.gamesdk.jna.NativeGameSDK;
-========
+
import kr.syeyoung.dungeonsguide.mod.discord.gamesdk.jna.GameSDKTypeMapper;
import kr.syeyoung.dungeonsguide.mod.discord.gamesdk.jna.NativeGameSDK;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/GameSDK.java
+
import lombok.Getter;
import java.io.File;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/GameSDKTypeMapper.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/GameSDKTypeMapper.java
index 9af03d1c..b7e2c6b6 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/GameSDKTypeMapper.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/GameSDKTypeMapper.java
@@ -19,12 +19,9 @@
package kr.syeyoung.dungeonsguide.mod.discord.gamesdk.jna;
import com.sun.jna.DefaultTypeMapper;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/gamesdk/jna/GameSDKTypeMapper.java
-import kr.syeyoung.dungeonsguide.gamesdk.jna.enumuration.*;
-import kr.syeyoung.dungeonsguide.gamesdk.jna.enumuration.*;
-========
+
import kr.syeyoung.dungeonsguide.mod.discord.gamesdk.jna.enumuration.*;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/GameSDKTypeMapper.java
+
public class GameSDKTypeMapper extends DefaultTypeMapper {
public static final GameSDKTypeMapper INSTANCE = new GameSDKTypeMapper();
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/datastruct/DiscordCreateParams.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/datastruct/DiscordCreateParams.java
index cf54b1f0..f1c4590d 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/datastruct/DiscordCreateParams.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/datastruct/DiscordCreateParams.java
@@ -20,20 +20,13 @@ package kr.syeyoung.dungeonsguide.mod.discord.gamesdk.jna.datastruct;
import com.sun.jna.Pointer;
import com.sun.jna.Structure;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/gamesdk/jna/datastruct/DiscordCreateParams.java
-import kr.syeyoung.dungeonsguide.gamesdk.jna.interfacestruct.*;
-import kr.syeyoung.dungeonsguide.gamesdk.jna.NativeGameSDK;
-import kr.syeyoung.dungeonsguide.gamesdk.jna.interfacestruct.*;
-import kr.syeyoung.dungeonsguide.gamesdk.jna.typedef.DiscordClientID;
-import kr.syeyoung.dungeonsguide.gamesdk.jna.typedef.DiscordVersion;
-import kr.syeyoung.dungeonsguide.gamesdk.jna.typedef.UInt64;
-========
+
import kr.syeyoung.dungeonsguide.mod.discord.gamesdk.jna.NativeGameSDK;
import kr.syeyoung.dungeonsguide.mod.discord.gamesdk.jna.interfacestruct.*;
import kr.syeyoung.dungeonsguide.mod.discord.gamesdk.jna.typedef.DiscordClientID;
import kr.syeyoung.dungeonsguide.mod.discord.gamesdk.jna.typedef.DiscordVersion;
import kr.syeyoung.dungeonsguide.mod.discord.gamesdk.jna.typedef.UInt64;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/datastruct/DiscordCreateParams.java
+
import java.util.Arrays;
import java.util.List;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/datastruct/DiscordStruct.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/datastruct/DiscordStruct.java
index f9372f53..c95680a5 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/datastruct/DiscordStruct.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/datastruct/DiscordStruct.java
@@ -21,11 +21,9 @@ package kr.syeyoung.dungeonsguide.mod.discord.gamesdk.jna.datastruct;
import com.sun.jna.Library;
import com.sun.jna.Pointer;
import com.sun.jna.Structure;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/gamesdk/jna/datastruct/DiscordStruct.java
-import kr.syeyoung.dungeonsguide.gamesdk.jna.GameSDKTypeMapper;
-========
+
import kr.syeyoung.dungeonsguide.mod.discord.gamesdk.jna.GameSDKTypeMapper;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/datastruct/DiscordStruct.java
+
import java.util.Collections;
import java.util.Map;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/datastruct/DiscordUser.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/datastruct/DiscordUser.java
index 3241e1b7..62144977 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/datastruct/DiscordUser.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/datastruct/DiscordUser.java
@@ -20,11 +20,9 @@ package kr.syeyoung.dungeonsguide.mod.discord.gamesdk.jna.datastruct;
import com.sun.jna.Pointer;
import com.sun.jna.Structure;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/gamesdk/jna/datastruct/DiscordUser.java
-import kr.syeyoung.dungeonsguide.gamesdk.jna.typedef.DiscordSnowflake;
-========
+
import kr.syeyoung.dungeonsguide.mod.discord.gamesdk.jna.typedef.DiscordSnowflake;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/datastruct/DiscordUser.java
+
import java.util.Arrays;
import java.util.List;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/interfacestruct/IDiscordImageManager.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/interfacestruct/IDiscordImageManager.java
index 3bf11c8e..322d4a79 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/interfacestruct/IDiscordImageManager.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/interfacestruct/IDiscordImageManager.java
@@ -19,11 +19,9 @@
package kr.syeyoung.dungeonsguide.mod.discord.gamesdk.jna.interfacestruct;
import com.sun.jna.Structure;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/gamesdk/jna/interfacestruct/IDiscordImageManager.java
-import kr.syeyoung.dungeonsguide.gamesdk.jna.datastruct.DiscordStruct;
-========
+
import kr.syeyoung.dungeonsguide.mod.discord.gamesdk.jna.datastruct.DiscordStruct;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/interfacestruct/IDiscordImageManager.java
+
import com.sun.jna.Pointer;
import kr.syeyoung.dungeonsguide.mod.discord.gamesdk.jna.enumuration.EDiscordResult;
import kr.syeyoung.dungeonsguide.mod.discord.gamesdk.jna.datastruct.DiscordImageDimensions;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/interfacestruct/IDiscordUserManager.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/interfacestruct/IDiscordUserManager.java
index 919e4510..14b2e8c9 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/interfacestruct/IDiscordUserManager.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/interfacestruct/IDiscordUserManager.java
@@ -21,21 +21,14 @@ package kr.syeyoung.dungeonsguide.mod.discord.gamesdk.jna.interfacestruct;
import com.sun.jna.Structure;
import com.sun.jna.ptr.ByteByReference;
import com.sun.jna.ptr.IntByReference;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/gamesdk/jna/interfacestruct/IDiscordUserManager.java
-import kr.syeyoung.dungeonsguide.gamesdk.jna.enumuration.EDiscordUserFlag;
-import kr.syeyoung.dungeonsguide.gamesdk.jna.datastruct.DiscordStruct;
-import com.sun.jna.Pointer;
-import kr.syeyoung.dungeonsguide.gamesdk.jna.enumuration.EDiscordResult;
-import kr.syeyoung.dungeonsguide.gamesdk.jna.typedef.DiscordSnowflake;
-import kr.syeyoung.dungeonsguide.gamesdk.jna.datastruct.DiscordUser;
-========
+
import kr.syeyoung.dungeonsguide.mod.discord.gamesdk.jna.datastruct.DiscordStruct;
import com.sun.jna.Pointer;
import kr.syeyoung.dungeonsguide.mod.discord.gamesdk.jna.enumuration.EDiscordResult;
import kr.syeyoung.dungeonsguide.mod.discord.gamesdk.jna.enumuration.EDiscordUserFlag;
import kr.syeyoung.dungeonsguide.mod.discord.gamesdk.jna.typedef.DiscordSnowflake;
import kr.syeyoung.dungeonsguide.mod.discord.gamesdk.jna.datastruct.DiscordUser;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/interfacestruct/IDiscordUserManager.java
+
import java.util.Arrays;
import java.util.List;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/typedef/DiscordClientID.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/typedef/DiscordClientID.java
index f565b41e..74f3a6c2 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/typedef/DiscordClientID.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/typedef/DiscordClientID.java
@@ -16,11 +16,9 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/gamesdk/jna/typedef/DiscordClientID.java
-package kr.syeyoung.dungeonsguide.gamesdk.jna.typedef;
-========
+
package kr.syeyoung.dungeonsguide.mod.discord.gamesdk.jna.typedef;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/typedef/DiscordClientID.java
+
public class DiscordClientID extends Int64 {
public DiscordClientID() {
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/typedef/DiscordNetworkChannelId.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/typedef/DiscordNetworkChannelId.java
index cba22348..577e1c11 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/typedef/DiscordNetworkChannelId.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/typedef/DiscordNetworkChannelId.java
@@ -16,11 +16,9 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/gamesdk/jna/typedef/DiscordNetworkChannelId.java
-package kr.syeyoung.dungeonsguide.gamesdk.jna.typedef;
-========
+
package kr.syeyoung.dungeonsguide.mod.discord.gamesdk.jna.typedef;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/typedef/DiscordNetworkChannelId.java
+
public class DiscordNetworkChannelId extends UInt8 {
public DiscordNetworkChannelId() {
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/typedef/DiscordNetworkPeerId.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/typedef/DiscordNetworkPeerId.java
index ee175852..810d81ac 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/typedef/DiscordNetworkPeerId.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/typedef/DiscordNetworkPeerId.java
@@ -16,11 +16,9 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/gamesdk/jna/typedef/DiscordNetworkPeerId.java
-package kr.syeyoung.dungeonsguide.gamesdk.jna.typedef;
-========
+
package kr.syeyoung.dungeonsguide.mod.discord.gamesdk.jna.typedef;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/typedef/DiscordNetworkPeerId.java
+
public class DiscordNetworkPeerId extends UInt64 {
public DiscordNetworkPeerId() {
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/typedef/DiscordSnowflake.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/typedef/DiscordSnowflake.java
index 16044ff2..11f26340 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/typedef/DiscordSnowflake.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/typedef/DiscordSnowflake.java
@@ -16,11 +16,9 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/gamesdk/jna/typedef/DiscordSnowflake.java
-package kr.syeyoung.dungeonsguide.gamesdk.jna.typedef;
-========
+
package kr.syeyoung.dungeonsguide.mod.discord.gamesdk.jna.typedef;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/typedef/DiscordSnowflake.java
+
public class DiscordSnowflake extends Int64 {
public DiscordSnowflake() {
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/typedef/DiscordTimestamp.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/typedef/DiscordTimestamp.java
index 1b681da9..69600825 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/typedef/DiscordTimestamp.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/typedef/DiscordTimestamp.java
@@ -16,11 +16,9 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/gamesdk/jna/typedef/DiscordTimestamp.java
-package kr.syeyoung.dungeonsguide.gamesdk.jna.typedef;
-========
+
package kr.syeyoung.dungeonsguide.mod.discord.gamesdk.jna.typedef;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/typedef/DiscordTimestamp.java
+
public class DiscordTimestamp extends Int64 {
public DiscordTimestamp() {
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/typedef/DiscordVersion.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/typedef/DiscordVersion.java
index a642ba67..58625b55 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/typedef/DiscordVersion.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/typedef/DiscordVersion.java
@@ -16,11 +16,9 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/gamesdk/jna/typedef/DiscordVersion.java
-package kr.syeyoung.dungeonsguide.gamesdk.jna.typedef;
-========
+
package kr.syeyoung.dungeonsguide.mod.discord.gamesdk.jna.typedef;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/gamesdk/jna/typedef/DiscordVersion.java
+
public class DiscordVersion extends Int32 {
public DiscordVersion() {
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/rpc/RichPresenceManager.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/rpc/RichPresenceManager.java
index 768364ba..6e3c4b48 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/rpc/RichPresenceManager.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/rpc/RichPresenceManager.java
@@ -21,25 +21,7 @@ package kr.syeyoung.dungeonsguide.mod.discord.rpc;
import com.sun.jna.Pointer;
import com.sun.jna.ptr.IntByReference;
import com.sun.jna.ptr.PointerByReference;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/rpc/RichPresenceManager.java
-import kr.syeyoung.dungeonsguide.DungeonsGuide;
-import kr.syeyoung.dungeonsguide.SkyblockStatus;
-import kr.syeyoung.dungeonsguide.chat.PartyContext;
-import kr.syeyoung.dungeonsguide.chat.PartyManager;
-import kr.syeyoung.dungeonsguide.dungeon.DungeonContext;
-import kr.syeyoung.dungeonsguide.events.DiscordUserJoinRequestEvent;
-import kr.syeyoung.dungeonsguide.events.DiscordUserUpdateEvent;
-import kr.syeyoung.dungeonsguide.features.FeatureRegistry;
-import kr.syeyoung.dungeonsguide.gamesdk.GameSDK;
-import kr.syeyoung.dungeonsguide.gamesdk.jna.NativeGameSDK;
-import kr.syeyoung.dungeonsguide.gamesdk.jna.datastruct.*;
-import kr.syeyoung.dungeonsguide.gamesdk.jna.enumuration.EDiscordActivityJoinRequestReply;
-import kr.syeyoung.dungeonsguide.gamesdk.jna.enumuration.EDiscordCreateFlags;
-import kr.syeyoung.dungeonsguide.gamesdk.jna.enumuration.EDiscordLogLevel;
-import kr.syeyoung.dungeonsguide.gamesdk.jna.enumuration.EDiscordResult;
-import kr.syeyoung.dungeonsguide.gamesdk.jna.interfacestruct.*;
-import kr.syeyoung.dungeonsguide.gamesdk.jna.typedef.*;
-========
+
import kr.syeyoung.dungeonsguide.mod.DungeonsGuide;
import kr.syeyoung.dungeonsguide.mod.SkyblockStatus;
import kr.syeyoung.dungeonsguide.mod.party.PartyContext;
@@ -54,7 +36,7 @@ import kr.syeyoung.dungeonsguide.mod.discord.gamesdk.jna.datastruct.*;
import kr.syeyoung.dungeonsguide.mod.discord.gamesdk.jna.enumuration.*;
import kr.syeyoung.dungeonsguide.mod.discord.gamesdk.jna.interfacestruct.*;
import kr.syeyoung.dungeonsguide.mod.discord.gamesdk.jna.typedef.*;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/discord/rpc/RichPresenceManager.java
+
import lombok.Getter;
import net.minecraftforge.common.MinecraftForge;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/DungeonContext.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/DungeonContext.java
index 9316f96c..257e7cc0 100755
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/DungeonContext.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/DungeonContext.java
@@ -18,20 +18,7 @@
package kr.syeyoung.dungeonsguide.mod.dungeon;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/DungeonContext.java
-import kr.syeyoung.dungeonsguide.dungeon.events.*;
-import kr.syeyoung.dungeonsguide.DungeonsGuide;
-import kr.syeyoung.dungeonsguide.dungeon.doorfinder.DungeonSpecificDataProvider;
-import kr.syeyoung.dungeonsguide.dungeon.doorfinder.DungeonSpecificDataProviderRegistry;
-import kr.syeyoung.dungeonsguide.dungeon.events.*;
-import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom;
-import kr.syeyoung.dungeonsguide.events.BossroomEnterEvent;
-import kr.syeyoung.dungeonsguide.features.FeatureRegistry;
-import kr.syeyoung.dungeonsguide.features.impl.dungeon.FeatureDungeonMap;
-import kr.syeyoung.dungeonsguide.roomprocessor.RoomProcessor;
-import kr.syeyoung.dungeonsguide.roomprocessor.bossfight.BossfightProcessor;
-import kr.syeyoung.dungeonsguide.utils.TextUtils;
-========
+
import kr.syeyoung.dungeonsguide.mod.chat.ChatTransmitter;
import kr.syeyoung.dungeonsguide.mod.dungeon.doorfinder.DungeonSpecificDataProvider;
import kr.syeyoung.dungeonsguide.mod.dungeon.doorfinder.DungeonSpecificDataProviderRegistry;
@@ -47,8 +34,8 @@ import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bossfight.BossfightPr
import kr.syeyoung.dungeonsguide.mod.events.impl.BossroomEnterEvent;
import kr.syeyoung.dungeonsguide.mod.features.FeatureRegistry;
import kr.syeyoung.dungeonsguide.mod.utils.TabListUtil;
+
import kr.syeyoung.dungeonsguide.mod.utils.TextUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/DungeonContext.java
import lombok.Getter;
import lombok.Setter;
import net.minecraft.client.Minecraft;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/actions/ActionChangeState.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/actions/ActionChangeState.java
index c44c80dc..0a0722dd 100755
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/actions/ActionChangeState.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/actions/ActionChangeState.java
@@ -19,10 +19,8 @@
package kr.syeyoung.dungeonsguide.mod.dungeon.actions;
import kr.syeyoung.dungeonsguide.dungeon.mechanics.DungeonDummy;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/actions/ActionChangeState.java
-import kr.syeyoung.dungeonsguide.dungeon.mechanics.DungeonMechanic;
-========
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/actions/ActionChangeState.java
+
+
import kr.syeyoung.dungeonsguide.dungeon.mechanics.DungeonSecret;
import kr.syeyoung.dungeonsguide.dungeon.mechanics.dunegonmechanic.DungeonMechanic;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomfinder.DungeonRoom;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/actions/ActionInteract.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/actions/ActionInteract.java
index 42cf341d..eac3c3ce 100755
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/actions/ActionInteract.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/actions/ActionInteract.java
@@ -18,15 +18,10 @@
package kr.syeyoung.dungeonsguide.mod.dungeon.actions;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/actions/ActionInteract.java
-import com.google.common.base.Predicate;
-import com.google.common.base.Predicates;
-import kr.syeyoung.dungeonsguide.dungeon.actions.tree.ActionRoute;
-import kr.syeyoung.dungeonsguide.dungeon.DungeonActionManager;
-========
+
import kr.syeyoung.dungeonsguide.mod.dungeon.DungeonActionContext;
import kr.syeyoung.dungeonsguide.mod.dungeon.actions.tree.ActionRouteProperties;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/actions/ActionInteract.java
+
import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPoint;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomfinder.DungeonRoom;
import kr.syeyoung.dungeonsguide.mod.events.impl.PlayerInteractEntityEvent;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/actions/ActionKill.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/actions/ActionKill.java
index d565a89a..8beaec1c 100755
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/actions/ActionKill.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/actions/ActionKill.java
@@ -18,15 +18,10 @@
package kr.syeyoung.dungeonsguide.mod.dungeon.actions;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/actions/ActionKill.java
-import com.google.common.base.Predicate;
-import com.google.common.base.Predicates;
-import kr.syeyoung.dungeonsguide.dungeon.actions.tree.ActionRoute;
-import kr.syeyoung.dungeonsguide.dungeon.DungeonActionManager;
-========
+
import kr.syeyoung.dungeonsguide.mod.dungeon.DungeonActionContext;
import kr.syeyoung.dungeonsguide.mod.dungeon.actions.tree.ActionRouteProperties;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/actions/ActionKill.java
+
import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPoint;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomfinder.DungeonRoom;
import kr.syeyoung.dungeonsguide.mod.utils.RenderUtils;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/actions/ActionMove.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/actions/ActionMove.java
index ce26ea70..fb05ecc5 100755
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/actions/ActionMove.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/actions/ActionMove.java
@@ -18,19 +18,13 @@
package kr.syeyoung.dungeonsguide.mod.dungeon.actions;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/actions/ActionMove.java
-import kr.syeyoung.dungeonsguide.dungeon.actions.tree.ActionRoute;
+
import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPoint;
-import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom;
-import kr.syeyoung.dungeonsguide.features.FeatureRegistry;
-import kr.syeyoung.dungeonsguide.utils.RenderUtils;
-========
import kr.syeyoung.dungeonsguide.mod.dungeon.actions.tree.ActionRouteProperties;
-import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPoint;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomfinder.DungeonRoom;
import kr.syeyoung.dungeonsguide.mod.features.FeatureRegistry;
+
import kr.syeyoung.dungeonsguide.mod.utils.RenderUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/actions/ActionMove.java
import lombok.Data;
import lombok.EqualsAndHashCode;
import net.minecraft.client.Minecraft;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/actions/ActionMoveNearestAir.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/actions/ActionMoveNearestAir.java
index 54a092dc..e98efce9 100755
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/actions/ActionMoveNearestAir.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/actions/ActionMoveNearestAir.java
@@ -18,11 +18,9 @@
package kr.syeyoung.dungeonsguide.mod.dungeon.actions;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/actions/ActionMoveNearestAir.java
-import kr.syeyoung.dungeonsguide.dungeon.actions.tree.ActionRoute;
-========
+
import kr.syeyoung.dungeonsguide.mod.dungeon.actions.tree.ActionRouteProperties;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/actions/ActionMoveNearestAir.java
+
import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPoint;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomfinder.DungeonRoom;
import kr.syeyoung.dungeonsguide.mod.features.FeatureRegistry;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/actions/tree/ActionRoute.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/actions/tree/ActionRoute.java
index f09a3ceb..c6903e7b 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/actions/tree/ActionRoute.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/actions/tree/ActionRoute.java
@@ -96,11 +96,7 @@ public class ActionRoute {
getCurrentAction().onLivingDeath(dungeonRoom, event, actionRouteProperties );
}
public void onRenderWorld(float partialTicks, boolean flag) {
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/actions/tree/ActionRoute.java
- if (current -1 >= 0 && (
- (actions.get(current-1) instanceof ActionMove && ((ActionMove) actions.get(current-1)).getTarget().getBlockPos(dungeonRoom).distanceSq(Minecraft.getMinecraft().thePlayer.getPosition()) >= 25)
- || (actions.get(current-1) instanceof ActionMoveNearestAir && ((ActionMoveNearestAir) actions.get(current-1)).getTarget().getBlockPos(dungeonRoom).distanceSq(Minecraft.getMinecraft().thePlayer.getPosition()) >= 25))) actions.get(current-1).onRenderWorld(dungeonRoom, partialTicks, actionRouteProperties, flag );
-========
+
if (current -1 >= 0) {
AbstractAction abstractAction = actions.get(current - 1);
@@ -112,7 +108,7 @@ public class ActionRoute {
getCurrentAction().onRenderWorld(dungeonRoom, partialTicks, actionRouteProperties, flag);
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/actions/tree/ActionRoute.java
+
getCurrentAction().onRenderWorld(dungeonRoom, partialTicks, actionRouteProperties, flag);
}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/EditingContext.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/EditingContext.java
index 091e0b0d..e38a0e82 100755
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/EditingContext.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/EditingContext.java
@@ -18,13 +18,10 @@
package kr.syeyoung.dungeonsguide.mod.dungeon.roomedit;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/EditingContext.java
-import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom;
-import kr.syeyoung.dungeonsguide.roomedit.gui.GuiDungeonRoomEdit;
-========
+
import kr.syeyoung.dungeonsguide.mod.dungeon.roomfinder.DungeonRoom;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.gui.GuiDungeonRoomEdit;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/EditingContext.java
+
import lombok.Getter;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiScreen;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/gui/GuiDungeonAddSet.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/gui/GuiDungeonAddSet.java
index df3a8c63..1cec4c54 100755
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/gui/GuiDungeonAddSet.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/gui/GuiDungeonAddSet.java
@@ -19,21 +19,12 @@
package kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.gui;
import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPoint;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/gui/GuiDungeonAddSet.java
-import kr.syeyoung.dungeonsguide.gui.MGui;
-import kr.syeyoung.dungeonsguide.gui.elements.MButton;
-import kr.syeyoung.dungeonsguide.gui.elements.MValue;
-import kr.syeyoung.dungeonsguide.roomedit.EditingContext;
-import kr.syeyoung.dungeonsguide.gui.elements.*;
-import kr.syeyoung.dungeonsguide.roomedit.valueedit.ValueEditOffsetPointSet;
-import kr.syeyoung.dungeonsguide.utils.RenderUtils;
-========
+
import kr.syeyoung.dungeonsguide.mod.gui.MGui;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.EditingContext;
import kr.syeyoung.dungeonsguide.mod.gui.elements.*;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.valueedit.ValueEditOffsetPointSet;
-import kr.syeyoung.dungeonsguide.mod.utils.RenderUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/gui/GuiDungeonAddSet.java
+
import lombok.Getter;
import net.minecraft.client.Minecraft;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/gui/GuiDungeonParameterEdit.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/gui/GuiDungeonParameterEdit.java
index 18c7f442..a210cc0f 100755
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/gui/GuiDungeonParameterEdit.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/gui/GuiDungeonParameterEdit.java
@@ -18,30 +18,14 @@
package kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.gui;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/gui/GuiDungeonParameterEdit.java
-import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom;
-import kr.syeyoung.dungeonsguide.gui.MGui;
-import kr.syeyoung.dungeonsguide.gui.elements.*;
-import kr.syeyoung.dungeonsguide.roomedit.EditingContext;
-import kr.syeyoung.dungeonsguide.gui.MPanel;
-import kr.syeyoung.dungeonsguide.roomedit.Parameter;
-import kr.syeyoung.dungeonsguide.gui.elements.*;
-import kr.syeyoung.dungeonsguide.roomedit.panes.DynamicEditor;
-import kr.syeyoung.dungeonsguide.roomedit.valueedit.ValueEdit;
-import kr.syeyoung.dungeonsguide.roomedit.valueedit.ValueEditCreator;
-import kr.syeyoung.dungeonsguide.roomedit.valueedit.ValueEditRegistry;
-========
+
import kr.syeyoung.dungeonsguide.mod.dungeon.roomfinder.DungeonRoom;
import kr.syeyoung.dungeonsguide.mod.gui.MGui;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.EditingContext;
import kr.syeyoung.dungeonsguide.mod.gui.MPanel;
-import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.Parameter;
import kr.syeyoung.dungeonsguide.mod.gui.elements.*;
-import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.panes.DynamicEditor;
-import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.valueedit.ValueEdit;
-import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.valueedit.ValueEditCreator;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.valueedit.ValueEditRegistry;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/gui/GuiDungeonParameterEdit.java
+
import lombok.Getter;
import net.minecraft.client.Minecraft;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/gui/GuiDungeonRoomEdit.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/gui/GuiDungeonRoomEdit.java
index ee7c8a02..6f8ef2bd 100755
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/gui/GuiDungeonRoomEdit.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/gui/GuiDungeonRoomEdit.java
@@ -18,18 +18,12 @@
package kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.gui;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/gui/GuiDungeonRoomEdit.java
-import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom;
-import kr.syeyoung.dungeonsguide.gui.MGui;
-import kr.syeyoung.dungeonsguide.gui.elements.MTabbedPane;
-import kr.syeyoung.dungeonsguide.roomedit.panes.*;
-import kr.syeyoung.dungeonsguide.roomedit.panes.*;
-========
+
import kr.syeyoung.dungeonsguide.mod.dungeon.roomfinder.DungeonRoom;
import kr.syeyoung.dungeonsguide.mod.gui.MGui;
import kr.syeyoung.dungeonsguide.mod.gui.elements.MTabbedPane;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.panes.*;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/gui/GuiDungeonRoomEdit.java
+
import lombok.Getter;
import net.minecraft.client.Minecraft;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/gui/GuiDungeonValueEdit.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/gui/GuiDungeonValueEdit.java
index e025bed6..130001c6 100755
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/gui/GuiDungeonValueEdit.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/gui/GuiDungeonValueEdit.java
@@ -18,29 +18,14 @@
package kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.gui;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/gui/GuiDungeonValueEdit.java
-import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom;
-import kr.syeyoung.dungeonsguide.gui.MGui;
-import kr.syeyoung.dungeonsguide.gui.elements.MButton;
-import kr.syeyoung.dungeonsguide.gui.elements.MLabel;
-import kr.syeyoung.dungeonsguide.roomedit.EditingContext;
-import kr.syeyoung.dungeonsguide.gui.MPanel;
-import kr.syeyoung.dungeonsguide.roomedit.Parameter;
-import kr.syeyoung.dungeonsguide.gui.elements.*;
-import kr.syeyoung.dungeonsguide.roomedit.valueedit.ValueEdit;
-import kr.syeyoung.dungeonsguide.roomedit.valueedit.ValueEditCreator;
-import kr.syeyoung.dungeonsguide.roomedit.valueedit.ValueEditRegistry;
-========
+
import kr.syeyoung.dungeonsguide.mod.dungeon.roomfinder.DungeonRoom;
import kr.syeyoung.dungeonsguide.mod.gui.MGui;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.EditingContext;
import kr.syeyoung.dungeonsguide.mod.gui.MPanel;
-import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.Parameter;
import kr.syeyoung.dungeonsguide.mod.gui.elements.*;
-import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.valueedit.ValueEdit;
-import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.valueedit.ValueEditCreator;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.valueedit.ValueEditRegistry;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/gui/GuiDungeonValueEdit.java
+
import lombok.Getter;
import net.minecraft.client.Minecraft;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/mechanicedit/ValueEditBreakableWall.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/mechanicedit/ValueEditBreakableWall.java
index 5b853203..69406793 100755
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/mechanicedit/ValueEditBreakableWall.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/mechanicedit/ValueEditBreakableWall.java
@@ -21,24 +21,11 @@ package kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.mechanicedit;
import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPoint;
import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPointSet;
import kr.syeyoung.dungeonsguide.dungeon.mechanics.DungeonBreakableWall;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditBreakableWall.java
-import kr.syeyoung.dungeonsguide.gui.elements.*;
-import kr.syeyoung.dungeonsguide.roomedit.EditingContext;
-import kr.syeyoung.dungeonsguide.gui.MPanel;
-import kr.syeyoung.dungeonsguide.roomedit.Parameter;
-import kr.syeyoung.dungeonsguide.gui.elements.*;
-import kr.syeyoung.dungeonsguide.roomedit.valueedit.ValueEdit;
-import kr.syeyoung.dungeonsguide.roomedit.valueedit.ValueEditCreator;
-import kr.syeyoung.dungeonsguide.utils.TextUtils;
-========
+
import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.EditingContext;
import kr.syeyoung.dungeonsguide.mod.gui.MPanel;
-import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.Parameter;
import kr.syeyoung.dungeonsguide.mod.gui.elements.*;
-import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.valueedit.ValueEdit;
-import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.valueedit.ValueEditCreator;
-import kr.syeyoung.dungeonsguide.mod.utils.TextUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/mechanicedit/ValueEditBreakableWall.java
+
import net.minecraft.init.Blocks;
import java.awt.*;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/mechanicedit/ValueEditDoor.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/mechanicedit/ValueEditDoor.java
index 58f1c5fd..b5792316 100755
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/mechanicedit/ValueEditDoor.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/mechanicedit/ValueEditDoor.java
@@ -21,24 +21,11 @@ package kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.mechanicedit;
import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPoint;
import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPointSet;
import kr.syeyoung.dungeonsguide.dungeon.mechanics.DungeonDoor;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditDoor.java
-import kr.syeyoung.dungeonsguide.gui.elements.*;
-import kr.syeyoung.dungeonsguide.roomedit.EditingContext;
-import kr.syeyoung.dungeonsguide.gui.MPanel;
-import kr.syeyoung.dungeonsguide.roomedit.Parameter;
-import kr.syeyoung.dungeonsguide.gui.elements.*;
-import kr.syeyoung.dungeonsguide.roomedit.valueedit.ValueEdit;
-import kr.syeyoung.dungeonsguide.roomedit.valueedit.ValueEditCreator;
-import kr.syeyoung.dungeonsguide.utils.TextUtils;
-========
+
import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.EditingContext;
import kr.syeyoung.dungeonsguide.mod.gui.MPanel;
-import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.Parameter;
import kr.syeyoung.dungeonsguide.mod.gui.elements.*;
-import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.valueedit.ValueEdit;
-import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.valueedit.ValueEditCreator;
-import kr.syeyoung.dungeonsguide.mod.utils.TextUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/mechanicedit/ValueEditDoor.java
+
import net.minecraft.init.Blocks;
import java.awt.*;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/mechanicedit/ValueEditDummy.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/mechanicedit/ValueEditDummy.java
index f72f6222..8faa5c4f 100755
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/mechanicedit/ValueEditDummy.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/mechanicedit/ValueEditDummy.java
@@ -20,29 +20,14 @@ package kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.mechanicedit;
import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPoint;
import kr.syeyoung.dungeonsguide.dungeon.mechanics.DungeonDummy;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditDummy.java
-import kr.syeyoung.dungeonsguide.gui.MPanel;
-import kr.syeyoung.dungeonsguide.gui.elements.MLabel;
-import kr.syeyoung.dungeonsguide.gui.elements.MLabelAndElement;
-import kr.syeyoung.dungeonsguide.gui.elements.MTextField;
-import kr.syeyoung.dungeonsguide.gui.elements.MValue;
-import kr.syeyoung.dungeonsguide.roomedit.EditingContext;
-import kr.syeyoung.dungeonsguide.roomedit.Parameter;
-import kr.syeyoung.dungeonsguide.roomedit.valueedit.ValueEdit;
-import kr.syeyoung.dungeonsguide.roomedit.valueedit.ValueEditCreator;
-import kr.syeyoung.dungeonsguide.utils.TextUtils;
-========
+
import kr.syeyoung.dungeonsguide.mod.gui.MPanel;
import kr.syeyoung.dungeonsguide.mod.gui.elements.MLabel;
import kr.syeyoung.dungeonsguide.mod.gui.elements.MLabelAndElement;
import kr.syeyoung.dungeonsguide.mod.gui.elements.MTextField;
import kr.syeyoung.dungeonsguide.mod.gui.elements.MValue;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.EditingContext;
-import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.Parameter;
-import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.valueedit.ValueEdit;
-import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.valueedit.ValueEditCreator;
-import kr.syeyoung.dungeonsguide.mod.utils.TextUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/mechanicedit/ValueEditDummy.java
+
import java.awt.*;
import java.util.Arrays;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/mechanicedit/ValueEditFairySoul.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/mechanicedit/ValueEditFairySoul.java
index a2fc8f1b..f029c413 100755
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/mechanicedit/ValueEditFairySoul.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/mechanicedit/ValueEditFairySoul.java
@@ -20,27 +20,11 @@ package kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.mechanicedit;
import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPoint;
import kr.syeyoung.dungeonsguide.dungeon.mechanics.DungeonFairySoul;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditFairySoul.java
-import kr.syeyoung.dungeonsguide.gui.MPanel;
-import kr.syeyoung.dungeonsguide.gui.elements.MLabel;
-import kr.syeyoung.dungeonsguide.gui.elements.MLabelAndElement;
-import kr.syeyoung.dungeonsguide.gui.elements.MTextField;
-import kr.syeyoung.dungeonsguide.gui.elements.MValue;
-import kr.syeyoung.dungeonsguide.gui.elements.*;
-import kr.syeyoung.dungeonsguide.roomedit.EditingContext;
-import kr.syeyoung.dungeonsguide.roomedit.Parameter;
-import kr.syeyoung.dungeonsguide.roomedit.valueedit.ValueEdit;
-import kr.syeyoung.dungeonsguide.roomedit.valueedit.ValueEditCreator;
-import kr.syeyoung.dungeonsguide.utils.TextUtils;
-========
+
import kr.syeyoung.dungeonsguide.mod.gui.MPanel;
import kr.syeyoung.dungeonsguide.mod.gui.elements.*;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.EditingContext;
-import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.Parameter;
-import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.valueedit.ValueEdit;
-import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.valueedit.ValueEditCreator;
-import kr.syeyoung.dungeonsguide.mod.utils.TextUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/mechanicedit/ValueEditFairySoul.java
+
import java.awt.*;
import java.util.Arrays;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/mechanicedit/ValueEditLever.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/mechanicedit/ValueEditLever.java
index d1d293fe..ec535dc5 100755
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/mechanicedit/ValueEditLever.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/mechanicedit/ValueEditLever.java
@@ -20,27 +20,11 @@ package kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.mechanicedit;
import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPoint;
import kr.syeyoung.dungeonsguide.dungeon.mechanics.DungeonLever;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditLever.java
-import kr.syeyoung.dungeonsguide.gui.elements.MLabel;
-import kr.syeyoung.dungeonsguide.gui.elements.MLabelAndElement;
-import kr.syeyoung.dungeonsguide.gui.elements.MTextField;
-import kr.syeyoung.dungeonsguide.gui.elements.MValue;
-import kr.syeyoung.dungeonsguide.roomedit.EditingContext;
-import kr.syeyoung.dungeonsguide.gui.MPanel;
-import kr.syeyoung.dungeonsguide.roomedit.Parameter;
-import kr.syeyoung.dungeonsguide.gui.elements.*;
-import kr.syeyoung.dungeonsguide.roomedit.valueedit.ValueEdit;
-import kr.syeyoung.dungeonsguide.roomedit.valueedit.ValueEditCreator;
-import kr.syeyoung.dungeonsguide.utils.TextUtils;
-========
+
import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.EditingContext;
import kr.syeyoung.dungeonsguide.mod.gui.MPanel;
-import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.Parameter;
import kr.syeyoung.dungeonsguide.mod.gui.elements.*;
-import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.valueedit.ValueEdit;
-import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.valueedit.ValueEditCreator;
-import kr.syeyoung.dungeonsguide.mod.utils.TextUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/mechanicedit/ValueEditLever.java
+
import java.awt.*;
import java.util.Arrays;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/mechanicedit/ValueEditNPC.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/mechanicedit/ValueEditNPC.java
index 414c0b6f..349da046 100755
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/mechanicedit/ValueEditNPC.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/mechanicedit/ValueEditNPC.java
@@ -20,29 +20,14 @@ package kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.mechanicedit;
import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPoint;
import kr.syeyoung.dungeonsguide.dungeon.mechanics.DungeonNPC;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditNPC.java
-import kr.syeyoung.dungeonsguide.gui.MPanel;
-import kr.syeyoung.dungeonsguide.gui.elements.MLabel;
-import kr.syeyoung.dungeonsguide.gui.elements.MLabelAndElement;
-import kr.syeyoung.dungeonsguide.gui.elements.MTextField;
-import kr.syeyoung.dungeonsguide.gui.elements.MValue;
-import kr.syeyoung.dungeonsguide.roomedit.EditingContext;
-import kr.syeyoung.dungeonsguide.roomedit.Parameter;
-import kr.syeyoung.dungeonsguide.roomedit.valueedit.ValueEdit;
-import kr.syeyoung.dungeonsguide.roomedit.valueedit.ValueEditCreator;
-import kr.syeyoung.dungeonsguide.utils.TextUtils;
-========
+
import kr.syeyoung.dungeonsguide.mod.gui.MPanel;
import kr.syeyoung.dungeonsguide.mod.gui.elements.MLabel;
import kr.syeyoung.dungeonsguide.mod.gui.elements.MLabelAndElement;
import kr.syeyoung.dungeonsguide.mod.gui.elements.MTextField;
import kr.syeyoung.dungeonsguide.mod.gui.elements.MValue;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.EditingContext;
-import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.Parameter;
-import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.valueedit.ValueEdit;
-import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.valueedit.ValueEditCreator;
-import kr.syeyoung.dungeonsguide.mod.utils.TextUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/mechanicedit/ValueEditNPC.java
+
import java.awt.*;
import java.util.Arrays;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/mechanicedit/ValueEditOnewayDoor.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/mechanicedit/ValueEditOnewayDoor.java
index 5ff5dd4f..48c52021 100755
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/mechanicedit/ValueEditOnewayDoor.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/mechanicedit/ValueEditOnewayDoor.java
@@ -21,24 +21,11 @@ package kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.mechanicedit;
import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPoint;
import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPointSet;
import kr.syeyoung.dungeonsguide.dungeon.mechanics.DungeonOnewayDoor;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditOnewayDoor.java
-import kr.syeyoung.dungeonsguide.gui.elements.*;
-import kr.syeyoung.dungeonsguide.roomedit.EditingContext;
-import kr.syeyoung.dungeonsguide.gui.MPanel;
-import kr.syeyoung.dungeonsguide.roomedit.Parameter;
-import kr.syeyoung.dungeonsguide.gui.elements.*;
-import kr.syeyoung.dungeonsguide.roomedit.valueedit.ValueEdit;
-import kr.syeyoung.dungeonsguide.roomedit.valueedit.ValueEditCreator;
-import kr.syeyoung.dungeonsguide.utils.TextUtils;
-========
+
import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.EditingContext;
import kr.syeyoung.dungeonsguide.mod.gui.MPanel;
-import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.Parameter;
import kr.syeyoung.dungeonsguide.mod.gui.elements.*;
-import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.valueedit.ValueEdit;
-import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.valueedit.ValueEditCreator;
-import kr.syeyoung.dungeonsguide.mod.utils.TextUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/mechanicedit/ValueEditOnewayDoor.java
+
import net.minecraft.init.Blocks;
import java.awt.*;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/mechanicedit/ValueEditSecret.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/mechanicedit/ValueEditSecret.java
index ac36f131..c60e512d 100755
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/mechanicedit/ValueEditSecret.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/mechanicedit/ValueEditSecret.java
@@ -20,24 +20,11 @@ package kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.mechanicedit;
import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPoint;
import kr.syeyoung.dungeonsguide.dungeon.mechanics.DungeonSecret;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditSecret.java
-import kr.syeyoung.dungeonsguide.gui.elements.*;
-import kr.syeyoung.dungeonsguide.roomedit.EditingContext;
-import kr.syeyoung.dungeonsguide.gui.MPanel;
-import kr.syeyoung.dungeonsguide.roomedit.Parameter;
-import kr.syeyoung.dungeonsguide.gui.elements.*;
-import kr.syeyoung.dungeonsguide.roomedit.valueedit.ValueEdit;
-import kr.syeyoung.dungeonsguide.roomedit.valueedit.ValueEditCreator;
-import kr.syeyoung.dungeonsguide.utils.TextUtils;
-========
+
import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.EditingContext;
import kr.syeyoung.dungeonsguide.mod.gui.MPanel;
-import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.Parameter;
import kr.syeyoung.dungeonsguide.mod.gui.elements.*;
-import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.valueedit.ValueEdit;
-import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.valueedit.ValueEditCreator;
-import kr.syeyoung.dungeonsguide.mod.utils.TextUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/mechanicedit/ValueEditSecret.java
+
import java.awt.*;
import java.util.Arrays;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/mechanicedit/ValueEditTomb.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/mechanicedit/ValueEditTomb.java
index b5bb5d23..9111959d 100755
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/mechanicedit/ValueEditTomb.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/mechanicedit/ValueEditTomb.java
@@ -20,27 +20,11 @@ package kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.mechanicedit;
import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPointSet;
import kr.syeyoung.dungeonsguide.dungeon.mechanics.DungeonTomb;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditTomb.java
-import kr.syeyoung.dungeonsguide.gui.elements.MLabel;
-import kr.syeyoung.dungeonsguide.gui.elements.MLabelAndElement;
-import kr.syeyoung.dungeonsguide.gui.elements.MTextField;
-import kr.syeyoung.dungeonsguide.gui.elements.MValue;
-import kr.syeyoung.dungeonsguide.roomedit.EditingContext;
-import kr.syeyoung.dungeonsguide.gui.MPanel;
-import kr.syeyoung.dungeonsguide.roomedit.Parameter;
-import kr.syeyoung.dungeonsguide.gui.elements.*;
-import kr.syeyoung.dungeonsguide.roomedit.valueedit.ValueEdit;
-import kr.syeyoung.dungeonsguide.roomedit.valueedit.ValueEditCreator;
-import kr.syeyoung.dungeonsguide.utils.TextUtils;
-========
+
import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.EditingContext;
import kr.syeyoung.dungeonsguide.mod.gui.MPanel;
-import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.Parameter;
import kr.syeyoung.dungeonsguide.mod.gui.elements.*;
-import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.valueedit.ValueEdit;
-import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.valueedit.ValueEditCreator;
-import kr.syeyoung.dungeonsguide.mod.utils.TextUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/mechanicedit/ValueEditTomb.java
+
import java.awt.*;
import java.util.Arrays;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/panes/ActionDisplayPane.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/panes/ActionDisplayPane.java
index 3f1aa30e..9be69a8d 100755
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/panes/ActionDisplayPane.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/panes/ActionDisplayPane.java
@@ -18,21 +18,13 @@
package kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.panes;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/panes/ActionDisplayPane.java
-import kr.syeyoung.dungeonsguide.dungeon.actions.ActionChangeState;
-import kr.syeyoung.dungeonsguide.dungeon.actions.tree.ActionTree;
-import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom;
-import kr.syeyoung.dungeonsguide.gui.MPanel;
-import kr.syeyoung.dungeonsguide.gui.elements.MButton;
-import kr.syeyoung.dungeonsguide.gui.elements.MTextField;
-import kr.syeyoung.dungeonsguide.gui.elements.*;
-========
+
import kr.syeyoung.dungeonsguide.mod.dungeon.actions.ActionChangeState;
import kr.syeyoung.dungeonsguide.mod.dungeon.actions.tree.ActionTree;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomfinder.DungeonRoom;
import kr.syeyoung.dungeonsguide.mod.gui.MPanel;
import kr.syeyoung.dungeonsguide.mod.gui.elements.*;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/panes/ActionDisplayPane.java
+
import java.awt.*;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/panes/ActionTreeDisplayPane.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/panes/ActionTreeDisplayPane.java
index 17aea467..7dc1d955 100755
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/panes/ActionTreeDisplayPane.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/panes/ActionTreeDisplayPane.java
@@ -18,19 +18,13 @@
package kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.panes;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/panes/ActionTreeDisplayPane.java
-import kr.syeyoung.dungeonsguide.dungeon.actions.Action;
-import kr.syeyoung.dungeonsguide.dungeon.actions.tree.ActionTree;
-import kr.syeyoung.dungeonsguide.dungeon.actions.tree.ActionTreeUtil;
-import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom;
-import kr.syeyoung.dungeonsguide.gui.MPanel;
-========
+
import kr.syeyoung.dungeonsguide.mod.dungeon.actions.AbstractAction;
import kr.syeyoung.dungeonsguide.mod.dungeon.actions.tree.ActionTree;
import kr.syeyoung.dungeonsguide.mod.dungeon.actions.tree.ActionTreeUtil;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomfinder.DungeonRoom;
import kr.syeyoung.dungeonsguide.mod.gui.MPanel;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/panes/ActionTreeDisplayPane.java
+
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.Gui;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/panes/GeneralEditPane.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/panes/GeneralEditPane.java
index db59b15e..1e82757f 100755
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/panes/GeneralEditPane.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/panes/GeneralEditPane.java
@@ -18,16 +18,7 @@
package kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.panes;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/panes/GeneralEditPane.java
-import kr.syeyoung.dungeonsguide.gui.elements.*;
-import kr.syeyoung.dungeonsguide.DungeonsGuide;
-import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom;
-import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoomInfoRegistry;
-import kr.syeyoung.dungeonsguide.roomedit.EditingContext;
-import kr.syeyoung.dungeonsguide.gui.MPanel;
-import kr.syeyoung.dungeonsguide.gui.elements.*;
-import kr.syeyoung.dungeonsguide.roomprocessor.ProcessorFactory;
-========
+
import kr.syeyoung.dungeonsguide.mod.DungeonsGuide;
import kr.syeyoung.dungeonsguide.Main;
import kr.syeyoung.dungeonsguide.mod.chat.ChatTransmitter;
@@ -37,7 +28,7 @@ import kr.syeyoung.dungeonsguide.mod.dungeon.roomfinder.DungeonRoomInfoRegistry;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.ProcessorFactory;
import kr.syeyoung.dungeonsguide.mod.gui.MPanel;
import kr.syeyoung.dungeonsguide.mod.gui.elements.*;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/panes/GeneralEditPane.java
+
import net.minecraft.block.Block;
import net.minecraft.block.state.IBlockState;
import net.minecraft.nbt.NBTTagCompound;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/panes/RoomDataDisplayPane.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/panes/RoomDataDisplayPane.java
index 28c56615..ad8bab43 100755
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/panes/RoomDataDisplayPane.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/panes/RoomDataDisplayPane.java
@@ -18,13 +18,10 @@
package kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.panes;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/panes/RoomDataDisplayPane.java
-import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom;
-import kr.syeyoung.dungeonsguide.gui.MPanel;
-========
+
import kr.syeyoung.dungeonsguide.mod.dungeon.roomfinder.DungeonRoom;
import kr.syeyoung.dungeonsguide.mod.gui.MPanel;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/panes/RoomDataDisplayPane.java
+
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/valueedit/ValueEditBoolean.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/valueedit/ValueEditBoolean.java
index 274f7d27..2db2aecf 100755
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/valueedit/ValueEditBoolean.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/valueedit/ValueEditBoolean.java
@@ -18,19 +18,12 @@
package kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.valueedit;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEditBoolean.java
-import kr.syeyoung.dungeonsguide.gui.elements.MStringSelectionButton;
-import kr.syeyoung.dungeonsguide.gui.MPanel;
-import kr.syeyoung.dungeonsguide.roomedit.Parameter;
-import kr.syeyoung.dungeonsguide.gui.elements.MLabel;
-import kr.syeyoung.dungeonsguide.gui.elements.MLabelAndElement;
-========
+
import kr.syeyoung.dungeonsguide.mod.gui.MPanel;
-import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.Parameter;
import kr.syeyoung.dungeonsguide.mod.gui.elements.MLabel;
import kr.syeyoung.dungeonsguide.mod.gui.elements.MLabelAndElement;
import kr.syeyoung.dungeonsguide.mod.gui.elements.MStringSelectionButton;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/valueedit/ValueEditBoolean.java
+
import java.awt.*;
import java.util.Arrays;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/valueedit/ValueEditColor.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/valueedit/ValueEditColor.java
index 0880708a..9c3b2ac7 100755
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/valueedit/ValueEditColor.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/valueedit/ValueEditColor.java
@@ -18,18 +18,10 @@
package kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.valueedit;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEditColor.java
-import kr.syeyoung.dungeonsguide.gui.MPanel;
-import kr.syeyoung.dungeonsguide.gui.elements.MColor;
-import kr.syeyoung.dungeonsguide.gui.elements.MFloatSelectionButton;
-import kr.syeyoung.dungeonsguide.gui.elements.MLabelAndElement;
-import kr.syeyoung.dungeonsguide.roomedit.Parameter;
-import kr.syeyoung.dungeonsguide.gui.elements.*;
-========
+
import kr.syeyoung.dungeonsguide.mod.gui.MPanel;
-import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.Parameter;
import kr.syeyoung.dungeonsguide.mod.gui.elements.*;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/valueedit/ValueEditColor.java
+
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.WorldRenderer;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/valueedit/ValueEditOffsetPoint.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/valueedit/ValueEditOffsetPoint.java
index f9641751..858f34f0 100755
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/valueedit/ValueEditOffsetPoint.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/valueedit/ValueEditOffsetPoint.java
@@ -19,23 +19,11 @@
package kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.valueedit;
import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPoint;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEditOffsetPoint.java
-import kr.syeyoung.dungeonsguide.gui.elements.MButton;
-import kr.syeyoung.dungeonsguide.gui.elements.MIntegerSelectionButton;
-import kr.syeyoung.dungeonsguide.gui.elements.MLabel;
-import kr.syeyoung.dungeonsguide.gui.elements.MLabelAndElement;
-import kr.syeyoung.dungeonsguide.roomedit.EditingContext;
-import kr.syeyoung.dungeonsguide.gui.MPanel;
-import kr.syeyoung.dungeonsguide.roomedit.Parameter;
-import kr.syeyoung.dungeonsguide.gui.elements.*;
-import kr.syeyoung.dungeonsguide.utils.RenderUtils;
-========
+
import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.EditingContext;
import kr.syeyoung.dungeonsguide.mod.gui.MPanel;
-import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.Parameter;
import kr.syeyoung.dungeonsguide.mod.gui.elements.*;
-import kr.syeyoung.dungeonsguide.mod.utils.RenderUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/valueedit/ValueEditOffsetPoint.java
+
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.player.EntityPlayer;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/valueedit/ValueEditRegistry.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/valueedit/ValueEditRegistry.java
index 931bd149..25e10bda 100755
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/valueedit/ValueEditRegistry.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/valueedit/ValueEditRegistry.java
@@ -18,20 +18,10 @@
package kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.valueedit;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEditRegistry.java
-import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPoint;
-import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPointSet;
-import kr.syeyoung.dungeonsguide.dungeon.mechanics.*;
-import kr.syeyoung.dungeonsguide.config.types.AColor;
-import kr.syeyoung.dungeonsguide.roomedit.mechanicedit.*;
-import kr.syeyoung.dungeonsguide.roomedit.mechanicedit.*;
-========
+
import kr.syeyoung.dungeonsguide.mod.config.types.AColor;
-import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPoint;
-import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPointSet;
-import kr.syeyoung.dungeonsguide.dungeon.mechanics.*;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.mechanicedit.*;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomedit/valueedit/ValueEditRegistry.java
+
import java.awt.*;
import java.util.ArrayList;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomfinder/DungeonRoom.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomfinder/DungeonRoom.java
index 662b263a..3a356db3 100755
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomfinder/DungeonRoom.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomfinder/DungeonRoom.java
@@ -19,31 +19,15 @@
package kr.syeyoung.dungeonsguide.mod.dungeon.roomfinder;
import com.google.common.collect.Sets;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/roomfinder/DungeonRoom.java
+
import kr.syeyoung.dungeonsguide.dungeon.data.DungeonRoomInfo;
-import kr.syeyoung.dungeonsguide.dungeon.doorfinder.EDungeonDoorType;
-import kr.syeyoung.dungeonsguide.dungeon.events.DungeonStateChangeEvent;
-import kr.syeyoung.dungeonsguide.dungeon.mechanics.DungeonMechanic;
import kr.syeyoung.dungeonsguide.dungeon.mechanics.DungeonRoomDoor;
-import kr.syeyoung.dungeonsguide.features.impl.secret.FeaturePathfindStrategy;
-import kr.syeyoung.dungeonsguide.dungeon.DungeonContext;
-import kr.syeyoung.dungeonsguide.dungeon.MapProcessor;
-import kr.syeyoung.dungeonsguide.dungeon.doorfinder.DungeonDoor;
-import kr.syeyoung.dungeonsguide.features.FeatureRegistry;
-import kr.syeyoung.dungeonsguide.pathfinding.*;
-import kr.syeyoung.dungeonsguide.roomedit.EditingContext;
-import kr.syeyoung.dungeonsguide.roomprocessor.ProcessorFactory;
-import kr.syeyoung.dungeonsguide.roomprocessor.RoomProcessor;
-import kr.syeyoung.dungeonsguide.roomprocessor.RoomProcessorGenerator;
-========
+import kr.syeyoung.dungeonsguide.dungeon.mechanics.dunegonmechanic.DungeonMechanic;
import kr.syeyoung.dungeonsguide.mod.dungeon.DungeonContext;
import kr.syeyoung.dungeonsguide.mod.dungeon.MapProcessor;
-import kr.syeyoung.dungeonsguide.dungeon.data.DungeonRoomInfo;
import kr.syeyoung.dungeonsguide.mod.dungeon.doorfinder.DungeonDoor;
import kr.syeyoung.dungeonsguide.mod.dungeon.doorfinder.EDungeonDoorType;
import kr.syeyoung.dungeonsguide.mod.dungeon.events.impl.DungeonStateChangeEvent;
-import kr.syeyoung.dungeonsguide.dungeon.mechanics.dunegonmechanic.DungeonMechanic;
-import kr.syeyoung.dungeonsguide.dungeon.mechanics.DungeonRoomDoor;
import kr.syeyoung.dungeonsguide.mod.dungeon.pathfinding.*;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.EditingContext;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.ProcessorFactory;
@@ -51,7 +35,7 @@ import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.RoomProcessor;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.RoomProcessorGenerator;
import kr.syeyoung.dungeonsguide.mod.features.FeatureRegistry;
import kr.syeyoung.dungeonsguide.mod.features.impl.secret.FeaturePathfindStrategy;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomfinder/DungeonRoom.java
+
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomfinder/DungeonRoomInfoRegistry.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomfinder/DungeonRoomInfoRegistry.java
index 34bcba4d..6a881dc1 100755
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomfinder/DungeonRoomInfoRegistry.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomfinder/DungeonRoomInfoRegistry.java
@@ -19,11 +19,10 @@
package kr.syeyoung.dungeonsguide.mod.dungeon.roomfinder;
import com.google.common.io.Files;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/roomfinder/DungeonRoomInfoRegistry.java
-========
+
import com.google.gson.Gson;
import kr.syeyoung.dungeonsguide.Main;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomfinder/DungeonRoomInfoRegistry.java
+
import kr.syeyoung.dungeonsguide.dungeon.data.DungeonRoomInfo;
import kr.syeyoung.dungeonsguide.launcher.Main;
import lombok.Getter;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomfinder/RoomMatcher.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomfinder/RoomMatcher.java
index ed1bf3c0..860b2bfc 100755
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomfinder/RoomMatcher.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomfinder/RoomMatcher.java
@@ -25,11 +25,9 @@ import kr.syeyoung.dungeonsguide.mod.utils.ShortUtils;
import lombok.Getter;
import net.minecraft.block.Block;
import net.minecraft.init.Blocks;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/dungeon/roomfinder/RoomMatcher.java
-import net.minecraft.world.World;
-========
+
import net.minecraft.util.ChatComponentText;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomfinder/RoomMatcher.java
+
import java.util.List;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/GeneralRoomProcessor.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/GeneralRoomProcessor.java
index f0514aa8..aaedbf59 100755
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/GeneralRoomProcessor.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/GeneralRoomProcessor.java
@@ -18,53 +18,24 @@
package kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/GeneralRoomProcessor.java
-import kr.syeyoung.dungeonsguide.DungeonsGuide;
-import kr.syeyoung.dungeonsguide.dungeon.actions.ActionComplete;
-import kr.syeyoung.dungeonsguide.dungeon.actions.ActionMove;
-import kr.syeyoung.dungeonsguide.dungeon.actions.ActionMoveNearestAir;
-import kr.syeyoung.dungeonsguide.dungeon.actions.tree.ActionRoute;
-import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPoint;
-import kr.syeyoung.dungeonsguide.dungeon.mechanics.DungeonMechanic;
-import kr.syeyoung.dungeonsguide.dungeon.mechanics.DungeonRoomDoor;
-import kr.syeyoung.dungeonsguide.dungeon.mechanics.DungeonSecret;
-import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom;
-import kr.syeyoung.dungeonsguide.dungeon.DungeonContext;
-import kr.syeyoung.dungeonsguide.dungeon.DungeonActionManager;
-import kr.syeyoung.dungeonsguide.events.BlockUpdateEvent;
-import kr.syeyoung.dungeonsguide.events.KeyBindPressedEvent;
-import kr.syeyoung.dungeonsguide.events.PlayerInteractEntityEvent;
-import kr.syeyoung.dungeonsguide.features.FeatureRegistry;
-import kr.syeyoung.dungeonsguide.pathfinding.NodeProcessorDungeonRoom;
-import kr.syeyoung.dungeonsguide.roomedit.EditingContext;
-import kr.syeyoung.dungeonsguide.roomedit.gui.GuiDungeonAddSet;
-import kr.syeyoung.dungeonsguide.roomedit.gui.GuiDungeonRoomEdit;
-import kr.syeyoung.dungeonsguide.utils.VectorUtils;
-========
+
import kr.syeyoung.dungeonsguide.mod.DungeonsGuide;
import kr.syeyoung.dungeonsguide.mod.chat.ChatTransmitter;
import kr.syeyoung.dungeonsguide.mod.dungeon.DungeonContext;
import kr.syeyoung.dungeonsguide.mod.dungeon.DungeonActionContext;
-import kr.syeyoung.dungeonsguide.mod.dungeon.actions.ActionComplete;
import kr.syeyoung.dungeonsguide.mod.dungeon.actions.ActionMove;
import kr.syeyoung.dungeonsguide.mod.dungeon.actions.ActionMoveNearestAir;
import kr.syeyoung.dungeonsguide.mod.dungeon.actions.tree.ActionRoute;
import kr.syeyoung.dungeonsguide.mod.dungeon.actions.tree.ActionRouteProperties;
-import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPoint;
-import kr.syeyoung.dungeonsguide.dungeon.mechanics.dunegonmechanic.DungeonMechanic;
-import kr.syeyoung.dungeonsguide.dungeon.mechanics.DungeonRoomDoor;
-import kr.syeyoung.dungeonsguide.dungeon.mechanics.DungeonSecret;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomfinder.DungeonRoom;
import kr.syeyoung.dungeonsguide.mod.events.impl.BlockUpdateEvent;
import kr.syeyoung.dungeonsguide.mod.events.impl.KeyBindPressedEvent;
-import kr.syeyoung.dungeonsguide.mod.events.impl.PlayerInteractEntityEvent;
import kr.syeyoung.dungeonsguide.mod.features.FeatureRegistry;
import kr.syeyoung.dungeonsguide.mod.dungeon.pathfinding.NodeProcessorDungeonRoom;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.EditingContext;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.gui.GuiDungeonAddSet;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.gui.GuiDungeonRoomEdit;
-import kr.syeyoung.dungeonsguide.mod.utils.VectorUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/GeneralRoomProcessor.java
+
import lombok.Getter;
import lombok.Setter;
import net.minecraft.block.state.IBlockState;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/RoomProcessorBlazeSolver.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/RoomProcessorBlazeSolver.java
index 58c2ebd9..88df3aeb 100755
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/RoomProcessorBlazeSolver.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/RoomProcessorBlazeSolver.java
@@ -18,19 +18,11 @@
package kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/RoomProcessorBlazeSolver.java
-import kr.syeyoung.dungeonsguide.config.types.AColor;
-import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom;
-import kr.syeyoung.dungeonsguide.features.FeatureRegistry;
-import kr.syeyoung.dungeonsguide.utils.RenderUtils;
-import kr.syeyoung.dungeonsguide.utils.TextUtils;
-========
+
import kr.syeyoung.dungeonsguide.mod.config.types.AColor;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomfinder.DungeonRoom;
import kr.syeyoung.dungeonsguide.mod.features.FeatureRegistry;
-import kr.syeyoung.dungeonsguide.mod.utils.RenderUtils;
-import kr.syeyoung.dungeonsguide.mod.utils.TextUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/RoomProcessorBlazeSolver.java
+
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.entity.Entity;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/RoomProcessorCreeperSolver.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/RoomProcessorCreeperSolver.java
index b30371b1..09cdf2ca 100755
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/RoomProcessorCreeperSolver.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/RoomProcessorCreeperSolver.java
@@ -18,16 +18,11 @@
package kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/RoomProcessorCreeperSolver.java
-import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom;
-import kr.syeyoung.dungeonsguide.features.FeatureRegistry;
-import kr.syeyoung.dungeonsguide.utils.RenderUtils;
-========
+
import kr.syeyoung.dungeonsguide.mod.DungeonsGuide;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomfinder.DungeonRoom;
import kr.syeyoung.dungeonsguide.mod.features.FeatureRegistry;
-import kr.syeyoung.dungeonsguide.mod.utils.RenderUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/RoomProcessorCreeperSolver.java
+
import net.minecraft.block.Block;
import net.minecraft.init.Blocks;
import net.minecraft.util.AxisAlignedBB;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/RoomProcessorRedRoom.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/RoomProcessorRedRoom.java
index 8229d6fe..f51eb957 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/RoomProcessorRedRoom.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/RoomProcessorRedRoom.java
@@ -19,21 +19,13 @@
package kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor;
import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPoint;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/RoomProcessorRedRoom.java
-import kr.syeyoung.dungeonsguide.dungeon.doorfinder.DungeonDoor;
-import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom;
-import kr.syeyoung.dungeonsguide.features.impl.boss.FeatureWarningOnPortal;
-import kr.syeyoung.dungeonsguide.features.text.StyledTextRenderer;
-import kr.syeyoung.dungeonsguide.features.FeatureRegistry;
-import kr.syeyoung.dungeonsguide.utils.RenderUtils;
-========
+
import kr.syeyoung.dungeonsguide.mod.dungeon.doorfinder.DungeonDoor;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomfinder.DungeonRoom;
import kr.syeyoung.dungeonsguide.mod.features.FeatureRegistry;
import kr.syeyoung.dungeonsguide.mod.features.impl.boss.FeatureWarningOnPortal;
import kr.syeyoung.dungeonsguide.mod.features.text.StyledTextRenderer;
-import kr.syeyoung.dungeonsguide.mod.utils.RenderUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/RoomProcessorRedRoom.java
+
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.entity.RenderManager;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/RoomProcessorRiddle.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/RoomProcessorRiddle.java
index 803b35c3..39a39855 100755
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/RoomProcessorRiddle.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/RoomProcessorRiddle.java
@@ -19,18 +19,11 @@
package kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor;
import com.google.common.base.Predicate;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/RoomProcessorRiddle.java
-import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom;
-import kr.syeyoung.dungeonsguide.features.FeatureRegistry;
-import kr.syeyoung.dungeonsguide.utils.RenderUtils;
-import kr.syeyoung.dungeonsguide.utils.TextUtils;
-========
+
import kr.syeyoung.dungeonsguide.mod.chat.ChatTransmitter;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomfinder.DungeonRoom;
import kr.syeyoung.dungeonsguide.mod.features.FeatureRegistry;
-import kr.syeyoung.dungeonsguide.mod.utils.RenderUtils;
-import kr.syeyoung.dungeonsguide.mod.utils.TextUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/RoomProcessorRiddle.java
+
import net.minecraft.block.Block;
import net.minecraft.entity.item.EntityArmorStand;
import net.minecraft.init.Blocks;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/RoomProcessorTeleportMazeSolver.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/RoomProcessorTeleportMazeSolver.java
index 852e2c86..8d327b7a 100755
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/RoomProcessorTeleportMazeSolver.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/RoomProcessorTeleportMazeSolver.java
@@ -18,15 +18,10 @@
package kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/RoomProcessorTeleportMazeSolver.java
-import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom;
-import kr.syeyoung.dungeonsguide.features.FeatureRegistry;
-import kr.syeyoung.dungeonsguide.utils.RenderUtils;
-========
+
import kr.syeyoung.dungeonsguide.mod.dungeon.roomfinder.DungeonRoom;
import kr.syeyoung.dungeonsguide.mod.features.FeatureRegistry;
-import kr.syeyoung.dungeonsguide.mod.utils.RenderUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/RoomProcessorTeleportMazeSolver.java
+
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.EntityPlayerSP;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/RoomProcessorTrivia.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/RoomProcessorTrivia.java
index dca124f8..abfeb0b0 100755
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/RoomProcessorTrivia.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/RoomProcessorTrivia.java
@@ -18,10 +18,9 @@
package kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/RoomProcessorTrivia.java
-========
+
import kr.syeyoung.dungeonsguide.mod.chat.ChatTransmitter;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/RoomProcessorTrivia.java
+
import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPoint;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomfinder.DungeonRoom;
import kr.syeyoung.dungeonsguide.mod.features.FeatureRegistry;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/RoomProcessorBombDefuseSolver.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/RoomProcessorBombDefuseSolver.java
index b6a5fd37..46e7cf9a 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/RoomProcessorBombDefuseSolver.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/RoomProcessorBombDefuseSolver.java
@@ -18,41 +18,13 @@
package kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bombdefuse;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/bombdefuse/RoomProcessorBombDefuseSolver.java
-import kr.syeyoung.dungeonsguide.DungeonsGuide;
-import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPoint;
-import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPointSet;
-import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom;
-import kr.syeyoung.dungeonsguide.events.KeyBindPressedEvent;
-import kr.syeyoung.dungeonsguide.events.PlayerInteractEntityEvent;
-import kr.syeyoung.dungeonsguide.features.FeatureRegistry;
-import kr.syeyoung.dungeonsguide.roomprocessor.GeneralRoomProcessor;
-import kr.syeyoung.dungeonsguide.roomprocessor.RoomProcessorGenerator;
-import kr.syeyoung.dungeonsguide.roomprocessor.bombdefuse.chambers.BDChamber;
-import kr.syeyoung.dungeonsguide.roomprocessor.bombdefuse.chambers.BombDefuseChamberGenerator;
-import kr.syeyoung.dungeonsguide.roomprocessor.bombdefuse.chambers.DummyDefuseChamberProcessor;
-import kr.syeyoung.dungeonsguide.roomprocessor.bombdefuse.chambers.arrow.ArrowProcessorMatcher;
-import kr.syeyoung.dungeonsguide.roomprocessor.bombdefuse.chambers.bugged.ImpossibleMatcher;
-import kr.syeyoung.dungeonsguide.roomprocessor.bombdefuse.chambers.color.ColorProcessorMatcher;
-import kr.syeyoung.dungeonsguide.roomprocessor.bombdefuse.chambers.creeper.CreeperProcessorMatcher;
-import kr.syeyoung.dungeonsguide.roomprocessor.bombdefuse.chambers.goldenpath.GoldenPathProcessorMatcher;
-import kr.syeyoung.dungeonsguide.roomprocessor.bombdefuse.chambers.maze.MazeProcessorMatcher;
-import kr.syeyoung.dungeonsguide.roomprocessor.bombdefuse.chambers.number.NumberProcessorMatcher;
-import kr.syeyoung.dungeonsguide.utils.RenderUtils;
-import kr.syeyoung.dungeonsguide.utils.TextUtils;
-========
+
import kr.syeyoung.dungeonsguide.mod.chat.ChatTransmitter;
-import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPoint;
-import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPointSet;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomfinder.DungeonRoom;
import kr.syeyoung.dungeonsguide.mod.events.impl.KeyBindPressedEvent;
-import kr.syeyoung.dungeonsguide.mod.events.impl.PlayerInteractEntityEvent;
import kr.syeyoung.dungeonsguide.mod.features.FeatureRegistry;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.GeneralRoomProcessor;
-import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.RoomProcessorGenerator;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bombdefuse.chambers.BDChamber;
-import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bombdefuse.chambers.BombDefuseChamberGenerator;
-import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bombdefuse.chambers.DummyDefuseChamberProcessor;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bombdefuse.chambers.arrow.ArrowProcessorMatcher;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bombdefuse.chambers.bugged.ImpossibleMatcher;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bombdefuse.chambers.color.ColorProcessorMatcher;
@@ -60,9 +32,7 @@ import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bombdefuse.chambers.c
import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bombdefuse.chambers.goldenpath.GoldenPathProcessorMatcher;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bombdefuse.chambers.maze.MazeProcessorMatcher;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bombdefuse.chambers.number.NumberProcessorMatcher;
-import kr.syeyoung.dungeonsguide.mod.utils.RenderUtils;
-import kr.syeyoung.dungeonsguide.mod.utils.TextUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/RoomProcessorBombDefuseSolver.java
+
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.Getter;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/GeneralDefuseChamberProcessor.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/GeneralDefuseChamberProcessor.java
index 005c0e41..32d11819 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/GeneralDefuseChamberProcessor.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/GeneralDefuseChamberProcessor.java
@@ -18,19 +18,12 @@
package kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bombdefuse.chambers;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/bombdefuse/chambers/GeneralDefuseChamberProcessor.java
-import kr.syeyoung.dungeonsguide.events.BlockUpdateEvent;
-import kr.syeyoung.dungeonsguide.events.KeyBindPressedEvent;
-import kr.syeyoung.dungeonsguide.events.PlayerInteractEntityEvent;
-import kr.syeyoung.dungeonsguide.features.FeatureRegistry;
-import kr.syeyoung.dungeonsguide.roomprocessor.bombdefuse.RoomProcessorBombDefuseSolver;
-========
+
import kr.syeyoung.dungeonsguide.mod.events.impl.BlockUpdateEvent;
import kr.syeyoung.dungeonsguide.mod.events.impl.KeyBindPressedEvent;
-import kr.syeyoung.dungeonsguide.mod.events.impl.PlayerInteractEntityEvent;
import kr.syeyoung.dungeonsguide.mod.features.FeatureRegistry;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bombdefuse.RoomProcessorBombDefuseSolver;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/GeneralDefuseChamberProcessor.java
+
import lombok.Getter;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/arrow/ArrowRightProcessor.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/arrow/ArrowRightProcessor.java
index 48e1e329..c2cf228f 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/arrow/ArrowRightProcessor.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/arrow/ArrowRightProcessor.java
@@ -20,17 +20,11 @@ package kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bombdefuse.chambers.
import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/bombdefuse/chambers/arrow/ArrowRightProcessor.java
-import kr.syeyoung.dungeonsguide.roomprocessor.bombdefuse.RoomProcessorBombDefuseSolver;
-import kr.syeyoung.dungeonsguide.roomprocessor.bombdefuse.chambers.BDChamber;
-import kr.syeyoung.dungeonsguide.roomprocessor.bombdefuse.chambers.GeneralDefuseChamberProcessor;
-import kr.syeyoung.dungeonsguide.utils.RenderUtils;
-========
+
import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bombdefuse.RoomProcessorBombDefuseSolver;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bombdefuse.chambers.BDChamber;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bombdefuse.chambers.GeneralDefuseChamberProcessor;
-import kr.syeyoung.dungeonsguide.mod.utils.RenderUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/arrow/ArrowRightProcessor.java
+
import net.minecraft.entity.item.EntityArmorStand;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/color/ColorLeftProcessor.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/color/ColorLeftProcessor.java
index 485d1e4a..a899af5f 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/color/ColorLeftProcessor.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/color/ColorLeftProcessor.java
@@ -20,19 +20,12 @@ package kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bombdefuse.chambers.
import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/bombdefuse/chambers/color/ColorLeftProcessor.java
-import kr.syeyoung.dungeonsguide.features.FeatureRegistry;
-import kr.syeyoung.dungeonsguide.roomprocessor.bombdefuse.RoomProcessorBombDefuseSolver;
-import kr.syeyoung.dungeonsguide.roomprocessor.bombdefuse.chambers.BDChamber;
-import kr.syeyoung.dungeonsguide.roomprocessor.bombdefuse.chambers.GeneralDefuseChamberProcessor;
-import kr.syeyoung.dungeonsguide.utils.RenderUtils;
-========
+
import kr.syeyoung.dungeonsguide.mod.features.FeatureRegistry;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bombdefuse.RoomProcessorBombDefuseSolver;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bombdefuse.chambers.BDChamber;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bombdefuse.chambers.GeneralDefuseChamberProcessor;
-import kr.syeyoung.dungeonsguide.mod.utils.RenderUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/color/ColorLeftProcessor.java
+
import net.minecraft.block.Block;
import net.minecraft.entity.item.EntityArmorStand;
import net.minecraft.item.ItemStack;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/color/ColorRightProcessor.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/color/ColorRightProcessor.java
index 40ffdf8e..87ce135f 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/color/ColorRightProcessor.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/color/ColorRightProcessor.java
@@ -20,19 +20,12 @@ package kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bombdefuse.chambers.
import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/bombdefuse/chambers/color/ColorRightProcessor.java
-import kr.syeyoung.dungeonsguide.features.FeatureRegistry;
-import kr.syeyoung.dungeonsguide.roomprocessor.bombdefuse.RoomProcessorBombDefuseSolver;
-import kr.syeyoung.dungeonsguide.roomprocessor.bombdefuse.chambers.BDChamber;
-import kr.syeyoung.dungeonsguide.roomprocessor.bombdefuse.chambers.GeneralDefuseChamberProcessor;
-import kr.syeyoung.dungeonsguide.utils.RenderUtils;
-========
+
import kr.syeyoung.dungeonsguide.mod.features.FeatureRegistry;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bombdefuse.RoomProcessorBombDefuseSolver;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bombdefuse.chambers.BDChamber;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bombdefuse.chambers.GeneralDefuseChamberProcessor;
-import kr.syeyoung.dungeonsguide.mod.utils.RenderUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/color/ColorRightProcessor.java
+
import net.minecraft.block.Block;
import net.minecraft.client.settings.GameSettings;
import net.minecraft.entity.item.EntityArmorStand;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/creeper/CreeperLeftProcessor.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/creeper/CreeperLeftProcessor.java
index 3303107c..b22daeb9 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/creeper/CreeperLeftProcessor.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/creeper/CreeperLeftProcessor.java
@@ -18,17 +18,11 @@
package kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bombdefuse.chambers.creeper;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/bombdefuse/chambers/creeper/CreeperLeftProcessor.java
-import kr.syeyoung.dungeonsguide.roomprocessor.bombdefuse.RoomProcessorBombDefuseSolver;
-import kr.syeyoung.dungeonsguide.roomprocessor.bombdefuse.chambers.BDChamber;
-import kr.syeyoung.dungeonsguide.roomprocessor.bombdefuse.chambers.GeneralDefuseChamberProcessor;
-import kr.syeyoung.dungeonsguide.utils.RenderUtils;
-========
+
import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bombdefuse.RoomProcessorBombDefuseSolver;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bombdefuse.chambers.BDChamber;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bombdefuse.chambers.GeneralDefuseChamberProcessor;
-import kr.syeyoung.dungeonsguide.mod.utils.RenderUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/creeper/CreeperLeftProcessor.java
+
import net.minecraft.init.Blocks;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.BlockPos;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/creeper/CreeperRightProcessor.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/creeper/CreeperRightProcessor.java
index 27ebf5e0..dcdd5187 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/creeper/CreeperRightProcessor.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/creeper/CreeperRightProcessor.java
@@ -18,17 +18,11 @@
package kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bombdefuse.chambers.creeper;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/bombdefuse/chambers/creeper/CreeperRightProcessor.java
-import kr.syeyoung.dungeonsguide.roomprocessor.bombdefuse.RoomProcessorBombDefuseSolver;
-import kr.syeyoung.dungeonsguide.roomprocessor.bombdefuse.chambers.BDChamber;
-import kr.syeyoung.dungeonsguide.roomprocessor.bombdefuse.chambers.GeneralDefuseChamberProcessor;
-import kr.syeyoung.dungeonsguide.utils.RenderUtils;
-========
+
import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bombdefuse.RoomProcessorBombDefuseSolver;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bombdefuse.chambers.BDChamber;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bombdefuse.chambers.GeneralDefuseChamberProcessor;
-import kr.syeyoung.dungeonsguide.mod.utils.RenderUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/creeper/CreeperRightProcessor.java
+
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.BlockPos;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/goldenpath/GoldenPathProcessorMatcher.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/goldenpath/GoldenPathProcessorMatcher.java
index 7f1ae549..90e95427 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/goldenpath/GoldenPathProcessorMatcher.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/goldenpath/GoldenPathProcessorMatcher.java
@@ -18,17 +18,10 @@
package kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bombdefuse.chambers.goldenpath;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/bombdefuse/chambers/goldenpath/GoldenPathProcessorMatcher.java
-import kr.syeyoung.dungeonsguide.roomprocessor.bombdefuse.RoomProcessorBombDefuseSolver;
-import kr.syeyoung.dungeonsguide.roomprocessor.bombdefuse.chambers.BDChamber;
-import kr.syeyoung.dungeonsguide.roomprocessor.bombdefuse.chambers.BombDefuseChamberGenerator;
-import kr.syeyoung.dungeonsguide.roomprocessor.bombdefuse.chambers.ChamberProcessor;
-========
+
import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bombdefuse.RoomProcessorBombDefuseSolver;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bombdefuse.chambers.BDChamber;
-import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bombdefuse.chambers.BombDefuseChamberGenerator;
-import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bombdefuse.chambers.ChamberProcessor;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/goldenpath/GoldenPathProcessorMatcher.java
+
import net.minecraft.init.Blocks;
public class GoldenPathProcessorMatcher implements BombDefuseChamberGenerator {
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/maze/MazeLeftProcessor.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/maze/MazeLeftProcessor.java
index 3a7bcddf..6f6eceed 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/maze/MazeLeftProcessor.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/maze/MazeLeftProcessor.java
@@ -18,18 +18,13 @@
package kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bombdefuse.chambers.maze;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/bombdefuse/chambers/maze/MazeLeftProcessor.java
-import kr.syeyoung.dungeonsguide.features.FeatureRegistry;
-import kr.syeyoung.dungeonsguide.roomprocessor.bombdefuse.RoomProcessorBombDefuseSolver;
-import kr.syeyoung.dungeonsguide.roomprocessor.bombdefuse.chambers.BDChamber;
-import kr.syeyoung.dungeonsguide.roomprocessor.bombdefuse.chambers.GeneralDefuseChamberProcessor;
-========
+
import kr.syeyoung.dungeonsguide.mod.DungeonsGuide;
import kr.syeyoung.dungeonsguide.mod.features.FeatureRegistry;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bombdefuse.RoomProcessorBombDefuseSolver;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bombdefuse.chambers.BDChamber;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bombdefuse.chambers.GeneralDefuseChamberProcessor;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/maze/MazeLeftProcessor.java
+
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/maze/MazeProcessorMatcher.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/maze/MazeProcessorMatcher.java
index c2308f7b..ff874d5a 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/maze/MazeProcessorMatcher.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/maze/MazeProcessorMatcher.java
@@ -18,17 +18,10 @@
package kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bombdefuse.chambers.maze;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/bombdefuse/chambers/maze/MazeProcessorMatcher.java
-import kr.syeyoung.dungeonsguide.roomprocessor.bombdefuse.RoomProcessorBombDefuseSolver;
-import kr.syeyoung.dungeonsguide.roomprocessor.bombdefuse.chambers.BDChamber;
-import kr.syeyoung.dungeonsguide.roomprocessor.bombdefuse.chambers.BombDefuseChamberGenerator;
-import kr.syeyoung.dungeonsguide.roomprocessor.bombdefuse.chambers.ChamberProcessor;
-========
+
import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bombdefuse.RoomProcessorBombDefuseSolver;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bombdefuse.chambers.BDChamber;
-import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bombdefuse.chambers.BombDefuseChamberGenerator;
-import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bombdefuse.chambers.ChamberProcessor;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/maze/MazeProcessorMatcher.java
+
import net.minecraft.init.Blocks;
public class MazeProcessorMatcher implements BombDefuseChamberGenerator {
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/maze/MazeRightProcessor.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/maze/MazeRightProcessor.java
index 4bde5284..81c9e244 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/maze/MazeRightProcessor.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/maze/MazeRightProcessor.java
@@ -18,17 +18,11 @@
package kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bombdefuse.chambers.maze;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/bombdefuse/chambers/maze/MazeRightProcessor.java
-import kr.syeyoung.dungeonsguide.roomprocessor.bombdefuse.RoomProcessorBombDefuseSolver;
-import kr.syeyoung.dungeonsguide.roomprocessor.bombdefuse.chambers.BDChamber;
-import kr.syeyoung.dungeonsguide.roomprocessor.bombdefuse.chambers.GeneralDefuseChamberProcessor;
-import kr.syeyoung.dungeonsguide.utils.RenderUtils;
-========
+
import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bombdefuse.RoomProcessorBombDefuseSolver;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bombdefuse.chambers.BDChamber;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bombdefuse.chambers.GeneralDefuseChamberProcessor;
-import kr.syeyoung.dungeonsguide.mod.utils.RenderUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/maze/MazeRightProcessor.java
+
import net.minecraft.block.Block;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.BlockPos;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/number/NumberLeftProcessor.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/number/NumberLeftProcessor.java
index 0e4393bc..f929041f 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/number/NumberLeftProcessor.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/number/NumberLeftProcessor.java
@@ -20,17 +20,11 @@ package kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bombdefuse.chambers.
import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/bombdefuse/chambers/number/NumberLeftProcessor.java
-import kr.syeyoung.dungeonsguide.roomprocessor.bombdefuse.RoomProcessorBombDefuseSolver;
-import kr.syeyoung.dungeonsguide.roomprocessor.bombdefuse.chambers.BDChamber;
-import kr.syeyoung.dungeonsguide.roomprocessor.bombdefuse.chambers.GeneralDefuseChamberProcessor;
-import kr.syeyoung.dungeonsguide.utils.RenderUtils;
-========
+
import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bombdefuse.RoomProcessorBombDefuseSolver;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bombdefuse.chambers.BDChamber;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bombdefuse.chambers.GeneralDefuseChamberProcessor;
-import kr.syeyoung.dungeonsguide.mod.utils.RenderUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/number/NumberLeftProcessor.java
+
import net.minecraft.entity.item.EntityArmorStand;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/number/NumberRightProcessor.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/number/NumberRightProcessor.java
index 0e7039dd..ed09f94f 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/number/NumberRightProcessor.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/number/NumberRightProcessor.java
@@ -20,17 +20,11 @@ package kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bombdefuse.chambers.
import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/bombdefuse/chambers/number/NumberRightProcessor.java
-import kr.syeyoung.dungeonsguide.roomprocessor.bombdefuse.RoomProcessorBombDefuseSolver;
-import kr.syeyoung.dungeonsguide.roomprocessor.bombdefuse.chambers.BDChamber;
-import kr.syeyoung.dungeonsguide.roomprocessor.bombdefuse.chambers.GeneralDefuseChamberProcessor;
-import kr.syeyoung.dungeonsguide.utils.RenderUtils;
-========
+
import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bombdefuse.RoomProcessorBombDefuseSolver;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bombdefuse.chambers.BDChamber;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bombdefuse.chambers.GeneralDefuseChamberProcessor;
-import kr.syeyoung.dungeonsguide.mod.utils.RenderUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bombdefuse/chambers/number/NumberRightProcessor.java
+
import net.minecraft.entity.item.EntityArmorStand;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bossfight/BossfightProcessorBonzo.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bossfight/BossfightProcessorBonzo.java
index 029b54df..a65e0efe 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bossfight/BossfightProcessorBonzo.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bossfight/BossfightProcessorBonzo.java
@@ -18,11 +18,8 @@
package kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bossfight;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/bossfight/BossfightProcessorBonzo.java
-import kr.syeyoung.dungeonsguide.utils.TextUtils;
-========
-import kr.syeyoung.dungeonsguide.mod.utils.TextUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/bossfight/BossfightProcessorBonzo.java
+
+
import net.minecraft.entity.item.EntityArmorStand;
import net.minecraftforge.event.entity.living.LivingEvent;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/boxpuzzle/RoomProcessorBoxSolver.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/boxpuzzle/RoomProcessorBoxSolver.java
index f528d0b4..848d5e1c 100755
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/boxpuzzle/RoomProcessorBoxSolver.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/boxpuzzle/RoomProcessorBoxSolver.java
@@ -18,12 +18,10 @@
package kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.boxpuzzle;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/boxpuzzle/RoomProcessorBoxSolver.java
-import kr.syeyoung.dungeonsguide.config.types.AColor;
-========
+
import kr.syeyoung.dungeonsguide.mod.chat.ChatTransmitter;
import kr.syeyoung.dungeonsguide.mod.config.types.AColor;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/boxpuzzle/RoomProcessorBoxSolver.java
+
import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPointSet;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomfinder.DungeonRoom;
import kr.syeyoung.dungeonsguide.mod.features.FeatureRegistry;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/icefill/RoomProcessorIcePath2.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/icefill/RoomProcessorIcePath2.java
index f1af4fcb..e3354a02 100755
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/icefill/RoomProcessorIcePath2.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/icefill/RoomProcessorIcePath2.java
@@ -18,10 +18,9 @@
package kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.icefill;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/icefill/RoomProcessorIcePath2.java
-========
+
import kr.syeyoung.dungeonsguide.mod.chat.ChatTransmitter;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/icefill/RoomProcessorIcePath2.java
+
import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPointSet;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomfinder.DungeonRoom;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.GeneralRoomProcessor;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/waterpuzzle/WaterBoard.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/waterpuzzle/WaterBoard.java
index cb135179..3519c2a8 100755
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/waterpuzzle/WaterBoard.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/waterpuzzle/WaterBoard.java
@@ -21,12 +21,9 @@ package kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.waterpuzzle;
import kr.syeyoung.dungeonsguide.mod.DungeonsGuide;
import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPoint;
import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPointSet;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/waterpuzzle/WaterBoard.java
-import kr.syeyoung.dungeonsguide.roomprocessor.waterpuzzle.nodes.*;
-import kr.syeyoung.dungeonsguide.roomprocessor.waterpuzzle.nodes.*;
-========
+
import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.waterpuzzle.nodes.*;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/dungeon/roomprocessor/waterpuzzle/WaterBoard.java
+
import lombok.Getter;
import net.minecraft.block.Block;
import net.minecraft.block.BlockLever;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/events/impl/DiscordUserUpdateEvent.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/events/impl/DiscordUserUpdateEvent.java
index d15ca89d..839071a3 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/events/impl/DiscordUserUpdateEvent.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/events/impl/DiscordUserUpdateEvent.java
@@ -18,11 +18,9 @@
package kr.syeyoung.dungeonsguide.mod.events.impl;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/events/DiscordUserUpdateEvent.java
-import kr.syeyoung.dungeonsguide.rpc.JDiscordRelation;
-========
+
import kr.syeyoung.dungeonsguide.mod.discord.rpc.JDiscordRelation;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/events/impl/DiscordUserUpdateEvent.java
+
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/events/listener/FeatureListener.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/events/listener/FeatureListener.java
index 9d775435..0929def7 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/events/listener/FeatureListener.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/events/listener/FeatureListener.java
@@ -18,17 +18,7 @@
package kr.syeyoung.dungeonsguide.mod.events.listener;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/eventlistener/FeatureListener.java
-import kr.syeyoung.dungeonsguide.DungeonsGuide;
-import kr.syeyoung.dungeonsguide.SkyblockStatus;
-import kr.syeyoung.dungeonsguide.config.guiconfig.location.GuiGuiLocationConfig;
-import kr.syeyoung.dungeonsguide.events.*;
-import kr.syeyoung.dungeonsguide.features.FeatureRegistry;
-import kr.syeyoung.dungeonsguide.features.GuiFeature;
-import kr.syeyoung.dungeonsguide.features.listener.*;
-import kr.syeyoung.dungeonsguide.features.AbstractFeature;
-import kr.syeyoung.dungeonsguide.features.listener.*;
-========
+
import kr.syeyoung.dungeonsguide.mod.SkyblockStatus;
import kr.syeyoung.dungeonsguide.mod.config.guiconfig.location.GuiGuiLocationConfig;
import kr.syeyoung.dungeonsguide.mod.events.impl.*;
@@ -36,7 +26,7 @@ import kr.syeyoung.dungeonsguide.mod.features.AbstractFeature;
import kr.syeyoung.dungeonsguide.mod.features.FeatureRegistry;
import kr.syeyoung.dungeonsguide.mod.features.GuiFeature;
import kr.syeyoung.dungeonsguide.mod.features.listener.*;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/events/listener/FeatureListener.java
+
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraftforge.client.event.*;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/events/listener/PacketListener.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/events/listener/PacketListener.java
index ca8bf795..f4e0bae9 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/events/listener/PacketListener.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/events/listener/PacketListener.java
@@ -22,25 +22,13 @@ import io.netty.channel.ChannelDuplexHandler;
import io.netty.channel.ChannelHandler;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelPromise;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/eventlistener/PacketListener.java
-import kr.syeyoung.dungeonsguide.SkyblockStatus;
-import kr.syeyoung.dungeonsguide.DungeonsGuide;
-import kr.syeyoung.dungeonsguide.cosmetics.CustomPacketPlayerListItem;
-import kr.syeyoung.dungeonsguide.events.BlockUpdateEvent;
-import kr.syeyoung.dungeonsguide.events.PlayerInteractEntityEvent;
-import kr.syeyoung.dungeonsguide.events.TitleEvent;
-import kr.syeyoung.dungeonsguide.events.WindowUpdateEvent;
-import kr.syeyoung.dungeonsguide.features.FeatureRegistry;
-========
+
import kr.syeyoung.dungeonsguide.mod.DungeonsGuide;
import kr.syeyoung.dungeonsguide.mod.SkyblockStatus;
import kr.syeyoung.dungeonsguide.mod.cosmetics.CustomPacketPlayerListItem;
import kr.syeyoung.dungeonsguide.mod.events.impl.BlockUpdateEvent;
-import kr.syeyoung.dungeonsguide.mod.events.impl.PlayerInteractEntityEvent;
-import kr.syeyoung.dungeonsguide.mod.events.impl.TitleEvent;
-import kr.syeyoung.dungeonsguide.mod.events.impl.WindowUpdateEvent;
import kr.syeyoung.dungeonsguide.mod.features.FeatureRegistry;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/events/listener/PacketListener.java
+
import net.minecraft.block.state.IBlockState;
import net.minecraft.client.Minecraft;
import net.minecraft.network.Packet;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/GuiFeature.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/GuiFeature.java
index cfc972b5..437d1844 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/GuiFeature.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/GuiFeature.java
@@ -19,27 +19,14 @@
package kr.syeyoung.dungeonsguide.mod.features;
import com.google.gson.JsonObject;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/GuiFeature.java
-import kr.syeyoung.dungeonsguide.config.guiconfig.GuiConfigV2;
-import kr.syeyoung.dungeonsguide.config.guiconfig.location.GuiGuiLocationConfig;
-import kr.syeyoung.dungeonsguide.config.types.GUIRectangle;
-import kr.syeyoung.dungeonsguide.config.types.TypeConverterRegistry;
-import kr.syeyoung.dungeonsguide.features.listener.ScreenRenderListener;
-import kr.syeyoung.dungeonsguide.gui.elements.MButton;
-import kr.syeyoung.dungeonsguide.gui.elements.MLabel;
-import kr.syeyoung.dungeonsguide.gui.elements.MPassiveLabelAndElement;
-import kr.syeyoung.dungeonsguide.gui.elements.MToggleButton;
-import kr.syeyoung.dungeonsguide.gui.MPanel;
-import kr.syeyoung.dungeonsguide.gui.elements.*;
-========
+
import kr.syeyoung.dungeonsguide.mod.config.guiconfig.GuiConfigV2;
import kr.syeyoung.dungeonsguide.mod.config.guiconfig.location.GuiGuiLocationConfig;
import kr.syeyoung.dungeonsguide.mod.config.types.GUIRectangle;
import kr.syeyoung.dungeonsguide.mod.config.types.TypeConverterRegistry;
-import kr.syeyoung.dungeonsguide.mod.features.listener.ScreenRenderListener;
import kr.syeyoung.dungeonsguide.mod.gui.MPanel;
import kr.syeyoung.dungeonsguide.mod.gui.elements.*;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/GuiFeature.java
+
import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/advanced/FeatureDebug.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/advanced/FeatureDebug.java
index 212371b6..fe917ece 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/advanced/FeatureDebug.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/advanced/FeatureDebug.java
@@ -18,16 +18,14 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.advanced;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureCollectScore.java
-import kr.syeyoung.dungeonsguide.features.SimpleFeature;
-========
+
import kr.syeyoung.dungeonsguide.mod.features.SimpleFeature;
public class FeatureDebug extends SimpleFeature {
public FeatureDebug() {
super("Debug", "Debug", "Toggles debug mode", "debug", false);
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/advanced/FeatureDebug.java
+
}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/advanced/FeatureDebuggableMap.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/advanced/FeatureDebuggableMap.java
index bd8b4ed6..b4ad5708 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/advanced/FeatureDebuggableMap.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/advanced/FeatureDebuggableMap.java
@@ -18,21 +18,14 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.advanced;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/advanced/FeatureDebuggableMap.java
-import kr.syeyoung.dungeonsguide.SkyblockStatus;
-import kr.syeyoung.dungeonsguide.DungeonsGuide;
-import kr.syeyoung.dungeonsguide.features.FeatureRegistry;
-import kr.syeyoung.dungeonsguide.features.GuiFeature;
-import kr.syeyoung.dungeonsguide.utils.MapUtils;
-import kr.syeyoung.dungeonsguide.utils.RenderUtils;
-========
+
import kr.syeyoung.dungeonsguide.mod.DungeonsGuide;
import kr.syeyoung.dungeonsguide.mod.SkyblockStatus;
import kr.syeyoung.dungeonsguide.mod.features.FeatureRegistry;
import kr.syeyoung.dungeonsguide.mod.features.GuiFeature;
+
import kr.syeyoung.dungeonsguide.mod.utils.MapUtils;
import kr.syeyoung.dungeonsguide.mod.utils.RenderUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/advanced/FeatureDebuggableMap.java
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.GuiChat;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/advanced/FeatureRoomCoordDisplay.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/advanced/FeatureRoomCoordDisplay.java
index 63f40058..6d7eacb5 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/advanced/FeatureRoomCoordDisplay.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/advanced/FeatureRoomCoordDisplay.java
@@ -18,15 +18,7 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.advanced;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/advanced/FeatureRoomCoordDisplay.java
-import kr.syeyoung.dungeonsguide.SkyblockStatus;
-import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPoint;
-import kr.syeyoung.dungeonsguide.dungeon.DungeonContext;
-import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom;
-import kr.syeyoung.dungeonsguide.DungeonsGuide;
-import kr.syeyoung.dungeonsguide.features.FeatureParameter;
-import kr.syeyoung.dungeonsguide.features.GuiFeature;
-========
+
import kr.syeyoung.dungeonsguide.mod.SkyblockStatus;
import kr.syeyoung.dungeonsguide.mod.dungeon.DungeonContext;
import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPoint;
@@ -34,7 +26,7 @@ import kr.syeyoung.dungeonsguide.mod.dungeon.roomfinder.DungeonRoom;
import kr.syeyoung.dungeonsguide.mod.DungeonsGuide;
import kr.syeyoung.dungeonsguide.mod.features.FeatureParameter;
import kr.syeyoung.dungeonsguide.mod.features.GuiFeature;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/advanced/FeatureRoomCoordDisplay.java
+
import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.EntityPlayerSP;
import net.minecraft.client.gui.FontRenderer;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/FeatureAutoReparty.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/FeatureAutoReparty.java
index 8d2c9753..6b2f98b2 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/FeatureAutoReparty.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/FeatureAutoReparty.java
@@ -18,15 +18,11 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.boss;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/FeatureAutoReparty.java
-import kr.syeyoung.dungeonsguide.DungeonsGuide;
-import kr.syeyoung.dungeonsguide.features.listener.DungeonQuitListener;
-import kr.syeyoung.dungeonsguide.features.SimpleFeature;
-========
+
import kr.syeyoung.dungeonsguide.mod.DungeonsGuide;
import kr.syeyoung.dungeonsguide.mod.features.SimpleFeature;
import kr.syeyoung.dungeonsguide.mod.features.listener.DungeonQuitListener;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/FeatureAutoReparty.java
+
public class FeatureAutoReparty extends SimpleFeature implements DungeonQuitListener {
public FeatureAutoReparty() {
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/FeatureBossHealth.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/FeatureBossHealth.java
index 1ddb1ab8..589dbda9 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/FeatureBossHealth.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/FeatureBossHealth.java
@@ -18,27 +18,13 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.boss;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/FeatureBossHealth.java
-import kr.syeyoung.dungeonsguide.DungeonsGuide;
-import kr.syeyoung.dungeonsguide.SkyblockStatus;
-import kr.syeyoung.dungeonsguide.config.types.AColor;
-import kr.syeyoung.dungeonsguide.features.text.StyledText;
-import kr.syeyoung.dungeonsguide.features.text.TextHUDFeature;
-import kr.syeyoung.dungeonsguide.features.text.TextStyle;
-import kr.syeyoung.dungeonsguide.features.FeatureParameter;
-import kr.syeyoung.dungeonsguide.roomprocessor.bossfight.HealthData;
-import kr.syeyoung.dungeonsguide.utils.TextUtils;
-========
+
import kr.syeyoung.dungeonsguide.mod.DungeonsGuide;
import kr.syeyoung.dungeonsguide.mod.SkyblockStatus;
import kr.syeyoung.dungeonsguide.mod.config.types.AColor;
import kr.syeyoung.dungeonsguide.mod.features.FeatureParameter;
-import kr.syeyoung.dungeonsguide.mod.features.text.StyledText;
import kr.syeyoung.dungeonsguide.mod.features.text.TextHUDFeature;
-import kr.syeyoung.dungeonsguide.mod.features.text.TextStyle;
-import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bossfight.HealthData;
-import kr.syeyoung.dungeonsguide.mod.utils.TextUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/FeatureBossHealth.java
+
import java.util.ArrayList;
import java.util.Arrays;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/FeatureBoxRealLivid.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/FeatureBoxRealLivid.java
index 9c729de1..d102fb37 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/FeatureBoxRealLivid.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/FeatureBoxRealLivid.java
@@ -18,25 +18,15 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.boss;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/FeatureBoxRealLivid.java
-import kr.syeyoung.dungeonsguide.DungeonsGuide;
-import kr.syeyoung.dungeonsguide.SkyblockStatus;
-import kr.syeyoung.dungeonsguide.config.types.AColor;
-import kr.syeyoung.dungeonsguide.features.listener.WorldRenderListener;
-import kr.syeyoung.dungeonsguide.features.FeatureParameter;
-import kr.syeyoung.dungeonsguide.features.SimpleFeature;
-import kr.syeyoung.dungeonsguide.roomprocessor.bossfight.BossfightProcessorLivid;
-import kr.syeyoung.dungeonsguide.utils.RenderUtils;
-========
+
import kr.syeyoung.dungeonsguide.mod.SkyblockStatus;
import kr.syeyoung.dungeonsguide.mod.config.types.AColor;
import kr.syeyoung.dungeonsguide.mod.DungeonsGuide;
import kr.syeyoung.dungeonsguide.mod.features.FeatureParameter;
+import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bossfight.BossfightProcessorLivid;
+
import kr.syeyoung.dungeonsguide.mod.features.SimpleFeature;
import kr.syeyoung.dungeonsguide.mod.features.listener.WorldRenderListener;
-import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bossfight.BossfightProcessorLivid;
-import kr.syeyoung.dungeonsguide.mod.utils.RenderUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/FeatureBoxRealLivid.java
import net.minecraft.client.entity.EntityOtherPlayerMP;
import net.minecraft.util.AxisAlignedBB;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/FeatureChestPrice.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/FeatureChestPrice.java
index d0b7c3ce..402f5ec6 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/FeatureChestPrice.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/FeatureChestPrice.java
@@ -18,19 +18,11 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.boss;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/FeatureChestPrice.java
-import kr.syeyoung.dungeonsguide.DungeonsGuide;
-import kr.syeyoung.dungeonsguide.features.listener.GuiBackgroundRenderListener;
-import kr.syeyoung.dungeonsguide.features.SimpleFeature;
-import kr.syeyoung.dungeonsguide.utils.AhUtils;
-import kr.syeyoung.dungeonsguide.utils.TextUtils;
-========
+
import kr.syeyoung.dungeonsguide.mod.DungeonsGuide;
+
import kr.syeyoung.dungeonsguide.mod.features.SimpleFeature;
import kr.syeyoung.dungeonsguide.mod.features.listener.GuiBackgroundRenderListener;
-import kr.syeyoung.dungeonsguide.mod.utils.AhUtils;
-import kr.syeyoung.dungeonsguide.mod.utils.TextUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/FeatureChestPrice.java
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.Gui;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/FeatureCurrentPhase.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/FeatureCurrentPhase.java
index 9d4c8e4d..51c1bef9 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/FeatureCurrentPhase.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/FeatureCurrentPhase.java
@@ -18,21 +18,12 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.boss;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/FeatureCurrentPhase.java
-import kr.syeyoung.dungeonsguide.DungeonsGuide;
-import kr.syeyoung.dungeonsguide.SkyblockStatus;
-import kr.syeyoung.dungeonsguide.config.types.AColor;
-import kr.syeyoung.dungeonsguide.features.text.StyledText;
-import kr.syeyoung.dungeonsguide.features.text.TextHUDFeature;
-import kr.syeyoung.dungeonsguide.features.text.TextStyle;
-========
+
import kr.syeyoung.dungeonsguide.mod.SkyblockStatus;
import kr.syeyoung.dungeonsguide.mod.config.types.AColor;
import kr.syeyoung.dungeonsguide.mod.DungeonsGuide;
-import kr.syeyoung.dungeonsguide.mod.features.text.StyledText;
import kr.syeyoung.dungeonsguide.mod.features.text.TextHUDFeature;
-import kr.syeyoung.dungeonsguide.mod.features.text.TextStyle;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/FeatureCurrentPhase.java
+
import java.util.ArrayList;
import java.util.Arrays;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/FeatureHideAnimals.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/FeatureHideAnimals.java
index 5d8ca71a..c12d0c00 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/FeatureHideAnimals.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/FeatureHideAnimals.java
@@ -18,21 +18,14 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.boss;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/FeatureHideAnimals.java
-import kr.syeyoung.dungeonsguide.DungeonsGuide;
-import kr.syeyoung.dungeonsguide.SkyblockStatus;
-import kr.syeyoung.dungeonsguide.features.listener.EntityLivingRenderListener;
-import kr.syeyoung.dungeonsguide.features.FeatureParameter;
-import kr.syeyoung.dungeonsguide.features.SimpleFeature;
-import kr.syeyoung.dungeonsguide.roomprocessor.bossfight.BossfightProcessorThorn;
-========
+
import kr.syeyoung.dungeonsguide.mod.DungeonsGuide;
import kr.syeyoung.dungeonsguide.mod.SkyblockStatus;
import kr.syeyoung.dungeonsguide.mod.features.FeatureParameter;
+import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bossfight.BossfightProcessorThorn;
+
import kr.syeyoung.dungeonsguide.mod.features.SimpleFeature;
import kr.syeyoung.dungeonsguide.mod.features.listener.EntityLivingRenderListener;
-import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bossfight.BossfightProcessorThorn;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/FeatureHideAnimals.java
import net.minecraft.entity.passive.*;
import net.minecraftforge.client.event.RenderLivingEvent;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/FeatureTerracotaTimer.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/FeatureTerracotaTimer.java
index a4834a38..5bb06711 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/FeatureTerracotaTimer.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/FeatureTerracotaTimer.java
@@ -18,25 +18,13 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.boss;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/FeatureTerracotaTimer.java
-import kr.syeyoung.dungeonsguide.DungeonsGuide;
-import kr.syeyoung.dungeonsguide.SkyblockStatus;
-import kr.syeyoung.dungeonsguide.config.types.AColor;
-import kr.syeyoung.dungeonsguide.features.text.StyledText;
-import kr.syeyoung.dungeonsguide.features.text.TextHUDFeature;
-import kr.syeyoung.dungeonsguide.features.text.TextStyle;
-import kr.syeyoung.dungeonsguide.roomprocessor.bossfight.BossfightProcessorSadan;
-import kr.syeyoung.dungeonsguide.utils.TextUtils;
-========
+
import kr.syeyoung.dungeonsguide.mod.SkyblockStatus;
import kr.syeyoung.dungeonsguide.mod.config.types.AColor;
import kr.syeyoung.dungeonsguide.mod.DungeonsGuide;
-import kr.syeyoung.dungeonsguide.mod.features.text.StyledText;
import kr.syeyoung.dungeonsguide.mod.features.text.TextHUDFeature;
-import kr.syeyoung.dungeonsguide.mod.features.text.TextStyle;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bossfight.BossfightProcessorSadan;
-import kr.syeyoung.dungeonsguide.mod.utils.TextUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/FeatureTerracotaTimer.java
+
import net.minecraft.entity.boss.BossStatus;
import java.util.ArrayList;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/FeatureThornBearPercentage.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/FeatureThornBearPercentage.java
index e54160b3..a66527b8 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/FeatureThornBearPercentage.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/FeatureThornBearPercentage.java
@@ -18,23 +18,13 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.boss;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/FeatureThornBearPercentage.java
-import kr.syeyoung.dungeonsguide.DungeonsGuide;
-import kr.syeyoung.dungeonsguide.SkyblockStatus;
-import kr.syeyoung.dungeonsguide.config.types.AColor;
-import kr.syeyoung.dungeonsguide.features.text.StyledText;
-import kr.syeyoung.dungeonsguide.features.text.TextHUDFeature;
-import kr.syeyoung.dungeonsguide.features.text.TextStyle;
-import kr.syeyoung.dungeonsguide.roomprocessor.bossfight.BossfightProcessorThorn;
-========
+
import kr.syeyoung.dungeonsguide.mod.SkyblockStatus;
import kr.syeyoung.dungeonsguide.mod.config.types.AColor;
import kr.syeyoung.dungeonsguide.mod.DungeonsGuide;
-import kr.syeyoung.dungeonsguide.mod.features.text.StyledText;
import kr.syeyoung.dungeonsguide.mod.features.text.TextHUDFeature;
-import kr.syeyoung.dungeonsguide.mod.features.text.TextStyle;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bossfight.BossfightProcessorThorn;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/FeatureThornBearPercentage.java
+
import java.util.ArrayList;
import java.util.Arrays;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/FeatureThornSpiritBowTimer.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/FeatureThornSpiritBowTimer.java
index 45658561..b155ca39 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/FeatureThornSpiritBowTimer.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/FeatureThornSpiritBowTimer.java
@@ -18,29 +18,13 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.boss;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/FeatureThornSpiritBowTimer.java
-import kr.syeyoung.dungeonsguide.SkyblockStatus;
-import kr.syeyoung.dungeonsguide.DungeonsGuide;
-import kr.syeyoung.dungeonsguide.config.types.AColor;
-import kr.syeyoung.dungeonsguide.features.listener.ChatListener;
-import kr.syeyoung.dungeonsguide.features.listener.TitleListener;
-import kr.syeyoung.dungeonsguide.features.text.StyledText;
-import kr.syeyoung.dungeonsguide.features.text.TextHUDFeature;
-import kr.syeyoung.dungeonsguide.features.text.TextStyle;
-import kr.syeyoung.dungeonsguide.roomprocessor.bossfight.BossfightProcessorThorn;
-import kr.syeyoung.dungeonsguide.utils.TextUtils;
-========
+
import kr.syeyoung.dungeonsguide.mod.DungeonsGuide;
import kr.syeyoung.dungeonsguide.mod.SkyblockStatus;
import kr.syeyoung.dungeonsguide.mod.config.types.AColor;
-import kr.syeyoung.dungeonsguide.mod.features.listener.ChatListener;
-import kr.syeyoung.dungeonsguide.mod.features.listener.TitleListener;
-import kr.syeyoung.dungeonsguide.mod.features.text.StyledText;
import kr.syeyoung.dungeonsguide.mod.features.text.TextHUDFeature;
-import kr.syeyoung.dungeonsguide.mod.features.text.TextStyle;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bossfight.BossfightProcessorThorn;
-import kr.syeyoung.dungeonsguide.mod.utils.TextUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/FeatureThornSpiritBowTimer.java
+
import net.minecraft.network.play.server.S45PacketTitle;
import net.minecraftforge.client.event.ClientChatReceivedEvent;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/FeatureWarningOnPortal.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/FeatureWarningOnPortal.java
index bac2d0f1..31c2e0cb 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/FeatureWarningOnPortal.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/FeatureWarningOnPortal.java
@@ -19,28 +19,7 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.boss;
import com.google.common.base.Supplier;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/FeatureWarningOnPortal.java
-import kr.syeyoung.dungeonsguide.DungeonsGuide;
-import kr.syeyoung.dungeonsguide.SkyblockStatus;
-import kr.syeyoung.dungeonsguide.config.guiconfig.ConfigPanelCreator;
-import kr.syeyoung.dungeonsguide.config.guiconfig.MFeatureEdit;
-import kr.syeyoung.dungeonsguide.config.guiconfig.MParameterEdit;
-import kr.syeyoung.dungeonsguide.config.guiconfig.RootConfigPanel;
-import kr.syeyoung.dungeonsguide.config.types.AColor;
-import kr.syeyoung.dungeonsguide.features.impl.dungeon.FeatureDungeonScore;
-import kr.syeyoung.dungeonsguide.features.text.PanelTextParameterConfig;
-import kr.syeyoung.dungeonsguide.features.text.StyledText;
-import kr.syeyoung.dungeonsguide.features.text.StyledTextProvider;
-import kr.syeyoung.dungeonsguide.features.text.TextStyle;
-import kr.syeyoung.dungeonsguide.dungeon.DungeonContext;
-import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom;
-import kr.syeyoung.dungeonsguide.features.FeatureParameter;
-import kr.syeyoung.dungeonsguide.features.FeatureRegistry;
-import kr.syeyoung.dungeonsguide.features.SimpleFeature;
-import kr.syeyoung.dungeonsguide.features.text.*;
-import kr.syeyoung.dungeonsguide.gui.MPanel;
-import kr.syeyoung.dungeonsguide.utils.TextUtils;
-========
+
import kr.syeyoung.dungeonsguide.mod.DungeonsGuide;
import kr.syeyoung.dungeonsguide.mod.SkyblockStatus;
import kr.syeyoung.dungeonsguide.mod.config.guiconfig.ConfigPanelCreator;
@@ -57,7 +36,7 @@ import kr.syeyoung.dungeonsguide.mod.features.impl.dungeon.FeatureDungeonScore;
import kr.syeyoung.dungeonsguide.mod.features.text.*;
import kr.syeyoung.dungeonsguide.mod.gui.MPanel;
import kr.syeyoung.dungeonsguide.mod.utils.TextUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/FeatureWarningOnPortal.java
+
import java.util.*;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/terminal/FeatureSimonSaysSolver.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/terminal/FeatureSimonSaysSolver.java
index 68d4b501..5d7de49f 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/terminal/FeatureSimonSaysSolver.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/terminal/FeatureSimonSaysSolver.java
@@ -18,27 +18,17 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.boss.terminal;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/terminal/FeatureSimonSaysSolver.java
-import kr.syeyoung.dungeonsguide.DungeonsGuide;
-import kr.syeyoung.dungeonsguide.SkyblockStatus;
-import kr.syeyoung.dungeonsguide.features.listener.InteractListener;
-import kr.syeyoung.dungeonsguide.features.listener.TickListener;
-import kr.syeyoung.dungeonsguide.features.listener.WorldRenderListener;
-import kr.syeyoung.dungeonsguide.dungeon.DungeonContext;
-import kr.syeyoung.dungeonsguide.features.SimpleFeature;
-import kr.syeyoung.dungeonsguide.roomprocessor.bossfight.BossfightProcessorNecron;
-import kr.syeyoung.dungeonsguide.utils.RenderUtils;
-========
+
import kr.syeyoung.dungeonsguide.mod.DungeonsGuide;
import kr.syeyoung.dungeonsguide.mod.SkyblockStatus;
import kr.syeyoung.dungeonsguide.mod.dungeon.DungeonContext;
+import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bossfight.BossfightProcessorNecron;
+
import kr.syeyoung.dungeonsguide.mod.features.SimpleFeature;
import kr.syeyoung.dungeonsguide.mod.features.listener.InteractListener;
import kr.syeyoung.dungeonsguide.mod.features.listener.TickListener;
import kr.syeyoung.dungeonsguide.mod.features.listener.WorldRenderListener;
-import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.bossfight.BossfightProcessorNecron;
import kr.syeyoung.dungeonsguide.mod.utils.RenderUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/terminal/FeatureSimonSaysSolver.java
import net.minecraft.client.Minecraft;
import net.minecraft.init.Blocks;
import net.minecraft.util.BlockPos;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/terminal/FeatureTerminalSolvers.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/terminal/FeatureTerminalSolvers.java
index 64e6cbf6..64b1509d 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/terminal/FeatureTerminalSolvers.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/terminal/FeatureTerminalSolvers.java
@@ -18,14 +18,10 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.boss.terminal;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/terminal/FeatureTerminalSolvers.java
-import kr.syeyoung.dungeonsguide.features.listener.*;
-import kr.syeyoung.dungeonsguide.features.SimpleFeature;
-import kr.syeyoung.dungeonsguide.features.listener.*;
-========
+
+
import kr.syeyoung.dungeonsguide.mod.features.SimpleFeature;
import kr.syeyoung.dungeonsguide.mod.features.listener.*;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/terminal/FeatureTerminalSolvers.java
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.Gui;
import net.minecraft.client.gui.inventory.GuiChest;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/discord/inviteViewer/PartyInviteViewer.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/discord/inviteViewer/PartyInviteViewer.java
index d53deeaa..18408fb6 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/discord/inviteViewer/PartyInviteViewer.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/discord/inviteViewer/PartyInviteViewer.java
@@ -18,24 +18,14 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.discord.inviteViewer;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/discord/inviteViewer/PartyInviteViewer.java
-import kr.syeyoung.dungeonsguide.DungeonsGuide;
-import kr.syeyoung.dungeonsguide.features.listener.*;
-import kr.syeyoung.dungeonsguide.events.DiscordUserJoinRequestEvent;
-import kr.syeyoung.dungeonsguide.features.SimpleFeature;
-import kr.syeyoung.dungeonsguide.features.listener.*;
-import kr.syeyoung.dungeonsguide.rpc.RichPresenceManager;
-import kr.syeyoung.dungeonsguide.gamesdk.jna.enumuration.EDiscordActivityJoinRequestReply;
-import kr.syeyoung.dungeonsguide.utils.TextUtils;
-========
+
import kr.syeyoung.dungeonsguide.mod.DungeonsGuide;
import kr.syeyoung.dungeonsguide.mod.events.impl.DiscordUserJoinRequestEvent;
import kr.syeyoung.dungeonsguide.mod.features.SimpleFeature;
import kr.syeyoung.dungeonsguide.mod.features.listener.*;
import kr.syeyoung.dungeonsguide.mod.discord.rpc.RichPresenceManager;
import kr.syeyoung.dungeonsguide.mod.discord.gamesdk.jna.enumuration.EDiscordActivityJoinRequestReply;
-import kr.syeyoung.dungeonsguide.mod.utils.TextUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/discord/inviteViewer/PartyInviteViewer.java
+
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.Gui;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/discord/invteTooltip/MTooltipInvite.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/discord/invteTooltip/MTooltipInvite.java
index 441501ac..29d8c7c5 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/discord/invteTooltip/MTooltipInvite.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/discord/invteTooltip/MTooltipInvite.java
@@ -19,19 +19,7 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.discord.invteTooltip;
import com.sun.jna.Pointer;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/discord/invteTooltip/MTooltipInvite.java
-import kr.syeyoung.dungeonsguide.gui.elements.*;
-import kr.syeyoung.dungeonsguide.gamesdk.jna.enumuration.EDiscordActivityActionType;
-import kr.syeyoung.dungeonsguide.gamesdk.jna.enumuration.EDiscordRelationshipType;
-import kr.syeyoung.dungeonsguide.gamesdk.jna.interfacestruct.IDiscordActivityManager;
-import kr.syeyoung.dungeonsguide.gamesdk.jna.interfacestruct.IDiscordCore;
-import kr.syeyoung.dungeonsguide.gamesdk.jna.typedef.DiscordSnowflake;
-import kr.syeyoung.dungeonsguide.gui.MPanel;
-import kr.syeyoung.dungeonsguide.gui.elements.*;
-import kr.syeyoung.dungeonsguide.rpc.JDiscordRelation;
-import kr.syeyoung.dungeonsguide.rpc.RichPresenceManager;
-import kr.syeyoung.dungeonsguide.utils.RenderUtils;
-========
+
import kr.syeyoung.dungeonsguide.mod.discord.gamesdk.jna.enumuration.EDiscordActivityActionType;
import kr.syeyoung.dungeonsguide.mod.discord.gamesdk.jna.enumuration.EDiscordRelationshipType;
import kr.syeyoung.dungeonsguide.mod.discord.gamesdk.jna.interfacestruct.IDiscordActivityManager;
@@ -41,8 +29,7 @@ import kr.syeyoung.dungeonsguide.mod.gui.MPanel;
import kr.syeyoung.dungeonsguide.mod.gui.elements.*;
import kr.syeyoung.dungeonsguide.mod.discord.rpc.JDiscordRelation;
import kr.syeyoung.dungeonsguide.mod.discord.rpc.RichPresenceManager;
-import kr.syeyoung.dungeonsguide.mod.utils.RenderUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/discord/invteTooltip/MTooltipInvite.java
+
import net.minecraft.client.renderer.GlStateManager;
import java.awt.*;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/discord/invteTooltip/MTooltipInviteElement.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/discord/invteTooltip/MTooltipInviteElement.java
index 13679371..23954512 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/discord/invteTooltip/MTooltipInviteElement.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/discord/invteTooltip/MTooltipInviteElement.java
@@ -18,21 +18,13 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.discord.invteTooltip;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/discord/invteTooltip/MTooltipInviteElement.java
-import kr.syeyoung.dungeonsguide.gui.elements.MButton;
-import kr.syeyoung.dungeonsguide.features.FeatureRegistry;
-import kr.syeyoung.dungeonsguide.features.impl.discord.inviteViewer.ImageTexture;
-import kr.syeyoung.dungeonsguide.gui.MPanel;
-import kr.syeyoung.dungeonsguide.rpc.JDiscordRelation;
-import kr.syeyoung.dungeonsguide.utils.RenderUtils;
-========
+
import kr.syeyoung.dungeonsguide.mod.features.FeatureRegistry;
import kr.syeyoung.dungeonsguide.mod.features.impl.discord.inviteViewer.ImageTexture;
import kr.syeyoung.dungeonsguide.mod.gui.MPanel;
import kr.syeyoung.dungeonsguide.mod.gui.elements.MButton;
import kr.syeyoung.dungeonsguide.mod.discord.rpc.JDiscordRelation;
-import kr.syeyoung.dungeonsguide.mod.utils.RenderUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/discord/invteTooltip/MTooltipInviteElement.java
+
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.Gui;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/discord/onlinealarm/PlayingDGAlarm.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/discord/onlinealarm/PlayingDGAlarm.java
index cdf67e73..d9281374 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/discord/onlinealarm/PlayingDGAlarm.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/discord/onlinealarm/PlayingDGAlarm.java
@@ -18,33 +18,19 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.discord.onlinealarm;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/discord/onlinealarm/PlayingDGAlarm.java
-import kr.syeyoung.dungeonsguide.DungeonsGuide;
-import kr.syeyoung.dungeonsguide.features.listener.DiscordUserUpdateListener;
-import kr.syeyoung.dungeonsguide.features.listener.ScreenRenderListener;
-import kr.syeyoung.dungeonsguide.features.listener.TickListener;
-import kr.syeyoung.dungeonsguide.events.DiscordUserUpdateEvent;
-import kr.syeyoung.dungeonsguide.features.FeatureRegistry;
-import kr.syeyoung.dungeonsguide.features.SimpleFeature;
-import kr.syeyoung.dungeonsguide.features.impl.discord.inviteViewer.ImageTexture;
-import kr.syeyoung.dungeonsguide.gamesdk.jna.enumuration.EDiscordRelationshipType;
-import kr.syeyoung.dungeonsguide.rpc.JDiscordActivity;
-import kr.syeyoung.dungeonsguide.rpc.JDiscordRelation;
-import kr.syeyoung.dungeonsguide.utils.TextUtils;
-========
+
import kr.syeyoung.dungeonsguide.mod.DungeonsGuide;
import kr.syeyoung.dungeonsguide.mod.events.impl.DiscordUserUpdateEvent;
import kr.syeyoung.dungeonsguide.mod.features.FeatureRegistry;
import kr.syeyoung.dungeonsguide.mod.features.SimpleFeature;
import kr.syeyoung.dungeonsguide.mod.features.impl.discord.inviteViewer.ImageTexture;
import kr.syeyoung.dungeonsguide.mod.features.listener.DiscordUserUpdateListener;
-import kr.syeyoung.dungeonsguide.mod.features.listener.ScreenRenderListener;
-import kr.syeyoung.dungeonsguide.mod.features.listener.TickListener;
import kr.syeyoung.dungeonsguide.mod.discord.gamesdk.jna.enumuration.EDiscordRelationshipType;
import kr.syeyoung.dungeonsguide.mod.discord.rpc.JDiscordActivity;
import kr.syeyoung.dungeonsguide.mod.discord.rpc.JDiscordRelation;
-import kr.syeyoung.dungeonsguide.mod.utils.TextUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/discord/onlinealarm/PlayingDGAlarm.java
+
+import kr.syeyoung.dungeonsguide.mod.features.listener.ScreenRenderListener;
+import kr.syeyoung.dungeonsguide.mod.features.listener.TickListener;
import lombok.AllArgsConstructor;
import lombok.Data;
import net.minecraft.client.Minecraft;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureBoxBats.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureBoxBats.java
index 8901a829..35949374 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureBoxBats.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureBoxBats.java
@@ -19,23 +19,15 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.dungeon;
import com.google.common.base.Predicate;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureBoxBats.java
-import kr.syeyoung.dungeonsguide.DungeonsGuide;
-import kr.syeyoung.dungeonsguide.SkyblockStatus;
-import kr.syeyoung.dungeonsguide.config.types.AColor;
-import kr.syeyoung.dungeonsguide.features.listener.WorldRenderListener;
-import kr.syeyoung.dungeonsguide.features.FeatureParameter;
-import kr.syeyoung.dungeonsguide.features.SimpleFeature;
-import kr.syeyoung.dungeonsguide.utils.RenderUtils;
-========
+
import kr.syeyoung.dungeonsguide.mod.DungeonsGuide;
import kr.syeyoung.dungeonsguide.mod.SkyblockStatus;
import kr.syeyoung.dungeonsguide.mod.config.types.AColor;
import kr.syeyoung.dungeonsguide.mod.features.FeatureParameter;
+
import kr.syeyoung.dungeonsguide.mod.features.SimpleFeature;
import kr.syeyoung.dungeonsguide.mod.features.listener.WorldRenderListener;
import kr.syeyoung.dungeonsguide.mod.utils.RenderUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureBoxBats.java
import net.minecraft.client.Minecraft;
import net.minecraft.entity.passive.EntityBat;
import net.minecraft.util.BlockPos;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureBoxSkelemaster.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureBoxSkelemaster.java
index 981c6490..8e75d96e 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureBoxSkelemaster.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureBoxSkelemaster.java
@@ -19,23 +19,15 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.dungeon;
import com.google.common.base.Predicate;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureBoxSkelemaster.java
-import kr.syeyoung.dungeonsguide.DungeonsGuide;
-import kr.syeyoung.dungeonsguide.SkyblockStatus;
-import kr.syeyoung.dungeonsguide.config.types.AColor;
-import kr.syeyoung.dungeonsguide.features.listener.WorldRenderListener;
-import kr.syeyoung.dungeonsguide.features.FeatureParameter;
-import kr.syeyoung.dungeonsguide.features.SimpleFeature;
-import kr.syeyoung.dungeonsguide.utils.RenderUtils;
-========
+
import kr.syeyoung.dungeonsguide.mod.SkyblockStatus;
import kr.syeyoung.dungeonsguide.mod.config.types.AColor;
import kr.syeyoung.dungeonsguide.mod.DungeonsGuide;
import kr.syeyoung.dungeonsguide.mod.features.FeatureParameter;
+
import kr.syeyoung.dungeonsguide.mod.features.SimpleFeature;
import kr.syeyoung.dungeonsguide.mod.features.listener.WorldRenderListener;
import kr.syeyoung.dungeonsguide.mod.utils.RenderUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureBoxSkelemaster.java
import net.minecraft.client.Minecraft;
import net.minecraft.entity.item.EntityArmorStand;
import net.minecraft.util.BlockPos;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureBoxStarMobs.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureBoxStarMobs.java
index 89a66650..d45a7b14 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureBoxStarMobs.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureBoxStarMobs.java
@@ -19,23 +19,15 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.dungeon;
import com.google.common.base.Predicate;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureBoxStarMobs.java
-import kr.syeyoung.dungeonsguide.DungeonsGuide;
-import kr.syeyoung.dungeonsguide.SkyblockStatus;
-import kr.syeyoung.dungeonsguide.config.types.AColor;
-import kr.syeyoung.dungeonsguide.features.listener.WorldRenderListener;
-import kr.syeyoung.dungeonsguide.features.FeatureParameter;
-import kr.syeyoung.dungeonsguide.features.SimpleFeature;
-import kr.syeyoung.dungeonsguide.utils.RenderUtils;
-========
+
import kr.syeyoung.dungeonsguide.mod.DungeonsGuide;
import kr.syeyoung.dungeonsguide.mod.SkyblockStatus;
import kr.syeyoung.dungeonsguide.mod.config.types.AColor;
import kr.syeyoung.dungeonsguide.mod.features.FeatureParameter;
+
import kr.syeyoung.dungeonsguide.mod.features.SimpleFeature;
import kr.syeyoung.dungeonsguide.mod.features.listener.WorldRenderListener;
import kr.syeyoung.dungeonsguide.mod.utils.RenderUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureBoxStarMobs.java
import net.minecraft.client.Minecraft;
import net.minecraft.entity.item.EntityArmorStand;
import net.minecraft.util.BlockPos;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureDungeonCurrentRoomSecrets.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureDungeonCurrentRoomSecrets.java
index 190450bf..6cb9052a 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureDungeonCurrentRoomSecrets.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureDungeonCurrentRoomSecrets.java
@@ -18,23 +18,12 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.dungeon;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonCurrentRoomSecrets.java
-import kr.syeyoung.dungeonsguide.DungeonsGuide;
-import kr.syeyoung.dungeonsguide.SkyblockStatus;
-import kr.syeyoung.dungeonsguide.config.types.AColor;
-import kr.syeyoung.dungeonsguide.features.listener.ChatListener;
-import kr.syeyoung.dungeonsguide.features.text.StyledText;
-import kr.syeyoung.dungeonsguide.features.text.TextHUDFeature;
-import kr.syeyoung.dungeonsguide.features.text.TextStyle;
-========
+
import kr.syeyoung.dungeonsguide.mod.SkyblockStatus;
import kr.syeyoung.dungeonsguide.mod.config.types.AColor;
import kr.syeyoung.dungeonsguide.mod.DungeonsGuide;
-import kr.syeyoung.dungeonsguide.mod.features.listener.ChatListener;
-import kr.syeyoung.dungeonsguide.mod.features.text.StyledText;
import kr.syeyoung.dungeonsguide.mod.features.text.TextHUDFeature;
-import kr.syeyoung.dungeonsguide.mod.features.text.TextStyle;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureDungeonCurrentRoomSecrets.java
+
import net.minecraftforge.client.event.ClientChatReceivedEvent;
import java.util.ArrayList;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureDungeonDeaths.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureDungeonDeaths.java
index 8ec6e432..c19ddfbe 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureDungeonDeaths.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureDungeonDeaths.java
@@ -18,30 +18,14 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.dungeon;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonDeaths.java
-import kr.syeyoung.dungeonsguide.DungeonsGuide;
-import kr.syeyoung.dungeonsguide.SkyblockStatus;
-import kr.syeyoung.dungeonsguide.config.types.AColor;
-import kr.syeyoung.dungeonsguide.dungeon.events.DungeonDeathEvent;
-import kr.syeyoung.dungeonsguide.features.listener.ChatListener;
-import kr.syeyoung.dungeonsguide.features.text.StyledText;
-import kr.syeyoung.dungeonsguide.features.text.TextHUDFeature;
-import kr.syeyoung.dungeonsguide.features.text.TextStyle;
-import kr.syeyoung.dungeonsguide.dungeon.DungeonContext;
-import kr.syeyoung.dungeonsguide.utils.TextUtils;
-========
+
import kr.syeyoung.dungeonsguide.mod.DungeonsGuide;
import kr.syeyoung.dungeonsguide.mod.SkyblockStatus;
import kr.syeyoung.dungeonsguide.mod.chat.ChatTransmitter;
import kr.syeyoung.dungeonsguide.mod.config.types.AColor;
import kr.syeyoung.dungeonsguide.mod.dungeon.DungeonContext;
-import kr.syeyoung.dungeonsguide.mod.dungeon.events.impl.DungeonDeathEvent;
-import kr.syeyoung.dungeonsguide.mod.features.listener.ChatListener;
-import kr.syeyoung.dungeonsguide.mod.features.text.StyledText;
import kr.syeyoung.dungeonsguide.mod.features.text.TextHUDFeature;
-import kr.syeyoung.dungeonsguide.mod.features.text.TextStyle;
-import kr.syeyoung.dungeonsguide.mod.utils.TextUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureDungeonDeaths.java
+
import net.minecraft.client.Minecraft;
import net.minecraft.client.network.NetworkPlayerInfo;
import net.minecraft.scoreboard.ScorePlayerTeam;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureDungeonMilestone.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureDungeonMilestone.java
index fa9d36bf..68c11234 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureDungeonMilestone.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureDungeonMilestone.java
@@ -18,30 +18,15 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.dungeon;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonMilestone.java
-import kr.syeyoung.dungeonsguide.DungeonsGuide;
-import kr.syeyoung.dungeonsguide.SkyblockStatus;
-import kr.syeyoung.dungeonsguide.config.types.AColor;
-import kr.syeyoung.dungeonsguide.features.listener.ChatListener;
-import kr.syeyoung.dungeonsguide.features.text.StyledText;
-import kr.syeyoung.dungeonsguide.features.text.TextHUDFeature;
-import kr.syeyoung.dungeonsguide.features.text.TextStyle;
-import kr.syeyoung.dungeonsguide.dungeon.DungeonContext;
-import kr.syeyoung.dungeonsguide.features.FeatureRegistry;
-import kr.syeyoung.dungeonsguide.utils.TextUtils;
-========
+
import kr.syeyoung.dungeonsguide.mod.SkyblockStatus;
import kr.syeyoung.dungeonsguide.mod.chat.ChatTransmitter;
import kr.syeyoung.dungeonsguide.mod.config.types.AColor;
import kr.syeyoung.dungeonsguide.mod.dungeon.DungeonContext;
import kr.syeyoung.dungeonsguide.mod.DungeonsGuide;
import kr.syeyoung.dungeonsguide.mod.features.FeatureRegistry;
-import kr.syeyoung.dungeonsguide.mod.features.listener.ChatListener;
-import kr.syeyoung.dungeonsguide.mod.features.text.StyledText;
import kr.syeyoung.dungeonsguide.mod.features.text.TextHUDFeature;
-import kr.syeyoung.dungeonsguide.mod.features.text.TextStyle;
-import kr.syeyoung.dungeonsguide.mod.utils.TextUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureDungeonMilestone.java
+
import net.minecraft.client.Minecraft;
import net.minecraft.client.network.NetworkPlayerInfo;
import net.minecraft.scoreboard.ScorePlayerTeam;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureDungeonRealTime.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureDungeonRealTime.java
index 982187f3..460e92aa 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureDungeonRealTime.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureDungeonRealTime.java
@@ -18,23 +18,10 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.dungeon;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonRealTime.java
-import kr.syeyoung.dungeonsguide.config.types.AColor;
-import kr.syeyoung.dungeonsguide.features.listener.DungeonQuitListener;
-import kr.syeyoung.dungeonsguide.features.listener.DungeonStartListener;
-import kr.syeyoung.dungeonsguide.features.text.StyledText;
-import kr.syeyoung.dungeonsguide.features.text.TextHUDFeature;
-import kr.syeyoung.dungeonsguide.features.text.TextStyle;
-import kr.syeyoung.dungeonsguide.utils.TextUtils;
-========
+
import kr.syeyoung.dungeonsguide.mod.config.types.AColor;
-import kr.syeyoung.dungeonsguide.mod.features.listener.DungeonQuitListener;
-import kr.syeyoung.dungeonsguide.mod.features.listener.DungeonStartListener;
-import kr.syeyoung.dungeonsguide.mod.features.text.StyledText;
import kr.syeyoung.dungeonsguide.mod.features.text.TextHUDFeature;
-import kr.syeyoung.dungeonsguide.mod.features.text.TextStyle;
-import kr.syeyoung.dungeonsguide.mod.utils.TextUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureDungeonRealTime.java
+
import java.util.ArrayList;
import java.util.Arrays;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureDungeonRoomName.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureDungeonRoomName.java
index 08c70668..1ae490aa 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureDungeonRoomName.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureDungeonRoomName.java
@@ -18,25 +18,14 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.dungeon;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonRoomName.java
-import kr.syeyoung.dungeonsguide.DungeonsGuide;
-import kr.syeyoung.dungeonsguide.SkyblockStatus;
-import kr.syeyoung.dungeonsguide.config.types.AColor;
-import kr.syeyoung.dungeonsguide.features.text.StyledText;
-import kr.syeyoung.dungeonsguide.features.text.TextHUDFeature;
-import kr.syeyoung.dungeonsguide.features.text.TextStyle;
-import kr.syeyoung.dungeonsguide.dungeon.DungeonContext;
-import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom;
-========
+
import kr.syeyoung.dungeonsguide.mod.DungeonsGuide;
import kr.syeyoung.dungeonsguide.mod.SkyblockStatus;
import kr.syeyoung.dungeonsguide.mod.config.types.AColor;
import kr.syeyoung.dungeonsguide.mod.dungeon.DungeonContext;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomfinder.DungeonRoom;
-import kr.syeyoung.dungeonsguide.mod.features.text.StyledText;
import kr.syeyoung.dungeonsguide.mod.features.text.TextHUDFeature;
-import kr.syeyoung.dungeonsguide.mod.features.text.TextStyle;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureDungeonRoomName.java
+
import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.EntityPlayerSP;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureDungeonScore.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureDungeonScore.java
index ee1f5208..1cdd8d0e 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureDungeonScore.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureDungeonScore.java
@@ -18,22 +18,7 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.dungeon;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonScore.java
-import kr.syeyoung.dungeonsguide.DungeonsGuide;
-import kr.syeyoung.dungeonsguide.SkyblockStatus;
-import kr.syeyoung.dungeonsguide.config.types.AColor;
-import kr.syeyoung.dungeonsguide.features.text.StyledText;
-import kr.syeyoung.dungeonsguide.features.text.TextHUDFeature;
-import kr.syeyoung.dungeonsguide.features.text.TextStyle;
-import kr.syeyoung.dungeonsguide.dungeon.DungeonContext;
-import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom;
-import kr.syeyoung.dungeonsguide.features.FeatureParameter;
-import kr.syeyoung.dungeonsguide.features.FeatureRegistry;
-import kr.syeyoung.dungeonsguide.utils.TextUtils;
-import kr.syeyoung.dungeonsguide.utils.TimeScoreUtil;
-import kr.syeyoung.dungeonsguide.wsresource.StaticResource;
-import kr.syeyoung.dungeonsguide.wsresource.StaticResourceCache;
-========
+
import kr.syeyoung.dungeonsguide.mod.DungeonsGuide;
import kr.syeyoung.dungeonsguide.mod.SkyblockStatus;
import kr.syeyoung.dungeonsguide.mod.config.types.AColor;
@@ -41,14 +26,10 @@ import kr.syeyoung.dungeonsguide.mod.dungeon.DungeonContext;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomfinder.DungeonRoom;
import kr.syeyoung.dungeonsguide.mod.features.FeatureParameter;
import kr.syeyoung.dungeonsguide.mod.features.FeatureRegistry;
-import kr.syeyoung.dungeonsguide.mod.features.text.StyledText;
import kr.syeyoung.dungeonsguide.mod.features.text.TextHUDFeature;
-import kr.syeyoung.dungeonsguide.mod.features.text.TextStyle;
-import kr.syeyoung.dungeonsguide.mod.utils.TextUtils;
-import kr.syeyoung.dungeonsguide.mod.utils.TimeScoreUtil;
import kr.syeyoung.dungeonsguide.mod.wsresource.StaticResource;
import kr.syeyoung.dungeonsguide.mod.wsresource.StaticResourceCache;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureDungeonScore.java
+
import lombok.AllArgsConstructor;
import lombok.Data;
import net.minecraft.client.Minecraft;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureDungeonSecrets.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureDungeonSecrets.java
index a51e24ca..2e53e6f1 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureDungeonSecrets.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureDungeonSecrets.java
@@ -18,27 +18,14 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.dungeon;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonSecrets.java
-import kr.syeyoung.dungeonsguide.DungeonsGuide;
-import kr.syeyoung.dungeonsguide.SkyblockStatus;
-import kr.syeyoung.dungeonsguide.config.types.AColor;
-import kr.syeyoung.dungeonsguide.features.text.StyledText;
-import kr.syeyoung.dungeonsguide.features.text.TextHUDFeature;
-import kr.syeyoung.dungeonsguide.features.text.TextStyle;
-import kr.syeyoung.dungeonsguide.dungeon.DungeonContext;
-import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom;
-import kr.syeyoung.dungeonsguide.utils.TextUtils;
-========
+
import kr.syeyoung.dungeonsguide.mod.SkyblockStatus;
import kr.syeyoung.dungeonsguide.mod.config.types.AColor;
import kr.syeyoung.dungeonsguide.mod.dungeon.DungeonContext;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomfinder.DungeonRoom;
import kr.syeyoung.dungeonsguide.mod.DungeonsGuide;
-import kr.syeyoung.dungeonsguide.mod.features.text.StyledText;
import kr.syeyoung.dungeonsguide.mod.features.text.TextHUDFeature;
-import kr.syeyoung.dungeonsguide.mod.features.text.TextStyle;
-import kr.syeyoung.dungeonsguide.mod.utils.TextUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureDungeonSecrets.java
+
import net.minecraft.client.Minecraft;
import net.minecraft.client.network.NetworkPlayerInfo;
import net.minecraft.scoreboard.ScorePlayerTeam;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureDungeonTombs.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureDungeonTombs.java
index 3037ea97..bc28b098 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureDungeonTombs.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureDungeonTombs.java
@@ -18,23 +18,12 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.dungeon;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonTombs.java
-import kr.syeyoung.dungeonsguide.DungeonsGuide;
-import kr.syeyoung.dungeonsguide.SkyblockStatus;
-import kr.syeyoung.dungeonsguide.config.types.AColor;
-import kr.syeyoung.dungeonsguide.features.text.StyledText;
-import kr.syeyoung.dungeonsguide.features.text.TextHUDFeature;
-import kr.syeyoung.dungeonsguide.features.text.TextStyle;
-import kr.syeyoung.dungeonsguide.utils.TextUtils;
-========
+
import kr.syeyoung.dungeonsguide.mod.SkyblockStatus;
import kr.syeyoung.dungeonsguide.mod.config.types.AColor;
import kr.syeyoung.dungeonsguide.mod.DungeonsGuide;
-import kr.syeyoung.dungeonsguide.mod.features.text.StyledText;
import kr.syeyoung.dungeonsguide.mod.features.text.TextHUDFeature;
-import kr.syeyoung.dungeonsguide.mod.features.text.TextStyle;
-import kr.syeyoung.dungeonsguide.mod.utils.TextUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureDungeonTombs.java
+
import net.minecraft.client.Minecraft;
import net.minecraft.client.network.NetworkPlayerInfo;
import net.minecraft.scoreboard.ScorePlayerTeam;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureHideNameTags.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureHideNameTags.java
index 8928af42..3420581a 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureHideNameTags.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureHideNameTags.java
@@ -18,17 +18,12 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.dungeon;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureHideNameTags.java
-import kr.syeyoung.dungeonsguide.DungeonsGuide;
-import kr.syeyoung.dungeonsguide.SkyblockStatus;
-import kr.syeyoung.dungeonsguide.features.listener.EntityLivingRenderListener;
-import kr.syeyoung.dungeonsguide.features.SimpleFeature;
-========
+
import kr.syeyoung.dungeonsguide.mod.DungeonsGuide;
import kr.syeyoung.dungeonsguide.mod.SkyblockStatus;
+
import kr.syeyoung.dungeonsguide.mod.features.SimpleFeature;
import kr.syeyoung.dungeonsguide.mod.features.listener.EntityLivingRenderListener;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureHideNameTags.java
import net.minecraft.entity.item.EntityArmorStand;
import net.minecraftforge.client.event.RenderLivingEvent;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeaturePlayerESP.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeaturePlayerESP.java
index 0f932a8c..8f884547 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeaturePlayerESP.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeaturePlayerESP.java
@@ -18,19 +18,13 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.dungeon;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeaturePlayerESP.java
-import kr.syeyoung.dungeonsguide.DungeonsGuide;
-import kr.syeyoung.dungeonsguide.SkyblockStatus;
-import kr.syeyoung.dungeonsguide.features.listener.PlayerRenderListener;
-import kr.syeyoung.dungeonsguide.dungeon.DungeonContext;
-import kr.syeyoung.dungeonsguide.features.SimpleFeature;
-========
+
import kr.syeyoung.dungeonsguide.mod.DungeonsGuide;
import kr.syeyoung.dungeonsguide.mod.SkyblockStatus;
import kr.syeyoung.dungeonsguide.mod.dungeon.DungeonContext;
+
import kr.syeyoung.dungeonsguide.mod.features.SimpleFeature;
import kr.syeyoung.dungeonsguide.mod.features.listener.PlayerRenderListener;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeaturePlayerESP.java
import net.minecraft.client.entity.AbstractClientPlayer;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.entity.player.EntityPlayer;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeaturePressAnyKeyToCloseChest.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeaturePressAnyKeyToCloseChest.java
index 37935db3..fd26085c 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeaturePressAnyKeyToCloseChest.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeaturePressAnyKeyToCloseChest.java
@@ -18,21 +18,14 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.dungeon;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeaturePressAnyKeyToCloseChest.java
-import kr.syeyoung.dungeonsguide.DungeonsGuide;
-import kr.syeyoung.dungeonsguide.features.listener.GuiClickListener;
-import kr.syeyoung.dungeonsguide.features.listener.KeyInputListener;
-import kr.syeyoung.dungeonsguide.features.FeatureParameter;
-import kr.syeyoung.dungeonsguide.features.SimpleFeature;
-import kr.syeyoung.dungeonsguide.features.impl.boss.FeatureChestPrice;
-========
+
import kr.syeyoung.dungeonsguide.mod.DungeonsGuide;
import kr.syeyoung.dungeonsguide.mod.features.FeatureParameter;
import kr.syeyoung.dungeonsguide.mod.features.SimpleFeature;
import kr.syeyoung.dungeonsguide.mod.features.impl.boss.FeatureChestPrice;
+
import kr.syeyoung.dungeonsguide.mod.features.listener.GuiClickListener;
import kr.syeyoung.dungeonsguide.mod.features.listener.KeyInputListener;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeaturePressAnyKeyToCloseChest.java
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.gui.inventory.GuiChest;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureWarnLowHealth.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureWarnLowHealth.java
index 49c7d449..2466643a 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureWarnLowHealth.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureWarnLowHealth.java
@@ -18,25 +18,13 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.dungeon;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureWarnLowHealth.java
-import kr.syeyoung.dungeonsguide.DungeonsGuide;
-import kr.syeyoung.dungeonsguide.SkyblockStatus;
-import kr.syeyoung.dungeonsguide.config.types.AColor;
-import kr.syeyoung.dungeonsguide.features.text.StyledText;
-import kr.syeyoung.dungeonsguide.features.text.TextHUDFeature;
-import kr.syeyoung.dungeonsguide.features.text.TextStyle;
-import kr.syeyoung.dungeonsguide.features.FeatureParameter;
-import kr.syeyoung.dungeonsguide.utils.TextUtils;
-========
+
import kr.syeyoung.dungeonsguide.mod.SkyblockStatus;
import kr.syeyoung.dungeonsguide.mod.config.types.AColor;
import kr.syeyoung.dungeonsguide.mod.DungeonsGuide;
import kr.syeyoung.dungeonsguide.mod.features.FeatureParameter;
-import kr.syeyoung.dungeonsguide.mod.features.text.StyledText;
import kr.syeyoung.dungeonsguide.mod.features.text.TextHUDFeature;
-import kr.syeyoung.dungeonsguide.mod.features.text.TextStyle;
-import kr.syeyoung.dungeonsguide.mod.utils.TextUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureWarnLowHealth.java
+
import net.minecraft.client.Minecraft;
import net.minecraft.scoreboard.Score;
import net.minecraft.scoreboard.ScoreObjective;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureWatcherWarning.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureWatcherWarning.java
index 90281789..ba49886b 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureWatcherWarning.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureWatcherWarning.java
@@ -18,29 +18,14 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.dungeon;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureWatcherWarning.java
-import kr.syeyoung.dungeonsguide.DungeonsGuide;
-import kr.syeyoung.dungeonsguide.SkyblockStatus;
-import kr.syeyoung.dungeonsguide.config.types.AColor;
-import kr.syeyoung.dungeonsguide.features.listener.ChatListener;
-import kr.syeyoung.dungeonsguide.features.listener.DungeonEndListener;
-import kr.syeyoung.dungeonsguide.features.text.StyledText;
-import kr.syeyoung.dungeonsguide.features.text.TextHUDFeature;
-import kr.syeyoung.dungeonsguide.features.text.TextStyle;
-import kr.syeyoung.dungeonsguide.dungeon.DungeonContext;
-import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom;
-========
+
import kr.syeyoung.dungeonsguide.mod.SkyblockStatus;
import kr.syeyoung.dungeonsguide.mod.config.types.AColor;
import kr.syeyoung.dungeonsguide.mod.dungeon.DungeonContext;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomfinder.DungeonRoom;
import kr.syeyoung.dungeonsguide.mod.DungeonsGuide;
-import kr.syeyoung.dungeonsguide.mod.features.listener.ChatListener;
-import kr.syeyoung.dungeonsguide.mod.features.listener.DungeonEndListener;
-import kr.syeyoung.dungeonsguide.mod.features.text.StyledText;
import kr.syeyoung.dungeonsguide.mod.features.text.TextHUDFeature;
-import kr.syeyoung.dungeonsguide.mod.features.text.TextStyle;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/dungeon/FeatureWatcherWarning.java
+
import net.minecraftforge.client.event.ClientChatReceivedEvent;
import java.util.ArrayList;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/etc/FeatureAutoAcceptReparty.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/etc/FeatureAutoAcceptReparty.java
index 60627a78..6fe5a5a6 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/etc/FeatureAutoAcceptReparty.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/etc/FeatureAutoAcceptReparty.java
@@ -18,21 +18,12 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.etc;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureAutoAcceptReparty.java
-import kr.syeyoung.dungeonsguide.DungeonsGuide;
-import kr.syeyoung.dungeonsguide.SkyblockStatus;
-import kr.syeyoung.dungeonsguide.features.listener.ChatListener;
-import kr.syeyoung.dungeonsguide.chat.ChatProcessor;
-import kr.syeyoung.dungeonsguide.features.SimpleFeature;
-import kr.syeyoung.dungeonsguide.utils.TextUtils;
-========
+
import kr.syeyoung.dungeonsguide.mod.SkyblockStatus;
import kr.syeyoung.dungeonsguide.mod.DungeonsGuide;
import kr.syeyoung.dungeonsguide.mod.chat.ChatProcessor;
+
import kr.syeyoung.dungeonsguide.mod.features.SimpleFeature;
-import kr.syeyoung.dungeonsguide.mod.features.listener.ChatListener;
-import kr.syeyoung.dungeonsguide.mod.utils.TextUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/etc/FeatureAutoAcceptReparty.java
import net.minecraftforge.client.event.ClientChatReceivedEvent;
public class FeatureAutoAcceptReparty extends SimpleFeature implements ChatListener {
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/etc/FeatureCooldownCounter.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/etc/FeatureCooldownCounter.java
index f132066f..e7712d3f 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/etc/FeatureCooldownCounter.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/etc/FeatureCooldownCounter.java
@@ -18,21 +18,13 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.etc;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureCooldownCounter.java
-import kr.syeyoung.dungeonsguide.config.types.AColor;
-import kr.syeyoung.dungeonsguide.features.listener.DungeonQuitListener;
-import kr.syeyoung.dungeonsguide.features.listener.GuiOpenListener;
-import kr.syeyoung.dungeonsguide.features.text.StyledText;
-import kr.syeyoung.dungeonsguide.features.text.TextHUDFeature;
-import kr.syeyoung.dungeonsguide.features.text.TextStyle;
-========
+
import kr.syeyoung.dungeonsguide.mod.config.types.AColor;
import kr.syeyoung.dungeonsguide.mod.features.listener.DungeonQuitListener;
import kr.syeyoung.dungeonsguide.mod.features.listener.GuiOpenListener;
import kr.syeyoung.dungeonsguide.mod.features.text.StyledText;
import kr.syeyoung.dungeonsguide.mod.features.text.TextHUDFeature;
import kr.syeyoung.dungeonsguide.mod.features.text.TextStyle;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/etc/FeatureCooldownCounter.java
import net.minecraft.client.gui.inventory.GuiChest;
import net.minecraft.inventory.ContainerChest;
import net.minecraftforge.client.event.GuiOpenEvent;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/etc/FeatureCopyMessages.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/etc/FeatureCopyMessages.java
index 7049f934..b3270543 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/etc/FeatureCopyMessages.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/etc/FeatureCopyMessages.java
@@ -18,15 +18,10 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.etc;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureCopyMessages.java
-import kr.syeyoung.dungeonsguide.features.listener.ChatListener;
-import kr.syeyoung.dungeonsguide.features.SimpleFeature;
-import kr.syeyoung.dungeonsguide.utils.TextUtils;
-========
+
+
import kr.syeyoung.dungeonsguide.mod.features.SimpleFeature;
-import kr.syeyoung.dungeonsguide.mod.features.listener.ChatListener;
import kr.syeyoung.dungeonsguide.mod.utils.TextUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/etc/FeatureCopyMessages.java
import net.minecraft.event.ClickEvent;
import net.minecraft.event.HoverEvent;
import net.minecraft.util.ChatComponentText;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/etc/FeatureDecreaseExplosionSound.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/etc/FeatureDecreaseExplosionSound.java
index a4320704..e4c1c3c1 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/etc/FeatureDecreaseExplosionSound.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/etc/FeatureDecreaseExplosionSound.java
@@ -18,18 +18,12 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.etc;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureDecreaseExplosionSound.java
-import kr.syeyoung.dungeonsguide.DungeonsGuide;
-import kr.syeyoung.dungeonsguide.SkyblockStatus;
-import kr.syeyoung.dungeonsguide.features.listener.SoundListener;
-import kr.syeyoung.dungeonsguide.features.FeatureParameter;
-import kr.syeyoung.dungeonsguide.features.SimpleFeature;
-========
+
import kr.syeyoung.dungeonsguide.mod.SkyblockStatus;
import kr.syeyoung.dungeonsguide.mod.features.FeatureParameter;
+
import kr.syeyoung.dungeonsguide.mod.features.SimpleFeature;
import kr.syeyoung.dungeonsguide.mod.features.listener.SoundListener;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/etc/FeatureDecreaseExplosionSound.java
import net.minecraft.client.audio.PositionedSoundRecord;
import net.minecraftforge.client.event.sound.PlaySoundEvent;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/etc/FeatureDisableMessage.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/etc/FeatureDisableMessage.java
index f804ec1b..22785ae9 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/etc/FeatureDisableMessage.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/etc/FeatureDisableMessage.java
@@ -18,18 +18,12 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.etc;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureDisableMessage.java
-import kr.syeyoung.dungeonsguide.DungeonsGuide;
-import kr.syeyoung.dungeonsguide.SkyblockStatus;
-import kr.syeyoung.dungeonsguide.features.listener.ChatListener;
-import kr.syeyoung.dungeonsguide.features.FeatureParameter;
-import kr.syeyoung.dungeonsguide.features.SimpleFeature;
-========
+
import kr.syeyoung.dungeonsguide.mod.SkyblockStatus;
import kr.syeyoung.dungeonsguide.mod.features.FeatureParameter;
+
import kr.syeyoung.dungeonsguide.mod.features.SimpleFeature;
import kr.syeyoung.dungeonsguide.mod.features.listener.ChatListener;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/etc/FeatureDisableMessage.java
import lombok.AllArgsConstructor;
import lombok.Data;
import net.minecraftforge.client.event.ClientChatReceivedEvent;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/etc/FeaturePenguins.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/etc/FeaturePenguins.java
index 541971a8..53a5b600 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/etc/FeaturePenguins.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/etc/FeaturePenguins.java
@@ -19,19 +19,13 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.etc;
import com.google.common.collect.ImmutableMap;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeaturePenguins.java
-import kr.syeyoung.dungeonsguide.DungeonsGuide;
-import kr.syeyoung.dungeonsguide.SkyblockStatus;
-import kr.syeyoung.dungeonsguide.features.listener.PlayerRenderListener;
-import kr.syeyoung.dungeonsguide.features.listener.TextureStichListener;
-import kr.syeyoung.dungeonsguide.features.SimpleFeature;
-========
+
import kr.syeyoung.dungeonsguide.mod.DungeonsGuide;
import kr.syeyoung.dungeonsguide.mod.SkyblockStatus;
+
import kr.syeyoung.dungeonsguide.mod.features.SimpleFeature;
import kr.syeyoung.dungeonsguide.mod.features.listener.PlayerRenderListener;
import kr.syeyoung.dungeonsguide.mod.features.listener.TextureStichListener;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/etc/FeaturePenguins.java
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.AbstractClientPlayer;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/etc/FeatureTooltipDungeonStat.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/etc/FeatureTooltipDungeonStat.java
index 55220e5b..0835e3ec 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/etc/FeatureTooltipDungeonStat.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/etc/FeatureTooltipDungeonStat.java
@@ -18,13 +18,10 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.etc;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureTooltipDungeonStat.java
-import kr.syeyoung.dungeonsguide.features.listener.TooltipListener;
-import kr.syeyoung.dungeonsguide.features.SimpleFeature;
-========
+
+
import kr.syeyoung.dungeonsguide.mod.features.SimpleFeature;
import kr.syeyoung.dungeonsguide.mod.features.listener.TooltipListener;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/etc/FeatureTooltipDungeonStat.java
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.event.entity.player.ItemTooltipEvent;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/etc/FeatureTooltipPrice.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/etc/FeatureTooltipPrice.java
index 750279b3..a0821dae 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/etc/FeatureTooltipPrice.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/etc/FeatureTooltipPrice.java
@@ -18,19 +18,13 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.etc;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureTooltipPrice.java
-import kr.syeyoung.dungeonsguide.features.listener.TooltipListener;
-import kr.syeyoung.dungeonsguide.features.FeatureParameter;
-import kr.syeyoung.dungeonsguide.features.SimpleFeature;
-import kr.syeyoung.dungeonsguide.utils.AhUtils;
-import kr.syeyoung.dungeonsguide.utils.TextUtils;
-========
+
import kr.syeyoung.dungeonsguide.mod.features.FeatureParameter;
+
import kr.syeyoung.dungeonsguide.mod.features.SimpleFeature;
import kr.syeyoung.dungeonsguide.mod.features.listener.TooltipListener;
import kr.syeyoung.dungeonsguide.mod.utils.AhUtils;
import kr.syeyoung.dungeonsguide.mod.utils.TextUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/etc/FeatureTooltipPrice.java
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.event.entity.player.ItemTooltipEvent;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/etc/FeatureUpdateAlarm.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/etc/FeatureUpdateAlarm.java
index 0bfe8c22..6056b845 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/etc/FeatureUpdateAlarm.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/etc/FeatureUpdateAlarm.java
@@ -18,22 +18,10 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.etc;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureUpdateAlarm.java
-import kr.syeyoung.dungeonsguide.features.listener.StompConnectedListener;
-import kr.syeyoung.dungeonsguide.features.listener.TickListener;
-import kr.syeyoung.dungeonsguide.events.StompConnectedEvent;
-import kr.syeyoung.dungeonsguide.features.SimpleFeature;
-import kr.syeyoung.dungeonsguide.stomp.StompInterface;
-import kr.syeyoung.dungeonsguide.stomp.StompMessageHandler;
-import kr.syeyoung.dungeonsguide.stomp.StompPayload;
-import kr.syeyoung.dungeonsguide.stomp.StompSubscription;
-========
+
import kr.syeyoung.dungeonsguide.mod.chat.ChatTransmitter;
-import kr.syeyoung.dungeonsguide.mod.events.impl.StompConnectedEvent;
+
import kr.syeyoung.dungeonsguide.mod.features.SimpleFeature;
-import kr.syeyoung.dungeonsguide.mod.features.listener.StompConnectedListener;
-import kr.syeyoung.dungeonsguide.mod.features.listener.TickListener;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/etc/FeatureUpdateAlarm.java
import net.minecraft.client.Minecraft;
import net.minecraft.util.ChatComponentText;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/etc/ability/FeatureAbilityCooldown.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/etc/ability/FeatureAbilityCooldown.java
index deda9a7a..3fd22912 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/etc/ability/FeatureAbilityCooldown.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/etc/ability/FeatureAbilityCooldown.java
@@ -18,28 +18,12 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.etc.ability;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/ability/FeatureAbilityCooldown.java
-import kr.syeyoung.dungeonsguide.SkyblockStatus;
-import kr.syeyoung.dungeonsguide.features.listener.TickListener;
-import kr.syeyoung.dungeonsguide.DungeonsGuide;
-import kr.syeyoung.dungeonsguide.config.types.AColor;
-import kr.syeyoung.dungeonsguide.features.FeatureParameter;
-import kr.syeyoung.dungeonsguide.features.listener.ChatListener;
-import kr.syeyoung.dungeonsguide.features.text.StyledText;
-import kr.syeyoung.dungeonsguide.features.text.TextHUDFeature;
-import kr.syeyoung.dungeonsguide.features.text.TextStyle;
-import kr.syeyoung.dungeonsguide.utils.TextUtils;
-========
+
import kr.syeyoung.dungeonsguide.mod.SkyblockStatus;
import kr.syeyoung.dungeonsguide.mod.config.types.AColor;
import kr.syeyoung.dungeonsguide.mod.features.FeatureParameter;
-import kr.syeyoung.dungeonsguide.mod.features.listener.ChatListener;
-import kr.syeyoung.dungeonsguide.mod.features.listener.TickListener;
-import kr.syeyoung.dungeonsguide.mod.features.text.StyledText;
import kr.syeyoung.dungeonsguide.mod.features.text.TextHUDFeature;
-import kr.syeyoung.dungeonsguide.mod.features.text.TextStyle;
-import kr.syeyoung.dungeonsguide.mod.utils.TextUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/etc/ability/FeatureAbilityCooldown.java
+
import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.EntityPlayerSP;
import net.minecraft.item.ItemStack;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/APIKey.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/APIKey.java
index 845c45f4..7f9153e1 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/APIKey.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/APIKey.java
@@ -18,19 +18,13 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.party;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/APIKey.java
-import kr.syeyoung.dungeonsguide.features.listener.ChatListenerGlobal;
-import kr.syeyoung.dungeonsguide.features.FeatureParameter;
-import kr.syeyoung.dungeonsguide.features.SimpleFeature;
-import kr.syeyoung.dungeonsguide.utils.TextUtils;
-import net.minecraft.client.Minecraft;
-========
+
import kr.syeyoung.dungeonsguide.mod.chat.ChatTransmitter;
import kr.syeyoung.dungeonsguide.mod.features.FeatureParameter;
+
import kr.syeyoung.dungeonsguide.mod.features.SimpleFeature;
import kr.syeyoung.dungeonsguide.mod.features.listener.ChatListenerGlobal;
import kr.syeyoung.dungeonsguide.mod.utils.TextUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/APIKey.java
import net.minecraft.util.ChatComponentText;
import net.minecraftforge.client.event.ClientChatReceivedEvent;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/FeatureGoodParties.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/FeatureGoodParties.java
index 10b37fc8..7c3a6832 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/FeatureGoodParties.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/FeatureGoodParties.java
@@ -18,15 +18,8 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.party;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/FeatureGoodParties.java
-import kr.syeyoung.dungeonsguide.features.listener.GuiPostRenderListener;
-import kr.syeyoung.dungeonsguide.features.SimpleFeature;
-import kr.syeyoung.dungeonsguide.utils.TextUtils;
-========
-import kr.syeyoung.dungeonsguide.mod.features.SimpleFeature;
-import kr.syeyoung.dungeonsguide.mod.features.listener.GuiPostRenderListener;
-import kr.syeyoung.dungeonsguide.mod.utils.TextUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/FeatureGoodParties.java
+
+
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.Gui;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/FeaturePartyList.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/FeaturePartyList.java
index 691416ee..af4cec63 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/FeaturePartyList.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/FeaturePartyList.java
@@ -18,21 +18,12 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.party;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/FeaturePartyList.java
-import kr.syeyoung.dungeonsguide.config.types.AColor;
-import kr.syeyoung.dungeonsguide.features.text.StyledText;
-import kr.syeyoung.dungeonsguide.features.text.TextHUDFeature;
-import kr.syeyoung.dungeonsguide.features.text.TextStyle;
-import kr.syeyoung.dungeonsguide.chat.PartyContext;
-import kr.syeyoung.dungeonsguide.chat.PartyManager;
-========
+
import kr.syeyoung.dungeonsguide.mod.party.PartyContext;
import kr.syeyoung.dungeonsguide.mod.party.PartyManager;
import kr.syeyoung.dungeonsguide.mod.config.types.AColor;
-import kr.syeyoung.dungeonsguide.mod.features.text.StyledText;
import kr.syeyoung.dungeonsguide.mod.features.text.TextHUDFeature;
-import kr.syeyoung.dungeonsguide.mod.features.text.TextStyle;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/FeaturePartyList.java
+
import java.util.ArrayList;
import java.util.Arrays;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/FeaturePartyReady.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/FeaturePartyReady.java
index 0f190787..3211a1f1 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/FeaturePartyReady.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/FeaturePartyReady.java
@@ -18,29 +18,13 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.party;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/FeaturePartyReady.java
-import kr.syeyoung.dungeonsguide.DungeonsGuide;
-import kr.syeyoung.dungeonsguide.config.types.AColor;
-import kr.syeyoung.dungeonsguide.features.listener.ChatListener;
-import kr.syeyoung.dungeonsguide.features.listener.DungeonStartListener;
-import kr.syeyoung.dungeonsguide.features.text.StyledText;
-import kr.syeyoung.dungeonsguide.features.text.TextHUDFeature;
-import kr.syeyoung.dungeonsguide.features.text.TextStyle;
-import kr.syeyoung.dungeonsguide.chat.PartyContext;
-import kr.syeyoung.dungeonsguide.chat.PartyManager;
-import kr.syeyoung.dungeonsguide.utils.TextUtils;
-========
+
import kr.syeyoung.dungeonsguide.mod.config.types.AColor;
import kr.syeyoung.dungeonsguide.mod.dungeon.DungeonContext;
-import kr.syeyoung.dungeonsguide.mod.features.listener.ChatListener;
-import kr.syeyoung.dungeonsguide.mod.features.listener.DungeonStartListener;
-import kr.syeyoung.dungeonsguide.mod.features.text.StyledText;
import kr.syeyoung.dungeonsguide.mod.features.text.TextHUDFeature;
-import kr.syeyoung.dungeonsguide.mod.features.text.TextStyle;
import kr.syeyoung.dungeonsguide.mod.party.PartyContext;
import kr.syeyoung.dungeonsguide.mod.party.PartyManager;
-import kr.syeyoung.dungeonsguide.mod.utils.TextUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/FeaturePartyReady.java
+
import net.minecraftforge.client.event.ClientChatReceivedEvent;
import java.util.*;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/api/CachedData.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/api/CachedData.java
index 9213e2e5..5fcfc73e 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/api/CachedData.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/api/CachedData.java
@@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
-package kr.syeyoung.dungeonsguide.features.impl.party.api;
+package kr.syeyoung.dungeonsguide.mod.features.impl.party.api;
import lombok.AllArgsConstructor;
import lombok.Data;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/api/ClassSpecificData.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/api/ClassSpecificData.java
index d1df192b..dde851e7 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/api/ClassSpecificData.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/api/ClassSpecificData.java
@@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
-package kr.syeyoung.dungeonsguide.features.impl.party.api;
+package kr.syeyoung.dungeonsguide.mod.features.impl.party.api;
import lombok.AllArgsConstructor;
import lombok.Getter;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/api/Pet.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/api/Pet.java
index 99004cc1..7a3b62f8 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/api/Pet.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/api/Pet.java
@@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
-package kr.syeyoung.dungeonsguide.features.impl.party.api;
+package kr.syeyoung.dungeonsguide.mod.features.impl.party.api;
import lombok.Data;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/customgui/FeatureCustomPartyFinder.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/customgui/FeatureCustomPartyFinder.java
index ff9261f8..e09ccdc9 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/customgui/FeatureCustomPartyFinder.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/customgui/FeatureCustomPartyFinder.java
@@ -18,17 +18,11 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.party.customgui;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/customgui/FeatureCustomPartyFinder.java
-import kr.syeyoung.dungeonsguide.events.WindowUpdateEvent;
-import kr.syeyoung.dungeonsguide.features.SimpleFeature;
-import kr.syeyoung.dungeonsguide.features.listener.GuiOpenListener;
-import kr.syeyoung.dungeonsguide.features.listener.GuiUpdateListener;
-import kr.syeyoung.dungeonsguide.features.listener.*;
-========
-import kr.syeyoung.dungeonsguide.mod.events.impl.WindowUpdateEvent;
+
+
import kr.syeyoung.dungeonsguide.mod.features.SimpleFeature;
-import kr.syeyoung.dungeonsguide.mod.features.listener.*;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/customgui/FeatureCustomPartyFinder.java
+import kr.syeyoung.dungeonsguide.mod.features.listener.GuiOpenListener;
+import kr.syeyoung.dungeonsguide.mod.features.listener.GuiUpdateListener;
import lombok.Getter;
import lombok.Setter;
import net.minecraft.client.Minecraft;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/customgui/PanelPartyFinder.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/customgui/PanelPartyFinder.java
index a39482e3..d0bf90e7 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/customgui/PanelPartyFinder.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/customgui/PanelPartyFinder.java
@@ -18,28 +18,15 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.party.customgui;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/customgui/PanelPartyFinder.java
-import kr.syeyoung.dungeonsguide.chat.PartyManager;
-import kr.syeyoung.dungeonsguide.config.guiconfig.GuiConfigV2;
-import kr.syeyoung.dungeonsguide.events.WindowUpdateEvent;
-import kr.syeyoung.dungeonsguide.features.FeatureRegistry;
-import kr.syeyoung.dungeonsguide.features.impl.discord.invteTooltip.MTooltipInvite;
-import kr.syeyoung.dungeonsguide.gui.MPanel;
-import kr.syeyoung.dungeonsguide.gui.elements.*;
-import kr.syeyoung.dungeonsguide.gui.elements.*;
-import kr.syeyoung.dungeonsguide.rpc.RichPresenceManager;
-import kr.syeyoung.dungeonsguide.utils.RenderUtils;
-========
+
import kr.syeyoung.dungeonsguide.mod.party.PartyManager;
import kr.syeyoung.dungeonsguide.mod.config.guiconfig.GuiConfigV2;
-import kr.syeyoung.dungeonsguide.mod.events.impl.WindowUpdateEvent;
import kr.syeyoung.dungeonsguide.mod.features.FeatureRegistry;
import kr.syeyoung.dungeonsguide.mod.features.impl.discord.invteTooltip.MTooltipInvite;
import kr.syeyoung.dungeonsguide.mod.gui.MPanel;
import kr.syeyoung.dungeonsguide.mod.gui.elements.*;
import kr.syeyoung.dungeonsguide.mod.discord.rpc.RichPresenceManager;
-import kr.syeyoung.dungeonsguide.mod.utils.RenderUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/customgui/PanelPartyFinder.java
+
import lombok.Getter;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/customgui/PanelPartyFinderSettings.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/customgui/PanelPartyFinderSettings.java
index 3d40b5b1..81e254ba 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/customgui/PanelPartyFinderSettings.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/customgui/PanelPartyFinderSettings.java
@@ -18,20 +18,12 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.party.customgui;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/customgui/PanelPartyFinderSettings.java
-import kr.syeyoung.dungeonsguide.chat.ChatProcessor;
-import kr.syeyoung.dungeonsguide.chat.PartyManager;
-import kr.syeyoung.dungeonsguide.features.FeatureRegistry;
-import kr.syeyoung.dungeonsguide.gui.elements.*;
-import kr.syeyoung.dungeonsguide.gui.elements.*;
-import kr.syeyoung.dungeonsguide.utils.TextUtils;
-========
+
import kr.syeyoung.dungeonsguide.mod.chat.ChatProcessor;
import kr.syeyoung.dungeonsguide.mod.features.FeatureRegistry;
import kr.syeyoung.dungeonsguide.mod.gui.elements.*;
import kr.syeyoung.dungeonsguide.mod.party.PartyManager;
-import kr.syeyoung.dungeonsguide.mod.utils.TextUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/customgui/PanelPartyFinderSettings.java
+
import lombok.Getter;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/api/playerprofile/PlayerProfileParser.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/api/playerprofile/PlayerProfileParser.java
index 6e9ae97e..eddfdd95 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/api/playerprofile/PlayerProfileParser.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/api/playerprofile/PlayerProfileParser.java
@@ -1,24 +1,6 @@
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/api/ApiFetchur.java
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-========
+
package kr.syeyoung.dungeonsguide.mod.features.impl.party.playerpreview.api.playerprofile;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/api/playerprofile/PlayerProfileParser.java
+
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/datarenders/impl/DataRenderDungeonFloorStat.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/datarenders/impl/DataRenderDungeonFloorStat.java
index 6ee50ddf..a5b1b432 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/datarenders/impl/DataRenderDungeonFloorStat.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/datarenders/impl/DataRenderDungeonFloorStat.java
@@ -18,19 +18,14 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.party.playerpreview.datarenders.impl;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/playerpreview/DataRenderDungeonFloorStat.java
-import kr.syeyoung.dungeonsguide.features.impl.party.api.*;
-import kr.syeyoung.dungeonsguide.features.impl.party.api.*;
-import kr.syeyoung.dungeonsguide.utils.TextUtils;
-========
+
import kr.syeyoung.dungeonsguide.mod.features.impl.party.playerpreview.datarenders.IDataRenderer;
import kr.syeyoung.dungeonsguide.mod.features.impl.party.playerpreview.api.playerprofile.PlayerProfile;
import kr.syeyoung.dungeonsguide.mod.features.impl.party.playerpreview.api.playerprofile.dataclasses.DungeonSpecificData;
import kr.syeyoung.dungeonsguide.mod.features.impl.party.playerpreview.api.playerprofile.dataclasses.DungeonStat;
import kr.syeyoung.dungeonsguide.mod.features.impl.party.playerpreview.api.playerprofile.dataclasses.DungeonType;
import kr.syeyoung.dungeonsguide.mod.features.impl.party.playerpreview.api.playerprofile.dataclasses.FloorSpecificData;
-import kr.syeyoung.dungeonsguide.mod.utils.TextUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/datarenders/impl/DataRenderDungeonFloorStat.java
+
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.ScaledResolution;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/datarenders/impl/DataRenderDungeonHighestFloorStat.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/datarenders/impl/DataRenderDungeonHighestFloorStat.java
index d52727d7..43973c4e 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/datarenders/impl/DataRenderDungeonHighestFloorStat.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/datarenders/impl/DataRenderDungeonHighestFloorStat.java
@@ -18,19 +18,14 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.party.playerpreview.datarenders.impl;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/playerpreview/DataRenderDungeonHighestFloorStat.java
-import kr.syeyoung.dungeonsguide.features.impl.party.api.*;
-import kr.syeyoung.dungeonsguide.features.impl.party.api.*;
-import kr.syeyoung.dungeonsguide.utils.TextUtils;
-========
+
import kr.syeyoung.dungeonsguide.mod.features.impl.party.playerpreview.datarenders.IDataRenderer;
import kr.syeyoung.dungeonsguide.mod.features.impl.party.playerpreview.api.playerprofile.PlayerProfile;
import kr.syeyoung.dungeonsguide.mod.features.impl.party.playerpreview.api.playerprofile.dataclasses.DungeonSpecificData;
import kr.syeyoung.dungeonsguide.mod.features.impl.party.playerpreview.api.playerprofile.dataclasses.DungeonStat;
import kr.syeyoung.dungeonsguide.mod.features.impl.party.playerpreview.api.playerprofile.dataclasses.DungeonType;
import kr.syeyoung.dungeonsguide.mod.features.impl.party.playerpreview.api.playerprofile.dataclasses.FloorSpecificData;
-import kr.syeyoung.dungeonsguide.mod.utils.TextUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/datarenders/impl/DataRenderDungeonHighestFloorStat.java
+
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.ScaledResolution;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/datarenders/impl/DataRendererClassLv.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/datarenders/impl/DataRendererClassLv.java
index bfc7ce6a..0c0333df 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/datarenders/impl/DataRendererClassLv.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/datarenders/impl/DataRendererClassLv.java
@@ -18,23 +18,10 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.party.playerpreview.datarenders.impl;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/playerpreview/DataRendererClassLv.java
-import kr.syeyoung.dungeonsguide.features.impl.party.api.ClassSpecificData;
-import kr.syeyoung.dungeonsguide.features.impl.party.api.DungeonClass;
-import kr.syeyoung.dungeonsguide.features.impl.party.api.PlayerProfile;
-import kr.syeyoung.dungeonsguide.features.impl.party.api.*;
-import kr.syeyoung.dungeonsguide.utils.RenderUtils;
-import kr.syeyoung.dungeonsguide.utils.TextUtils;
-import kr.syeyoung.dungeonsguide.utils.XPUtils;
-========
+
import kr.syeyoung.dungeonsguide.mod.features.impl.party.playerpreview.datarenders.IDataRenderer;
import kr.syeyoung.dungeonsguide.mod.features.impl.party.playerpreview.api.playerprofile.PlayerProfile;
-import kr.syeyoung.dungeonsguide.mod.features.impl.party.playerpreview.api.playerprofile.dataclasses.ClassSpecificData;
-import kr.syeyoung.dungeonsguide.mod.features.impl.party.playerpreview.api.playerprofile.dataclasses.DungeonClass;
-import kr.syeyoung.dungeonsguide.mod.utils.RenderUtils;
-import kr.syeyoung.dungeonsguide.mod.utils.TextUtils;
-import kr.syeyoung.dungeonsguide.mod.utils.XPUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/datarenders/impl/DataRendererClassLv.java
+
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.ScaledResolution;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/datarenders/impl/DataRendererLilyWeight.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/datarenders/impl/DataRendererLilyWeight.java
index 1106ed13..3c285528 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/datarenders/impl/DataRendererLilyWeight.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/datarenders/impl/DataRendererLilyWeight.java
@@ -18,12 +18,10 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.party.playerpreview.datarenders.impl;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/playerpreview/DataRendererLilyWeight.java
-import kr.syeyoung.dungeonsguide.features.impl.party.api.PlayerProfile;
-========
+
import kr.syeyoung.dungeonsguide.mod.features.impl.party.playerpreview.api.playerprofile.PlayerProfile;
import kr.syeyoung.dungeonsguide.mod.features.impl.party.playerpreview.datarenders.IDataRenderer;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/datarenders/impl/DataRendererLilyWeight.java
+
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.ScaledResolution;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/FeatureActions.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/FeatureActions.java
index bc7aa2db..025be04d 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/FeatureActions.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/FeatureActions.java
@@ -18,19 +18,7 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.secret;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/secret/FeatureActions.java
-import kr.syeyoung.dungeonsguide.DungeonsGuide;
-import kr.syeyoung.dungeonsguide.SkyblockStatus;
-import kr.syeyoung.dungeonsguide.config.types.AColor;
-import kr.syeyoung.dungeonsguide.dungeon.actions.Action;
-import kr.syeyoung.dungeonsguide.dungeon.actions.tree.ActionRoute;
-import kr.syeyoung.dungeonsguide.features.text.StyledText;
-import kr.syeyoung.dungeonsguide.features.text.TextHUDFeature;
-import kr.syeyoung.dungeonsguide.features.text.TextStyle;
-import kr.syeyoung.dungeonsguide.dungeon.DungeonContext;
-import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom;
-import kr.syeyoung.dungeonsguide.roomprocessor.GeneralRoomProcessor;
-========
+
import kr.syeyoung.dungeonsguide.mod.SkyblockStatus;
import kr.syeyoung.dungeonsguide.mod.config.types.AColor;
import kr.syeyoung.dungeonsguide.mod.dungeon.DungeonContext;
@@ -38,11 +26,9 @@ import kr.syeyoung.dungeonsguide.mod.dungeon.actions.AbstractAction;
import kr.syeyoung.dungeonsguide.mod.dungeon.actions.tree.ActionRoute;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomfinder.DungeonRoom;
import kr.syeyoung.dungeonsguide.mod.DungeonsGuide;
-import kr.syeyoung.dungeonsguide.mod.features.text.StyledText;
import kr.syeyoung.dungeonsguide.mod.features.text.TextHUDFeature;
-import kr.syeyoung.dungeonsguide.mod.features.text.TextStyle;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.GeneralRoomProcessor;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/FeatureActions.java
+
import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.EntityPlayerSP;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/FeatureBloodRush.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/FeatureBloodRush.java
index 27290b58..280bf56d 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/FeatureBloodRush.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/FeatureBloodRush.java
@@ -18,21 +18,14 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.secret;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/secret/FeatureBloodRush.java
-import kr.syeyoung.dungeonsguide.features.listener.KeybindPressedListener;
-import kr.syeyoung.dungeonsguide.events.KeyBindPressedEvent;
-import kr.syeyoung.dungeonsguide.features.FeatureParameter;
-import kr.syeyoung.dungeonsguide.features.FeatureRegistry;
-import kr.syeyoung.dungeonsguide.features.SimpleFeature;
-import net.minecraft.client.Minecraft;
-========
+
import kr.syeyoung.dungeonsguide.mod.chat.ChatTransmitter;
import kr.syeyoung.dungeonsguide.mod.events.impl.KeyBindPressedEvent;
import kr.syeyoung.dungeonsguide.mod.features.FeatureParameter;
import kr.syeyoung.dungeonsguide.mod.features.FeatureRegistry;
import kr.syeyoung.dungeonsguide.mod.features.SimpleFeature;
import kr.syeyoung.dungeonsguide.mod.features.listener.KeybindPressedListener;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/FeatureBloodRush.java
+
import net.minecraft.util.ChatComponentText;
import org.lwjgl.input.Keyboard;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/FeatureCreateRefreshLine.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/FeatureCreateRefreshLine.java
index 21953b74..cea7c956 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/FeatureCreateRefreshLine.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/FeatureCreateRefreshLine.java
@@ -19,15 +19,7 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.secret;
import com.google.common.base.Supplier;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/secret/FeatureCreateRefreshLine.java
-import kr.syeyoung.dungeonsguide.config.guiconfig.ConfigPanelCreator;
-import kr.syeyoung.dungeonsguide.config.guiconfig.MFeatureEdit;
-import kr.syeyoung.dungeonsguide.config.guiconfig.MParameterEdit;
-import kr.syeyoung.dungeonsguide.config.guiconfig.RootConfigPanel;
-import kr.syeyoung.dungeonsguide.features.FeatureParameter;
-import kr.syeyoung.dungeonsguide.features.SimpleFeature;
-import kr.syeyoung.dungeonsguide.gui.MPanel;
-========
+
import kr.syeyoung.dungeonsguide.mod.config.guiconfig.ConfigPanelCreator;
import kr.syeyoung.dungeonsguide.mod.config.guiconfig.MFeatureEdit;
import kr.syeyoung.dungeonsguide.mod.config.guiconfig.MParameterEdit;
@@ -35,7 +27,7 @@ import kr.syeyoung.dungeonsguide.mod.config.guiconfig.RootConfigPanel;
import kr.syeyoung.dungeonsguide.mod.features.FeatureParameter;
import kr.syeyoung.dungeonsguide.mod.features.SimpleFeature;
import kr.syeyoung.dungeonsguide.mod.gui.MPanel;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/FeatureCreateRefreshLine.java
+
import org.lwjgl.input.Keyboard;
import java.util.LinkedHashMap;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/FeaturePathfindStrategy.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/FeaturePathfindStrategy.java
index 02b0e159..6358cdb6 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/FeaturePathfindStrategy.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/FeaturePathfindStrategy.java
@@ -20,16 +20,7 @@ package kr.syeyoung.dungeonsguide.mod.features.impl.secret;
import com.google.common.base.Supplier;
import com.google.gson.JsonObject;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/secret/FeaturePathfindStrategy.java
-import kr.syeyoung.dungeonsguide.config.guiconfig.ConfigPanelCreator;
-import kr.syeyoung.dungeonsguide.gui.elements.MStringSelectionButton;
-import kr.syeyoung.dungeonsguide.config.guiconfig.MFeatureEdit;
-import kr.syeyoung.dungeonsguide.config.guiconfig.MParameterEdit;
-import kr.syeyoung.dungeonsguide.config.guiconfig.RootConfigPanel;
-import kr.syeyoung.dungeonsguide.features.FeatureParameter;
-import kr.syeyoung.dungeonsguide.features.SimpleFeature;
-import kr.syeyoung.dungeonsguide.gui.MPanel;
-========
+
import kr.syeyoung.dungeonsguide.mod.config.guiconfig.ConfigPanelCreator;
import kr.syeyoung.dungeonsguide.mod.config.guiconfig.MFeatureEdit;
import kr.syeyoung.dungeonsguide.mod.config.guiconfig.MParameterEdit;
@@ -38,7 +29,7 @@ import kr.syeyoung.dungeonsguide.mod.features.FeatureParameter;
import kr.syeyoung.dungeonsguide.mod.features.SimpleFeature;
import kr.syeyoung.dungeonsguide.mod.gui.MPanel;
import kr.syeyoung.dungeonsguide.mod.gui.elements.MStringSelectionButton;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/FeaturePathfindStrategy.java
+
import lombok.Getter;
import lombok.RequiredArgsConstructor;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/FeatureSoulRoomWarning.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/FeatureSoulRoomWarning.java
index 041dfdaa..ab128628 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/FeatureSoulRoomWarning.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/FeatureSoulRoomWarning.java
@@ -19,32 +19,7 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.secret;
import com.google.common.base.Supplier;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/secret/FeatureSoulRoomWarning.java
-import kr.syeyoung.dungeonsguide.DungeonsGuide;
-import kr.syeyoung.dungeonsguide.SkyblockStatus;
-import kr.syeyoung.dungeonsguide.config.guiconfig.ConfigPanelCreator;
-import kr.syeyoung.dungeonsguide.config.guiconfig.MFeatureEdit;
-import kr.syeyoung.dungeonsguide.config.guiconfig.MParameterEdit;
-import kr.syeyoung.dungeonsguide.config.guiconfig.RootConfigPanel;
-import kr.syeyoung.dungeonsguide.config.types.AColor;
-import kr.syeyoung.dungeonsguide.dungeon.data.DungeonRoomInfo;
-import kr.syeyoung.dungeonsguide.dungeon.mechanics.DungeonFairySoul;
-import kr.syeyoung.dungeonsguide.dungeon.mechanics.DungeonMechanic;
-import kr.syeyoung.dungeonsguide.features.listener.TickListener;
-import kr.syeyoung.dungeonsguide.features.text.*;
-import kr.syeyoung.dungeonsguide.gui.elements.MButton;
-import kr.syeyoung.dungeonsguide.gui.elements.MPassiveLabelAndElement;
-import kr.syeyoung.dungeonsguide.gui.elements.MStringSelectionButton;
-import kr.syeyoung.dungeonsguide.gui.elements.MToggleButton;
-import kr.syeyoung.dungeonsguide.dungeon.DungeonContext;
-import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom;
-import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoomInfoRegistry;
-import kr.syeyoung.dungeonsguide.features.FeatureParameter;
-import kr.syeyoung.dungeonsguide.features.text.*;
-import kr.syeyoung.dungeonsguide.gui.MPanel;
-import kr.syeyoung.dungeonsguide.roomprocessor.GeneralRoomProcessor;
-import kr.syeyoung.dungeonsguide.utils.RenderUtils;
-========
+
import kr.syeyoung.dungeonsguide.mod.DungeonsGuide;
import kr.syeyoung.dungeonsguide.mod.SkyblockStatus;
import kr.syeyoung.dungeonsguide.mod.config.guiconfig.ConfigPanelCreator;
@@ -53,13 +28,9 @@ import kr.syeyoung.dungeonsguide.mod.config.guiconfig.MParameterEdit;
import kr.syeyoung.dungeonsguide.mod.config.guiconfig.RootConfigPanel;
import kr.syeyoung.dungeonsguide.mod.config.types.AColor;
import kr.syeyoung.dungeonsguide.mod.dungeon.DungeonContext;
-import kr.syeyoung.dungeonsguide.dungeon.data.DungeonRoomInfo;
-import kr.syeyoung.dungeonsguide.dungeon.mechanics.dunegonmechanic.DungeonMechanic;
-import kr.syeyoung.dungeonsguide.dungeon.mechanics.DungeonFairySoul;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomfinder.DungeonRoom;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomfinder.DungeonRoomInfoRegistry;
import kr.syeyoung.dungeonsguide.mod.features.FeatureParameter;
-import kr.syeyoung.dungeonsguide.mod.features.listener.TickListener;
import kr.syeyoung.dungeonsguide.mod.features.text.*;
import kr.syeyoung.dungeonsguide.mod.gui.MPanel;
import kr.syeyoung.dungeonsguide.mod.gui.elements.MButton;
@@ -67,8 +38,7 @@ import kr.syeyoung.dungeonsguide.mod.gui.elements.MPassiveLabelAndElement;
import kr.syeyoung.dungeonsguide.mod.gui.elements.MStringSelectionButton;
import kr.syeyoung.dungeonsguide.mod.gui.elements.MToggleButton;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.GeneralRoomProcessor;
-import kr.syeyoung.dungeonsguide.mod.utils.RenderUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/FeatureSoulRoomWarning.java
+
import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.EntityPlayerSP;
import net.minecraft.client.gui.FontRenderer;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/FeatureTogglePathfind.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/FeatureTogglePathfind.java
index 6d1fe10f..3256d105 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/FeatureTogglePathfind.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/FeatureTogglePathfind.java
@@ -18,19 +18,13 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.secret;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/secret/FeatureTogglePathfind.java
-import kr.syeyoung.dungeonsguide.features.listener.KeybindPressedListener;
-import kr.syeyoung.dungeonsguide.events.KeyBindPressedEvent;
-import kr.syeyoung.dungeonsguide.features.FeatureParameter;
-import kr.syeyoung.dungeonsguide.features.SimpleFeature;
-import net.minecraft.client.Minecraft;
-========
+
import kr.syeyoung.dungeonsguide.mod.chat.ChatTransmitter;
import kr.syeyoung.dungeonsguide.mod.events.impl.KeyBindPressedEvent;
import kr.syeyoung.dungeonsguide.mod.features.FeatureParameter;
import kr.syeyoung.dungeonsguide.mod.features.SimpleFeature;
import kr.syeyoung.dungeonsguide.mod.features.listener.KeybindPressedListener;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/FeatureTogglePathfind.java
+
import net.minecraft.util.ChatComponentText;
import org.lwjgl.input.Keyboard;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/PathfindLineProperties.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/PathfindLineProperties.java
index 549143c0..0de05068 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/PathfindLineProperties.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/PathfindLineProperties.java
@@ -19,17 +19,7 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.secret;
import com.google.common.base.Supplier;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/secret/PathfindLineProperties.java
-import kr.syeyoung.dungeonsguide.config.guiconfig.ConfigPanelCreator;
-import kr.syeyoung.dungeonsguide.config.types.AColor;
-import kr.syeyoung.dungeonsguide.dungeon.actions.tree.ActionRoute;
-import kr.syeyoung.dungeonsguide.config.guiconfig.MFeatureEdit;
-import kr.syeyoung.dungeonsguide.config.guiconfig.MParameterEdit;
-import kr.syeyoung.dungeonsguide.config.guiconfig.RootConfigPanel;
-import kr.syeyoung.dungeonsguide.features.FeatureParameter;
-import kr.syeyoung.dungeonsguide.features.SimpleFeature;
-import kr.syeyoung.dungeonsguide.gui.MPanel;
-========
+
import kr.syeyoung.dungeonsguide.mod.config.guiconfig.ConfigPanelCreator;
import kr.syeyoung.dungeonsguide.mod.config.guiconfig.MFeatureEdit;
import kr.syeyoung.dungeonsguide.mod.config.guiconfig.MParameterEdit;
@@ -39,7 +29,7 @@ import kr.syeyoung.dungeonsguide.mod.dungeon.actions.tree.ActionRouteProperties;
import kr.syeyoung.dungeonsguide.mod.features.FeatureParameter;
import kr.syeyoung.dungeonsguide.mod.features.SimpleFeature;
import kr.syeyoung.dungeonsguide.mod.gui.MPanel;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/PathfindLineProperties.java
+
import java.util.LinkedHashMap;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/mechanicbrowser/FeatureMechanicBrowse.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/mechanicbrowser/FeatureMechanicBrowse.java
index d40edfb0..f2719ae4 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/mechanicbrowser/FeatureMechanicBrowse.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/mechanicbrowser/FeatureMechanicBrowse.java
@@ -18,23 +18,7 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.secret.mechanicbrowser;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/secret/mechanicbrowser/FeatureMechanicBrowse.java
-import kr.syeyoung.dungeonsguide.DungeonsGuide;
-import kr.syeyoung.dungeonsguide.SkyblockStatus;
-import kr.syeyoung.dungeonsguide.config.types.GUIRectangle;
-import kr.syeyoung.dungeonsguide.features.listener.GuiClickListener;
-import kr.syeyoung.dungeonsguide.features.listener.GuiPreRenderListener;
-import kr.syeyoung.dungeonsguide.features.listener.WorldRenderListener;
-import kr.syeyoung.dungeonsguide.gui.elements.MFloatSelectionButton;
-import kr.syeyoung.dungeonsguide.gui.elements.MPassiveLabelAndElement;
-import kr.syeyoung.dungeonsguide.config.guiconfig.location.GuiGuiLocationConfig;
-import kr.syeyoung.dungeonsguide.dungeon.DungeonContext;
-import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom;
-import kr.syeyoung.dungeonsguide.features.FeatureParameter;
-import kr.syeyoung.dungeonsguide.features.GuiFeature;
-import kr.syeyoung.dungeonsguide.gui.MPanel;
-import kr.syeyoung.dungeonsguide.roomprocessor.GeneralRoomProcessor;
-========
+
import kr.syeyoung.dungeonsguide.mod.DungeonsGuide;
import kr.syeyoung.dungeonsguide.mod.SkyblockStatus;
import kr.syeyoung.dungeonsguide.mod.config.guiconfig.location.GuiGuiLocationConfig;
@@ -43,14 +27,11 @@ import kr.syeyoung.dungeonsguide.mod.dungeon.DungeonContext;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomfinder.DungeonRoom;
import kr.syeyoung.dungeonsguide.mod.features.FeatureParameter;
import kr.syeyoung.dungeonsguide.mod.features.GuiFeature;
-import kr.syeyoung.dungeonsguide.mod.features.listener.GuiClickListener;
-import kr.syeyoung.dungeonsguide.mod.features.listener.GuiPreRenderListener;
-import kr.syeyoung.dungeonsguide.mod.features.listener.WorldRenderListener;
import kr.syeyoung.dungeonsguide.mod.gui.MPanel;
import kr.syeyoung.dungeonsguide.mod.gui.elements.MFloatSelectionButton;
import kr.syeyoung.dungeonsguide.mod.gui.elements.MPassiveLabelAndElement;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.GeneralRoomProcessor;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/mechanicbrowser/FeatureMechanicBrowse.java
+
import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.EntityPlayerSP;
import net.minecraft.client.gui.*;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/mechanicbrowser/MechanicBrowserElement.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/mechanicbrowser/MechanicBrowserElement.java
index 450a4674..e5a2282d 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/mechanicbrowser/MechanicBrowserElement.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/mechanicbrowser/MechanicBrowserElement.java
@@ -18,13 +18,9 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.secret.mechanicbrowser;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/secret/mechanicbrowser/MechanicBrowserElement.java
-import kr.syeyoung.dungeonsguide.gui.MPanel;
-import kr.syeyoung.dungeonsguide.utils.cursor.EnumCursor;
-========
+
import kr.syeyoung.dungeonsguide.mod.gui.MPanel;
-import kr.syeyoung.dungeonsguide.mod.utils.cursor.EnumCursor;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/mechanicbrowser/MechanicBrowserElement.java
+
import lombok.AllArgsConstructor;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.Gui;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/mechanicbrowser/PanelMechanicBrowser.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/mechanicbrowser/PanelMechanicBrowser.java
index 926f158d..9c93531a 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/mechanicbrowser/PanelMechanicBrowser.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/mechanicbrowser/PanelMechanicBrowser.java
@@ -18,23 +18,10 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.secret.mechanicbrowser;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/impl/secret/mechanicbrowser/PanelMechanicBrowser.java
-import kr.syeyoung.dungeonsguide.DungeonsGuide;
-import kr.syeyoung.dungeonsguide.dungeon.actions.tree.ActionRoute;
-import kr.syeyoung.dungeonsguide.dungeon.mechanics.*;
-import kr.syeyoung.dungeonsguide.gui.elements.MList;
-import kr.syeyoung.dungeonsguide.gui.elements.MPanelScaledGUI;
-import kr.syeyoung.dungeonsguide.gui.elements.MScrollablePanel;
-import kr.syeyoung.dungeonsguide.dungeon.DungeonContext;
-import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom;
-import kr.syeyoung.dungeonsguide.features.FeatureRegistry;
-import kr.syeyoung.dungeonsguide.gui.MPanel;
-import kr.syeyoung.dungeonsguide.roomprocessor.GeneralRoomProcessor;
-========
+
import kr.syeyoung.dungeonsguide.mod.DungeonsGuide;
import kr.syeyoung.dungeonsguide.mod.dungeon.DungeonContext;
import kr.syeyoung.dungeonsguide.mod.dungeon.actions.tree.ActionRoute;
-import kr.syeyoung.dungeonsguide.dungeon.mechanics.*;
import kr.syeyoung.dungeonsguide.dungeon.mechanics.dunegonmechanic.DungeonMechanic;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomfinder.DungeonRoom;
import kr.syeyoung.dungeonsguide.mod.features.FeatureRegistry;
@@ -43,7 +30,7 @@ import kr.syeyoung.dungeonsguide.mod.gui.elements.MList;
import kr.syeyoung.dungeonsguide.mod.gui.elements.MPanelScaledGUI;
import kr.syeyoung.dungeonsguide.mod.gui.elements.MScrollablePanel;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.GeneralRoomProcessor;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/mechanicbrowser/PanelMechanicBrowser.java
+
import lombok.Getter;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/listener/DiscordUserJoinRequestListener.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/listener/DiscordUserJoinRequestListener.java
index 4f31133b..add9e9ab 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/listener/DiscordUserJoinRequestListener.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/listener/DiscordUserJoinRequestListener.java
@@ -18,11 +18,9 @@
package kr.syeyoung.dungeonsguide.mod.features.listener;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/listener/DiscordUserJoinRequestListener.java
-import kr.syeyoung.dungeonsguide.events.DiscordUserJoinRequestEvent;
-========
+
import kr.syeyoung.dungeonsguide.mod.events.impl.DiscordUserJoinRequestEvent;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/listener/DiscordUserJoinRequestListener.java
+
public interface DiscordUserJoinRequestListener {
void onDiscordUserJoinRequest(DiscordUserJoinRequestEvent event);
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/text/TextHUDFeature.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/text/TextHUDFeature.java
index 753ed56a..a3ced073 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/text/TextHUDFeature.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/text/TextHUDFeature.java
@@ -20,20 +20,7 @@ package kr.syeyoung.dungeonsguide.mod.features.text;
import com.google.common.base.Supplier;
import com.google.gson.JsonObject;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/features/text/TextHUDFeature.java
-import kr.syeyoung.dungeonsguide.config.guiconfig.ConfigPanelCreator;
-import kr.syeyoung.dungeonsguide.gui.elements.MStringSelectionButton;
-import kr.syeyoung.dungeonsguide.config.guiconfig.MFeatureEdit;
-import kr.syeyoung.dungeonsguide.config.guiconfig.MParameterEdit;
-import kr.syeyoung.dungeonsguide.config.guiconfig.RootConfigPanel;
-import kr.syeyoung.dungeonsguide.config.guiconfig.location.GuiGuiLocationConfig;
-import kr.syeyoung.dungeonsguide.config.types.AColor;
-import kr.syeyoung.dungeonsguide.features.FeatureParameter;
-import kr.syeyoung.dungeonsguide.features.GuiFeature;
-import kr.syeyoung.dungeonsguide.gui.MPanel;
-import kr.syeyoung.dungeonsguide.gui.elements.MFloatSelectionButton;
-import kr.syeyoung.dungeonsguide.gui.elements.MPassiveLabelAndElement;
-========
+
import kr.syeyoung.dungeonsguide.mod.config.guiconfig.ConfigPanelCreator;
import kr.syeyoung.dungeonsguide.mod.config.guiconfig.MFeatureEdit;
import kr.syeyoung.dungeonsguide.mod.config.guiconfig.MParameterEdit;
@@ -46,7 +33,7 @@ import kr.syeyoung.dungeonsguide.mod.gui.MPanel;
import kr.syeyoung.dungeonsguide.mod.gui.elements.MFloatSelectionButton;
import kr.syeyoung.dungeonsguide.mod.gui.elements.MPassiveLabelAndElement;
import kr.syeyoung.dungeonsguide.mod.gui.elements.MStringSelectionButton;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/text/TextHUDFeature.java
+
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.renderer.GlStateManager;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/gui/elements/MColor.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/gui/elements/MColor.java
index d383f9d7..490ac7fd 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/gui/elements/MColor.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/gui/elements/MColor.java
@@ -18,11 +18,9 @@
package kr.syeyoung.dungeonsguide.mod.gui.elements;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/gui/elements/MColor.java
-import kr.syeyoung.dungeonsguide.gui.MPanel;
-========
+
import kr.syeyoung.dungeonsguide.mod.gui.MPanel;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/gui/elements/MColor.java
+
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/gui/elements/MLabelAndElement.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/gui/elements/MLabelAndElement.java
index d3a1cf5b..85ac2db4 100755
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/gui/elements/MLabelAndElement.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/gui/elements/MLabelAndElement.java
@@ -18,11 +18,9 @@
package kr.syeyoung.dungeonsguide.mod.gui.elements;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/gui/elements/MLabelAndElement.java
-import kr.syeyoung.dungeonsguide.gui.MPanel;
-========
+
import kr.syeyoung.dungeonsguide.mod.gui.MPanel;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/gui/elements/MLabelAndElement.java
+
import lombok.Getter;
import lombok.Setter;
import net.minecraft.client.gui.Gui;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/gui/elements/MNavigatingPane.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/gui/elements/MNavigatingPane.java
index 24087272..aaef805c 100755
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/gui/elements/MNavigatingPane.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/gui/elements/MNavigatingPane.java
@@ -19,11 +19,9 @@
package kr.syeyoung.dungeonsguide.mod.gui.elements;
import com.google.common.base.Function;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/gui/elements/MNavigatingPane.java
-import kr.syeyoung.dungeonsguide.gui.MPanel;
-========
+
import kr.syeyoung.dungeonsguide.mod.gui.MPanel;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/gui/elements/MNavigatingPane.java
+
import lombok.Getter;
import lombok.Setter;
import net.minecraft.client.Minecraft;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/gui/elements/MParameter.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/gui/elements/MParameter.java
index 444e5fec..855c216e 100755
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/gui/elements/MParameter.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/gui/elements/MParameter.java
@@ -18,19 +18,11 @@
package kr.syeyoung.dungeonsguide.mod.gui.elements;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/gui/elements/MParameter.java
-import kr.syeyoung.dungeonsguide.roomedit.EditingContext;
-import kr.syeyoung.dungeonsguide.gui.MPanel;
-import kr.syeyoung.dungeonsguide.roomedit.Parameter;
-import kr.syeyoung.dungeonsguide.roomedit.gui.GuiDungeonParameterEdit;
-import kr.syeyoung.dungeonsguide.roomedit.panes.DynamicEditor;
-========
+
import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.EditingContext;
import kr.syeyoung.dungeonsguide.mod.gui.MPanel;
-import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.Parameter;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.gui.GuiDungeonParameterEdit;
-import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.panes.DynamicEditor;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/gui/elements/MParameter.java
+
import lombok.Getter;
import lombok.Setter;
import net.minecraft.client.gui.Gui;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/gui/elements/MPortableColorEdit.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/gui/elements/MPortableColorEdit.java
index 6ebb4801..f322caa0 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/gui/elements/MPortableColorEdit.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/gui/elements/MPortableColorEdit.java
@@ -18,13 +18,9 @@
package kr.syeyoung.dungeonsguide.mod.gui.elements;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/gui/elements/MPortableColorEdit.java
-import kr.syeyoung.dungeonsguide.config.types.AColor;
-import kr.syeyoung.dungeonsguide.utils.RenderUtils;
-========
+
import kr.syeyoung.dungeonsguide.mod.config.types.AColor;
-import kr.syeyoung.dungeonsguide.mod.utils.RenderUtils;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/gui/elements/MPortableColorEdit.java
+
import lombok.Getter;
import net.minecraft.client.gui.Gui;
import net.minecraft.client.renderer.GlStateManager;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/gui/elements/MScrollBar.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/gui/elements/MScrollBar.java
index 4ff02e2d..5d844cca 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/gui/elements/MScrollBar.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/gui/elements/MScrollBar.java
@@ -18,15 +18,9 @@
package kr.syeyoung.dungeonsguide.mod.gui.elements;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/gui/elements/MScrollBar.java
-import kr.syeyoung.dungeonsguide.gui.MPanel;
-import kr.syeyoung.dungeonsguide.utils.RenderUtils;
-import kr.syeyoung.dungeonsguide.utils.cursor.EnumCursor;
-========
+
import kr.syeyoung.dungeonsguide.mod.gui.MPanel;
-import kr.syeyoung.dungeonsguide.mod.utils.RenderUtils;
-import kr.syeyoung.dungeonsguide.mod.utils.cursor.EnumCursor;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/gui/elements/MScrollBar.java
+
import lombok.Getter;
import lombok.Setter;
import net.minecraft.client.gui.Gui;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/gui/elements/MTabbedPane.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/gui/elements/MTabbedPane.java
index 80570032..d669d6b4 100755
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/gui/elements/MTabbedPane.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/gui/elements/MTabbedPane.java
@@ -18,11 +18,9 @@
package kr.syeyoung.dungeonsguide.mod.gui.elements;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/gui/elements/MTabbedPane.java
-import kr.syeyoung.dungeonsguide.gui.MPanel;
-========
+
import kr.syeyoung.dungeonsguide.mod.gui.MPanel;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/gui/elements/MTabbedPane.java
+
import lombok.Getter;
import lombok.Setter;
import net.minecraft.client.Minecraft;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/gui/elements/MTextField.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/gui/elements/MTextField.java
index bb817af2..763ad3e8 100755
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/gui/elements/MTextField.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/gui/elements/MTextField.java
@@ -18,13 +18,9 @@
package kr.syeyoung.dungeonsguide.mod.gui.elements;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/gui/elements/MTextField.java
-import kr.syeyoung.dungeonsguide.gui.MPanel;
-import kr.syeyoung.dungeonsguide.utils.cursor.EnumCursor;
-========
+
import kr.syeyoung.dungeonsguide.mod.gui.MPanel;
-import kr.syeyoung.dungeonsguide.mod.utils.cursor.EnumCursor;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/gui/elements/MTextField.java
+
import lombok.Getter;
import lombok.Setter;
import net.minecraft.client.Minecraft;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/gui/elements/MToggleButton.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/gui/elements/MToggleButton.java
index 2e3143c7..706eca8e 100755
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/gui/elements/MToggleButton.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/gui/elements/MToggleButton.java
@@ -18,13 +18,9 @@
package kr.syeyoung.dungeonsguide.mod.gui.elements;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/gui/elements/MToggleButton.java
-import kr.syeyoung.dungeonsguide.gui.MPanel;
-import kr.syeyoung.dungeonsguide.utils.cursor.EnumCursor;
-========
+
import kr.syeyoung.dungeonsguide.mod.gui.MPanel;
-import kr.syeyoung.dungeonsguide.mod.utils.cursor.EnumCursor;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/gui/elements/MToggleButton.java
+
import lombok.Getter;
import lombok.Setter;
import net.minecraft.client.Minecraft;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/gui/elements/MValue.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/gui/elements/MValue.java
index 82a15440..7f9a4bdf 100755
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/gui/elements/MValue.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/gui/elements/MValue.java
@@ -18,17 +18,12 @@
package kr.syeyoung.dungeonsguide.mod.gui.elements;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/gui/elements/MValue.java
-import kr.syeyoung.dungeonsguide.roomedit.EditingContext;
-import kr.syeyoung.dungeonsguide.gui.MPanel;
-import kr.syeyoung.dungeonsguide.roomedit.gui.GuiDungeonValueEdit;
-import kr.syeyoung.dungeonsguide.roomedit.valueedit.ValueEditOffsetPointSet;
-========
+
import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.EditingContext;
import kr.syeyoung.dungeonsguide.mod.gui.MPanel;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.gui.GuiDungeonValueEdit;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomedit.valueedit.ValueEditOffsetPointSet;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/gui/elements/MValue.java
+
import lombok.Getter;
import lombok.Setter;
import net.minecraft.client.gui.Gui;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/resources/DGTexturePack.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/resources/DGTexturePack.java
index 7b8c12d2..d23f2444 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/resources/DGTexturePack.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/resources/DGTexturePack.java
@@ -18,35 +18,35 @@
package kr.syeyoung.dungeonsguide.mod.resources;
-import kr.syeyoung.dungeonsguide.launcher.auth.ResourceManager;
import lombok.AllArgsConstructor;
+import net.minecraft.client.resources.AbstractResourcePack;
import net.minecraft.client.resources.IResourcePack;
import net.minecraft.client.resources.data.IMetadataSection;
import net.minecraft.client.resources.data.IMetadataSerializer;
import net.minecraft.util.ResourceLocation;
+import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
+import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.Collections;
import java.util.Set;
-@AllArgsConstructor
-public class DGTexturePack implements IResourcePack {
-
+public class DGTexturePack extends AbstractResourcePack {
+ public DGTexturePack() {
+ super(null);
+ }
@Override
- public InputStream getInputStream(ResourceLocation location) throws IOException {
- InputStream inputStream = this.getClass().getResourceAsStream("/assets/dg/"+location.getResourcePath());
- if (inputStream != null) return inputStream;
- return new ByteArrayInputStream(ResourceManager.getInstance().getResources().get("assets/dg/"+location.getResourcePath()));
+ protected InputStream getInputStreamByName(String name) {
+ return this.getClass().getResourceAsStream("/"+name);
}
@Override
- public boolean resourceExists(ResourceLocation location) {
- return ResourceManager.getInstance().getResources().containsKey("assets/dg/"+location.getResourcePath())
- || this.getClass().getResourceAsStream("/assets/dg/"+location.getResourcePath()) != null;
+ protected boolean hasResourceName(String name) {
+ return getInputStreamByName(name) != null;
}
@Override
@@ -55,16 +55,6 @@ public class DGTexturePack implements IResourcePack {
}
@Override
- public <T extends IMetadataSection> T getPackMetadata(IMetadataSerializer p_135058_1_, String p_135058_2_) throws IOException {
- return null;
- }
-
- @Override
- public BufferedImage getPackImage() throws IOException {
- return new BufferedImage(512,512, BufferedImage.TYPE_INT_RGB);
- }
-
- @Override
public String getPackName() {
return "Dungeons Guide Default Pack";
}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/stomp/StompInterface.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/stomp/StompInterface.java
index a7410218..14b6d0d7 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/stomp/StompInterface.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/stomp/StompInterface.java
@@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
-package kr.syeyoung.dungeonsguide.stomp;
+package kr.syeyoung.dungeonsguide.mod.stomp;
public interface StompInterface {
void send(StompPayload payload);
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/stomp/StompManager.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/stomp/StompManager.java
index 37e2792e..e7248484 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/stomp/StompManager.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/stomp/StompManager.java
@@ -16,7 +16,6 @@ import java.util.concurrent.TimeUnit;
public class StompManager {
Logger logger = LogManager.getLogger("StompManager");
public static final String STOMP_URL = "wss://dungeons.guide/ws";
- // private String stompURL = "ws://localhost/ws";
static StompManager instance;
public static StompManager getInstance() {
@@ -62,12 +61,11 @@ public class StompManager {
if (stompConnection != null) {
stompConnection.disconnect();
}
- stompConnection = new StompClient(new URI(StompManager.STOMP_URL), AuthManager.getInstance().getToken());
+ stompConnection = new StompClient(new URI(StompManager.STOMP_URL), AuthManager.getInstance().getWorkingTokenOrNull());
MinecraftForge.EVENT_BUS.post(new StompConnectedEvent(stompConnection));
} catch (Exception e) {
logger.error("Failed to connect to Stomp with message: {}", String.valueOf(Throwables.getRootCause(e)));
}
-
}, 5L, TimeUnit.SECONDS);
}
}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/utils/AhUtils.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/utils/AhUtils.java
index 20c6dec1..8f3d8714 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/utils/AhUtils.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/utils/AhUtils.java
@@ -67,17 +67,7 @@ public class AhUtils {
try {
Map<String, AuctionData> semi_auctions = new HashMap<String, AuctionData>();
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/utils/AhUtils.java
-// JsonElement object = DungeonsGuide.getDungeonsGuide().getAuthenticator().getJsonSecured("https://dungeons.guide/resource/keys");
-// for (JsonElement element : object.getAsJsonArray()) {
-// JsonObject object1 = element.getAsJsonObject();
-// AuctionData auctionData = new AuctionData(object1.get("id").getAsString());
-// auctionData.lowestBin = object1.get("lowestBin").getAsInt();
-// auctionData.sellPrice = object1.get("sellPrice").getAsInt();
-// auctionData.buyPrice = object1.get("buyPrice").getAsInt();
-// semi_auctions.put(auctionData.id, auctionData);
-// }
-========
+
JsonElement object = AuthUtil.getJsonSecured("https://dungeons.guide/resource/keys");
for (JsonElement element : object.getAsJsonArray()) {
JsonObject object1 = element.getAsJsonObject();
@@ -87,7 +77,7 @@ public class AhUtils {
auctionData.buyPrice = object1.get("buyPrice").getAsInt();
semi_auctions.put(auctionData.id, auctionData);
}
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/utils/AhUtils.java
+
auctions = semi_auctions;
} catch (Throwable e) {
e.printStackTrace();
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/utils/TimeScoreUtil.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/utils/TimeScoreUtil.java
index 6629dde7..1d231060 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/utils/TimeScoreUtil.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/utils/TimeScoreUtil.java
@@ -18,11 +18,9 @@
package kr.syeyoung.dungeonsguide.mod.utils;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/utils/TimeScoreUtil.java
-import kr.syeyoung.dungeonsguide.launcher.Main;
-========
+
import kr.syeyoung.dungeonsguide.Main;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/utils/TimeScoreUtil.java
+
import org.apache.commons.io.IOUtils;
import java.io.IOException;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/utils/cursor/GLCursors.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/utils/cursor/GLCursors.java
index 841e4d44..6ae13fc9 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/utils/cursor/GLCursors.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/utils/cursor/GLCursors.java
@@ -18,13 +18,7 @@
package kr.syeyoung.dungeonsguide.mod.utils.cursor;
-<<<<<<<< HEAD:mod/src/main/java/kr/syeyoung/dungeonsguide/utils/cursor/GLCursors.java
-import com.sun.jna.Pointer;
-import kr.syeyoung.dungeonsguide.utils.RenderUtils;
-import net.minecraft.client.Minecraft;
-import net.minecraft.util.MathHelper;
-import net.minecraft.util.ResourceLocation;
-========
+
import com.google.common.base.Throwables;
import com.sun.jna.Pointer;
import kr.syeyoung.dungeonsguide.mod.utils.RenderUtils;
@@ -33,7 +27,7 @@ import net.minecraft.util.MathHelper;
import net.minecraft.util.ResourceLocation;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
->>>>>>>> origin/breaking-changes-just-working-im-not-putting-all-of-these-into-3.0-but-for-the-sake-of-beta-release-this-thing-exists:mod/src/main/java/kr/syeyoung/dungeonsguide/mod/utils/cursor/GLCursors.java
+
import org.lwjgl.BufferUtils;
import org.lwjgl.LWJGLException;
import org.lwjgl.LWJGLUtil;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/resources/DGTexturePack.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/resources/DGTexturePack.java
deleted file mode 100644
index 3fecfa35..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/resources/DGTexturePack.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.resources;
-
-import kr.syeyoung.dungeonsguide.launcher.authentication.Authenticator;
-import kr.syeyoung.dungeonsguide.launcher.loader.IDGLoader;
-import lombok.AllArgsConstructor;
-import net.minecraft.client.resources.IResourcePack;
-import net.minecraft.client.resources.data.IMetadataSection;
-import net.minecraft.client.resources.data.IMetadataSerializer;
-import net.minecraft.util.ResourceLocation;
-
-import java.awt.image.BufferedImage;
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Collections;
-import java.util.Set;
-
-@AllArgsConstructor
-public class DGTexturePack implements IResourcePack {
-
- @Override
- public InputStream getInputStream(ResourceLocation location) {
- return this.getClass().getResourceAsStream("/assets/dg/"+location.getResourcePath());
- }
-
- @Override
- public boolean resourceExists(ResourceLocation location) {
- return this.getClass().getResource("/assets/dg/"+location.getResourcePath()) != null;
- }
-
- @Override
- public Set<String> getResourceDomains() {
- return Collections.singleton("dungeonsguide");
- }
-
- @Override
- public <T extends IMetadataSection> T getPackMetadata(IMetadataSerializer p_135058_1_, String p_135058_2_) throws IOException {
- return null;
- }
-
- @Override
- public BufferedImage getPackImage() throws IOException {
- return new BufferedImage(512,512, BufferedImage.TYPE_INT_RGB);
- }
-
- @Override
- public String getPackName() {
- return "Dungeons Guide Default Pack";
- }
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/Parameter.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/Parameter.java
deleted file mode 100755
index 5ca4ce69..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/Parameter.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.roomedit;
-
-import lombok.Data;
-
-@Data
-public class Parameter {
- private String name;
- private Object previousData;
- private Object newData;
-
- public Parameter(String name, Object previousData, Object newData) {
- this.name = name; this.previousData = previousData; this.newData = newData;
- }
-
- private Runnable onSetNewData;
-
- public void setNewData(Object newData) {
- this.newData = newData;
- if (onSetNewData != null) onSetNewData.run();
- }
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/panes/DynamicEditor.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/panes/DynamicEditor.java
deleted file mode 100755
index 8d3ba5e9..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/panes/DynamicEditor.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.roomedit.panes;
-
-import kr.syeyoung.dungeonsguide.gui.elements.MParameter;
-
-import java.util.List;
-
-public interface DynamicEditor {
- void delete(MParameter parameter);
-
- List<String> allowedClass();
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEdit.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEdit.java
deleted file mode 100755
index 980ae947..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEdit.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.roomedit.valueedit;
-
-import kr.syeyoung.dungeonsguide.roomedit.Parameter;
-
-public interface ValueEdit<T extends Object> {
- void setParameter(Parameter parameter);
-
- void renderWorld(float partialTicks);
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEditCreator.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEditCreator.java
deleted file mode 100755
index 41579f0c..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEditCreator.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.roomedit.valueedit;
-
-import kr.syeyoung.dungeonsguide.roomedit.Parameter;
-
-public interface ValueEditCreator<T extends ValueEdit> {
- T createValueEdit(Parameter parameter);
-
- Object createDefaultValue(Parameter parameter);
-
- Object cloneObj(Object object);
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEditNull.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEditNull.java
deleted file mode 100755
index 475a942a..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEditNull.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.roomedit.valueedit;
-
-import kr.syeyoung.dungeonsguide.roomedit.Parameter;
-
-public class ValueEditNull implements ValueEditCreator {
- @Override
- public ValueEdit createValueEdit(Parameter parameter) {
- return null;
- }
-
- @Override
- public Cloneable createDefaultValue(Parameter parameter) {
- return null;
- }
-
- @Override
- public Object cloneObj(Object object) {
- return null;
- }
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/RoomProcessorGenerator.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/RoomProcessorGenerator.java
deleted file mode 100755
index 16fc5f23..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/RoomProcessorGenerator.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.roomprocessor;
-
-import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom;
-
-public interface RoomProcessorGenerator<T extends RoomProcessor> {
- T createNew(DungeonRoom dungeonRoom);
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/bombdefuse/chambers/BombDefuseChamberGenerator.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/bombdefuse/chambers/BombDefuseChamberGenerator.java
deleted file mode 100644
index 21cebf0c..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/bombdefuse/chambers/BombDefuseChamberGenerator.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.roomprocessor.bombdefuse.chambers;
-
-import kr.syeyoung.dungeonsguide.roomprocessor.bombdefuse.RoomProcessorBombDefuseSolver;
-
-public interface BombDefuseChamberGenerator {
- boolean match(BDChamber left, BDChamber right);
-
- String getName();
-
- ChamberProcessor createLeft(BDChamber left, RoomProcessorBombDefuseSolver solver);
- ChamberProcessor createRight(BDChamber right, RoomProcessorBombDefuseSolver solver);
-} \ No newline at end of file
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/bombdefuse/chambers/ChamberProcessor.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/bombdefuse/chambers/ChamberProcessor.java
deleted file mode 100644
index 95c33a8d..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/bombdefuse/chambers/ChamberProcessor.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.roomprocessor.bombdefuse.chambers;
-
-import kr.syeyoung.dungeonsguide.roomprocessor.RoomProcessor;
-import net.minecraft.nbt.NBTTagCompound;
-
-public interface ChamberProcessor extends RoomProcessor {
- void onDataRecieve(NBTTagCompound compound);
- String getName();
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/bombdefuse/chambers/DummyDefuseChamberProcessor.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/bombdefuse/chambers/DummyDefuseChamberProcessor.java
deleted file mode 100644
index 1736f094..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/bombdefuse/chambers/DummyDefuseChamberProcessor.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.roomprocessor.bombdefuse.chambers;
-
-import kr.syeyoung.dungeonsguide.roomprocessor.bombdefuse.RoomProcessorBombDefuseSolver;
-
-public class DummyDefuseChamberProcessor extends GeneralDefuseChamberProcessor {
- public DummyDefuseChamberProcessor(RoomProcessorBombDefuseSolver solver, BDChamber chamber) {
- super(solver, chamber);
- }
-
- @Override
- public String getName() {
- return "dummy";
- }
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/bossfight/BossfightProcessor.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/bossfight/BossfightProcessor.java
deleted file mode 100644
index 657ab0d0..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/bossfight/BossfightProcessor.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.roomprocessor.bossfight;
-
-import kr.syeyoung.dungeonsguide.roomprocessor.RoomProcessor;
-
-import java.util.List;
-
-public interface BossfightProcessor extends RoomProcessor {
- List<String> getPhases();
- String getCurrentPhase();
- List<String> getNextPhases();
-
- List<HealthData> getHealths();
-
- String getBossName();
-} \ No newline at end of file
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/bossfight/HealthData.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/bossfight/HealthData.java
deleted file mode 100644
index 268a4d28..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/bossfight/HealthData.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.roomprocessor.bossfight;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-@Data
-@NoArgsConstructor
-@AllArgsConstructor
-public class HealthData {
- private String name;
- private int health;
- private int maxHealth;
- private boolean attackable;
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/waterpuzzle/LeverState.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/waterpuzzle/LeverState.java
deleted file mode 100755
index a2acd9c4..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/waterpuzzle/LeverState.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.roomprocessor.waterpuzzle;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-
-@Data
-@AllArgsConstructor
-public class LeverState {
- private String blockId;
- private boolean requiredState;
-
- public LeverState invert() {
- return new LeverState(blockId, !requiredState);
- }
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/waterpuzzle/LeverStateContradict.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/waterpuzzle/LeverStateContradict.java
deleted file mode 100755
index 71165847..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/waterpuzzle/LeverStateContradict.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.roomprocessor.waterpuzzle;
-
-public class LeverStateContradict extends LeverState {
- public LeverStateContradict() {
- super("contradict", true);
- }
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/waterpuzzle/WaterNode.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/waterpuzzle/WaterNode.java
deleted file mode 100755
index 78f3f1ca..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/waterpuzzle/WaterNode.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.roomprocessor.waterpuzzle;
-
-import net.minecraft.util.BlockPos;
-import net.minecraft.world.World;
-
-public interface WaterNode {
- boolean canWaterGoThrough();
-
- // condition for water go
- LeverState getCondition();
-
- boolean isWaterFilled(World w);
-
- BlockPos getBlockPos();
-
- int getX();
- int getY();
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/stomp/CloseListener.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/stomp/CloseListener.java
deleted file mode 100644
index ba156b3b..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/stomp/CloseListener.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.stomp;
-
-public interface CloseListener {
- void onClose(int code, String reason, boolean remote);
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/stomp/StompClientStatus.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/stomp/StompClientStatus.java
deleted file mode 100644
index 9839c61b..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/stomp/StompClientStatus.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.stomp;
-
-public enum StompClientStatus {
- CONNECTING, CONNECTED, ERROR, DISCONNECTING, DISCONNECTED
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/stomp/StompHeader.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/stomp/StompHeader.java
deleted file mode 100644
index 4f00e499..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/stomp/StompHeader.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.stomp;
-
-public enum StompHeader {
- SEND, SUBSCRIBE, UNSUBSCRIBE, BEGIN, COMMIT, ABORT, ACK, NACK, DISCONNECT, CONNECT, STOMP, CONNECTED, MESSAGE, RECEIPT, ERROR
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/stomp/StompMessageHandler.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/stomp/StompMessageHandler.java
deleted file mode 100644
index 4610c686..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/stomp/StompMessageHandler.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.stomp;
-
-public interface StompMessageHandler {
- void handle(StompInterface stompInterface, StompPayload stompPayload);
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/stomp/StompSubscription.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/stomp/StompSubscription.java
deleted file mode 100644
index b6ce928e..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/stomp/StompSubscription.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.stomp;
-
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Data;
-import lombok.Getter;
-
-@Data
-@Builder
-public class StompSubscription {
- private int id;
- private String destination;
- private StompMessageHandler stompMessageHandler;
- private AckMode ackMode;
-
- @AllArgsConstructor
- public enum AckMode {
- AUTO("auto"), CLIENT("client"), CLIENT_INDIVIDUAL("client-individual");
-
- @Getter
- private final String value;
- }
-}
diff --git a/mod/src/main/resources/assets/dg/cursors/IBeamCursor.cur b/mod/src/main/resources/assets/dungeonsguide/cursors/IBeamCursor.cur
index 19f162df..19f162df 100755
--- a/mod/src/main/resources/assets/dg/cursors/IBeamCursor.cur
+++ b/mod/src/main/resources/assets/dungeonsguide/cursors/IBeamCursor.cur
Binary files differ
diff --git a/mod/src/main/resources/assets/dg/cursors/arrowCursor.cur b/mod/src/main/resources/assets/dungeonsguide/cursors/arrowCursor.cur
index 7d58eec1..7d58eec1 100755
--- a/mod/src/main/resources/assets/dg/cursors/arrowCursor.cur
+++ b/mod/src/main/resources/assets/dungeonsguide/cursors/arrowCursor.cur
Binary files differ
diff --git a/mod/src/main/resources/assets/dg/cursors/closedHandCursor.cur b/mod/src/main/resources/assets/dungeonsguide/cursors/closedHandCursor.cur
index 26d6ba9f..26d6ba9f 100644
--- a/mod/src/main/resources/assets/dg/cursors/closedHandCursor.cur
+++ b/mod/src/main/resources/assets/dungeonsguide/cursors/closedHandCursor.cur
Binary files differ
diff --git a/mod/src/main/resources/assets/dg/cursors/crosshairCursor.cur b/mod/src/main/resources/assets/dungeonsguide/cursors/crosshairCursor.cur
index 7d4589af..7d4589af 100755
--- a/mod/src/main/resources/assets/dg/cursors/crosshairCursor.cur
+++ b/mod/src/main/resources/assets/dungeonsguide/cursors/crosshairCursor.cur
Binary files differ
diff --git a/mod/src/main/resources/assets/dg/cursors/openHandCursor.cur b/mod/src/main/resources/assets/dungeonsguide/cursors/openHandCursor.cur
index 26d6ba9f..26d6ba9f 100644
--- a/mod/src/main/resources/assets/dg/cursors/openHandCursor.cur
+++ b/mod/src/main/resources/assets/dungeonsguide/cursors/openHandCursor.cur
Binary files differ
diff --git a/mod/src/main/resources/assets/dg/cursors/operationNotAllowedCursor.cur b/mod/src/main/resources/assets/dungeonsguide/cursors/operationNotAllowedCursor.cur
index 1bb62ed5..1bb62ed5 100755
--- a/mod/src/main/resources/assets/dg/cursors/operationNotAllowedCursor.cur
+++ b/mod/src/main/resources/assets/dungeonsguide/cursors/operationNotAllowedCursor.cur
Binary files differ
diff --git a/mod/src/main/resources/assets/dg/cursors/pointingHandCursor.cur b/mod/src/main/resources/assets/dungeonsguide/cursors/pointingHandCursor.cur
index 77313176..77313176 100755
--- a/mod/src/main/resources/assets/dg/cursors/pointingHandCursor.cur
+++ b/mod/src/main/resources/assets/dungeonsguide/cursors/pointingHandCursor.cur
Binary files differ
diff --git a/mod/src/main/resources/assets/dg/cursors/resizeDownCursor.cur b/mod/src/main/resources/assets/dungeonsguide/cursors/resizeDownCursor.cur
index bae2c237..bae2c237 100755
--- a/mod/src/main/resources/assets/dg/cursors/resizeDownCursor.cur
+++ b/mod/src/main/resources/assets/dungeonsguide/cursors/resizeDownCursor.cur
Binary files differ
diff --git a/mod/src/main/resources/assets/dg/cursors/resizeLeftCursor.cur b/mod/src/main/resources/assets/dungeonsguide/cursors/resizeLeftCursor.cur
index b904bc5c..b904bc5c 100755
--- a/mod/src/main/resources/assets/dg/cursors/resizeLeftCursor.cur
+++ b/mod/src/main/resources/assets/dungeonsguide/cursors/resizeLeftCursor.cur
Binary files differ
diff --git a/mod/src/main/resources/assets/dg/cursors/resizeLeftRightCursor.cur b/mod/src/main/resources/assets/dungeonsguide/cursors/resizeLeftRightCursor.cur
index b904bc5c..b904bc5c 100755
--- a/mod/src/main/resources/assets/dg/cursors/resizeLeftRightCursor.cur
+++ b/mod/src/main/resources/assets/dungeonsguide/cursors/resizeLeftRightCursor.cur
Binary files differ
diff --git a/mod/src/main/resources/assets/dg/cursors/resizeNE.cur b/mod/src/main/resources/assets/dungeonsguide/cursors/resizeNE.cur
index ccaac220..ccaac220 100755
--- a/mod/src/main/resources/assets/dg/cursors/resizeNE.cur
+++ b/mod/src/main/resources/assets/dungeonsguide/cursors/resizeNE.cur
Binary files differ
diff --git a/mod/src/main/resources/assets/dg/cursors/resizeNESW.cur b/mod/src/main/resources/assets/dungeonsguide/cursors/resizeNESW.cur
index ccaac220..ccaac220 100755
--- a/mod/src/main/resources/assets/dg/cursors/resizeNESW.cur
+++ b/mod/src/main/resources/assets/dungeonsguide/cursors/resizeNESW.cur
Binary files differ
diff --git a/mod/src/main/resources/assets/dg/cursors/resizeNW.cur b/mod/src/main/resources/assets/dungeonsguide/cursors/resizeNW.cur
index f67aa78d..f67aa78d 100755
--- a/mod/src/main/resources/assets/dg/cursors/resizeNW.cur
+++ b/mod/src/main/resources/assets/dungeonsguide/cursors/resizeNW.cur
Binary files differ
diff --git a/mod/src/main/resources/assets/dg/cursors/resizeNWSE.cur b/mod/src/main/resources/assets/dungeonsguide/cursors/resizeNWSE.cur
index f67aa78d..f67aa78d 100755
--- a/mod/src/main/resources/assets/dg/cursors/resizeNWSE.cur
+++ b/mod/src/main/resources/assets/dungeonsguide/cursors/resizeNWSE.cur
Binary files differ
diff --git a/mod/src/main/resources/assets/dg/cursors/resizeRightCursor.cur b/mod/src/main/resources/assets/dungeonsguide/cursors/resizeRightCursor.cur
index b904bc5c..b904bc5c 100755
--- a/mod/src/main/resources/assets/dg/cursors/resizeRightCursor.cur
+++ b/mod/src/main/resources/assets/dungeonsguide/cursors/resizeRightCursor.cur
Binary files differ
diff --git a/mod/src/main/resources/assets/dg/cursors/resizeSE.cur b/mod/src/main/resources/assets/dungeonsguide/cursors/resizeSE.cur
index f67aa78d..f67aa78d 100755
--- a/mod/src/main/resources/assets/dg/cursors/resizeSE.cur
+++ b/mod/src/main/resources/assets/dungeonsguide/cursors/resizeSE.cur
Binary files differ
diff --git a/mod/src/main/resources/assets/dg/cursors/resizeSW.cur b/mod/src/main/resources/assets/dungeonsguide/cursors/resizeSW.cur
index ccaac220..ccaac220 100755
--- a/mod/src/main/resources/assets/dg/cursors/resizeSW.cur
+++ b/mod/src/main/resources/assets/dungeonsguide/cursors/resizeSW.cur
Binary files differ
diff --git a/mod/src/main/resources/assets/dg/cursors/resizeUpCursor.cur b/mod/src/main/resources/assets/dungeonsguide/cursors/resizeUpCursor.cur
index bae2c237..bae2c237 100755
--- a/mod/src/main/resources/assets/dg/cursors/resizeUpCursor.cur
+++ b/mod/src/main/resources/assets/dungeonsguide/cursors/resizeUpCursor.cur
Binary files differ
diff --git a/mod/src/main/resources/assets/dg/cursors/resizeUpDownCursor.cur b/mod/src/main/resources/assets/dungeonsguide/cursors/resizeUpDownCursor.cur
index bae2c237..bae2c237 100755
--- a/mod/src/main/resources/assets/dg/cursors/resizeUpDownCursor.cur
+++ b/mod/src/main/resources/assets/dungeonsguide/cursors/resizeUpDownCursor.cur
Binary files differ
diff --git a/mod/src/main/resources/assets/dg/models/penguin.mtl b/mod/src/main/resources/assets/dungeonsguide/models/penguin.mtl
index 1fc14a2f..1fc14a2f 100644
--- a/mod/src/main/resources/assets/dg/models/penguin.mtl
+++ b/mod/src/main/resources/assets/dungeonsguide/models/penguin.mtl
diff --git a/mod/src/main/resources/assets/dg/models/penguin.obj b/mod/src/main/resources/assets/dungeonsguide/models/penguin.obj
index 29fe4680..29fe4680 100644
--- a/mod/src/main/resources/assets/dg/models/penguin.obj
+++ b/mod/src/main/resources/assets/dungeonsguide/models/penguin.obj
diff --git a/mod/src/main/resources/assets/dg/sounds.json b/mod/src/main/resources/assets/dungeonsguide/sounds.json
index 5c28a55b..5c28a55b 100644
--- a/mod/src/main/resources/assets/dg/sounds.json
+++ b/mod/src/main/resources/assets/dungeonsguide/sounds.json
diff --git a/mod/src/main/resources/assets/dg/sounds/readysetgo.ogg b/mod/src/main/resources/assets/dungeonsguide/sounds/readysetgo.ogg
index 12470b8e..12470b8e 100644
--- a/mod/src/main/resources/assets/dg/sounds/readysetgo.ogg
+++ b/mod/src/main/resources/assets/dungeonsguide/sounds/readysetgo.ogg
Binary files differ
diff --git a/mod/src/main/resources/assets/dg/textures/dglogox128.png b/mod/src/main/resources/assets/dungeonsguide/textures/dglogox128.png
index 3558d9da..3558d9da 100644
--- a/mod/src/main/resources/assets/dg/textures/dglogox128.png
+++ b/mod/src/main/resources/assets/dungeonsguide/textures/dglogox128.png
Binary files differ
diff --git a/mod/src/main/resources/assets/dg/textures/dglogox32.png b/mod/src/main/resources/assets/dungeonsguide/textures/dglogox32.png
index 62962d7e..62962d7e 100644
--- a/mod/src/main/resources/assets/dg/textures/dglogox32.png
+++ b/mod/src/main/resources/assets/dungeonsguide/textures/dglogox32.png
Binary files differ
diff --git a/mod/src/main/resources/assets/dg/textures/penguin.png b/mod/src/main/resources/assets/dungeonsguide/textures/penguin.png
index 4b39154c..4b39154c 100644
--- a/mod/src/main/resources/assets/dg/textures/penguin.png
+++ b/mod/src/main/resources/assets/dungeonsguide/textures/penguin.png
Binary files differ
diff --git a/mod/src/main/resources/pack.mcmeta b/mod/src/main/resources/pack.mcmeta
new file mode 100644
index 00000000..246c3f42
--- /dev/null
+++ b/mod/src/main/resources/pack.mcmeta
@@ -0,0 +1,6 @@
+{
+ "pack": {
+ "description": "Dungeons Guide Resources",
+ "pack_format": 1
+ }
+} \ No newline at end of file