Example usage for net.minecraftforge.client.settings KeyModifier valueFromString

List of usage examples for net.minecraftforge.client.settings KeyModifier valueFromString

Introduction

In this page you can find the example usage for net.minecraftforge.client.settings KeyModifier valueFromString.

Prototype

public static KeyModifier valueFromString(String stringValue) 

Source Link

Usage

From source file:org.blockartistry.Presets.handler.MinecraftConfigHandler.java

License:MIT License

@SubscribeEvent
public static void onConfigLoad(@Nonnull final PresetEvent.Load event) {
    final PresetData data = event.getModData(MINECRAFT);
    if (data != null) {
        final GameSettings settings = Minecraft.getMinecraft().gameSettings;

        boolean refreshChat = false;
        boolean refreshMipmaps = false;
        boolean refreshRenderDistance = false;
        boolean refreshRenderers = false;
        boolean refreshUnicodeFlag = false;
        boolean refreshResources = false;
        boolean refreshVsync = false;

        for (final Entry<String, String> e : data.getEntries()) {
            if (e.getKey().startsWith(SOUND_PREFIX)) {

                final String catName = e.getKey().replace(SOUND_PREFIX, "");
                final SoundCategory sc = SoundCategory.getByName(catName);
                if (sc != null) {
                    settings.setSoundLevel(sc, (float) Double.parseDouble(e.getValue()));
                } else {
                    Presets.log().warn("Unknown sound category: %s", catName);
                }/*from  w w w  . j av a 2s  . c om*/

            } else if (e.getKey().startsWith(KEYBIND_PREFIX)) {

                boolean found = false;
                final String keyName = e.getKey().replace(KEYBIND_PREFIX, "");
                for (final KeyBinding binding : settings.keyBindings) {
                    if (keyName.equals(binding.getKeyDescription())) {
                        final String[] parts = StringUtils.split(e.getValue(), ':');
                        final int keyCode = Integer.parseInt(parts[0]);
                        final KeyModifier modifier = parts.length == 1 ? KeyModifier.NONE
                                : KeyModifier.valueFromString(parts[1]);
                        binding.setKeyModifierAndCode(modifier, keyCode);
                        found = true;
                        break;
                    }
                }

                if (!found)
                    Presets.log().warn("Unknown keybinding found: %s", keyName);

            } else {
                final String theName = e.getKey();
                final Options option = getOptionByName(theName);
                if (option != null) {
                    switch (option) {
                    case INVERT_MOUSE:
                        settings.invertMouse = data.getBoolean(theName, settings.invertMouse);
                        break;
                    case SENSITIVITY:
                        settings.mouseSensitivity = (float) data.getDouble(theName, settings.mouseSensitivity);
                        break;
                    case FOV:
                        settings.fovSetting = (float) data.getDouble(theName, settings.fovSetting);
                        break;
                    case GAMMA:
                        settings.gammaSetting = (float) data.getDouble(theName, settings.gammaSetting);
                        break;
                    case SATURATION:
                        settings.saturation = (float) data.getDouble(theName, settings.saturation);
                        break;
                    case RENDER_DISTANCE:
                        final int rd = data.getInt(theName, settings.renderDistanceChunks);
                        if (settings.renderDistanceChunks != rd) {
                            settings.renderDistanceChunks = rd;
                            refreshRenderDistance = true;
                        }
                        break;
                    case VIEW_BOBBING:
                        settings.viewBobbing = data.getBoolean(theName, settings.viewBobbing);
                        break;
                    case ANAGLYPH:
                        final boolean anal = data.getBoolean(theName, settings.anaglyph);
                        if (settings.anaglyph != anal) {
                            settings.anaglyph = anal;
                            refreshResources = true;
                        }
                        break;
                    case FRAMERATE_LIMIT:
                        settings.limitFramerate = data.getInt(theName, settings.limitFramerate);
                        break;
                    case FBO_ENABLE:
                        settings.fboEnable = data.getBoolean(theName, settings.fboEnable);
                        break;
                    case CHAT_COLOR:
                        settings.chatColours = data.getBoolean(theName, settings.chatColours);
                        refreshChat = true;
                        break;
                    case CHAT_LINKS:
                        settings.chatLinks = data.getBoolean(theName, settings.chatLinks);
                        refreshChat = true;
                        break;
                    case CHAT_OPACITY:
                        settings.chatOpacity = (float) data.getDouble(theName, settings.chatOpacity);
                        refreshChat = true;
                        break;
                    case CHAT_LINKS_PROMPT:
                        settings.chatLinksPrompt = data.getBoolean(theName, settings.chatLinksPrompt);
                        refreshChat = true;
                        break;
                    case SNOOPER_ENABLED:
                        settings.snooperEnabled = data.getBoolean(theName, settings.snooperEnabled);
                        break;
                    case USE_FULLSCREEN:
                        settings.fullScreen = data.getBoolean(theName, settings.fullScreen);
                        break;
                    case ENABLE_VSYNC:
                        final boolean vsync = data.getBoolean(theName, settings.enableVsync);
                        if (settings.enableVsync != vsync) {
                            settings.enableVsync = vsync;
                            refreshVsync = true;
                        }
                        break;
                    case USE_VBO:
                        final boolean vbo = data.getBoolean(theName, settings.useVbo);
                        if (settings.useVbo != vbo) {
                            settings.useVbo = vbo;
                            refreshRenderers = true;
                        }
                        break;
                    case TOUCHSCREEN:
                        settings.touchscreen = data.getBoolean(theName, settings.touchscreen);
                        break;
                    case CHAT_SCALE:
                        settings.chatScale = (float) data.getDouble(theName, settings.chatScale);
                        refreshChat = true;
                        break;
                    case CHAT_WIDTH:
                        settings.chatWidth = (float) data.getDouble(theName, settings.chatWidth);
                        refreshChat = true;
                        break;
                    case CHAT_HEIGHT_FOCUSED:
                        settings.chatHeightFocused = (float) data.getDouble(theName,
                                settings.chatHeightFocused);
                        refreshChat = true;
                        break;
                    case CHAT_HEIGHT_UNFOCUSED:
                        settings.chatHeightUnfocused = (float) data.getDouble(theName,
                                settings.chatHeightUnfocused);
                        refreshChat = true;
                        break;
                    case MIPMAP_LEVELS:
                        final int mips = data.getInt(theName, settings.mipmapLevels);
                        if (settings.mipmapLevels != mips) {
                            settings.mipmapLevels = mips;
                            refreshMipmaps = true;
                        }
                        break;
                    case FORCE_UNICODE_FONT:
                        final boolean force = data.getBoolean(theName, settings.forceUnicodeFont);
                        if (settings.forceUnicodeFont != force) {
                            settings.forceUnicodeFont = force;
                            refreshUnicodeFlag = true;
                        }
                        break;
                    case REDUCED_DEBUG_INFO:
                        settings.reducedDebugInfo = data.getBoolean(theName, settings.reducedDebugInfo);
                        break;
                    case ENTITY_SHADOWS:
                        settings.entityShadows = data.getBoolean(theName, settings.entityShadows);
                        break;
                    case ENABLE_WEAK_ATTACKS:
                        settings.enableWeakAttacks = data.getBoolean(theName, settings.enableWeakAttacks);
                        break;
                    case SHOW_SUBTITLES:
                        settings.showSubtitles = data.getBoolean(theName, settings.showSubtitles);
                        break;
                    case REALMS_NOTIFICATIONS:
                        settings.realmsNotifications = data.getBoolean(theName, settings.realmsNotifications);
                        break;
                    case AUTO_JUMP:
                        settings.autoJump = data.getBoolean(theName, settings.autoJump);
                        break;
                    case RENDER_CLOUDS:
                        settings.clouds = data.getInt(theName, settings.clouds);
                        break;
                    case GRAPHICS:
                        final boolean fancy = data.getBoolean(theName, settings.fancyGraphics);
                        if (settings.fancyGraphics != fancy) {
                            settings.fancyGraphics = fancy;
                            refreshRenderers = true;
                        }
                        break;
                    case AMBIENT_OCCLUSION:
                        final int occlusion = data.getInt(theName, settings.ambientOcclusion);
                        if (settings.ambientOcclusion != occlusion) {
                            settings.ambientOcclusion = occlusion;
                            refreshRenderers = true;
                        }
                        break;
                    case GUI_SCALE:
                        settings.guiScale = data.getInt(theName, settings.guiScale);
                        break;
                    case PARTICLES:
                        settings.particleSetting = data.getInt(theName, settings.particleSetting);
                        break;
                    case CHAT_VISIBILITY:
                        settings.chatVisibility = EnumChatVisibility
                                .getEnumChatVisibility(data.getInt(theName, settings.chatVisibility.ordinal()));
                        break;
                    case MAIN_HAND:
                        settings.mainHand = EnumHandSide
                                .valueOf(data.getString(theName, settings.mainHand.name()));
                        break;
                    case ATTACK_INDICATOR:
                        settings.attackIndicator = data.getInt(theName, settings.attackIndicator);
                        break;
                    default:
                    }
                } else {
                    Presets.log().warn("Unknown option value: %s", theName);
                }

            }
        }
        settings.saveOptions();

        // Tickle the various modules of Minecraft to get the update
        // settings since we bypassed the get/set of GameSettings.
        final Minecraft mc = Minecraft.getMinecraft();
        if (refreshChat)
            mc.ingameGUI.getChatGUI().refreshChat();

        if (refreshMipmaps) {
            mc.getTextureMapBlocks().setMipmapLevels(settings.mipmapLevels);
            mc.getTextureManager().bindTexture(TextureMap.LOCATION_BLOCKS_TEXTURE);
            mc.getTextureMapBlocks().setBlurMipmapDirect(false, settings.mipmapLevels > 0);
            refreshResources = true;
        }

        if (refreshRenderDistance)
            mc.renderGlobal.setDisplayListEntitiesDirty();

        if (refreshRenderers)
            mc.renderGlobal.loadRenderers();

        if (refreshUnicodeFlag)
            mc.fontRendererObj.setUnicodeFlag(
                    mc.getLanguageManager().isCurrentLocaleUnicode() || settings.forceUnicodeFont);

        if (refreshResources)
            mc.refreshResources();

        if (refreshVsync)
            Display.setVSyncEnabled(settings.enableVsync);

        if (settings.fullScreen != mc.isFullScreen())
            mc.toggleFullscreen();

    }

}