force load default
This commit is contained in:
@@ -18,7 +18,7 @@ loader_version_range=[2,)
|
|||||||
mod_id=l2core
|
mod_id=l2core
|
||||||
mod_name=L2Core
|
mod_name=L2Core
|
||||||
mod_license=LGPL-2.1
|
mod_license=LGPL-2.1
|
||||||
mod_version=3.0.7+31
|
mod_version=3.0.7+33
|
||||||
mod_group_id=dev.xkmc
|
mod_group_id=dev.xkmc
|
||||||
mod_authors=lcy0x1
|
mod_authors=lcy0x1
|
||||||
mod_description=Core Library mod for all L2 mods
|
mod_description=Core Library mod for all L2 mods
|
||||||
|
|||||||
@@ -3,9 +3,10 @@ package dev.xkmc.l2core.init.reg.varitem;
|
|||||||
import com.tterrag.registrate.util.entry.ItemEntry;
|
import com.tterrag.registrate.util.entry.ItemEntry;
|
||||||
import net.minecraft.world.item.Item;
|
import net.minecraft.world.item.Item;
|
||||||
import net.minecraft.world.level.ItemLike;
|
import net.minecraft.world.level.ItemLike;
|
||||||
import org.jetbrains.annotations.Nullable;
|
|
||||||
|
|
||||||
public class VarHolder<T extends Item> implements VarEntry<T>, ItemLike {
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
|
public class VarHolder<T extends Item> implements VarEntry<T>, ItemLike, Supplier<T> {
|
||||||
|
|
||||||
private final String str;
|
private final String str;
|
||||||
private final VarBuilder<T> builder;
|
private final VarBuilder<T> builder;
|
||||||
@@ -25,6 +26,11 @@ public class VarHolder<T extends Item> implements VarEntry<T>, ItemLike {
|
|||||||
return item.asItem();
|
return item.asItem();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public T get() {
|
||||||
|
return item.get();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String id() {
|
public String id() {
|
||||||
return str;
|
return str;
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ package dev.xkmc.l2core.init.reg.varitem;
|
|||||||
|
|
||||||
import com.google.gson.*;
|
import com.google.gson.*;
|
||||||
import com.mojang.datafixers.util.Pair;
|
import com.mojang.datafixers.util.Pair;
|
||||||
import com.tterrag.registrate.util.OneTimeEventReceiver;
|
|
||||||
import com.tterrag.registrate.util.entry.ItemEntry;
|
import com.tterrag.registrate.util.entry.ItemEntry;
|
||||||
import dev.xkmc.l2core.init.L2Core;
|
import dev.xkmc.l2core.init.L2Core;
|
||||||
import dev.xkmc.l2core.init.reg.registrate.L2Registrate;
|
import dev.xkmc.l2core.init.reg.registrate.L2Registrate;
|
||||||
@@ -14,12 +13,10 @@ import net.neoforged.fml.loading.FMLPaths;
|
|||||||
import net.neoforged.neoforge.registries.RegisterEvent;
|
import net.neoforged.neoforge.registries.RegisterEvent;
|
||||||
import org.apache.logging.log4j.Level;
|
import org.apache.logging.log4j.Level;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
import java.io.FileReader;
|
import java.io.FileReader;
|
||||||
import java.io.FileWriter;
|
import java.io.FileWriter;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.LinkedHashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
import java.util.concurrent.ConcurrentMap;
|
import java.util.concurrent.ConcurrentMap;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
@@ -41,7 +38,7 @@ public class VarItemInit<T extends Item> {
|
|||||||
private final Function<ResourceLocation, T> func;
|
private final Function<ResourceLocation, T> func;
|
||||||
private final VarBuilder<T> builder;
|
private final VarBuilder<T> builder;
|
||||||
private final Map<String, VarEntry<T>> defaults = new LinkedHashMap<>();
|
private final Map<String, VarEntry<T>> defaults = new LinkedHashMap<>();
|
||||||
private final List<String> registered = new ArrayList<>();
|
private final Set<String> registered = new LinkedHashSet<>();
|
||||||
private final Map<String, ItemEntry<T>> results = new ConcurrentHashMap<>();
|
private final Map<String, ItemEntry<T>> results = new ConcurrentHashMap<>();
|
||||||
|
|
||||||
private VarItemInit(L2Registrate reg, ResourceLocation id, Function<ResourceLocation, T> func, VarBuilder<T> builder) {
|
private VarItemInit(L2Registrate reg, ResourceLocation id, Function<ResourceLocation, T> func, VarBuilder<T> builder) {
|
||||||
@@ -49,7 +46,7 @@ public class VarItemInit<T extends Item> {
|
|||||||
this.id = id;
|
this.id = id;
|
||||||
this.func = func;
|
this.func = func;
|
||||||
this.builder = builder;
|
this.builder = builder;
|
||||||
reg.getModEventBus().addListener( EventPriority.HIGH, RegisterEvent.class, this::init);
|
reg.getModEventBus().addListener(EventPriority.HIGH, RegisterEvent.class, this::init);
|
||||||
}
|
}
|
||||||
|
|
||||||
public synchronized void add(List<String> defaults) {
|
public synchronized void add(List<String> defaults) {
|
||||||
@@ -61,6 +58,11 @@ public class VarItemInit<T extends Item> {
|
|||||||
return e;
|
return e;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
public ItemEntry<T> get(String str) {
|
||||||
|
return results.get(str);
|
||||||
|
}
|
||||||
|
|
||||||
private synchronized void init(RegisterEvent event) {
|
private synchronized void init(RegisterEvent event) {
|
||||||
if (event.getRegistry() != BuiltInRegistries.ITEM) return;
|
if (event.getRegistry() != BuiltInRegistries.ITEM) return;
|
||||||
load();
|
load();
|
||||||
@@ -119,17 +121,24 @@ public class VarItemInit<T extends Item> {
|
|||||||
|
|
||||||
private Pair<Boolean, List<String>> parseFile(JsonElement elem) {
|
private Pair<Boolean, List<String>> parseFile(JsonElement elem) {
|
||||||
if (!elem.isJsonArray()) return Pair.of(true, List.of());
|
if (!elem.isJsonArray()) return Pair.of(true, List.of());
|
||||||
List<String> ans = new ArrayList<>();
|
Set<String> ans = new LinkedHashSet<>(defaults.keySet());
|
||||||
|
Set<String> checker = new HashSet<>();
|
||||||
boolean err = false;
|
boolean err = false;
|
||||||
for (var e : elem.getAsJsonArray()) {
|
for (var e : elem.getAsJsonArray()) {
|
||||||
var rl = e.getAsString();
|
var rl = e.getAsString();
|
||||||
if (ResourceLocation.isValidPath(rl)) ans.add(rl);
|
if (ResourceLocation.isValidPath(rl)) {
|
||||||
else {
|
ans.add(rl);
|
||||||
|
checker.add(rl);
|
||||||
|
} else {
|
||||||
L2Core.LOGGER.error("Item ID {} for varitem type {} is invalid. Skipped", rl, id);
|
L2Core.LOGGER.error("Item ID {} for varitem type {} is invalid. Skipped", rl, id);
|
||||||
err = true;
|
err = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return Pair.of(err, ans);
|
if (checker.size() != ans.size()) {
|
||||||
|
L2Core.LOGGER.error("Found missing default items for varitem type {}. Filling", id);
|
||||||
|
err = true;
|
||||||
|
}
|
||||||
|
return Pair.of(err, new ArrayList<>(ans));
|
||||||
}
|
}
|
||||||
|
|
||||||
private record SimpleVarEntry<T extends Item>(String id) implements VarEntry<T> {
|
private record SimpleVarEntry<T extends Item>(String id) implements VarEntry<T> {
|
||||||
|
|||||||
Reference in New Issue
Block a user