Skip to content

Commit

Permalink
fix and update
Browse files Browse the repository at this point in the history
Co-Authored-By: Raycoms <[email protected]>
  • Loading branch information
Nightenom and Raycoms committed Aug 5, 2024
1 parent 533164f commit 498c933
Show file tree
Hide file tree
Showing 8 changed files with 118 additions and 47 deletions.
21 changes: 13 additions & 8 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,14 @@ modBaseName=blockui

javaVersion=21
useJavaToolChains=true

#The currently running forge.
forgeVersion=21.0.75-beta
forgeVersion=21.0.157
#The minimal needed forge, as marked in metadata and curseforge.
forgeMinVersion=21.0.75-beta
forgeMinVersion=21.0.157

fml_range=[4,)
forge_range=[21.0.75-beta,)
forge_range=[21.0.157,)
minecraft_range=[1.21, 1.22)

#The version for forge (dependency)
Expand All @@ -32,9 +33,13 @@ projectUrl=https://github.com/ldtteam/BlockUI
curseId=522992
usesCurse=true

usesCrowdin=false
usesParchment=true
parchmentMinecraftVersion=1.21
parchmentMappingsVersion=2024.07.28

useDefaultTestSystem=true
runtimeSourceSets=main
projectHasApi=false
primaryJarClassifier=
usesSonarQube=false
usesResourceDataExpansionFromProjectKeys=false

usesCrowdInTranslationManagement=false
usesCrowdInBuildingWithFilteredBranches=false
usesCrowdInUploadWithFilteredBranches=false
Binary file modified gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
Expand Down
7 changes: 5 additions & 2 deletions gradlew
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
# SPDX-License-Identifier: Apache-2.0
#

##############################################################################
#
Expand Down Expand Up @@ -55,7 +57,7 @@
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
Expand Down Expand Up @@ -84,7 +86,8 @@ done
# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s
' "$PWD" ) || exit

# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum
Expand Down
2 changes: 2 additions & 0 deletions gradlew.bat
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
@rem SPDX-License-Identifier: Apache-2.0
@rem

@if "%DEBUG%"=="" @echo off
@rem ##########################################################################
Expand Down
70 changes: 64 additions & 6 deletions src/main/java/com/ldtteam/common/config/AbstractConfiguration.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,15 @@
import net.neoforged.neoforge.common.ModConfigSpec.EnumValue;
import net.neoforged.neoforge.common.ModConfigSpec.IntValue;
import net.neoforged.neoforge.common.ModConfigSpec.LongValue;
import net.neoforged.neoforge.common.ModConfigSpec.RestartType;
import net.neoforged.neoforge.common.util.LogicalSidedProvider;
import org.jetbrains.annotations.Nullable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.function.Predicate;
import java.util.function.Supplier;
import java.util.stream.Collectors;

public abstract class AbstractConfiguration
Expand All @@ -29,7 +31,7 @@ public abstract class AbstractConfiguration
private final Builder builder;
private final String modId;

private boolean nextDefineWorldRestart = false;
private RestartType nextRestartType = RestartType.NONE;

protected AbstractConfiguration(final Builder builder, final String modId)
{
Expand All @@ -39,7 +41,7 @@ protected AbstractConfiguration(final Builder builder, final String modId)

protected void createCategory(final String key)
{
if (nextDefineWorldRestart)
if (nextRestartType != RestartType.NONE)
{
throw new IllegalStateException("Categories cannot have worldRestart flag!");
}
Expand Down Expand Up @@ -72,11 +74,13 @@ private String commentTKey(final String key)
*/
private Builder buildBase(final String key, @Nullable final String defaultDesc)
{
if (nextDefineWorldRestart)
switch (nextRestartType)
{
nextDefineWorldRestart = false;
builder.worldRestart();
case WORLD -> builder.worldRestart();
case GAME -> builder.gameRestart();
default -> {}
}
nextRestartType = RestartType.NONE;

String comment = translate(commentTKey(key));
if (defaultDesc != null && !defaultDesc.isBlank())
Expand All @@ -94,7 +98,17 @@ private static String translate(final String key, final Object... args)

protected AbstractConfiguration requiresWorldRestart()
{
nextDefineWorldRestart = true;
return requires(RestartType.WORLD);
}

protected AbstractConfiguration requiresGameRestart()
{
return requires(RestartType.GAME);
}

protected AbstractConfiguration requires(final RestartType restartType)
{
nextRestartType = restartType;
return this;
}

Expand Down Expand Up @@ -141,20 +155,64 @@ protected DoubleValue defineDouble(final String key, final double defaultValue,
.defineInRange(key, defaultValue, min, max);
}

/**
* @deprecated by neo, potentially forRemoval?
* @see #defineList(String, Supplier, Predicate, Object...)
*/
@Deprecated(since = "1.21")
protected <T> ConfigValue<List<? extends T>> defineList(final String key,
final List<? extends T> defaultValue,
final Predicate<Object> elementValidator)
{
return buildBase(key, null).defineList(key, defaultValue, elementValidator);
}

protected <T> ConfigValue<List<? extends T>> defineList(final String key,
final Supplier<T> newUiInstance,
final Predicate<Object> elementValidator,
final List<? extends T> defaultValue)
{
return buildBase(key, null).defineList(key, defaultValue, newUiInstance, elementValidator);
}

@SuppressWarnings("unchecked")
protected <T> ConfigValue<List<? extends T>> defineList(final String key,
final Supplier<T> newUiInstance,
final Predicate<Object> elementValidator,
final T... values)
{
return buildBase(key, null).defineList(key, () -> List.of(values), newUiInstance, elementValidator);
}

/**
* @deprecated by neo, potentially forRemoval?
* @see #defineListAllowEmpty(String, Supplier, Predicate, Object...)
*/
@Deprecated(since = "1.21")
protected <T> ConfigValue<List<? extends T>> defineListAllowEmpty(final String key,
final List<? extends T> defaultValue,
final Predicate<Object> elementValidator)
{
return buildBase(key, null).defineListAllowEmpty(key, defaultValue, elementValidator);
}

protected <T> ConfigValue<List<? extends T>> defineListAllowEmpty(final String key,
final Supplier<T> newUiInstance,
final Predicate<Object> elementValidator,
final List<? extends T> defaultValue)
{
return buildBase(key, null).defineListAllowEmpty(key, defaultValue, newUiInstance, elementValidator);
}

@SuppressWarnings("unchecked")
protected <T> ConfigValue<List<? extends T>> defineListAllowEmpty(final String key,
final Supplier<T> newUiInstance,
final Predicate<Object> elementValidator,
final T... values)
{
return buildBase(key, null).defineListAllowEmpty(key, () -> List.of(values), newUiInstance, elementValidator);
}

protected <V extends Enum<V>> EnumValue<V> defineEnum(final String key, final V defaultValue)
{
return buildBase(key,
Expand Down
39 changes: 9 additions & 30 deletions src/main/java/com/ldtteam/common/config/Configurations.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import com.ldtteam.common.config.AbstractConfiguration.ConfigWatcher;
import net.neoforged.bus.api.IEventBus;
import net.neoforged.fml.ModContainer;
import net.neoforged.fml.config.ConfigTracker;
import net.neoforged.fml.config.ModConfig;
import net.neoforged.fml.config.ModConfig.Type;
import net.neoforged.fml.event.config.ModConfigEvent;
Expand All @@ -13,9 +14,7 @@
import net.neoforged.neoforge.common.ModConfigSpec.ValueSpec;
import org.apache.commons.lang3.tuple.Pair;
import java.util.ArrayList;
import java.util.IdentityHashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.function.Function;

Expand Down Expand Up @@ -44,7 +43,6 @@ public class Configurations<CLIENT extends AbstractConfiguration,
private final ModConfig common;
private final COMMON commonConfig;

private final ModConfig[] activeModConfigs;
private final AbstractConfiguration[] activeConfigs;

/**
Expand All @@ -58,22 +56,20 @@ public Configurations(final ModContainer modContainer,
final Function<Builder, SERVER> serverFactory,
final Function<Builder, COMMON> commonFactory)
{
final List<ModConfig> modConfigs = new ArrayList<>();
final List<AbstractConfiguration> configs = new ArrayList<>();

final Pair<CLIENT, ModConfig> cli = createConfig(clientFactory, Type.CLIENT, modContainer, modConfigs, configs);
final Pair<CLIENT, ModConfig> cli = createConfig(clientFactory, Type.CLIENT, modContainer, configs);
client = cli.getRight();
clientConfig = cli.getLeft();

final Pair<SERVER, ModConfig> ser = createConfig(serverFactory, Type.SERVER, modContainer, modConfigs, configs);
final Pair<SERVER, ModConfig> ser = createConfig(serverFactory, Type.SERVER, modContainer, configs);
server = ser.getRight();
serverConfig = ser.getLeft();

final Pair<COMMON, ModConfig> com = createConfig(commonFactory, Type.COMMON, modContainer, modConfigs, configs);
final Pair<COMMON, ModConfig> com = createConfig(commonFactory, Type.COMMON, modContainer, configs);
common = com.getRight();
commonConfig = com.getLeft();

activeModConfigs = modConfigs.toArray(ModConfig[]::new);
activeConfigs = configs.toArray(AbstractConfiguration[]::new);

// register events for watchers
Expand All @@ -84,7 +80,6 @@ public Configurations(final ModContainer modContainer,
private <T extends AbstractConfiguration> Pair<T, ModConfig> createConfig(final Function<Builder, T> factory,
final Type type,
final ModContainer modContainer,
final List<ModConfig> modConfigs,
final List<AbstractConfiguration> configs)
{
// dont create client classes on server to avoid class loading issues
Expand All @@ -94,11 +89,11 @@ private <T extends AbstractConfiguration> Pair<T, ModConfig> createConfig(final
}

final Pair<T, ModConfigSpec> builtConfig = new ModConfigSpec.Builder().configure(factory);
final ModConfig modConfig = new ModConfig(type, builtConfig.getRight(), modContainer);
// modContainer.registerConfig(type, builtConfig.getRight());
// TODO: replace in the future with the return of registerConfig above
final ModConfig modConfig = ConfigTracker.INSTANCE.registerConfig(type, builtConfig.getRight(), modContainer);
final T config = builtConfig.getLeft();

modContainer.addConfig(modConfig);
modConfigs.add(modConfig);
configs.add(config);

return Pair.of(config, modConfig);
Expand Down Expand Up @@ -186,29 +181,13 @@ public void onConfigValueEdit(final ConfigValue<?> configValue)
}
}

private final Map<ConfigValue<?>, Optional<ValueSpec>> valueSpecCache = new IdentityHashMap<>();

/**
* @param value config value from this mod
* @return value spec, crashes in dev if not found
*/
@Deprecated(forRemoval = true, since = "1.21")
public Optional<ValueSpec> getSpecFromValue(final ConfigValue<?> value)
{
return valueSpecCache.computeIfAbsent(value, key -> {
for (final ModConfig cfg : activeModConfigs)
{
if (cfg.getSpec().get(value.getPath()) instanceof final ValueSpec valueSpec)
{
return Optional.of(valueSpec);
}
}

if (!FMLEnvironment.production)
{
throw new RuntimeException("Cannot find backing ValueSpec for: " + value.getPath());
}

return Optional.empty();
});
return Optional.of(value.getSpec());
}
}
24 changes: 24 additions & 0 deletions src/main/java/com/ldtteam/common/fakelevel/FakeLevel.java
Original file line number Diff line number Diff line change
Expand Up @@ -486,6 +486,18 @@ public PotionBrewing potionBrewing()
return realLevel().potionBrewing();
}

@Override
public float getDayTimeFraction()
{
return realLevel().getDayTimeFraction();
}

@Override
public float getDayTimePerTick()
{
return realLevel().getDayTimePerTick();
}

// ========================================
// ======= NOOP UNSAFE NULL METHODS =======
// ========================================
Expand Down Expand Up @@ -806,6 +818,18 @@ public void invalidateCapabilities(ChunkPos pos)
// Noop
}

@Override
public void setDayTimeFraction(final float v)
{
// Noop
}

@Override
public void setDayTimePerTick(final float v)
{
// Noop
}

// ========================================
// ======== SUPER IS FINE METHODS =========
// ========================================
Expand Down

0 comments on commit 498c933

Please sign in to comment.