mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2025-12-13 23:44:55 +01:00
Reflections change & Start HTTP before game server
This commit is contained in:
@@ -20,10 +20,10 @@ import emu.grasscutter.net.proto.AbilityScalarValueEntryOuterClass.AbilityScalar
|
||||
import emu.grasscutter.net.proto.ModifierActionOuterClass.ModifierAction;
|
||||
import emu.grasscutter.server.event.player.PlayerUseSkillEvent;
|
||||
import io.netty.util.concurrent.FastThreadLocalThread;
|
||||
import lombok.Getter;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.concurrent.*;
|
||||
import lombok.Getter;
|
||||
import org.reflections.Reflections;
|
||||
|
||||
public final class AbilityManager extends BasePlayerManager {
|
||||
private static final HashMap<AbilityModifierAction.Type, AbilityActionHandler> actionHandlers =
|
||||
@@ -54,8 +54,8 @@ public final class AbilityManager extends BasePlayerManager {
|
||||
}
|
||||
|
||||
public static void registerHandlers() {
|
||||
Reflections reflections = new Reflections("emu.grasscutter.game.ability.actions");
|
||||
var handlerClassesAction = reflections.getSubTypesOf(AbilityActionHandler.class);
|
||||
var handlerClassesAction = Grasscutter.reflector
|
||||
.getSubTypesOf(AbilityActionHandler.class);
|
||||
|
||||
for (var obj : handlerClassesAction) {
|
||||
try {
|
||||
@@ -70,9 +70,8 @@ public final class AbilityManager extends BasePlayerManager {
|
||||
}
|
||||
}
|
||||
|
||||
reflections = new Reflections("emu.grasscutter.game.ability.mixins");
|
||||
var handlerClassesMixin = reflections.getSubTypesOf(AbilityMixinHandler.class);
|
||||
|
||||
var handlerClassesMixin = Grasscutter.reflector
|
||||
.getSubTypesOf(AbilityMixinHandler.class);
|
||||
for (var obj : handlerClassesMixin) {
|
||||
try {
|
||||
if (obj.isAnnotationPresent(AbilityAction.class)) {
|
||||
@@ -413,11 +412,9 @@ public final class AbilityManager extends BasePlayerManager {
|
||||
|
||||
if (instancedAbilityData == null) {
|
||||
// search on entity base id
|
||||
if (entity != null) {
|
||||
if ((head.getInstancedAbilityId() - 1) < entity.getInstancedAbilities().size()) {
|
||||
instancedAbility = entity.getInstancedAbilities().get(head.getInstancedAbilityId() - 1);
|
||||
if (instancedAbility != null) instancedAbilityData = instancedAbility.getData();
|
||||
}
|
||||
if ((head.getInstancedAbilityId() - 1) < entity.getInstancedAbilities().size()) {
|
||||
instancedAbility = entity.getInstancedAbilities().get(head.getInstancedAbilityId() - 1);
|
||||
if (instancedAbility != null) instancedAbilityData = instancedAbility.getData();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -581,6 +578,6 @@ public final class AbilityManager extends BasePlayerManager {
|
||||
|
||||
public void addAbilityToEntity(GameEntity entity, AbilityData abilityData) {
|
||||
var ability = new Ability(abilityData, entity, this.player);
|
||||
entity.getInstancedAbilities().add(ability); // This are in order
|
||||
entity.getInstancedAbilities().add(ability); // This is in order
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,11 +8,12 @@ import emu.grasscutter.game.player.*;
|
||||
import emu.grasscutter.game.props.*;
|
||||
import emu.grasscutter.net.proto.ActivityInfoOuterClass;
|
||||
import emu.grasscutter.server.packet.send.PacketActivityScheduleInfoNotify;
|
||||
import lombok.Getter;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.concurrent.*;
|
||||
import lombok.Getter;
|
||||
import org.reflections.Reflections;
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Getter
|
||||
public class ActivityManager extends BasePlayerManager {
|
||||
private static final Map<Integer, ActivityConfigItem> activityConfigItemMap;
|
||||
@@ -29,16 +30,14 @@ public class ActivityManager extends BasePlayerManager {
|
||||
// scan activity type handler & watcher type
|
||||
var activityHandlerTypeMap = new HashMap<ActivityType, ConstructorAccess<?>>();
|
||||
var activityWatcherTypeMap = new HashMap<WatcherTriggerType, ConstructorAccess<?>>();
|
||||
var reflections = new Reflections(ActivityManager.class.getPackage().getName());
|
||||
|
||||
reflections
|
||||
Grasscutter.reflector
|
||||
.getSubTypesOf(ActivityHandler.class)
|
||||
.forEach(
|
||||
item -> {
|
||||
var typeName = item.getAnnotation(GameActivity.class);
|
||||
activityHandlerTypeMap.put(typeName.value(), ConstructorAccess.get(item));
|
||||
});
|
||||
reflections
|
||||
Grasscutter.reflector
|
||||
.getSubTypesOf(ActivityWatcher.class)
|
||||
.forEach(
|
||||
item -> {
|
||||
|
||||
@@ -1,49 +1,41 @@
|
||||
package emu.grasscutter.game.dungeons;
|
||||
|
||||
import emu.grasscutter.GameConstants;
|
||||
import emu.grasscutter.Grasscutter;
|
||||
import emu.grasscutter.*;
|
||||
import emu.grasscutter.data.GameData;
|
||||
import emu.grasscutter.data.binout.ScenePointEntry;
|
||||
import emu.grasscutter.data.excels.dungeon.DungeonData;
|
||||
import emu.grasscutter.data.excels.dungeon.DungeonPassConfigData;
|
||||
import emu.grasscutter.data.excels.dungeon.*;
|
||||
import emu.grasscutter.game.dungeons.handlers.DungeonBaseHandler;
|
||||
import emu.grasscutter.game.player.Player;
|
||||
import emu.grasscutter.game.props.SceneType;
|
||||
import emu.grasscutter.game.world.Position;
|
||||
import emu.grasscutter.game.world.Scene;
|
||||
import emu.grasscutter.net.packet.BasePacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.server.game.BaseGameSystem;
|
||||
import emu.grasscutter.server.game.GameServer;
|
||||
import emu.grasscutter.game.world.*;
|
||||
import emu.grasscutter.net.packet.*;
|
||||
import emu.grasscutter.server.game.*;
|
||||
import emu.grasscutter.server.packet.send.PacketDungeonEntryInfoRsp;
|
||||
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
|
||||
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
|
||||
import java.util.List;
|
||||
import it.unimi.dsi.fastutil.ints.*;
|
||||
import lombok.val;
|
||||
import org.reflections.Reflections;
|
||||
|
||||
public class DungeonSystem extends BaseGameSystem {
|
||||
import java.util.List;
|
||||
|
||||
public final class DungeonSystem extends BaseGameSystem {
|
||||
private static final BasicDungeonSettleListener basicDungeonSettleObserver =
|
||||
new BasicDungeonSettleListener();
|
||||
private final Int2ObjectMap<DungeonBaseHandler> passCondHandlers;
|
||||
|
||||
public DungeonSystem(GameServer server) {
|
||||
super(server);
|
||||
|
||||
this.passCondHandlers = new Int2ObjectOpenHashMap<>();
|
||||
registerHandlers();
|
||||
this.registerHandlers();
|
||||
}
|
||||
|
||||
public void registerHandlers() {
|
||||
this.registerHandlers(
|
||||
this.passCondHandlers,
|
||||
"emu.grasscutter.game.dungeons.pass_condition",
|
||||
DungeonBaseHandler.class);
|
||||
}
|
||||
|
||||
public <T> void registerHandlers(Int2ObjectMap<T> map, String packageName, Class<T> clazz) {
|
||||
Reflections reflections = new Reflections(packageName);
|
||||
var handlerClasses = reflections.getSubTypesOf(clazz);
|
||||
|
||||
public <T> void registerHandlers(Int2ObjectMap<T> map, Class<T> clazz) {
|
||||
var handlerClasses = Grasscutter.reflector.getSubTypesOf(clazz);
|
||||
for (var obj : handlerClasses) {
|
||||
this.registerHandler(map, obj);
|
||||
}
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
package emu.grasscutter.game.gacha;
|
||||
|
||||
import static emu.grasscutter.config.Configuration.GAME_OPTIONS;
|
||||
|
||||
import com.sun.nio.file.SensitivityWatchEventModifier;
|
||||
import emu.grasscutter.Grasscutter;
|
||||
import emu.grasscutter.data.*;
|
||||
@@ -23,10 +21,13 @@ import emu.grasscutter.server.game.*;
|
||||
import emu.grasscutter.server.packet.send.PacketDoGachaRsp;
|
||||
import emu.grasscutter.utils.*;
|
||||
import it.unimi.dsi.fastutil.ints.*;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
|
||||
import java.nio.file.*;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.ThreadLocalRandom;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
|
||||
import static emu.grasscutter.config.Configuration.GAME_OPTIONS;
|
||||
|
||||
public class GachaSystem extends BaseGameSystem {
|
||||
private static final int starglitterId = 221;
|
||||
@@ -58,9 +59,9 @@ public class GachaSystem extends BaseGameSystem {
|
||||
int autoScheduleId = 1000;
|
||||
int autoSortId = 9000;
|
||||
try {
|
||||
List<GachaBanner> banners = DataLoader.loadTableToList("Banners", GachaBanner.class);
|
||||
if (banners.size() > 0) {
|
||||
for (GachaBanner banner : banners) {
|
||||
var banners = DataLoader.loadTableToList("Banners", GachaBanner.class);
|
||||
if (!banners.isEmpty()) {
|
||||
for (var banner : banners) {
|
||||
banner.onLoad();
|
||||
if (banner.isDeprecated()) {
|
||||
Grasscutter.getLogger()
|
||||
|
||||
@@ -2,21 +2,15 @@ package emu.grasscutter.game.quest;
|
||||
|
||||
import emu.grasscutter.Grasscutter;
|
||||
import emu.grasscutter.data.excels.quest.QuestData;
|
||||
import emu.grasscutter.data.excels.quest.QuestData.QuestAcceptCondition;
|
||||
import emu.grasscutter.data.excels.quest.QuestData.QuestContentCondition;
|
||||
import emu.grasscutter.data.excels.quest.QuestData.QuestExecParam;
|
||||
import emu.grasscutter.data.excels.quest.QuestData.*;
|
||||
import emu.grasscutter.game.player.Player;
|
||||
import emu.grasscutter.game.quest.conditions.BaseCondition;
|
||||
import emu.grasscutter.game.quest.content.BaseContent;
|
||||
import emu.grasscutter.game.quest.handlers.QuestExecHandler;
|
||||
import emu.grasscutter.server.game.BaseGameSystem;
|
||||
import emu.grasscutter.server.game.GameServer;
|
||||
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
|
||||
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
|
||||
import org.reflections.Reflections;
|
||||
import emu.grasscutter.server.game.*;
|
||||
import it.unimi.dsi.fastutil.ints.*;
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public class QuestSystem extends BaseGameSystem {
|
||||
public final class QuestSystem extends BaseGameSystem {
|
||||
private final Int2ObjectMap<BaseCondition> condHandlers;
|
||||
private final Int2ObjectMap<BaseContent> contHandlers;
|
||||
private final Int2ObjectMap<QuestExecHandler> execHandlers;
|
||||
@@ -33,17 +27,15 @@ public class QuestSystem extends BaseGameSystem {
|
||||
|
||||
public void registerHandlers() {
|
||||
this.registerHandlers(
|
||||
this.condHandlers, "emu.grasscutter.game.quest.conditions", BaseCondition.class);
|
||||
this.condHandlers, BaseCondition.class);
|
||||
this.registerHandlers(
|
||||
this.contHandlers, "emu.grasscutter.game.quest.content", BaseContent.class);
|
||||
this.contHandlers, BaseContent.class);
|
||||
this.registerHandlers(
|
||||
this.execHandlers, "emu.grasscutter.game.quest.exec", QuestExecHandler.class);
|
||||
this.execHandlers, QuestExecHandler.class);
|
||||
}
|
||||
|
||||
public <T> void registerHandlers(Int2ObjectMap<T> map, String packageName, Class<T> clazz) {
|
||||
Reflections reflections = new Reflections(packageName);
|
||||
var handlerClasses = reflections.getSubTypesOf(clazz);
|
||||
|
||||
public <T> void registerHandlers(Int2ObjectMap<T> map, Class<T> clazz) {
|
||||
var handlerClasses = Grasscutter.reflector.getSubTypesOf(clazz);
|
||||
for (var obj : handlerClasses) {
|
||||
this.registerHandler(map, obj);
|
||||
}
|
||||
@@ -51,8 +43,7 @@ public class QuestSystem extends BaseGameSystem {
|
||||
|
||||
public <T> void registerHandler(Int2ObjectMap<T> map, Class<? extends T> handlerClass) {
|
||||
try {
|
||||
int value = 0;
|
||||
if (handlerClass.isAnnotationPresent(QuestValueExec.class)) {
|
||||
int value; if (handlerClass.isAnnotationPresent(QuestValueExec.class)) {
|
||||
QuestValueExec opcode = handlerClass.getAnnotation(QuestValueExec.class);
|
||||
value = opcode.value().getValue();
|
||||
} else if (handlerClass.isAnnotationPresent(QuestValueContent.class)) {
|
||||
@@ -71,7 +62,7 @@ public class QuestSystem extends BaseGameSystem {
|
||||
|
||||
map.put(value, handlerClass.getDeclaredConstructor().newInstance());
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
Grasscutter.getLogger().warn("Unable to register handler {}.", handlerClass.getSimpleName(), e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -4,11 +4,8 @@ import emu.grasscutter.Grasscutter;
|
||||
import emu.grasscutter.data.excels.TalkConfigData;
|
||||
import emu.grasscutter.data.excels.TalkConfigData.TalkExecParam;
|
||||
import emu.grasscutter.game.player.Player;
|
||||
import emu.grasscutter.server.game.BaseGameSystem;
|
||||
import emu.grasscutter.server.game.GameServer;
|
||||
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
|
||||
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
|
||||
import org.reflections.Reflections;
|
||||
import emu.grasscutter.server.game.*;
|
||||
import it.unimi.dsi.fastutil.ints.*;
|
||||
|
||||
public final class TalkSystem extends BaseGameSystem {
|
||||
private final Int2ObjectMap<TalkExecHandler> execHandlers = new Int2ObjectOpenHashMap<>();
|
||||
@@ -16,21 +13,17 @@ public final class TalkSystem extends BaseGameSystem {
|
||||
public TalkSystem(GameServer server) {
|
||||
super(server);
|
||||
|
||||
this.registerHandlers(
|
||||
this.execHandlers, "emu.grasscutter.game.talk.exec", TalkExecHandler.class);
|
||||
this.registerHandlers(this.execHandlers, TalkExecHandler.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers all handlers with the required conditions.
|
||||
*
|
||||
* @param map The map to save handlers to.
|
||||
* @param packageName The full package domain.
|
||||
* @param clazz The class which handlers should derive from.
|
||||
*/
|
||||
public <T> void registerHandlers(Int2ObjectMap<T> map, String packageName, Class<T> clazz) {
|
||||
var reflections = new Reflections(packageName);
|
||||
var handlerClasses = reflections.getSubTypesOf(clazz);
|
||||
|
||||
public <T> void registerHandlers(Int2ObjectMap<T> map, Class<T> clazz) {
|
||||
var handlerClasses = Grasscutter.reflector.getSubTypesOf(clazz);
|
||||
for (var obj : handlerClasses) {
|
||||
this.registerTalkHandler(map, obj);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user