🔖 LambdaControls v1.1.0: Chording update.

This commit is contained in:
LambdAurora
2020-02-01 00:44:13 +01:00
parent f56eb9e0ad
commit 47b0cfdad4
63 changed files with 3726 additions and 1234 deletions

View File

@@ -6,7 +6,7 @@ archivesBaseName = project.archives_base_name + "-core"
dependencies {
api "org.jetbrains:annotations:17.0.0"
api "org.aperlambda:lambdajcommon:1.7.2"
api "org.aperlambda:lambdajcommon:1.8.0"
api "com.electronwill.night-config:core:3.5.3"
api "com.electronwill.night-config:toml:3.5.3"
}

View File

@@ -47,13 +47,13 @@ public enum ControlsMode implements Nameable
* @return The translated key of this controls mode.
* @since 1.1.0
*/
public String get_translation_key()
public String getTranslationKey()
{
return "lambdacontrols.controls_mode." + this.get_name();
return "lambdacontrols.controls_mode." + this.getName();
}
@Override
public @NotNull String get_name()
public @NotNull String getName()
{
return this.name().toLowerCase();
}
@@ -64,8 +64,8 @@ public enum ControlsMode implements Nameable
* @param id The identifier of the controls mode.
* @return The controls mode if found, else empty.
*/
public static Optional<ControlsMode> by_id(@NotNull String id)
public static Optional<ControlsMode> byId(@NotNull String id)
{
return Arrays.stream(values()).filter(mode -> mode.get_name().equalsIgnoreCase(id)).findFirst();
return Arrays.stream(values()).filter(mode -> mode.getName().equalsIgnoreCase(id)).findFirst();
}
}

View File

@@ -9,6 +9,8 @@
package me.lambdaurora.lambdacontrols;
import org.aperlambda.lambdacommon.Identifier;
/**
* Represents the constants used by LambdaControls.
*
@@ -18,5 +20,8 @@ package me.lambdaurora.lambdacontrols;
*/
public class LambdaControlsConstants
{
public static final String NAMESPACE = "lambdacontrols";
public static final String NAMESPACE = "lambdacontrols";
public static final Identifier CONTROLS_MODE_CHANNEL = new Identifier(NAMESPACE, "controls_mode");
public static final Identifier FEATURE_CHANNEL = new Identifier(NAMESPACE, "feature");
public static final Identifier HELLO_CHANNEL = new Identifier(NAMESPACE, "hello");
}

View File

@@ -0,0 +1,159 @@
/*
* Copyright © 2020 LambdAurora <aurora42lambda@gmail.com>
*
* This file is part of LambdaControls.
*
* Licensed under the MIT license. For more information,
* see the LICENSE file.
*/
package me.lambdaurora.lambdacontrols;
import org.aperlambda.lambdacommon.utils.Nameable;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
/**
* Represents a feature.
*
* @author LambdAurora
* @version 1.1.0
* @since 1.1.0
*/
public class LambdaControlsFeature implements Nameable
{
private static final List<LambdaControlsFeature> FEATURES = new ArrayList<>();
public static final LambdaControlsFeature FRONT_BLOCK_PLACING = new LambdaControlsFeature("front_block_placing", true, false);
private final String key;
private final boolean defaultAllowed;
private boolean allowed;
private final boolean defaultEnabled;
private boolean enabled;
public LambdaControlsFeature(@NotNull String key, boolean allowed, boolean enabled)
{
Objects.requireNonNull(key, "Feature key cannot be null.");
this.key = key;
this.setAllowed(this.defaultAllowed = allowed);
this.setEnabled(this.defaultEnabled = enabled);
}
public LambdaControlsFeature(@NotNull String key)
{
this(key, false, false);
}
/**
* Allows the feature.
*/
public void allow()
{
this.setAllowed(true);
}
/**
* Returns whether this feature is allowed.
*
* @return True if this feature is allowed, else false.
*/
public boolean isAllowed()
{
return this.allowed;
}
/**
* Sets whether this feature is allowed.
*
* @param allowed True if this feature is allowed, else false.
*/
public void setAllowed(boolean allowed)
{
this.allowed = allowed;
}
/**
* Resets allowed state to default.
*/
public void resetAllowed()
{
this.setAllowed(this.defaultAllowed);
}
/**
* Returns whether this feature is enabled.
*
* @return True if this feature is enabled, else false.
*/
public boolean isEnabled()
{
return this.enabled;
}
/**
* Returns whether this feature is enabled.
*
* @param enabled True if this feature is enabled, else false.
*/
public void setEnabled(boolean enabled)
{
this.enabled = enabled;
}
/**
* Returns whether this feature is available or not.
*
* @return True if this feature is available, else false.
* @see #isAllowed()
* @see #isEnabled()
*/
public boolean isAvailable()
{
return this.isAllowed() && this.isEnabled();
}
/**
* Resets the feature to its default values.
*/
public void reset()
{
this.resetAllowed();
this.setEnabled(this.defaultEnabled);
}
@Override
public @NotNull String getName()
{
return this.key;
}
public static @NotNull Optional<LambdaControlsFeature> fromName(@NotNull String key)
{
Objects.requireNonNull(key, "Cannot find features with a null name.");
return FEATURES.parallelStream().filter(feature -> feature.getName().equals(key)).findFirst();
}
/**
* Resets all features to their default values.
*/
public static void resetAll()
{
FEATURES.parallelStream().forEach(LambdaControlsFeature::reset);
}
/**
* Resets all features to allow state.
*/
public static void resetAllAllowed()
{
FEATURES.parallelStream().forEach(LambdaControlsFeature::resetAllowed);
}
static {
FEATURES.add(FRONT_BLOCK_PLACING);
}
}