Initial Fabric 26.2 port
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
package whirlfrenzy.itemdespawntimer.config;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
import net.fabricmc.loader.api.FabricLoader;
|
||||
import net.minecraft.core.registries.BuiltInRegistries;
|
||||
import net.minecraft.world.entity.item.ItemEntity;
|
||||
import whirlfrenzy.itemdespawntimer.ItemDespawnTimer;
|
||||
import java.io.*; import java.nio.file.*; import java.util.*;
|
||||
|
||||
public final class ServerConfig {
|
||||
private static final Gson GSON = new GsonBuilder().setPrettyPrinting().create();
|
||||
private static Data data = new Data();
|
||||
public static final class Data {
|
||||
public int defaultDespawnSeconds = 300;
|
||||
public boolean allowInfiniteLifetime = true;
|
||||
public Map<String,Integer> itemDespawnSeconds = new LinkedHashMap<>();
|
||||
}
|
||||
private ServerConfig() {}
|
||||
public static void load() {
|
||||
Path p = FabricLoader.getInstance().getConfigDir().resolve("item-despawn-timer-server.json");
|
||||
try {
|
||||
if (Files.exists(p)) { try (Reader r=Files.newBufferedReader(p)) { Data d=GSON.fromJson(r,Data.class); if(d!=null)data=d; } }
|
||||
else { Files.createDirectories(p.getParent()); try(Writer w=Files.newBufferedWriter(p)){GSON.toJson(data,w);} }
|
||||
} catch(Exception e){ ItemDespawnTimer.LOGGER.error("Cannot load server config",e); }
|
||||
}
|
||||
public static int lifespanTicks(ItemEntity entity) {
|
||||
String id = BuiltInRegistries.ITEM.getKey(entity.getItem().getItem()).toString();
|
||||
int seconds = data.itemDespawnSeconds.getOrDefault(id, data.defaultDespawnSeconds);
|
||||
if (seconds < 0 && data.allowInfiniteLifetime) return Integer.MAX_VALUE;
|
||||
return Math.max(1, seconds) * 20;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user