Revert "Run spotlessApply"

This reverts commit d67e2d0c5e.
This commit is contained in:
KingRainbow44
2023-05-03 10:48:00 -04:00
parent 40a7d088d0
commit 3df5f79ebf
1412 changed files with 1213844 additions and 1308701 deletions

View File

@@ -273,9 +273,8 @@ public final class DungeonManager {
public void finishDungeon() {
// Mark the dungeon has completed for the players.
var dungeonId = this.getDungeonData().getId();
this.getScene()
.getPlayers()
.forEach(player -> player.getPlayerProgress().markDungeonAsComplete(dungeonId));
this.getScene().getPlayers().forEach(player -> player
.getPlayerProgress().markDungeonAsComplete(dungeonId));
notifyEndDungeon(true);
endDungeon(BaseDungeonResult.DungeonEndReason.COMPLETED);
@@ -288,8 +287,8 @@ public final class DungeonManager {
p -> {
// Trigger the fail event if needed.
if (!successfully) {
p.getQuestManager()
.queueEvent(QuestContent.QUEST_CONTENT_FAIL_DUNGEON, dungeonData.getId());
p.getQuestManager().queueEvent(
QuestContent.QUEST_CONTENT_FAIL_DUNGEON, dungeonData.getId());
}
// Battle pass trigger

View File

@@ -16,6 +16,7 @@ import emu.grasscutter.server.packet.send.PacketDungeonChallengeFinishNotify;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;
import lombok.Getter;
import lombok.Setter;
@@ -108,18 +109,14 @@ public class WorldChallenge {
var eventSource = new AtomicReference<>("");
// TODO: This is a hack to get the event source.
// This should be properly implemented.
scriptManager
.getTriggersByEvent(EventType.EVENT_CHALLENGE_SUCCESS)
.forEach(
trigger -> {
if (trigger.currentGroup.id == this.getGroup().id) {
eventSource.set(trigger.getSource());
}
});
scriptManager.callEvent(
new ScriptArgs(this.getGroup().id, EventType.EVENT_CHALLENGE_SUCCESS)
.setParam2(finishedTime)
.setEventSource(eventSource.get()));
scriptManager.getTriggersByEvent(EventType.EVENT_CHALLENGE_SUCCESS)
.forEach(trigger -> {
if (trigger.currentGroup.id == this.getGroup().id) {
eventSource.set(trigger.getSource());
}
});
scriptManager.callEvent(new ScriptArgs(this.getGroup().id, EventType.EVENT_CHALLENGE_SUCCESS)
.setParam2(finishedTime).setEventSource(eventSource.get()));
this.getScene()
.triggerDungeonEvent(
@@ -140,18 +137,15 @@ public class WorldChallenge {
// TODO: This is a hack to get the event source.
// This should be properly implemented.
var scriptManager = this.getScene().getScriptManager();
scriptManager
.getTriggersByEvent(EventType.EVENT_CHALLENGE_FAIL)
.forEach(
trigger -> {
if (trigger.currentGroup.id == this.getGroup().id) {
eventSource.set(trigger.getSource());
}
});
scriptManager.getTriggersByEvent(EventType.EVENT_CHALLENGE_FAIL)
.forEach(trigger -> {
if (trigger.currentGroup.id == this.getGroup().id) {
eventSource.set(trigger.getSource());
}
});
scriptManager.callEvent(
new ScriptArgs(this.getGroup().id, EventType.EVENT_CHALLENGE_FAIL)
.setEventSource(eventSource.get()));
scriptManager.callEvent(new ScriptArgs(this.getGroup().id, EventType.EVENT_CHALLENGE_FAIL)
.setEventSource(eventSource.get()));
challengeTriggers.forEach(t -> t.onFinish(this));
}

View File

@@ -66,8 +66,7 @@ public class EntityAvatar extends GameEntity {
weapon.setWeaponEntityId(world.getNextEntityId(EntityIdType.WEAPON));
}
} else {
Grasscutter.getLogger()
.error("Unable to create EntityAvatar instance; provided scene is null.");
Grasscutter.getLogger().error("Unable to create EntityAvatar instance; provided scene is null.");
}
}

View File

@@ -51,12 +51,13 @@ public final class GadgetWorktop extends GadgetContent {
if (options == null) return;
try {
var worktop = WorktopInfo.newBuilder().addAllOptionList(options).build();
var worktop = WorktopInfo.newBuilder()
.addAllOptionList(options).build();
gadgetInfo.setWorktop(worktop);
} catch (NullPointerException ignored) {
// "this.wrapped" is null.
gadgetInfo.setWorktop(
WorktopInfo.newBuilder().addAllOptionList(Collections.emptyList()).build());
gadgetInfo.setWorktop(WorktopInfo.newBuilder()
.addAllOptionList(Collections.emptyList()).build());
Grasscutter.getLogger().warn("GadgetWorktop.onBuildProto: this.wrapped is null");
}
}

View File

@@ -6,8 +6,9 @@ import emu.grasscutter.Grasscutter;
import emu.grasscutter.game.quest.enums.QuestContent;
import it.unimi.dsi.fastutil.ints.Int2IntOpenHashMap;
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
import it.unimi.dsi.fastutil.ints.IntArrayList;
import java.util.Map;
import it.unimi.dsi.fastutil.ints.IntArrayList;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@@ -38,27 +39,28 @@ public class PlayerProgress {
}
/**
* Marks a dungeon as completed. Triggers the quest event.
* Marks a dungeon as completed.
* Triggers the quest event.
*
* @param dungeonId The dungeon which was completed.
*/
public void markDungeonAsComplete(int dungeonId) {
if (this.getCompletedDungeons().contains(dungeonId)) return;
if (this.getCompletedDungeons().contains(dungeonId))
return;
// Mark the dungeon as completed.
this.getCompletedDungeons().add(dungeonId);
// Trigger the completion event.
if (this.getPlayer() != null) {
this.getPlayer()
.getQuestManager()
.queueEvent(QuestContent.QUEST_CONTENT_FINISH_DUNGEON, dungeonId);
this.getPlayer().getQuestManager().queueEvent(
QuestContent.QUEST_CONTENT_FINISH_DUNGEON, dungeonId
);
} else {
Grasscutter.getLogger()
.warn("Unable to execute 'QUEST_CONTENT_FINISH_DUNGEON'. The player is null.");
Grasscutter.getLogger().warn("Unable to execute 'QUEST_CONTENT_FINISH_DUNGEON'. The player is null.");
}
Grasscutter.getLogger()
.debug("Dungeon {} has been marked complete for {}.", dungeonId, this.getPlayer().getUid());
Grasscutter.getLogger().debug("Dungeon {} has been marked complete for {}.",
dungeonId, this.getPlayer().getUid());
}
public boolean hasPlayerObtainedItemHistorically(int itemId) {

View File

@@ -132,7 +132,8 @@ public final class TeamManager extends BasePlayerDataManager {
}
/**
* Returns the active team. If there are errors with the team, they can be fixed.
* Returns the active team.
* If there are errors with the team, they can be fixed.
*
* @param fix If true, the team will be fixed.
* @return The active team.
@@ -557,32 +558,27 @@ public final class TeamManager extends BasePlayerDataManager {
this.trialAvatarTeam = new TeamInfo();
// Remove the avatars from the team.
this.getActiveTeam()
.forEach(
avatarEntity ->
scene.removeEntity(
avatarEntity, VisionTypeOuterClass.VisionType.VISION_TYPE_REMOVE));
this.getActiveTeam().forEach(avatarEntity -> scene
.removeEntity(avatarEntity, VisionTypeOuterClass.VisionType.VISION_TYPE_REMOVE));
if (isTeam) {
this.getActiveTeam().clear();
this.getTrialAvatars().clear();
} else {
trialAvatarIds.forEach(
trialAvatarId -> {
this.getActiveTeam().removeIf(x -> x.getAvatar().getTrialAvatarId() == trialAvatarId);
this.getTrialAvatars().values().removeIf(x -> x.getTrialAvatarId() == trialAvatarId);
});
trialAvatarId -> {
this.getActiveTeam().removeIf(x -> x.getAvatar().getTrialAvatarId() == trialAvatarId);
this.getTrialAvatars().values().removeIf(x -> x.getTrialAvatarId() == trialAvatarId);
});
}
// Re-add the avatars to the team.
if (isTeam) {
// Restores all avatars from the player's avatar storage.
this.getCurrentTeamInfo()
.getAvatars()
.forEach(
avatarId ->
this.getActiveTeam()
.add(new EntityAvatar(scene, player.getAvatars().getAvatarById(avatarId))));
this.getCurrentTeamInfo().getAvatars().forEach(avatarId ->
this.getActiveTeam().add(new EntityAvatar(
scene, player.getAvatars().getAvatarById(avatarId)
)));
} else {
// Restores all avatars from the player's avatar storage.
// If the avatar is already in the team, it will not be added.
@@ -590,9 +586,9 @@ public final class TeamManager extends BasePlayerDataManager {
for (var index = 0; index < avatars.size() - 1; index++) {
var avatar = avatars.get(index);
if (this.getActiveTeam().stream()
.map(entity -> entity.getAvatar().getAvatarId())
.toList()
.contains(avatar)) continue;
.map(entity -> entity.getAvatar().getAvatarId())
.toList()
.contains(avatar)) continue;
// Check if the player owns the avatar.
var avatarData = player.getAvatars().getAvatarById(avatar);
@@ -1127,9 +1123,9 @@ public final class TeamManager extends BasePlayerDataManager {
throw new IllegalStateException("Player is not using trial team.");
this.getPlayer()
.sendPacket(
new PacketAvatarDelNotify(
trialAvatarIds.stream().map(this::getTrialAvatarGuid).toList()));
.sendPacket(
new PacketAvatarDelNotify(
trialAvatarIds.stream().map(this::getTrialAvatarGuid).toList()));
this.removeTrialAvatarTeam(trialAvatarIds);
// Update the team.

View File

@@ -10,8 +10,8 @@ import emu.grasscutter.data.binout.MainQuestData;
import emu.grasscutter.data.binout.MainQuestData.SubQuestData;
import emu.grasscutter.data.binout.MainQuestData.TalkData;
import emu.grasscutter.data.binout.ScriptSceneData;
import emu.grasscutter.data.excels.RewardData;
import emu.grasscutter.data.excels.quest.QuestData;
import emu.grasscutter.data.excels.RewardData;
import emu.grasscutter.database.DatabaseHelper;
import emu.grasscutter.game.player.Player;
import emu.grasscutter.game.props.ActionReason;
@@ -26,6 +26,7 @@ import emu.grasscutter.utils.ConversionUtils;
import emu.grasscutter.utils.Position;
import java.util.*;
import java.util.stream.Collectors;
import lombok.Getter;
import lombok.val;
import org.bson.types.ObjectId;
@@ -138,8 +139,7 @@ public class GameMainQuest {
questManager.queueEvent(QuestContent.QUEST_CONTENT_QUEST_VAR_GREATER, index, value);
questManager.queueEvent(QuestContent.QUEST_CONTENT_QUEST_VAR_LESS, index, value);
this.getOwner()
.sendPacket(new PacketQuestUpdateQuestVarNotify(this.getParentQuestId(), this.questVars));
this.getOwner().sendPacket(new PacketQuestUpdateQuestVarNotify(this.getParentQuestId(), this.questVars));
}
public GameQuest getChildQuestById(int id) {
@@ -158,10 +158,7 @@ public class GameMainQuest {
// when auto finishing all child quests with QUEST_STATE_UNFINISHED (below)
synchronized (this) {
if (this.isFinished || this.state == ParentQuestState.PARENT_QUEST_STATE_FINISHED) {
Grasscutter.getLogger()
.debug(
"Skip main quest {} finishing because it's already finished",
this.getParentQuestId());
Grasscutter.getLogger().debug("Skip main quest {} finishing because it's already finished",this.getParentQuestId());
return;
}
@@ -181,7 +178,7 @@ public class GameMainQuest {
* new MainQuest 355 but if 35312 is not completed after the completion
* of the main quest 353 - the character will not be able to leave place
* (return again and again)
*/
*/
this.getChildQuests().values().stream()
.filter(p -> p.state != QuestState.QUEST_STATE_FINISHED)
.forEach(GameQuest::finish);
@@ -503,16 +500,9 @@ public class GameMainQuest {
subQuestWithCond.getFinishProgressList());
if (this.getQuestManager().getLoggedQuests().contains(subQuestWithCond.getSubQuestId())) {
Grasscutter.getLogger()
.debug(
">>> Quest {} will be {} as a result of content trigger {} ({}, {}).",
subQuestWithCond.getSubQuestId(),
shouldFinish ? "finished" : "not finished",
condType.name(),
paramStr,
Arrays.stream(params)
.mapToObj(String::valueOf)
.collect(Collectors.joining(", ")));
Grasscutter.getLogger().debug(">>> Quest {} will be {} as a result of content trigger {} ({}, {}).",
subQuestWithCond.getSubQuestId(), shouldFinish ? "finished" : "not finished", condType.name(), paramStr,
Arrays.stream(params).mapToObj(String::valueOf).collect(Collectors.joining(", ")));
}
if (shouldFinish) subQuestWithCond.finish();

View File

@@ -5,8 +5,8 @@ import dev.morphia.annotations.Transient;
import emu.grasscutter.Grasscutter;
import emu.grasscutter.data.GameData;
import emu.grasscutter.data.excels.ChapterData;
import emu.grasscutter.data.excels.TriggerExcelConfigData;
import emu.grasscutter.data.excels.quest.QuestData;
import emu.grasscutter.data.excels.TriggerExcelConfigData;
import emu.grasscutter.game.dungeons.enums.DungeonPassConditionType;
import emu.grasscutter.game.player.Player;
import emu.grasscutter.game.props.ActionReason;
@@ -76,7 +76,8 @@ public class GameQuest {
.toList();
if (triggerCond.size() > 0) {
for (val cond : triggerCond) {
var newTrigger = GameData.getTriggerExcelConfigDataMap().get(cond.getParam()[0]);
var newTrigger = GameData.getTriggerExcelConfigDataMap()
.get(cond.getParam()[0]);
if (newTrigger != null) {
if (this.triggerData == null) {
this.triggerData = new HashMap<>();
@@ -84,7 +85,8 @@ public class GameQuest {
triggerData.put(newTrigger.getTriggerName(), newTrigger);
triggers.put(newTrigger.getTriggerName(), false);
var group = SceneGroup.of(newTrigger.getGroupId()).load(newTrigger.getSceneId());
var group = SceneGroup.of(newTrigger.getGroupId())
.load(newTrigger.getSceneId());
this.getOwner()
.getWorld()
.getSceneById(newTrigger.getSceneId())
@@ -109,7 +111,8 @@ public class GameQuest {
this.getQuestData()
.getBeginExec()
.forEach(e -> getOwner().getServer().getQuestSystem().triggerExec(this, e, e.getParam()));
.forEach(e -> getOwner().getServer().getQuestSystem()
.triggerExec(this, e, e.getParam()));
this.getOwner().getQuestManager().checkQuestAlreadyFullfilled(this);
Grasscutter.getLogger().debug("Quest {} is started", subQuestId);
@@ -117,8 +120,11 @@ public class GameQuest {
}
/**
* Triggers events: 'QUEST_COND_STATE_EQUAL', 'QUEST_COND_STATE_NOT_EQUAL',
* 'QUEST_CONTENT_QUEST_STATE_EQUAL', 'QUEST_CONTENT_QUEST_STATE_NOT_EQUAL'
* Triggers events:
* 'QUEST_COND_STATE_EQUAL',
* 'QUEST_COND_STATE_NOT_EQUAL',
* 'QUEST_CONTENT_QUEST_STATE_EQUAL',
* 'QUEST_CONTENT_QUEST_STATE_NOT_EQUAL'
*/
public void triggerStateEvents() {
var questManager = this.getOwner().getQuestManager();
@@ -128,8 +134,7 @@ public class GameQuest {
questManager.queueEvent(QuestCond.QUEST_COND_STATE_EQUAL, questId, state, 0, 0, 0);
questManager.queueEvent(QuestCond.QUEST_COND_STATE_NOT_EQUAL, questId, state, 0, 0, 0);
questManager.queueEvent(QuestContent.QUEST_CONTENT_QUEST_STATE_EQUAL, questId, state, 0, 0, 0);
questManager.queueEvent(
QuestContent.QUEST_CONTENT_QUEST_STATE_NOT_EQUAL, questId, state, 0, 0, 0);
questManager.queueEvent(QuestContent.QUEST_CONTENT_QUEST_STATE_NOT_EQUAL, questId, state, 0, 0, 0);
}
public String getTriggerNameById(int id) {

View File

@@ -20,6 +20,7 @@ public class ConditionStateNotEqual extends BaseCondition {
var questStateValue = condition.getParam()[1];
var checkQuest = owner.getQuestManager().getQuestById(questId);
return checkQuest != null && checkQuest.getState().getValue() != questStateValue;
return checkQuest != null &&
checkQuest.getState().getValue() != questStateValue;
}
}

View File

@@ -15,9 +15,8 @@ public class ContentCompleteAnyTalk extends BaseContent {
public boolean execute(
GameQuest quest, QuestData.QuestContentCondition condition, String paramStr, int... params) {
return Stream.of(condition.getParamStr().split(","))
.mapToInt(Integer::parseInt)
.anyMatch(
talkId ->
GameData.getTalkConfigDataMap().get(params[0]) != null && talkId == params[0]);
.mapToInt(Integer::parseInt)
.anyMatch(talkId -> GameData.getTalkConfigDataMap()
.get(params[0]) != null && talkId == params[0]);
}
}

View File

@@ -6,6 +6,7 @@ import emu.grasscutter.data.GameData;
import emu.grasscutter.data.excels.quest.QuestData;
import emu.grasscutter.game.quest.GameQuest;
import emu.grasscutter.game.quest.QuestValueContent;
import lombok.val;
@QuestValueContent(QUEST_CONTENT_COMPLETE_TALK)
public class ContentCompleteTalk extends BaseContent {
@@ -13,7 +14,7 @@ public class ContentCompleteTalk extends BaseContent {
@Override
public boolean execute(
GameQuest quest, QuestData.QuestContentCondition condition, String paramStr, int... params) {
return condition.getParam()[0] == params[0]
&& GameData.getTalkConfigDataMap().get(condition.getParam()[0]) != null;
return condition.getParam()[0] == params[0] &&
GameData.getTalkConfigDataMap().get(condition.getParam()[0]) != null;
}
}

View File

@@ -14,6 +14,7 @@ public class ContentFinishDungeon extends BaseContent {
public boolean execute(
GameQuest quest, QuestData.QuestContentCondition condition, String paramStr, int... params) {
var dungeonId = condition.getParam()[0];
return quest.getOwner().getPlayerProgress().getCompletedDungeons().contains(dungeonId);
return quest.getOwner().getPlayerProgress()
.getCompletedDungeons().contains(dungeonId);
}
}

View File

@@ -17,7 +17,8 @@ public class ContentTriggerFire extends BaseContent {
return quest.getTriggers().get(quest.getTriggerNameById(params[0]));
} else {
Grasscutter.getLogger()
.debug("Quest {} doesn't have trigger {} registered.", quest.getSubQuestId(), params[0]);
.debug("Quest {} doesn't have trigger {} registered.",
quest.getSubQuestId(), params[0]);
return false;
}
}

View File

@@ -18,8 +18,7 @@ public class ExecRemoveTrialAvatar extends QuestExecHandler {
return true;
} catch (IllegalStateException ignored) {
// The player does not have any trial avatars equipped.
Grasscutter.getLogger()
.warn("Attempted to remove trial avatars from player with none equipped.");
Grasscutter.getLogger().warn("Attempted to remove trial avatars from player with none equipped.");
return true;
} catch (RuntimeException exception) {
exception.printStackTrace();

View File

@@ -2,11 +2,12 @@ package emu.grasscutter.game.talk;
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.HashMap;
import java.util.Map;
import java.util.stream.Stream;
import lombok.AllArgsConstructor;
import lombok.Getter;
@AllArgsConstructor
public enum TalkExec {
@@ -31,12 +32,11 @@ public enum TalkExec {
static {
Stream.of(TalkExec.values())
.filter(e -> e.name().startsWith("TALK_EXEC_"))
.forEach(
entry -> {
execMap.put(entry.getValue(), entry);
execStringMap.put(entry.name(), entry);
});
.filter(e -> e.name().startsWith("TALK_EXEC_"))
.forEach(entry -> {
execMap.put(entry.getValue(), entry);
execStringMap.put(entry.name(), entry);
});
}
/**

View File

@@ -1,15 +1,16 @@
package emu.grasscutter.game.talk;
import static emu.grasscutter.game.quest.enums.QuestCond.QUEST_COND_COMPLETE_TALK;
import static emu.grasscutter.game.quest.enums.QuestContent.QUEST_CONTENT_COMPLETE_ANY_TALK;
import static emu.grasscutter.game.quest.enums.QuestContent.QUEST_CONTENT_COMPLETE_TALK;
import emu.grasscutter.data.GameData;
import emu.grasscutter.data.binout.MainQuestData.TalkData;
import emu.grasscutter.game.player.BasePlayerManager;
import emu.grasscutter.game.player.Player;
import lombok.NonNull;
import static emu.grasscutter.game.quest.enums.QuestContent.QUEST_CONTENT_COMPLETE_ANY_TALK;
import static emu.grasscutter.game.quest.enums.QuestContent.QUEST_CONTENT_COMPLETE_TALK;
import static emu.grasscutter.game.quest.enums.QuestCond.QUEST_COND_COMPLETE_TALK;
public final class TalkManager extends BasePlayerManager {
public TalkManager(@NonNull Player player) {
super(player);
@@ -26,11 +27,8 @@ public final class TalkManager extends BasePlayerManager {
var player = this.getPlayer();
// Execute the talk action on associated handlers.
talkData
.getFinishExec()
.forEach(
e ->
this.getPlayer().getServer().getTalkSystem().triggerExec(getPlayer(), talkData, e));
talkData.getFinishExec().forEach(e -> this.getPlayer().getServer()
.getTalkSystem().triggerExec(getPlayer(), talkData, e));
// Invoke the talking events for quests.
var questManager = player.getQuestManager();
@@ -45,7 +43,8 @@ public final class TalkManager extends BasePlayerManager {
public void saveTalkToQuest(int talkId, int mainQuestId) {
// TODO, problem with this is that some talks for activity also have
// quest id, which isn't present in QuestExcels
var mainQuest = this.getPlayer().getQuestManager().getMainQuestById(mainQuestId);
var mainQuest = this.getPlayer().getQuestManager()
.getMainQuestById(mainQuestId);
if (mainQuest == null) return;
mainQuest.getTalks().put(talkId, new TalkData(talkId, ""));

View File

@@ -11,13 +11,15 @@ import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
import org.reflections.Reflections;
public final class TalkSystem extends BaseGameSystem {
private final Int2ObjectMap<TalkExecHandler> execHandlers = new Int2ObjectOpenHashMap<>();
private final Int2ObjectMap<TalkExecHandler> execHandlers
= new Int2ObjectOpenHashMap<>();
public TalkSystem(GameServer server) {
super(server);
this.registerHandlers(
this.execHandlers, "emu.grasscutter.game.talk.exec", TalkExecHandler.class);
this.registerHandlers(this.execHandlers,
"emu.grasscutter.game.talk.exec",
TalkExecHandler.class);
}
/**
@@ -44,8 +46,7 @@ public final class TalkSystem extends BaseGameSystem {
*/
public <T> void registerTalkHandler(Int2ObjectMap<T> map, Class<? extends T> handlerClass) {
try {
var value = 0;
if (handlerClass.isAnnotationPresent(TalkValueExec.class)) {
var value = 0; if (handlerClass.isAnnotationPresent(TalkValueExec.class)) {
TalkValueExec opcode = handlerClass.getAnnotation(TalkValueExec.class);
value = opcode.value().getValue();
} else {
@@ -69,11 +70,8 @@ public final class TalkSystem extends BaseGameSystem {
public void triggerExec(Player player, TalkConfigData talkData, TalkExecParam execParam) {
var handler = this.execHandlers.get(execParam.getType().getValue());
if (handler == null) {
Grasscutter.getLogger()
.debug(
"Could not execute talk handlers for {} ({}).",
talkData.getId(),
execParam.getType().getValue());
Grasscutter.getLogger().debug("Could not execute talk handlers for {} ({}).",
talkData.getId(), execParam.getType().getValue());
return;
}

View File

@@ -13,9 +13,9 @@ public final class ExecDecQuestGlobalVar extends TalkExecHandler {
public void execute(Player player, TalkConfigData talkData, TalkExecParam execParam) {
if (execParam.getParam().length < 2) return;
player
.getQuestManager()
.decQuestGlobalVarValue(
Integer.parseInt(execParam.getParam()[0]), Integer.parseInt(execParam.getParam()[1]));
player.getQuestManager().decQuestGlobalVarValue(
Integer.parseInt(execParam.getParam()[0]),
Integer.parseInt(execParam.getParam()[1])
);
}
}

View File

@@ -14,11 +14,14 @@ public final class ExecDecQuestVar extends TalkExecHandler {
public void execute(Player player, TalkConfigData talkData, TalkExecParam execParam) {
if (execParam.getParam().length < 3) return;
GameMainQuest mainQuest =
player.getQuestManager().getMainQuestById(Integer.parseInt(execParam.getParam()[2]));
GameMainQuest mainQuest = player.getQuestManager().getMainQuestById(
Integer.parseInt(execParam.getParam()[2])
);
if (mainQuest == null) return;
mainQuest.decQuestVar(
Integer.parseInt(execParam.getParam()[0]), Integer.parseInt(execParam.getParam()[1]));
Integer.parseInt(execParam.getParam()[0]),
Integer.parseInt(execParam.getParam()[1])
);
}
}

View File

@@ -13,9 +13,9 @@ public final class ExecIncQuestGlobalVar extends TalkExecHandler {
public void execute(Player player, TalkConfigData talkData, TalkExecParam execParam) {
if (execParam.getParam().length < 2) return;
player
.getQuestManager()
.incQuestGlobalVarValue(
Integer.parseInt(execParam.getParam()[0]), Integer.parseInt(execParam.getParam()[1]));
player.getQuestManager().incQuestGlobalVarValue(
Integer.parseInt(execParam.getParam()[0]),
Integer.parseInt(execParam.getParam()[1])
);
}
}

View File

@@ -14,11 +14,14 @@ public final class ExecIncQuestVar extends TalkExecHandler {
public void execute(Player player, TalkConfigData talkData, TalkExecParam execParam) {
if (execParam.getParam().length < 3) return;
GameMainQuest mainQuest =
player.getQuestManager().getMainQuestById(Integer.parseInt(execParam.getParam()[2]));
GameMainQuest mainQuest = player.getQuestManager().getMainQuestById(
Integer.parseInt(execParam.getParam()[2])
);
if (mainQuest == null) return;
mainQuest.incQuestVar(
Integer.parseInt(execParam.getParam()[0]), Integer.parseInt(execParam.getParam()[1]));
Integer.parseInt(execParam.getParam()[0]),
Integer.parseInt(execParam.getParam()[1])
);
}
}

View File

@@ -13,9 +13,9 @@ public final class ExecSetQuestGlobalVar extends TalkExecHandler {
public void execute(Player player, TalkConfigData talkData, TalkExecParam execParam) {
if (execParam.getParam().length < 2) return;
player
.getQuestManager()
.setQuestGlobalVarValue(
Integer.parseInt(execParam.getParam()[0]), Integer.parseInt(execParam.getParam()[1]));
player.getQuestManager().setQuestGlobalVarValue(
Integer.parseInt(execParam.getParam()[0]),
Integer.parseInt(execParam.getParam()[1])
);
}
}

View File

@@ -3,6 +3,7 @@ package emu.grasscutter.game.talk.exec;
import emu.grasscutter.data.excels.TalkConfigData;
import emu.grasscutter.data.excels.TalkConfigData.TalkExecParam;
import emu.grasscutter.game.player.Player;
import emu.grasscutter.game.quest.GameMainQuest;
import emu.grasscutter.game.talk.TalkExec;
import emu.grasscutter.game.talk.TalkExecHandler;
import emu.grasscutter.game.talk.TalkValueExec;
@@ -13,11 +14,14 @@ public final class ExecSetQuestVar extends TalkExecHandler {
public void execute(Player player, TalkConfigData talkData, TalkExecParam execParam) {
if (execParam.getParam().length < 3) return;
var mainQuest =
player.getQuestManager().getMainQuestById(Integer.parseInt(execParam.getParam()[2]));
var mainQuest = player.getQuestManager().getMainQuestById(
Integer.parseInt(execParam.getParam()[2])
);
if (mainQuest == null) return;
mainQuest.setQuestVar(
Integer.parseInt(execParam.getParam()[0]), Integer.parseInt(execParam.getParam()[1]));
Integer.parseInt(execParam.getParam()[0]),
Integer.parseInt(execParam.getParam()[1])
);
}
}

View File

@@ -1,6 +1,7 @@
package emu.grasscutter.game.talk.exec;
import emu.grasscutter.data.GameData;
import emu.grasscutter.data.binout.ScriptSceneData;
import emu.grasscutter.data.excels.TalkConfigData;
import emu.grasscutter.data.excels.TalkConfigData.TalkExecParam;
import emu.grasscutter.game.player.Player;
@@ -16,30 +17,23 @@ public final class ExecTransSceneDummyPoint extends TalkExecHandler {
// param[0] == sceneid, param[1] == position
if (execParam.getParam().length < 2) return;
var fullGlobals =
GameData.getScriptSceneDataMap().get("flat.luas.scenes.full_globals.lua.json");
var fullGlobals = GameData.getScriptSceneDataMap().get("flat.luas.scenes.full_globals.lua.json");
if (fullGlobals == null) return;
var dummyPointScript =
fullGlobals
.getScriptObjectList()
.get(
execParam.getParam()[0] + "/scene" + execParam.getParam()[0] + "_dummy_points.lua");
var dummyPointScript = fullGlobals.getScriptObjectList()
.get(execParam.getParam()[0] + "/scene" + execParam.getParam()[0] + "_dummy_points.lua");
if (dummyPointScript == null) return;
var dummyPointMap = dummyPointScript.getDummyPoints();
if (dummyPointMap == null) return;
var transmitPosPos = dummyPointMap.get(execParam.getParam()[1] + ".pos");
// List<Float> transmitPosRot = dummyPointMap.get(e.getParam()[1] + ".rot"); would be useful
// when transportation consider rotation
// List<Float> transmitPosRot = dummyPointMap.get(e.getParam()[1] + ".rot"); would be useful when transportation consider rotation
if (transmitPosPos == null || transmitPosPos.isEmpty()) return;
player
.getWorld()
.transferPlayerToScene(
player,
Integer.parseInt(execParam.getParam()[0]),
new Position(transmitPosPos.get(0), transmitPosPos.get(1), transmitPosPos.get(2)));
player.getWorld().transferPlayerToScene(
player,
Integer.parseInt(execParam.getParam()[0]),
new Position(transmitPosPos.get(0), transmitPosPos.get(1), transmitPosPos.get(2)));
}
}

View File

@@ -795,7 +795,7 @@ public final class Scene {
return true;
}
public synchronized void checkGroups() {
public void checkGroups() {
Set<Integer> visible =
this.players.stream()
.map(player -> this.getPlayerActiveGroups(player))
@@ -833,7 +833,7 @@ public final class Scene {
this.getScriptManager().loadBlockFromScript(block);
scriptManager.getLoadedGroupSetPerBlock().put(block.id, new HashSet<>());
Grasscutter.getLogger().debug("Scene {} Block {} loaded.", this.getId(), block.id);
Grasscutter.getLogger().trace("Scene {} Block {} loaded.", this.getId(), block.id);
}
public int loadDynamicGroup(int group_id) {
@@ -963,7 +963,7 @@ public final class Scene {
groupInstance = cachedInstance;
}
// Load garbages
/* Don't load garbages
var garbageGadgets = group.getGarbageGadgets();
if (garbageGadgets != null) {
@@ -973,7 +973,7 @@ public final class Scene {
.filter(Objects::nonNull)
.toList());
}
*/
// Load suites
// int suite = group.findInitSuiteIndex(0);
this.getScriptManager()
@@ -1014,7 +1014,7 @@ public final class Scene {
if (this.scriptManager.getLoadedGroupSetPerBlock().get(block.id).isEmpty()) {
this.scriptManager.getLoadedGroupSetPerBlock().remove(block.id);
Grasscutter.getLogger().debug("Scene {} Block {} is unloaded.", this.getId(), block.id);
Grasscutter.getLogger().trace("Scene {} Block {} is unloaded.", this.getId(), block.id);
}
this.broadcastPacket(new PacketGroupUnloadNotify(List.of(group_id)));