All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.mineteria.ignite.api.Blackboard Maven / Gradle / Ivy

Go to download

Bootstraps the Minecraft Server with ModLauncher to apply Mixins and Access Transformers from mods.

The newest version!
/*
 * This file is part of Ignite, licensed under the MIT License (MIT).
 *
 * Copyright (c) Mineteria 
 * Copyright (c) contributors
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 */
package com.mineteria.ignite.api;

import com.google.common.reflect.TypeToken;
import com.mineteria.ignite.api.util.BlackboardMap;
import org.checkerframework.checker.nullness.qual.NonNull;
import org.checkerframework.checker.nullness.qual.Nullable;

import java.nio.file.Path;
import java.util.List;

@SuppressWarnings("UnstableApiUsage")
public final class Blackboard {
  private static final BlackboardMap BLACKBOARD = new BlackboardMap();

  public static final BlackboardMap.@NonNull Key> LAUNCH_ARGUMENTS = key("ignite.launch.arguments", new TypeToken>() {});
  public static final BlackboardMap.@NonNull Key         LAUNCH_JAR       = key("ignite.launch.jar", TypeToken.of(Path.class));
  public static final BlackboardMap.@NonNull Key       LAUNCH_TARGET    = key("ignite.launch.target", TypeToken.of(String.class));

  public static final BlackboardMap.@NonNull Key MOD_DIRECTORY_PATH       = key("ignite.mod.directory", TypeToken.of(Path.class));
  public static final BlackboardMap.@NonNull Key CONFIG_DIRECTORY_PATH    = key("ignite.config.directory", TypeToken.of(Path.class));

  public static  @Nullable T getProperty(final BlackboardMap.@NonNull Key key) {
    return Blackboard.BLACKBOARD.get(key).orElse(null);
  }

  public static  @NonNull T getProperty(final BlackboardMap.@NonNull Key key, final @NonNull T defaultValue) {
    return Blackboard.BLACKBOARD.get(key).orElse(defaultValue);
  }

  public static  @Nullable T setProperty(final BlackboardMap.@NonNull Key key, final @Nullable T value) {
    return Blackboard.BLACKBOARD.computeIfAbsent(key, k -> value);
  }

  private static  BlackboardMap.@NonNull Key key(final @NonNull String key, final @NonNull TypeToken type) {
    return BlackboardMap.Key.getOrCreate(Blackboard.BLACKBOARD, key, type.getRawType());
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy