mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2025-02-10 07:42:53 +08:00
Format code [skip actions]
This commit is contained in:
parent
b6b9d3d744
commit
33ba227982
@ -1,5 +1,8 @@
|
|||||||
package emu.grasscutter;
|
package emu.grasscutter;
|
||||||
|
|
||||||
|
import static emu.grasscutter.config.Configuration.SERVER;
|
||||||
|
import static emu.grasscutter.utils.Language.translate;
|
||||||
|
|
||||||
import ch.qos.logback.classic.Level;
|
import ch.qos.logback.classic.Level;
|
||||||
import ch.qos.logback.classic.Logger;
|
import ch.qos.logback.classic.Logger;
|
||||||
import emu.grasscutter.auth.AuthenticationSystem;
|
import emu.grasscutter.auth.AuthenticationSystem;
|
||||||
@ -26,6 +29,12 @@ import emu.grasscutter.server.http.handlers.GenericHandler;
|
|||||||
import emu.grasscutter.server.http.handlers.LogHandler;
|
import emu.grasscutter.server.http.handlers.LogHandler;
|
||||||
import emu.grasscutter.tools.Tools;
|
import emu.grasscutter.tools.Tools;
|
||||||
import emu.grasscutter.utils.*;
|
import emu.grasscutter.utils.*;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileWriter;
|
||||||
|
import java.io.IOError;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.Calendar;
|
||||||
|
import javax.annotation.Nullable;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
import org.jline.reader.EndOfFileException;
|
import org.jline.reader.EndOfFileException;
|
||||||
@ -37,16 +46,6 @@ import org.jline.terminal.TerminalBuilder;
|
|||||||
import org.reflections.Reflections;
|
import org.reflections.Reflections;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.FileWriter;
|
|
||||||
import java.io.IOError;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.Calendar;
|
|
||||||
|
|
||||||
import static emu.grasscutter.config.Configuration.SERVER;
|
|
||||||
import static emu.grasscutter.utils.Language.translate;
|
|
||||||
|
|
||||||
public final class Grasscutter {
|
public final class Grasscutter {
|
||||||
public static final File configFile = new File("./config.json");
|
public static final File configFile = new File("./config.json");
|
||||||
public static final Reflections reflector = new Reflections("emu.grasscutter");
|
public static final Reflections reflector = new Reflections("emu.grasscutter");
|
||||||
|
@ -1,5 +1,9 @@
|
|||||||
package emu.grasscutter.data;
|
package emu.grasscutter.data;
|
||||||
|
|
||||||
|
import static emu.grasscutter.utils.FileUtils.getDataPath;
|
||||||
|
import static emu.grasscutter.utils.FileUtils.getResourcePath;
|
||||||
|
import static emu.grasscutter.utils.Language.translate;
|
||||||
|
|
||||||
import com.google.gson.annotations.SerializedName;
|
import com.google.gson.annotations.SerializedName;
|
||||||
import emu.grasscutter.Grasscutter;
|
import emu.grasscutter.Grasscutter;
|
||||||
import emu.grasscutter.data.binout.*;
|
import emu.grasscutter.data.binout.*;
|
||||||
@ -30,12 +34,6 @@ import it.unimi.dsi.fastutil.Pair;
|
|||||||
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
|
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
|
||||||
import it.unimi.dsi.fastutil.ints.IntArrayList;
|
import it.unimi.dsi.fastutil.ints.IntArrayList;
|
||||||
import it.unimi.dsi.fastutil.ints.IntArraySet;
|
import it.unimi.dsi.fastutil.ints.IntArraySet;
|
||||||
import lombok.SneakyThrows;
|
|
||||||
import lombok.val;
|
|
||||||
import org.reflections.Reflections;
|
|
||||||
|
|
||||||
import javax.script.Bindings;
|
|
||||||
import javax.script.CompiledScript;
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStreamReader;
|
import java.io.InputStreamReader;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
@ -48,10 +46,11 @@ import java.util.concurrent.CopyOnWriteArraySet;
|
|||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
import javax.script.Bindings;
|
||||||
import static emu.grasscutter.utils.FileUtils.getDataPath;
|
import javax.script.CompiledScript;
|
||||||
import static emu.grasscutter.utils.FileUtils.getResourcePath;
|
import lombok.SneakyThrows;
|
||||||
import static emu.grasscutter.utils.Language.translate;
|
import lombok.val;
|
||||||
|
import org.reflections.Reflections;
|
||||||
|
|
||||||
public final class ResourceLoader {
|
public final class ResourceLoader {
|
||||||
|
|
||||||
@ -142,19 +141,25 @@ public final class ResourceLoader {
|
|||||||
var errors = new ConcurrentLinkedQueue<Pair<String, Exception>>();
|
var errors = new ConcurrentLinkedQueue<Pair<String, Exception>>();
|
||||||
var excelBinOutput = ResourceLoader.loadResources(true, errors);
|
var excelBinOutput = ResourceLoader.loadResources(true, errors);
|
||||||
// Load ability lists.
|
// Load ability lists.
|
||||||
var abilities = ResourceLoader.runAsync(() -> {
|
var abilities =
|
||||||
|
ResourceLoader.runAsync(
|
||||||
|
() -> {
|
||||||
ResourceLoader.loadAbilityEmbryos();
|
ResourceLoader.loadAbilityEmbryos();
|
||||||
ResourceLoader.loadOpenConfig();
|
ResourceLoader.loadOpenConfig();
|
||||||
ResourceLoader.loadAbilityModifiers();
|
ResourceLoader.loadAbilityModifiers();
|
||||||
});
|
});
|
||||||
// Load spawn data and quests.
|
// Load spawn data and quests.
|
||||||
var scene = ResourceLoader.runAsync(() -> {
|
var scene =
|
||||||
|
ResourceLoader.runAsync(
|
||||||
|
() -> {
|
||||||
ResourceLoader.loadSpawnData();
|
ResourceLoader.loadSpawnData();
|
||||||
ResourceLoader.loadQuests();
|
ResourceLoader.loadQuests();
|
||||||
ResourceLoader.loadScriptSceneData();
|
ResourceLoader.loadScriptSceneData();
|
||||||
});
|
});
|
||||||
// Load default home layout
|
// Load default home layout
|
||||||
var entities = ResourceLoader.runAsync(() -> {
|
var entities =
|
||||||
|
ResourceLoader.runAsync(
|
||||||
|
() -> {
|
||||||
ResourceLoader.loadHomeworldDefaultSaveData();
|
ResourceLoader.loadHomeworldDefaultSaveData();
|
||||||
ResourceLoader.loadNpcBornData();
|
ResourceLoader.loadNpcBornData();
|
||||||
ResourceLoader.loadBlossomResources();
|
ResourceLoader.loadBlossomResources();
|
||||||
@ -162,7 +167,9 @@ public final class ResourceLoader {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// Load custom server resources.
|
// Load custom server resources.
|
||||||
var customServer = ResourceLoader.runAsync(() -> {
|
var customServer =
|
||||||
|
ResourceLoader.runAsync(
|
||||||
|
() -> {
|
||||||
ResourceLoader.loadConfigLevelEntityData();
|
ResourceLoader.loadConfigLevelEntityData();
|
||||||
ResourceLoader.loadQuestShareConfig();
|
ResourceLoader.loadQuestShareConfig();
|
||||||
ResourceLoader.loadGadgetMappings();
|
ResourceLoader.loadGadgetMappings();
|
||||||
@ -207,19 +214,25 @@ public final class ResourceLoader {
|
|||||||
*
|
*
|
||||||
* @param doReload Whether to reload resources.
|
* @param doReload Whether to reload resources.
|
||||||
*/
|
*/
|
||||||
public static List<CompletableFuture<Boolean>> loadResources(boolean doReload, Queue<Pair<String, Exception>> errors) {
|
public static List<CompletableFuture<Boolean>> loadResources(
|
||||||
|
boolean doReload, Queue<Pair<String, Exception>> errors) {
|
||||||
// Load all resources in parallel.
|
// Load all resources in parallel.
|
||||||
return ResourceLoader.getResourceDefClassesPrioritySets().stream()
|
return ResourceLoader.getResourceDefClassesPrioritySets().stream()
|
||||||
.map(classes -> classes.stream()
|
.map(
|
||||||
.parallel().unordered()
|
classes ->
|
||||||
.map(c -> {
|
classes.stream()
|
||||||
|
.parallel()
|
||||||
|
.unordered()
|
||||||
|
.map(
|
||||||
|
c -> {
|
||||||
var type = c.getAnnotation(ResourceType.class);
|
var type = c.getAnnotation(ResourceType.class);
|
||||||
if (type == null) return null;
|
if (type == null) return null;
|
||||||
|
|
||||||
var map = GameData.getMapByResourceDef(c);
|
var map = GameData.getMapByResourceDef(c);
|
||||||
if (map == null) return null;
|
if (map == null) return null;
|
||||||
|
|
||||||
return ResourceLoader.runAsync(() -> {
|
return ResourceLoader.runAsync(
|
||||||
|
() -> {
|
||||||
try {
|
try {
|
||||||
loadFromResource(c, type, map, doReload);
|
loadFromResource(c, type, map, doReload);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
@ -227,8 +240,8 @@ public final class ResourceLoader {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
.toList()
|
.toList())
|
||||||
).flatMap(Collection::stream)
|
.flatMap(Collection::stream)
|
||||||
.toList();
|
.toList();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -277,13 +290,16 @@ public final class ResourceLoader {
|
|||||||
|
|
||||||
private static void loadScenePoints() {
|
private static void loadScenePoints() {
|
||||||
val pattern = Pattern.compile("scene([0-9]+)_point\\.json");
|
val pattern = Pattern.compile("scene([0-9]+)_point\\.json");
|
||||||
try (var stream = Files.newDirectoryStream(getResourcePath("BinOutput/Scene/Point"), "scene*_point.json")) {
|
try (var stream =
|
||||||
stream.forEach(path -> {
|
Files.newDirectoryStream(getResourcePath("BinOutput/Scene/Point"), "scene*_point.json")) {
|
||||||
|
stream.forEach(
|
||||||
|
path -> {
|
||||||
var matcher = pattern.matcher(path.getFileName().toString());
|
var matcher = pattern.matcher(path.getFileName().toString());
|
||||||
if (!matcher.find()) return;
|
if (!matcher.find()) return;
|
||||||
var sceneId = Integer.parseInt(matcher.group(1));
|
var sceneId = Integer.parseInt(matcher.group(1));
|
||||||
|
|
||||||
ScenePointConfig config; try {
|
ScenePointConfig config;
|
||||||
|
try {
|
||||||
config = JsonUtils.loadToClass(path, ScenePointConfig.class);
|
config = JsonUtils.loadToClass(path, ScenePointConfig.class);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
@ -656,19 +672,32 @@ public final class ResourceLoader {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/** Loads data from parsed files. */
|
||||||
* Loads data from parsed files.
|
|
||||||
*/
|
|
||||||
private static List<CompletableFuture<Boolean>> loadConfigData() {
|
private static List<CompletableFuture<Boolean>> loadConfigData() {
|
||||||
var tasks = new ArrayList<CompletableFuture<Boolean>>();
|
var tasks = new ArrayList<CompletableFuture<Boolean>>();
|
||||||
|
|
||||||
// Load config data.
|
// Load config data.
|
||||||
tasks.add(ResourceLoader.runAsync(() ->
|
tasks.add(
|
||||||
loadConfigData(GameData.getAvatarConfigData(), "BinOutput/Avatar/", ConfigEntityAvatar.class)));
|
ResourceLoader.runAsync(
|
||||||
tasks.add(ResourceLoader.runAsync(() ->
|
() ->
|
||||||
loadConfigData(GameData.getMonsterConfigData(), "BinOutput/Monster/", ConfigEntityMonster.class)));
|
loadConfigData(
|
||||||
tasks.add(ResourceLoader.runAsync(() ->
|
GameData.getAvatarConfigData(),
|
||||||
loadConfigDataMap(GameData.getGadgetConfigData(), "BinOutput/Gadget/", ConfigEntityGadget.class)));
|
"BinOutput/Avatar/",
|
||||||
|
ConfigEntityAvatar.class)));
|
||||||
|
tasks.add(
|
||||||
|
ResourceLoader.runAsync(
|
||||||
|
() ->
|
||||||
|
loadConfigData(
|
||||||
|
GameData.getMonsterConfigData(),
|
||||||
|
"BinOutput/Monster/",
|
||||||
|
ConfigEntityMonster.class)));
|
||||||
|
tasks.add(
|
||||||
|
ResourceLoader.runAsync(
|
||||||
|
() ->
|
||||||
|
loadConfigDataMap(
|
||||||
|
GameData.getGadgetConfigData(),
|
||||||
|
"BinOutput/Gadget/",
|
||||||
|
ConfigEntityGadget.class)));
|
||||||
|
|
||||||
return tasks;
|
return tasks;
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package emu.grasscutter.database;
|
package emu.grasscutter.database;
|
||||||
|
|
||||||
|
import static emu.grasscutter.config.Configuration.DATABASE;
|
||||||
|
|
||||||
import com.mongodb.MongoCommandException;
|
import com.mongodb.MongoCommandException;
|
||||||
import com.mongodb.client.MongoClient;
|
import com.mongodb.client.MongoClient;
|
||||||
import com.mongodb.client.MongoClients;
|
import com.mongodb.client.MongoClients;
|
||||||
@ -16,8 +18,6 @@ import emu.grasscutter.Grasscutter.ServerRunMode;
|
|||||||
import emu.grasscutter.game.Account;
|
import emu.grasscutter.game.Account;
|
||||||
import org.reflections.Reflections;
|
import org.reflections.Reflections;
|
||||||
|
|
||||||
import static emu.grasscutter.config.Configuration.DATABASE;
|
|
||||||
|
|
||||||
public final class DatabaseManager {
|
public final class DatabaseManager {
|
||||||
private static Datastore gameDatastore;
|
private static Datastore gameDatastore;
|
||||||
private static Datastore dispatchDatastore;
|
private static Datastore dispatchDatastore;
|
||||||
@ -35,18 +35,12 @@ public final class DatabaseManager {
|
|||||||
return getGameDatastore().getDatabase();
|
return getGameDatastore().getDatabase();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/** Performs the database initialization process. This occurs on a separate thread. */
|
||||||
* Performs the database initialization process.
|
|
||||||
* This occurs on a separate thread.
|
|
||||||
*/
|
|
||||||
public static void initializeAsync() {
|
public static void initializeAsync() {
|
||||||
new Thread(DatabaseManager::initialize).start();
|
new Thread(DatabaseManager::initialize).start();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/** Performs the database initialization process. This method is blocking. */
|
||||||
* Performs the database initialization process.
|
|
||||||
* This method is blocking.
|
|
||||||
*/
|
|
||||||
public static void initialize() {
|
public static void initialize() {
|
||||||
// Initialize
|
// Initialize
|
||||||
MongoClient gameMongoClient = MongoClients.create(DATABASE.game.connectionUri);
|
MongoClient gameMongoClient = MongoClients.create(DATABASE.game.connectionUri);
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package emu.grasscutter.game.gacha;
|
package emu.grasscutter.game.gacha;
|
||||||
|
|
||||||
|
import static emu.grasscutter.config.Configuration.GAME_OPTIONS;
|
||||||
|
|
||||||
import com.sun.nio.file.SensitivityWatchEventModifier;
|
import com.sun.nio.file.SensitivityWatchEventModifier;
|
||||||
import emu.grasscutter.Grasscutter;
|
import emu.grasscutter.Grasscutter;
|
||||||
import emu.grasscutter.data.DataLoader;
|
import emu.grasscutter.data.DataLoader;
|
||||||
@ -30,14 +32,11 @@ import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
|
|||||||
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
|
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
|
||||||
import it.unimi.dsi.fastutil.ints.IntArrayList;
|
import it.unimi.dsi.fastutil.ints.IntArrayList;
|
||||||
import it.unimi.dsi.fastutil.ints.IntList;
|
import it.unimi.dsi.fastutil.ints.IntList;
|
||||||
import org.greenrobot.eventbus.Subscribe;
|
|
||||||
|
|
||||||
import java.nio.file.*;
|
import java.nio.file.*;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.ThreadLocalRandom;
|
import java.util.concurrent.ThreadLocalRandom;
|
||||||
|
import org.greenrobot.eventbus.Subscribe;
|
||||||
import static emu.grasscutter.config.Configuration.GAME_OPTIONS;
|
|
||||||
|
|
||||||
public class GachaSystem extends BaseGameSystem {
|
public class GachaSystem extends BaseGameSystem {
|
||||||
private static final int starglitterId = 221;
|
private static final int starglitterId = 221;
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package emu.grasscutter.game.managers.energy;
|
package emu.grasscutter.game.managers.energy;
|
||||||
|
|
||||||
|
import static emu.grasscutter.config.Configuration.GAME_OPTIONS;
|
||||||
|
|
||||||
import com.google.protobuf.InvalidProtocolBufferException;
|
import com.google.protobuf.InvalidProtocolBufferException;
|
||||||
import emu.grasscutter.Grasscutter;
|
import emu.grasscutter.Grasscutter;
|
||||||
import emu.grasscutter.data.DataLoader;
|
import emu.grasscutter.data.DataLoader;
|
||||||
@ -28,13 +30,10 @@ import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
|
|||||||
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
|
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
|
||||||
import it.unimi.dsi.fastutil.objects.Object2IntMap;
|
import it.unimi.dsi.fastutil.objects.Object2IntMap;
|
||||||
import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
|
import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
|
||||||
import lombok.Getter;
|
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.concurrent.ThreadLocalRandom;
|
import java.util.concurrent.ThreadLocalRandom;
|
||||||
|
import lombok.Getter;
|
||||||
import static emu.grasscutter.config.Configuration.GAME_OPTIONS;
|
|
||||||
|
|
||||||
public class EnergyManager extends BasePlayerManager {
|
public class EnergyManager extends BasePlayerManager {
|
||||||
private static final Int2ObjectMap<List<EnergyDropInfo>> energyDropData =
|
private static final Int2ObjectMap<List<EnergyDropInfo>> energyDropData =
|
||||||
|
@ -2,9 +2,8 @@ package emu.grasscutter.game.props;
|
|||||||
|
|
||||||
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
|
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
|
||||||
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
|
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
|
||||||
import lombok.Getter;
|
|
||||||
|
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
public enum PlayerProperty {
|
public enum PlayerProperty {
|
||||||
PROP_NONE(0),
|
PROP_NONE(0),
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package emu.grasscutter.game.shop;
|
package emu.grasscutter.game.shop;
|
||||||
|
|
||||||
|
import static emu.grasscutter.config.Configuration.GAME_OPTIONS;
|
||||||
|
|
||||||
import emu.grasscutter.Grasscutter;
|
import emu.grasscutter.Grasscutter;
|
||||||
import emu.grasscutter.data.DataLoader;
|
import emu.grasscutter.data.DataLoader;
|
||||||
import emu.grasscutter.data.GameData;
|
import emu.grasscutter.data.GameData;
|
||||||
@ -11,13 +13,10 @@ import emu.grasscutter.server.game.GameServer;
|
|||||||
import emu.grasscutter.utils.Utils;
|
import emu.grasscutter.utils.Utils;
|
||||||
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
|
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
|
||||||
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
|
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import static emu.grasscutter.config.Configuration.GAME_OPTIONS;
|
|
||||||
|
|
||||||
public class ShopSystem extends BaseGameSystem {
|
public class ShopSystem extends BaseGameSystem {
|
||||||
private static final int REFRESH_HOUR = 4; // In GMT+8 server
|
private static final int REFRESH_HOUR = 4; // In GMT+8 server
|
||||||
private static final String TIME_ZONE = "Asia/Shanghai"; // GMT+8 Timezone
|
private static final String TIME_ZONE = "Asia/Shanghai"; // GMT+8 Timezone
|
||||||
|
@ -11,13 +11,12 @@ import emu.grasscutter.server.game.GameServer;
|
|||||||
import emu.grasscutter.server.packet.send.PacketServerAnnounceNotify;
|
import emu.grasscutter.server.packet.send.PacketServerAnnounceNotify;
|
||||||
import emu.grasscutter.server.packet.send.PacketServerAnnounceRevokeNotify;
|
import emu.grasscutter.server.packet.send.PacketServerAnnounceRevokeNotify;
|
||||||
import emu.grasscutter.utils.Utils;
|
import emu.grasscutter.utils.Utils;
|
||||||
|
import java.util.*;
|
||||||
import lombok.AccessLevel;
|
import lombok.AccessLevel;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.experimental.FieldDefaults;
|
import lombok.experimental.FieldDefaults;
|
||||||
|
|
||||||
import java.util.*;
|
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
public class AnnouncementSystem extends BaseGameSystem {
|
public class AnnouncementSystem extends BaseGameSystem {
|
||||||
private final Map<Integer, AnnounceConfigItem> announceConfigItemMap;
|
private final Map<Integer, AnnounceConfigItem> announceConfigItemMap;
|
||||||
|
@ -16,13 +16,12 @@ import emu.grasscutter.scripts.data.SceneGroup;
|
|||||||
import emu.grasscutter.scripts.data.SceneMonster;
|
import emu.grasscutter.scripts.data.SceneMonster;
|
||||||
import emu.grasscutter.server.game.BaseGameSystem;
|
import emu.grasscutter.server.game.BaseGameSystem;
|
||||||
import emu.grasscutter.server.game.GameServer;
|
import emu.grasscutter.server.game.GameServer;
|
||||||
import org.luaj.vm2.LuaError;
|
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
import org.luaj.vm2.LuaError;
|
||||||
|
|
||||||
public class WorldDataSystem extends BaseGameSystem {
|
public class WorldDataSystem extends BaseGameSystem {
|
||||||
private final Map<String, ChestInteractHandler> chestInteractHandlerMap; // chestType-Handler
|
private final Map<String, ChestInteractHandler> chestInteractHandlerMap; // chestType-Handler
|
||||||
|
@ -1,15 +1,13 @@
|
|||||||
package emu.grasscutter.plugin;
|
package emu.grasscutter.plugin;
|
||||||
|
|
||||||
|
import static emu.grasscutter.utils.Language.translate;
|
||||||
|
|
||||||
import emu.grasscutter.Grasscutter;
|
import emu.grasscutter.Grasscutter;
|
||||||
import emu.grasscutter.server.event.Event;
|
import emu.grasscutter.server.event.Event;
|
||||||
import emu.grasscutter.server.event.EventHandler;
|
import emu.grasscutter.server.event.EventHandler;
|
||||||
import emu.grasscutter.server.event.HandlerPriority;
|
import emu.grasscutter.server.event.HandlerPriority;
|
||||||
import emu.grasscutter.utils.FileUtils;
|
import emu.grasscutter.utils.FileUtils;
|
||||||
import emu.grasscutter.utils.JsonUtils;
|
import emu.grasscutter.utils.JsonUtils;
|
||||||
import lombok.AllArgsConstructor;
|
|
||||||
import lombok.Getter;
|
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
import java.io.InputStreamReader;
|
import java.io.InputStreamReader;
|
||||||
@ -20,8 +18,9 @@ import java.net.URLClassLoader;
|
|||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.jar.JarEntry;
|
import java.util.jar.JarEntry;
|
||||||
import java.util.jar.JarFile;
|
import java.util.jar.JarFile;
|
||||||
|
import javax.annotation.Nullable;
|
||||||
import static emu.grasscutter.utils.Language.translate;
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
/** Manages the server's plugins and the event system. */
|
/** Manages the server's plugins and the event system. */
|
||||||
public final class PluginManager {
|
public final class PluginManager {
|
||||||
|
@ -1,5 +1,9 @@
|
|||||||
package emu.grasscutter.server.game;
|
package emu.grasscutter.server.game;
|
||||||
|
|
||||||
|
import static emu.grasscutter.config.Configuration.DISPATCH_INFO;
|
||||||
|
import static emu.grasscutter.config.Configuration.GAME_INFO;
|
||||||
|
import static emu.grasscutter.utils.Language.translate;
|
||||||
|
|
||||||
import emu.grasscutter.GameConstants;
|
import emu.grasscutter.GameConstants;
|
||||||
import emu.grasscutter.Grasscutter;
|
import emu.grasscutter.Grasscutter;
|
||||||
import emu.grasscutter.Grasscutter.ServerRunMode;
|
import emu.grasscutter.Grasscutter.ServerRunMode;
|
||||||
@ -38,22 +42,17 @@ import emu.grasscutter.server.event.internal.ServerStopEvent;
|
|||||||
import emu.grasscutter.server.event.types.ServerEvent;
|
import emu.grasscutter.server.event.types.ServerEvent;
|
||||||
import emu.grasscutter.server.scheduler.ServerTaskScheduler;
|
import emu.grasscutter.server.scheduler.ServerTaskScheduler;
|
||||||
import emu.grasscutter.task.TaskMap;
|
import emu.grasscutter.task.TaskMap;
|
||||||
import kcp.highway.ChannelConfig;
|
|
||||||
import kcp.highway.KcpServer;
|
|
||||||
import lombok.Getter;
|
|
||||||
import lombok.Setter;
|
|
||||||
import lombok.SneakyThrows;
|
|
||||||
|
|
||||||
import java.net.InetSocketAddress;
|
import java.net.InetSocketAddress;
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.time.OffsetDateTime;
|
import java.time.OffsetDateTime;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
import kcp.highway.ChannelConfig;
|
||||||
import static emu.grasscutter.config.Configuration.DISPATCH_INFO;
|
import kcp.highway.KcpServer;
|
||||||
import static emu.grasscutter.config.Configuration.GAME_INFO;
|
import lombok.Getter;
|
||||||
import static emu.grasscutter.utils.Language.translate;
|
import lombok.Setter;
|
||||||
|
import lombok.SneakyThrows;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
public final class GameServer extends KcpServer {
|
public final class GameServer extends KcpServer {
|
||||||
@ -143,7 +142,8 @@ public final class GameServer extends KcpServer {
|
|||||||
this.init(GameSessionManager.getListener(), channelConfig, address);
|
this.init(GameSessionManager.getListener(), channelConfig, address);
|
||||||
|
|
||||||
// Load game managers asyncronously.
|
// Load game managers asyncronously.
|
||||||
ResourceLoader.runAsync(() -> {
|
ResourceLoader.runAsync(
|
||||||
|
() -> {
|
||||||
EnergyManager.initialize();
|
EnergyManager.initialize();
|
||||||
StaminaManager.initialize();
|
StaminaManager.initialize();
|
||||||
CookingManager.initialize();
|
CookingManager.initialize();
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
package emu.grasscutter.tools;
|
package emu.grasscutter.tools;
|
||||||
|
|
||||||
|
import static emu.grasscutter.utils.FileUtils.getResourcePath;
|
||||||
|
import static emu.grasscutter.utils.Language.getTextMapKey;
|
||||||
|
|
||||||
import emu.grasscutter.GameConstants;
|
import emu.grasscutter.GameConstants;
|
||||||
import emu.grasscutter.Grasscutter;
|
import emu.grasscutter.Grasscutter;
|
||||||
import emu.grasscutter.command.CommandHandler;
|
import emu.grasscutter.command.CommandHandler;
|
||||||
@ -17,10 +20,6 @@ import emu.grasscutter.utils.Language;
|
|||||||
import emu.grasscutter.utils.Language.TextStrings;
|
import emu.grasscutter.utils.Language.TextStrings;
|
||||||
import it.unimi.dsi.fastutil.ints.Int2IntRBTreeMap;
|
import it.unimi.dsi.fastutil.ints.Int2IntRBTreeMap;
|
||||||
import it.unimi.dsi.fastutil.ints.Int2ObjectRBTreeMap;
|
import it.unimi.dsi.fastutil.ints.Int2ObjectRBTreeMap;
|
||||||
import lombok.AllArgsConstructor;
|
|
||||||
import lombok.Builder;
|
|
||||||
import lombok.val;
|
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
@ -32,9 +31,9 @@ import java.util.function.Function;
|
|||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import java.util.stream.IntStream;
|
import java.util.stream.IntStream;
|
||||||
import java.util.stream.LongStream;
|
import java.util.stream.LongStream;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
import static emu.grasscutter.utils.FileUtils.getResourcePath;
|
import lombok.Builder;
|
||||||
import static emu.grasscutter.utils.Language.getTextMapKey;
|
import lombok.val;
|
||||||
|
|
||||||
public final class Tools {
|
public final class Tools {
|
||||||
/**
|
/**
|
||||||
|
@ -1,5 +1,9 @@
|
|||||||
package emu.grasscutter.utils;
|
package emu.grasscutter.utils;
|
||||||
|
|
||||||
|
import static emu.grasscutter.config.Configuration.FALLBACK_LANGUAGE;
|
||||||
|
import static emu.grasscutter.utils.FileUtils.getCachePath;
|
||||||
|
import static emu.grasscutter.utils.FileUtils.getResourcePath;
|
||||||
|
|
||||||
import com.google.gson.JsonElement;
|
import com.google.gson.JsonElement;
|
||||||
import com.google.gson.JsonObject;
|
import com.google.gson.JsonObject;
|
||||||
import emu.grasscutter.Grasscutter;
|
import emu.grasscutter.Grasscutter;
|
||||||
@ -13,8 +17,6 @@ import it.unimi.dsi.fastutil.ints.IntOpenHashSet;
|
|||||||
import it.unimi.dsi.fastutil.ints.IntSet;
|
import it.unimi.dsi.fastutil.ints.IntSet;
|
||||||
import it.unimi.dsi.fastutil.objects.Object2IntMap;
|
import it.unimi.dsi.fastutil.objects.Object2IntMap;
|
||||||
import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
|
import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
|
||||||
import lombok.EqualsAndHashCode;
|
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
@ -26,10 +28,7 @@ import java.util.regex.Matcher;
|
|||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import java.util.stream.IntStream;
|
import java.util.stream.IntStream;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
import static emu.grasscutter.config.Configuration.FALLBACK_LANGUAGE;
|
|
||||||
import static emu.grasscutter.utils.FileUtils.getCachePath;
|
|
||||||
import static emu.grasscutter.utils.FileUtils.getResourcePath;
|
|
||||||
|
|
||||||
public final class Language {
|
public final class Language {
|
||||||
private static final Map<String, Language> cachedLanguages = new ConcurrentHashMap<>();
|
private static final Map<String, Language> cachedLanguages = new ConcurrentHashMap<>();
|
||||||
@ -345,8 +344,9 @@ public final class Language {
|
|||||||
long cacheModified = Files.getLastModifiedTime(TEXTMAP_CACHE_PATH).toMillis();
|
long cacheModified = Files.getLastModifiedTime(TEXTMAP_CACHE_PATH).toMillis();
|
||||||
|
|
||||||
var stream = Files.list(getResourcePath("TextMap"));
|
var stream = Files.list(getResourcePath("TextMap"));
|
||||||
var textmapsModified = stream.filter(path ->
|
var textmapsModified =
|
||||||
path.toString().endsWith(".json"))
|
stream
|
||||||
|
.filter(path -> path.toString().endsWith(".json"))
|
||||||
.map(
|
.map(
|
||||||
path -> {
|
path -> {
|
||||||
try {
|
try {
|
||||||
|
Loading…
Reference in New Issue
Block a user