9
0
mirror of https://github.com/Xiao-MoMi/craft-engine.git synced 2026-01-06 15:52:03 +00:00

累了家人们

This commit is contained in:
XiaoMoMi
2025-04-29 04:31:16 +08:00
parent 26493b0ac8
commit 9396b10557
41 changed files with 80 additions and 121 deletions

View File

@@ -64,7 +64,7 @@ command.upload.failure.not_supported: "<red>Current hosting method '<arg:0>' doe
command.upload.on_progress: "<white>Started uploading progress. Check the console for more information.</white>"
command.send_resource_pack.success.single: "<white>Sent resource pack to <arg:0>.</white>"
command.send_resource_pack.success.multiple: "<white>Send resource packs to <arg:0> players.</white>"
warning.config.pack.duplicated_files: "</red>Duplicated files Found. Please resolve them through config.yml 'resource-pack.duplicated-files-handler' section.</red>"
warning.config.type.int: "<yellow>Issue found in file <arg:0> - Failed to load '<arg:1>': Cannot cast '<arg:2>' to integer type for option '<arg:3>'.</yellow>"
warning.config.type.float: "<yellow>Issue found in file <arg:0> - Failed to load '<arg:1>': Cannot cast '<arg:2>' to float type for option '<arg:3>'.</yellow>"
warning.config.type.double: "<yellow>Issue found in file <arg:0> - Failed to load '<arg:1>': Cannot cast '<arg:2>' to double type for option '<arg:3>'.</yellow>"
@@ -101,6 +101,7 @@ warning.config.recipe.smithing_transform.post_processor.keep_component.missing_t
warning.config.i18n.unknown_locale: "<yellow>Issue found in file <arg:0> - Unknown locale '<arg:1>'.</yellow>"
warning.config.template.duplicate: "<yellow>Issue found in file <arg:0> - Duplicated template '<arg:1>'.</yellow>"
warning.config.template.argument.self_increase_int.invalid_range: "<yellow>Issue found in file <arg:0> - The template '<arg:1>' is using a 'from' '<arg:2>' larger than 'to' '<arg:3>' in 'self_increase_int' argument.</yellow>"
warning.config.template.argument.list.invalid_type: "<yellow>Issue found in file <arg:0> - The template '<arg:1>' is using a 'list' argument which expects a 'List' as argument while the input argument is a(n) '<arg:2>'.</yellow>"
warning.config.vanilla_loot.missing_type: "<yellow>Issue found in file <arg:0> - 'type' not set for vanilla loot '<arg:1>'.</yellow>"
warning.config.vanilla_loot.block.invalid_target: "<yellow>Issue found in file <arg:0> - Invalid block target '<arg:2>' in vanilla loot '<arg:1>'.</yellow>"
warning.config.sound.duplicate: "<yellow>Issue found in file <arg:0> - Duplicated sound '<arg:1>'.</yellow>"

View File

@@ -344,15 +344,24 @@ public class BukkitBlockManager extends AbstractBlockManager {
Map<String, Property<?>> properties;
Map<String, Integer> appearances;
Map<String, VariantState> variants;
Map<String, Object> stateSection = MiscUtils.castToMap(section.get("state"), true);
if (stateSection != null) {
Object stateObj = section.get("state");
if (stateObj == null) {
stateObj = section.get("states");
}
if (stateObj == null) {
throw new LocalizedResourceConfigException("warning.config.block.missing_state", path, id);
}
Map<String, Object> stateSection = MiscUtils.castToMap(stateObj, true);
// single state
if (!stateSection.containsKey("properties")) {
properties = Map.of();
int internalId = ResourceConfigUtils.getAsInt(stateSection.getOrDefault("id", -1), "id");
if (internalId < 0) {
throw new LocalizedResourceConfigException("warning.config.block.state.missing_real_id", path, id);
}
Pair<Key, Integer> pair = parseAppearanceSection(pack, path, id, stateSection);
Pair<Key, Integer> pair = parseAppearanceSection(id, stateSection);
if (pair == null) return;
appearances = Map.of("default", pair.right());
@@ -366,19 +375,14 @@ public class BukkitBlockManager extends AbstractBlockManager {
}
variants = Map.of("", new VariantState("default", settings, internalBlockRegistryId));
} else {
// states
Map<String, Object> statesSection = MiscUtils.castToMap(section.get("states"), true);
if (statesSection == null) {
throw new LocalizedResourceConfigException("warning.config.block.missing_state", path, id);
}
// properties
Map<String, Object> propertySection = MiscUtils.castToMap(statesSection.get("properties"), true);
Map<String, Object> propertySection = MiscUtils.castToMap(stateSection.get("properties"), true);
if (propertySection == null) {
throw new LocalizedResourceConfigException("warning.config.block.state.missing_properties", path, id);
}
properties = parseProperties(propertySection);
// appearance
Map<String, Object> appearancesSection = MiscUtils.castToMap(statesSection.get("appearances"), true);
Map<String, Object> appearancesSection = MiscUtils.castToMap(stateSection.get("appearances"), true);
if (appearancesSection == null) {
throw new LocalizedResourceConfigException("warning.config.block.state.missing_appearances", path, id);
}
@@ -386,14 +390,14 @@ public class BukkitBlockManager extends AbstractBlockManager {
Map<String, Key> tempTypeMap = new HashMap<>();
for (Map.Entry<String, Object> appearanceEntry : appearancesSection.entrySet()) {
if (appearanceEntry.getValue() instanceof Map<?, ?> appearanceSection) {
Pair<Key, Integer> pair = parseAppearanceSection(pack, path, id, MiscUtils.castToMap(appearanceSection, false));
Pair<Key, Integer> pair = parseAppearanceSection(id, MiscUtils.castToMap(appearanceSection, false));
if (pair == null) return;
appearances.put(appearanceEntry.getKey(), pair.right());
tempTypeMap.put(appearanceEntry.getKey(), pair.left());
}
}
// variants
Map<String, Object> variantsSection = MiscUtils.castToMap(statesSection.get("variants"), true);
Map<String, Object> variantsSection = MiscUtils.castToMap(stateSection.get("variants"), true);
if (variantsSection == null) {
throw new LocalizedResourceConfigException("warning.config.block.state.missing_variants", path, id);
}
@@ -425,7 +429,6 @@ public class BukkitBlockManager extends AbstractBlockManager {
}
Map<String, Object> behaviors = MiscUtils.castToMap(section.getOrDefault("behavior", Map.of()), false);
CustomBlock block = BukkitCustomBlock.builder(id)
.appearances(appearances)
.variantMapper(variants)
@@ -448,6 +451,7 @@ public class BukkitBlockManager extends AbstractBlockManager {
}
byId.put(id, block);
// generate mod assets
if (Config.generateModAssets()) {
for (ImmutableBlockState state : block.variantProvider().states()) {
@@ -468,32 +472,20 @@ public class BukkitBlockManager extends AbstractBlockManager {
}
@Nullable
private Pair<Key, Integer> parseAppearanceSection(Pack pack, Path path, Key id, Map<String, Object> section) {
private Pair<Key, Integer> parseAppearanceSection(Key id, Map<String, Object> section) {
// require state non null
Object vanillaStateString = section.get("state");
if (vanillaStateString == null) {
throw new LocalizedResourceConfigException("warning.config.block.state.missing_state", path, id);
throw new LocalizedResourceConfigException("warning.config.block.state.missing_state");
}
// get its registry id
int vanillaStateRegistryId;
VanillaStateParseResult parseResult = parseVanillaStateRegistryId(vanillaStateString.toString());
if (parseResult.success()) {
vanillaStateRegistryId = parseResult.result;
} else {
String[] args = new String[parseResult.args.length + 2];
args[0] = path.toString();
args[1] = id.toString();
System.arraycopy(parseResult.args, 0, args, 2, parseResult.args.length);
TranslationManager.instance().log(parseResult.reason(), args);
return null;
}
int vanillaStateRegistryId = parseVanillaStateRegistryId(vanillaStateString.toString());
// check conflict
Key ifAny = this.tempRegistryIdConflictMap.get(vanillaStateRegistryId);
if (ifAny != null && !ifAny.equals(id)) {
TranslationManager.instance().log("warning.config.block.state.conflict", path.toString(), id.toString(), BlockStateUtils.fromBlockData(BlockStateUtils.idToBlockState(vanillaStateRegistryId)).getAsString(), ifAny.toString());
return null;
throw new LocalizedResourceConfigException("warning.config.block.state.conflict", BlockStateUtils.fromBlockData(BlockStateUtils.idToBlockState(vanillaStateRegistryId)).getAsString(), ifAny.toString());
}
// require models not to be null
@@ -502,16 +494,16 @@ public class BukkitBlockManager extends AbstractBlockManager {
models = section.get("model");
}
if (models == null) {
throw new LocalizedResourceConfigException("warning.config.block.state.missing_model", path, id);
throw new LocalizedResourceConfigException("warning.config.block.state.missing_model");
}
List<JsonObject> variants = new ArrayList<>();
if (models instanceof Map<?, ?> singleModelSection) {
loadVariantModel(pack, path, id, variants, MiscUtils.castToMap(singleModelSection, false));
loadVariantModel(variants, MiscUtils.castToMap(singleModelSection, false));
} else if (models instanceof List<?> modelList) {
for (Object model : modelList) {
if (model instanceof Map<?,?> singleModelMap) {
loadVariantModel(pack, path, id, variants, MiscUtils.castToMap(singleModelMap, false));
loadVariantModel(variants, MiscUtils.castToMap(singleModelMap, false));
}
}
}
@@ -536,7 +528,7 @@ public class BukkitBlockManager extends AbstractBlockManager {
return Pair.of(block, vanillaStateRegistryId);
}
private void loadVariantModel(Pack pack, Path path, Key id, List<JsonObject> variants, Map<String, Object> singleModelMap) {
private void loadVariantModel(List<JsonObject> variants, Map<String, Object> singleModelMap) {
JsonObject json = new JsonObject();
String modelPath = (String) singleModelMap.get("path");
if (modelPath == null) {
@@ -557,50 +549,47 @@ public class BukkitBlockManager extends AbstractBlockManager {
variants.add(json);
}
private VanillaStateParseResult parseVanillaStateRegistryId(String blockState) {
private int parseVanillaStateRegistryId(String blockState) {
String[] split = blockState.split(":", 3);
if (split.length >= 4) {
return VanillaStateParseResult.failure("warning.config.block.state.invalid_vanilla", new String[]{blockState});
throw new LocalizedResourceConfigException("warning.config.block.state.invalid_vanilla", blockState);
}
int registryId;
String stateOrId = split[split.length - 1];
boolean isId = !stateOrId.contains("[") && !stateOrId.contains("]");
if (isId) {
if (split.length == 1) return VanillaStateParseResult.failure("warning.config.block.state.invalid_vanilla", new String[]{blockState});
if (split.length == 1) {
throw new LocalizedResourceConfigException("warning.config.block.state.invalid_vanilla", blockState);
}
Key block = split.length == 2 ? Key.of(split[0]) : Key.of(split[0], split[1]);
try {
int id = split.length == 2 ? Integer.parseInt(split[1]) : Integer.parseInt(split[2]);
if (id < 0) return VanillaStateParseResult.failure("warning.config.block.state.invalid_vanilla", new String[]{blockState});
if (id < 0) {
throw new LocalizedResourceConfigException("warning.config.block.state.invalid_vanilla", blockState);
}
List<Integer> arranger = this.blockAppearanceArranger.get(block);
if (arranger == null) return VanillaStateParseResult.failure("warning.config.block.state.unavailable_vanilla", new String[]{blockState});
if (id >= arranger.size()) return VanillaStateParseResult.failure("warning.config.block.state.invalid_vanilla_id", new String[]{blockState, String.valueOf(arranger.size() - 1)});
if (arranger == null) {
throw new LocalizedResourceConfigException("warning.config.block.state.unavailable_vanilla", blockState);
}
if (id >= arranger.size()) {
throw new LocalizedResourceConfigException("warning.config.block.state.invalid_vanilla_id", blockState, String.valueOf(arranger.size() - 1));
}
registryId = arranger.get(id);
} catch (NumberFormatException e) {
return VanillaStateParseResult.failure("warning.config.block.state.invalid_vanilla", new String[]{blockState});
throw new LocalizedResourceConfigException("warning.config.block.state.invalid_vanilla", e, blockState);
}
} else {
try {
BlockData blockData = Bukkit.createBlockData(blockState);
registryId = BlockStateUtils.blockDataToId(blockData);
if (!this.blockAppearanceMapper.containsKey(registryId)) {
return VanillaStateParseResult.failure("warning.config.block.state.unavailable_vanilla", new String[]{blockState});
throw new LocalizedResourceConfigException("warning.config.block.state.unavailable_vanilla", blockState);
}
} catch (IllegalArgumentException e) {
return VanillaStateParseResult.failure("warning.config.block.state.invalid_vanilla", new String[]{blockState});
throw new LocalizedResourceConfigException("warning.config.block.state.invalid_vanilla", e, blockState);
}
}
return VanillaStateParseResult.success(registryId);
}
public record VanillaStateParseResult(boolean success, int result, String reason, String[] args) {
public static VanillaStateParseResult success(int result) {
return new VanillaStateParseResult(true, result, null, null);
}
public static VanillaStateParseResult failure(String reason, String[] args) {
return new VanillaStateParseResult(false, -1, reason, args);
}
return registryId;
}
private void loadMappingsAndAdditionalBlocks() {

View File

@@ -14,7 +14,10 @@ import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.item.context.BlockPlaceContext;
import net.momirealms.craftengine.core.plugin.CraftEngine;
import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException;
import net.momirealms.craftengine.core.util.*;
import net.momirealms.craftengine.core.util.Direction;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
import net.momirealms.craftengine.core.util.VersionHelper;
import net.momirealms.craftengine.shared.block.BlockBehavior;
import org.bukkit.block.BlockState;
import org.bukkit.event.block.BlockFormEvent;

View File

@@ -17,7 +17,6 @@ import net.momirealms.craftengine.core.loot.number.NumberProvider;
import net.momirealms.craftengine.core.loot.number.NumberProviders;
import net.momirealms.craftengine.core.loot.parameter.LootParameters;
import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException;
import net.momirealms.craftengine.core.util.MiscUtils;
import net.momirealms.craftengine.core.util.RandomUtils;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
import net.momirealms.craftengine.core.util.Tuple;

View File

@@ -11,7 +11,6 @@ import net.momirealms.craftengine.core.block.ImmutableBlockState;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.loot.parameter.LootParameters;
import net.momirealms.craftengine.core.util.MiscUtils;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
import net.momirealms.craftengine.core.util.VersionHelper;
import net.momirealms.craftengine.core.util.context.ContextHolder;

View File

@@ -11,7 +11,10 @@ import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.block.properties.Property;
import net.momirealms.craftengine.core.plugin.CraftEngine;
import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException;
import net.momirealms.craftengine.core.util.*;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.RandomUtils;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
import net.momirealms.craftengine.core.util.Tuple;
import net.momirealms.craftengine.shared.block.BlockBehavior;
import org.bukkit.Location;
import org.bukkit.World;

View File

@@ -178,8 +178,8 @@ public abstract class CustomBlock {
return this;
}
public Builder behavior(Map<String, Object> behaviorSettings) {
this.behavior = behaviorSettings;
public Builder behavior(Map<String, Object> behavior) {
this.behavior = behavior;
return this;
}

View File

@@ -24,7 +24,7 @@ public class BlockBehaviors {
}
public static BlockBehavior fromMap(CustomBlock block, @Nullable Map<String, Object> map) {
if (map == null) return EmptyBlockBehavior.INSTANCE;
if (map == null || map.isEmpty()) return EmptyBlockBehavior.INSTANCE;
Object type = map.get("type");
if (type == null) {
throw new LocalizedResourceConfigException("warning.config.block.behavior.missing_type");

View File

@@ -1,7 +1,6 @@
package net.momirealms.craftengine.core.block.properties;
import com.google.common.collect.ImmutableMap;
import net.momirealms.craftengine.core.plugin.CraftEngine;
import net.momirealms.sparrow.nbt.StringTag;
import net.momirealms.sparrow.nbt.Tag;

View File

@@ -2,7 +2,6 @@ package net.momirealms.craftengine.core.block.properties;
import it.unimi.dsi.fastutil.ints.IntImmutableList;
import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException;
import net.momirealms.craftengine.core.util.MiscUtils;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
import net.momirealms.sparrow.nbt.IntTag;
import net.momirealms.sparrow.nbt.NumericTag;

View File

@@ -1,7 +1,6 @@
package net.momirealms.craftengine.core.block.properties;
import com.google.common.collect.ImmutableMap;
import net.momirealms.craftengine.core.plugin.CraftEngine;
import net.momirealms.craftengine.core.util.MiscUtils;
import net.momirealms.sparrow.nbt.StringTag;
import net.momirealms.sparrow.nbt.Tag;

View File

@@ -22,6 +22,7 @@ public class ItemBehaviors {
}
public static ItemBehavior fromMap(Pack pack, Path path, Key id, Map<String, Object> map) {
if (map == null || map.isEmpty()) return EmptyItemBehavior.INSTANCE;
Object type = map.get("type");
if (type == null) {
throw new LocalizedResourceConfigException("warning.config.item.behavior.missing_type");

View File

@@ -2,11 +2,9 @@ package net.momirealms.craftengine.core.item.recipe;
import net.momirealms.craftengine.core.registry.Holder;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.MiscUtils;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
import org.jetbrains.annotations.NotNull;
import java.util.Locale;
import java.util.Map;
import java.util.Set;

View File

@@ -2,11 +2,9 @@ package net.momirealms.craftengine.core.item.recipe;
import net.momirealms.craftengine.core.registry.Holder;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.MiscUtils;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
import org.jetbrains.annotations.NotNull;
import java.util.Locale;
import java.util.Map;
import java.util.Set;

View File

@@ -1,13 +1,10 @@
package net.momirealms.craftengine.core.item.recipe;
import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException;
import net.momirealms.craftengine.core.registry.Holder;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.MiscUtils;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
import org.jetbrains.annotations.NotNull;
import java.util.Locale;
import java.util.Map;
import java.util.Set;

View File

@@ -1,13 +1,10 @@
package net.momirealms.craftengine.core.item.recipe;
import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException;
import net.momirealms.craftengine.core.registry.Holder;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.MiscUtils;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
import org.jetbrains.annotations.NotNull;
import java.util.Locale;
import java.util.Map;
import java.util.Set;

View File

@@ -2,7 +2,6 @@ package net.momirealms.craftengine.core.loot.condition;
import net.momirealms.craftengine.core.loot.LootContext;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.MiscUtils;
import net.momirealms.craftengine.core.util.RandomUtils;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;

View File

@@ -6,7 +6,6 @@ import net.momirealms.craftengine.core.loot.LootContext;
import net.momirealms.craftengine.core.loot.parameter.LootParameters;
import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.MiscUtils;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
import java.util.ArrayList;

View File

@@ -513,15 +513,18 @@ public abstract class AbstractPackManager implements PackManager {
List<Path> folders = new ArrayList<>();
folders.addAll(loadedPacks().stream().filter(Pack::enabled).map(Pack::resourcePackFolder).toList());
folders.addAll(Config.foldersToMerge().stream().map(it -> plugin.dataFolderPath().getParent().resolve(it)).filter(Files::exists).toList());
List<Pair<Path, List<Path>>> duplicated = mergeFolder(folders, generatedPackPath);
if (!duplicated.isEmpty()) {
this.plugin.logger().severe("Duplicated files Found. Please resolve them through config.yml resource-pack.duplicated-files-handler.");
plugin.logger().severe(AdventureHelper.miniMessage().stripTags(TranslationManager.instance().miniMessageTranslation("warning.config.pack.duplicated_files")));
int x = 1;
for (Pair<Path, List<Path>> path : duplicated) {
this.plugin.logger().warn("");
this.plugin.logger().warn("Target: " + path.left());
for (Path path0 : path.right()) {
this.plugin.logger().warn(" - " + path0.toAbsolutePath());
this.plugin.logger().warn("[ " + (x++) + " ] " + path.left());
for (int i = 0, size = path.right().size(); i < size; i++) {
if (i == size - 1) {
this.plugin.logger().info(" " + path.right().get(i).toAbsolutePath());
} else {
this.plugin.logger().info("" + path.right().get(i).toAbsolutePath());
}
}
}
}
@@ -932,7 +935,7 @@ public abstract class AbstractPackManager implements PackManager {
}
if (Config.packMinVersion() < 21.19f && has) {
plugin.logger().warn("You are using item-model component for models which requires 1.21.2+. But the min supported version is " + "1." + Config.packMinVersion());
plugin.logger().warn("You are using 'item-model' component for some models which requires 1.21.2+ client. But the min-supported-version set in 'config.yml' is " + "1." + Config.packMinVersion());
}
}

View File

@@ -2,7 +2,6 @@ package net.momirealms.craftengine.core.pack.model.condition;
import com.google.gson.JsonObject;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.MiscUtils;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
import java.util.Map;

View File

@@ -5,7 +5,6 @@ import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigExce
import net.momirealms.craftengine.core.util.Key;
import java.util.Map;
import java.util.Objects;
public class HasComponentConditionProperty implements ConditionProperty {
public static final Factory FACTORY = new Factory();

View File

@@ -5,7 +5,6 @@ import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigExce
import net.momirealms.craftengine.core.util.Key;
import java.util.Map;
import java.util.Objects;
public class KeyBindDownConditionProperty implements ConditionProperty {
public static final Factory FACTORY = new Factory();

View File

@@ -5,7 +5,6 @@ import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigExce
import net.momirealms.craftengine.core.util.Key;
import java.util.Map;
import java.util.Objects;
public class CompassRangeDispatchProperty implements RangeDispatchProperty {
public static final Factory FACTORY = new Factory();

View File

@@ -3,7 +3,6 @@ package net.momirealms.craftengine.core.pack.model.rangedisptach;
import com.google.gson.JsonObject;
import net.momirealms.craftengine.core.pack.model.LegacyModelPredicate;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.MiscUtils;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
import java.util.Map;

View File

@@ -5,7 +5,6 @@ import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigExce
import net.momirealms.craftengine.core.util.Key;
import java.util.Map;
import java.util.Objects;
public class TimeRangeDispatchProperty implements RangeDispatchProperty {
public static final Factory FACTORY = new Factory();

View File

@@ -2,7 +2,6 @@ package net.momirealms.craftengine.core.pack.model.rangedisptach;
import com.google.gson.JsonObject;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.MiscUtils;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
import java.util.Map;

View File

@@ -5,7 +5,6 @@ import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigExce
import net.momirealms.craftengine.core.util.Key;
import java.util.Map;
import java.util.Objects;
public class BlockStateSelectProperty implements SelectProperty {
public static final Factory FACTORY = new Factory();

View File

@@ -2,7 +2,6 @@ package net.momirealms.craftengine.core.pack.model.select;
import com.google.gson.JsonObject;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.MiscUtils;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
import java.util.Map;

View File

@@ -6,7 +6,6 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Map;
import java.util.Objects;
public class LocalTimeSelectProperty implements SelectProperty {
public static final Factory FACTORY = new Factory();

View File

@@ -2,7 +2,6 @@ package net.momirealms.craftengine.core.pack.model.special;
import com.google.gson.JsonObject;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.MiscUtils;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
import java.util.Map;

View File

@@ -2,7 +2,6 @@ package net.momirealms.craftengine.core.pack.model.special;
import com.google.gson.JsonObject;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.MiscUtils;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
import java.util.Map;

View File

@@ -3,7 +3,6 @@ package net.momirealms.craftengine.core.pack.model.special;
import com.google.gson.JsonObject;
import net.momirealms.craftengine.core.util.Direction;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.MiscUtils;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
import java.util.Locale;

View File

@@ -1,9 +1,7 @@
package net.momirealms.craftengine.core.pack.model.tint;
import com.google.gson.JsonObject;
import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.MiscUtils;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
import org.incendo.cloud.type.Either;

View File

@@ -3,7 +3,6 @@ package net.momirealms.craftengine.core.pack.model.tint;
import com.google.gson.JsonObject;
import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.MiscUtils;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
import java.util.Map;

View File

@@ -1,10 +1,11 @@
package net.momirealms.craftengine.core.plugin.config.template;
import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.MiscUtils;
import java.util.List;
import java.util.Map;
import java.util.function.Supplier;
public class ListTemplateArgument implements TemplateArgument {
public static final Factory FACTORY = new Factory();
@@ -28,7 +29,16 @@ public class ListTemplateArgument implements TemplateArgument {
@Override
public TemplateArgument create(Map<String, Object> arguments) {
return new ListTemplateArgument(MiscUtils.castToList(arguments.getOrDefault("list", List.of()), false));
Object list = arguments.getOrDefault("list", List.of());
return new ListTemplateArgument(castToListOrThrow(list, () -> new LocalizedResourceConfigException("warning.config.template.argument.list.invalid_type", list.getClass().getSimpleName())));
}
@SuppressWarnings("unchecked")
private static List<Object> castToListOrThrow(Object obj, Supplier<LocalizedResourceConfigException> throwableSupplier) {
if (obj instanceof List<?> list) {
return (List<Object>) list;
}
throw throwableSupplier.get();
}
}
}

View File

@@ -2,9 +2,7 @@ package net.momirealms.craftengine.core.plugin.config.template;
import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.MiscUtils;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
import software.amazon.awssdk.services.s3.endpoints.internal.Value;
import java.util.Map;

View File

@@ -4,11 +4,9 @@ import net.momirealms.craftengine.core.pack.LoadingSequence;
import net.momirealms.craftengine.core.pack.Pack;
import net.momirealms.craftengine.core.plugin.config.ConfigSectionParser;
import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException;
import net.momirealms.craftengine.core.plugin.locale.TranslationManager;
import net.momirealms.craftengine.core.util.GsonHelper;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.MiscUtils;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
import org.jetbrains.annotations.NotNull;
import java.nio.file.Path;

View File

@@ -226,7 +226,7 @@ public class TranslationManagerImpl implements TranslationManager {
@Override
public void log(String id, String... args) {
String translation = miniMessageTranslation(id);
if (translation == null) translation = id;
if (translation == null || translation.isEmpty()) translation = id;
this.plugin.senderFactory().console().sendMessage(AdventureHelper.miniMessage().deserialize(translation, new IndexedArgumentTag(Arrays.stream(args).map(Component::text).toList())));
}

View File

@@ -4,7 +4,6 @@ import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonPrimitive;
import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException;
import net.momirealms.craftengine.core.util.MiscUtils;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
import java.util.HashMap;

View File

@@ -23,17 +23,6 @@ public class MiscUtils {
throw new IllegalArgumentException("Expected Map, got: " + (obj == null ? null : obj.getClass().getSimpleName()));
}
@SuppressWarnings("unchecked")
public static List<Object> castToList(Object obj, boolean allowNull) {
if (allowNull && obj == null) {
return null;
}
if (obj instanceof List<?> list) {
return (List<Object>) list;
}
throw new IllegalArgumentException("Expected List, got: " + obj.getClass().getSimpleName());
}
public static List<String> getAsStringList(Object o) {
List<String> list = new ArrayList<>();
if (o instanceof List<?>) {

View File

@@ -2,8 +2,6 @@ package net.momirealms.craftengine.core.util;
import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException;
import java.util.Map;
public final class ResourceConfigUtils {
private ResourceConfigUtils() {}