Run formatter on code

This commit is contained in:
KingRainbow44
2023-08-27 23:23:01 -04:00
parent 40887b17fe
commit 154ace3d7e
24 changed files with 117 additions and 131 deletions

View File

@@ -9,10 +9,10 @@ public final class DebugConstants {
public static boolean LOG_MISSING_ABILITY_HANDLERS = true; public static boolean LOG_MISSING_ABILITY_HANDLERS = true;
/** /**
* WARNING: THIS IS A DANGEROUS SETTING. DO NOT ENABLE UNLESS YOU KNOW WHAT YOU ARE DOING. * WARNING: THIS IS A DANGEROUS SETTING. DO NOT ENABLE UNLESS YOU KNOW WHAT YOU ARE DOING. This
* This allows the *client* to send *ANY* token and UID pair to the server. * allows the *client* to send *ANY* token and UID pair to the server. The server will then accept
* The server will then accept the token and UID pair as valid, and set the account's token to the client specified one. * the token and UID pair as valid, and set the account's token to the client specified one. This
* This can allow for IMPERSONATION and HIJACKING of accounts/servers. * can allow for IMPERSONATION and HIJACKING of accounts/servers.
*/ */
public static final boolean ACCEPT_CLIENT_TOKEN = false; public static final boolean ACCEPT_CLIENT_TOKEN = false;

View File

@@ -3,7 +3,6 @@ package emu.grasscutter.command.commands;
import emu.grasscutter.Grasscutter; import emu.grasscutter.Grasscutter;
import emu.grasscutter.command.*; import emu.grasscutter.command.*;
import emu.grasscutter.game.player.Player; import emu.grasscutter.game.player.Player;
import java.util.List; import java.util.List;
@Command( @Command(
@@ -33,9 +32,10 @@ public final class DebugCommand implements CommandHandler {
var scene = sender.getScene(); var scene = sender.getScene();
var entityId = Integer.parseInt(args.get(0)); var entityId = Integer.parseInt(args.get(0));
var entity = args.size() > 1 && args.get(1).equals("config") ? var entity =
scene.getEntityByConfigId(entityId) : args.size() > 1 && args.get(1).equals("config")
scene.getEntityById(entityId); ? scene.getEntityByConfigId(entityId)
: scene.getEntityById(entityId);
if (entity == null) { if (entity == null) {
sender.dropMessage("Entity not found."); sender.dropMessage("Entity not found.");
return; return;
@@ -46,8 +46,12 @@ public final class DebugCommand implements CommandHandler {
for (var i = 0; i < abilities.size(); i++) { for (var i = 0; i < abilities.size(); i++) {
try { try {
var ability = abilities.get(i); var ability = abilities.get(i);
Grasscutter.getLogger().debug("Ability #{}: {}; Modifiers: {}", Grasscutter.getLogger()
i, ability.toString(), ability.getModifiers().keySet()); .debug(
"Ability #{}: {}; Modifiers: {}",
i,
ability.toString(),
ability.getModifiers().keySet());
} catch (Exception exception) { } catch (Exception exception) {
Grasscutter.getLogger().warn("Failed to print ability #{}.", i, exception); Grasscutter.getLogger().warn("Failed to print ability #{}.", i, exception);
} }

View File

@@ -1,5 +1,8 @@
package emu.grasscutter.data; package emu.grasscutter.data;
import static emu.grasscutter.utils.FileUtils.*;
import static emu.grasscutter.utils.lang.Language.translate;
import com.google.gson.annotations.SerializedName; import com.google.gson.annotations.SerializedName;
import com.google.gson.reflect.TypeToken; import com.google.gson.reflect.TypeToken;
import emu.grasscutter.Grasscutter; import emu.grasscutter.Grasscutter;
@@ -20,10 +23,6 @@ import emu.grasscutter.scripts.*;
import emu.grasscutter.utils.*; import emu.grasscutter.utils.*;
import it.unimi.dsi.fastutil.Pair; import it.unimi.dsi.fastutil.Pair;
import it.unimi.dsi.fastutil.ints.*; import it.unimi.dsi.fastutil.ints.*;
import lombok.*;
import org.reflections.Reflections;
import javax.script.*;
import java.io.*; import java.io.*;
import java.nio.file.*; import java.nio.file.*;
import java.util.*; import java.util.*;
@@ -31,9 +30,9 @@ import java.util.Map.Entry;
import java.util.concurrent.*; import java.util.concurrent.*;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import java.util.stream.*; import java.util.stream.*;
import javax.script.*;
import static emu.grasscutter.utils.FileUtils.*; import lombok.*;
import static emu.grasscutter.utils.lang.Language.translate; import org.reflections.Reflections;
public final class ResourceLoader { public final class ResourceLoader {

View File

@@ -3,9 +3,8 @@ package emu.grasscutter.data.binout;
import com.google.gson.annotations.SerializedName; import com.google.gson.annotations.SerializedName;
import emu.grasscutter.data.common.DynamicFloat; import emu.grasscutter.data.common.DynamicFloat;
import emu.grasscutter.game.props.ElementType; import emu.grasscutter.game.props.ElementType;
import lombok.ToString;
import java.io.Serializable; import java.io.Serializable;
import lombok.ToString;
public class AbilityModifier implements Serializable { public class AbilityModifier implements Serializable {
private static final long serialVersionUID = -2001232313615923575L; private static final long serialVersionUID = -2001232313615923575L;

View File

@@ -19,11 +19,10 @@ import emu.grasscutter.net.proto.AbilityScalarTypeOuterClass.AbilityScalarType;
import emu.grasscutter.net.proto.AbilityScalarValueEntryOuterClass.AbilityScalarValueEntry; import emu.grasscutter.net.proto.AbilityScalarValueEntryOuterClass.AbilityScalarValueEntry;
import emu.grasscutter.net.proto.ModifierActionOuterClass.ModifierAction; import emu.grasscutter.net.proto.ModifierActionOuterClass.ModifierAction;
import io.netty.util.concurrent.FastThreadLocalThread; import io.netty.util.concurrent.FastThreadLocalThread;
import lombok.Getter;
import org.reflections.Reflections;
import java.util.HashMap; import java.util.HashMap;
import java.util.concurrent.*; import java.util.concurrent.*;
import lombok.Getter;
import org.reflections.Reflections;
public final class AbilityManager extends BasePlayerManager { public final class AbilityManager extends BasePlayerManager {
private static final HashMap<AbilityModifierAction.Type, AbilityActionHandler> actionHandlers = private static final HashMap<AbilityModifierAction.Type, AbilityActionHandler> actionHandlers =
@@ -103,7 +102,7 @@ public final class AbilityManager extends BasePlayerManager {
() -> { () -> {
if (!handler.execute(ability, action, abilityData, target)) { if (!handler.execute(ability, action, abilityData, target)) {
Grasscutter.getLogger() Grasscutter.getLogger()
.debug("Ability execute action failed for {} at {}.", action.type, ability); .debug("Ability execute action failed for {} at {}.", action.type, ability);
} }
}); });
} }
@@ -182,8 +181,8 @@ public final class AbilityManager extends BasePlayerManager {
case ABILITY_INVOKE_ARGUMENT_META_SET_KILLED_SETATE -> this.handleKillState(invoke); case ABILITY_INVOKE_ARGUMENT_META_SET_KILLED_SETATE -> this.handleKillState(invoke);
default -> { default -> {
if (DebugConstants.LOG_MISSING_ABILITIES) { if (DebugConstants.LOG_MISSING_ABILITIES) {
Grasscutter.getLogger().trace("Missing invoke handler for ability {}.", Grasscutter.getLogger()
invoke.getArgumentType().name()); .trace("Missing invoke handler for ability {}.", invoke.getArgumentType().name());
} }
} }
} }

View File

@@ -33,8 +33,10 @@ public final class ActionCopyGlobalValue extends AbilityActionHandler {
destination.onAbilityValueUpdate(); destination.onAbilityValueUpdate();
// Send a value update packet. // Send a value update packet.
entity.getScene().getHost().sendPacket( entity
new PacketServerGlobalValueChangeNotify(entity, action.dstKey, value)); .getScene()
.getHost()
.sendPacket(new PacketServerGlobalValueChangeNotify(entity, action.dstKey, value));
return true; return true;
} }

View File

@@ -6,9 +6,8 @@ import emu.grasscutter.data.binout.AbilityModifier.AbilityModifierAction;
import emu.grasscutter.game.ability.Ability; import emu.grasscutter.game.ability.Ability;
import emu.grasscutter.game.entity.GameEntity; import emu.grasscutter.game.entity.GameEntity;
import emu.grasscutter.scripts.ScriptLoader; import emu.grasscutter.scripts.ScriptLoader;
import org.luaj.vm2.LuaFunction;
import javax.script.Bindings; import javax.script.Bindings;
import org.luaj.vm2.LuaFunction;
@AbilityAction(AbilityModifierAction.Type.ServerLuaCall) @AbilityAction(AbilityModifierAction.Type.ServerLuaCall)
public final class ActionServerLuaCall extends AbilityActionHandler { public final class ActionServerLuaCall extends AbilityActionHandler {

View File

@@ -10,7 +10,7 @@ import emu.grasscutter.server.packet.send.PacketServerGlobalValueChangeNotify;
public final class ActionSetGlobalValue extends AbilityActionHandler { public final class ActionSetGlobalValue extends AbilityActionHandler {
@Override @Override
public boolean execute( public boolean execute(
Ability ability, AbilityModifierAction action, ByteString abilityData, GameEntity target) { Ability ability, AbilityModifierAction action, ByteString abilityData, GameEntity target) {
// Get the key & value. // Get the key & value.
var valueKey = action.key; var valueKey = action.key;
var value = action.ratio; var value = action.ratio;
@@ -21,8 +21,10 @@ public final class ActionSetGlobalValue extends AbilityActionHandler {
target.onAbilityValueUpdate(); target.onAbilityValueUpdate();
// Send a value update packet. // Send a value update packet.
target.getScene().getHost().sendPacket( target
new PacketServerGlobalValueChangeNotify(target, valueKey, value.get(ability))); .getScene()
.getHost()
.sendPacket(new PacketServerGlobalValueChangeNotify(target, valueKey, value.get(ability)));
return true; return true;
} }

View File

@@ -40,8 +40,10 @@ public final class ActionSetGlobalValueToOverrideMap extends AbilityActionHandle
entity.onAbilityValueUpdate(); entity.onAbilityValueUpdate();
// Send a value update packet. // Send a value update packet.
entity.getScene().getHost().sendPacket( entity
new PacketServerGlobalValueChangeNotify(entity, globalValueKey, globalValue)); .getScene()
.getHost()
.sendPacket(new PacketServerGlobalValueChangeNotify(entity, globalValueKey, globalValue));
return true; return true;
} }

View File

@@ -15,11 +15,7 @@ public class Achievement {
@Setter private int finishTimestampSec; @Setter private int finishTimestampSec;
public Achievement( public Achievement(
Status status, Status status, int id, int totalProgress, int curProgress, int finishTimestampSec) {
int id,
int totalProgress,
int curProgress,
int finishTimestampSec) {
this.status = status; this.status = status;
this.id = id; this.id = id;
this.totalProgress = totalProgress; this.totalProgress = totalProgress;

View File

@@ -10,6 +10,7 @@ import emu.grasscutter.game.inventory.GameItem;
import emu.grasscutter.game.player.Player; import emu.grasscutter.game.player.Player;
import emu.grasscutter.game.props.ActionReason; import emu.grasscutter.game.props.ActionReason;
import emu.grasscutter.net.proto.AchievementOuterClass.Achievement.Status; import emu.grasscutter.net.proto.AchievementOuterClass.Achievement.Status;
import emu.grasscutter.server.event.player.PlayerCompleteAchievementEvent;
import emu.grasscutter.server.packet.send.*; import emu.grasscutter.server.packet.send.*;
import lombok.*; import lombok.*;
import org.bson.types.ObjectId; import org.bson.types.ObjectId;
@@ -25,8 +26,7 @@ import java.util.function.IntSupplier;
public class Achievements { public class Achievements {
private static final IntSupplier currentTimeSecs = private static final IntSupplier currentTimeSecs =
() -> (int) (System.currentTimeMillis() / 1000L); () -> (int) (System.currentTimeMillis() / 1000L);
private static final Achievement INVALID = private static final Achievement INVALID = new Achievement(Status.STATUS_INVALID, -1, 0, 0, 0);
new Achievement(Status.STATUS_INVALID, -1, 0, 0, 0);
@Id private ObjectId id; @Id private ObjectId id;
private int uid; private int uid;
@Transient private Player player; @Transient private Player player;
@@ -65,8 +65,7 @@ public class Achievements {
a -> { a -> {
map.put( map.put(
a.getId(), a.getId(),
new Achievement( new Achievement(Status.STATUS_UNFINISHED, a.getId(), a.getProgress(), 0, 0));
Status.STATUS_UNFINISHED, a.getId(), a.getProgress(), 0, 0));
}); });
return map; return map;
} }
@@ -126,10 +125,13 @@ public class Achievements {
} }
private boolean update(Achievement a) { private boolean update(Achievement a) {
if (a.getStatus() == Status.STATUS_UNFINISHED if (a.getStatus() == Status.STATUS_UNFINISHED && a.getCurProgress() >= a.getTotalProgress()) {
&& a.getCurProgress() >= a.getTotalProgress()) {
a.setStatus(Status.STATUS_FINISHED); a.setStatus(Status.STATUS_FINISHED);
a.setFinishTimestampSec(currentTimeSecs.getAsInt()); a.setFinishTimestampSec(currentTimeSecs.getAsInt());
// Call PlayerCompleteAchievementEvent.
new PlayerCompleteAchievementEvent(this.player, a).call();
return true; return true;
} else if (this.isFinished(a.getId()) && a.getCurProgress() < a.getTotalProgress()) { } else if (this.isFinished(a.getId()) && a.getCurProgress() < a.getTotalProgress()) {
a.setStatus(Status.STATUS_UNFINISHED); a.setStatus(Status.STATUS_UNFINISHED);
@@ -197,8 +199,7 @@ public class Achievements {
public boolean isFinished(int achievementId) { public boolean isFinished(int achievementId) {
var status = this.getStatus(achievementId); var status = this.getStatus(achievementId);
return status == Status.STATUS_FINISHED return status == Status.STATUS_FINISHED || status == Status.STATUS_REWARD_TAKEN;
|| status == Status.STATUS_REWARD_TAKEN;
} }
public void takeReward(List<Integer> ids) { public void takeReward(List<Integer> ids) {

View File

@@ -9,10 +9,9 @@ import emu.grasscutter.game.world.Scene;
import emu.grasscutter.scripts.constants.EventType; import emu.grasscutter.scripts.constants.EventType;
import emu.grasscutter.scripts.data.*; import emu.grasscutter.scripts.data.*;
import emu.grasscutter.server.packet.send.*; import emu.grasscutter.server.packet.send.*;
import lombok.*;
import java.util.List; import java.util.List;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
import lombok.*;
@Getter @Getter
@Setter @Setter

View File

@@ -15,9 +15,8 @@ import emu.grasscutter.scripts.data.controller.EntityController;
import emu.grasscutter.server.event.entity.*; import emu.grasscutter.server.event.entity.*;
import emu.grasscutter.server.packet.send.PacketEntityFightPropUpdateNotify; import emu.grasscutter.server.packet.send.PacketEntityFightPropUpdateNotify;
import it.unimi.dsi.fastutil.ints.*; import it.unimi.dsi.fastutil.ints.*;
import lombok.*;
import java.util.*; import java.util.*;
import lombok.*;
public abstract class GameEntity { public abstract class GameEntity {
@Getter private final Scene scene; @Getter private final Scene scene;

View File

@@ -69,12 +69,12 @@ public abstract class BaseRoute {
val pitch = Math.toRadians(startRot.getY()); val pitch = Math.toRadians(startRot.getY());
val yaw = Math.toRadians(startRot.getZ()); val yaw = Math.toRadians(startRot.getZ());
val cr = (float)Math.cos(roll * 0.5); val cr = (float) Math.cos(roll * 0.5);
val sr = (float)Math.sin(roll * 0.5); val sr = (float) Math.sin(roll * 0.5);
val cp = (float)Math.cos(pitch * 0.5); val cp = (float) Math.cos(pitch * 0.5);
val sp = (float)Math.sin(pitch * 0.5); val sp = (float) Math.sin(pitch * 0.5);
val cy = (float)Math.cos(yaw * 0.5); val cy = (float) Math.cos(yaw * 0.5);
val sy = (float)Math.sin(yaw * 0.5); val sy = (float) Math.sin(yaw * 0.5);
result.setW(cr * cp * cy + sr * sp * sy); result.setW(cr * cp * cy + sr * sp * sy);
result.setX(sr * cp * cy - cr * sp * sy); result.setX(sr * cp * cy - cr * sp * sy);

View File

@@ -1,5 +1,7 @@
package emu.grasscutter.game.player; package emu.grasscutter.game.player;
import static emu.grasscutter.config.Configuration.GAME_OPTIONS;
import dev.morphia.annotations.*; import dev.morphia.annotations.*;
import emu.grasscutter.*; import emu.grasscutter.*;
import emu.grasscutter.data.GameData; import emu.grasscutter.data.GameData;
@@ -21,28 +23,19 @@ import emu.grasscutter.server.packet.send.*;
import emu.grasscutter.utils.Utils; import emu.grasscutter.utils.Utils;
import it.unimi.dsi.fastutil.ints.*; import it.unimi.dsi.fastutil.ints.*;
import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
import lombok.*;
import java.util.*; import java.util.*;
import java.util.stream.Stream; import java.util.stream.Stream;
import lombok.*;
import static emu.grasscutter.config.Configuration.GAME_OPTIONS;
@Entity @Entity
public final class TeamManager extends BasePlayerDataManager { public final class TeamManager extends BasePlayerDataManager {
@Transient private final List<EntityAvatar> avatars; @Transient private final List<EntityAvatar> avatars;
@Transient @Getter private final Set<EntityBaseGadget> gadgets; @Transient @Getter private final Set<EntityBaseGadget> gadgets;
@Transient @Getter private final IntSet teamResonances; @Transient @Getter private final IntSet teamResonances;
@Transient @Transient @Getter private final IntSet teamResonancesConfig;
@Getter @Transient @Getter @Setter private Set<String> teamAbilityEmbryos;
private final IntSet teamResonancesConfig;
@Transient
@Getter
@Setter
private Set<String> teamAbilityEmbryos;
// This needs to be a LinkedHashMap to guarantee insertion order. // This needs to be a LinkedHashMap to guarantee insertion order.
@Getter @Getter private LinkedHashMap<Integer, TeamInfo> teams;
private LinkedHashMap<Integer, TeamInfo> teams;
private int currentTeamIndex; private int currentTeamIndex;
@Getter @Setter private int currentCharacterIndex; @Getter @Setter private int currentCharacterIndex;
@Transient @Getter @Setter private TeamInfo mpTeam; @Transient @Getter @Setter private TeamInfo mpTeam;
@@ -82,20 +75,24 @@ public final class TeamManager extends BasePlayerDataManager {
// Add team ability embryos, NOT to be confused with avatarAbilties. // Add team ability embryos, NOT to be confused with avatarAbilties.
// These should include the ones in LevelEntity (according to levelEntityConfig field in sceneId) // These should include the ones in LevelEntity (according to levelEntityConfig field in sceneId)
// rn only apply to big world defaults, but will fix scaramouch domain circles (BinOutput/LevelEntity/Level_Monster_Nada_setting) // rn only apply to big world defaults, but will fix scaramouch domain circles
// (BinOutput/LevelEntity/Level_Monster_Nada_setting)
public AbilityControlBlockOuterClass.AbilityControlBlock getAbilityControlBlock() { public AbilityControlBlockOuterClass.AbilityControlBlock getAbilityControlBlock() {
AbilityControlBlockOuterClass.AbilityControlBlock.Builder abilityControlBlock = AbilityControlBlockOuterClass.AbilityControlBlock.newBuilder(); AbilityControlBlockOuterClass.AbilityControlBlock.Builder abilityControlBlock =
AbilityControlBlockOuterClass.AbilityControlBlock.newBuilder();
int embryoId = 0; int embryoId = 0;
// add from default // add from default
if (Arrays.stream(GameConstants.DEFAULT_TEAM_ABILITY_STRINGS).count() > 0) { if (Arrays.stream(GameConstants.DEFAULT_TEAM_ABILITY_STRINGS).count() > 0) {
List<String> teamAbilties = Arrays.stream(GameConstants.DEFAULT_TEAM_ABILITY_STRINGS).toList(); List<String> teamAbilties =
Arrays.stream(GameConstants.DEFAULT_TEAM_ABILITY_STRINGS).toList();
for (String skill : teamAbilties) { for (String skill : teamAbilties) {
AbilityEmbryoOuterClass.AbilityEmbryo emb = AbilityEmbryoOuterClass.AbilityEmbryo.newBuilder() AbilityEmbryoOuterClass.AbilityEmbryo emb =
.setAbilityId(++embryoId) AbilityEmbryoOuterClass.AbilityEmbryo.newBuilder()
.setAbilityNameHash(Utils.abilityHash(skill)) .setAbilityId(++embryoId)
.setAbilityOverrideNameHash(GameConstants.DEFAULT_ABILITY_NAME) .setAbilityNameHash(Utils.abilityHash(skill))
.build(); .setAbilityOverrideNameHash(GameConstants.DEFAULT_ABILITY_NAME)
.build();
abilityControlBlock.addAbilityEmbryoList(emb); abilityControlBlock.addAbilityEmbryoList(emb);
} }
} }
@@ -103,11 +100,12 @@ public final class TeamManager extends BasePlayerDataManager {
// same as avatar ability hash (add frm levelEntityConfig data) // same as avatar ability hash (add frm levelEntityConfig data)
if (this.getTeamAbilityEmbryos().size() > 0) { if (this.getTeamAbilityEmbryos().size() > 0) {
for (String skill : this.getTeamAbilityEmbryos()) { for (String skill : this.getTeamAbilityEmbryos()) {
AbilityEmbryoOuterClass.AbilityEmbryo emb = AbilityEmbryoOuterClass.AbilityEmbryo.newBuilder() AbilityEmbryoOuterClass.AbilityEmbryo emb =
.setAbilityId(++embryoId) AbilityEmbryoOuterClass.AbilityEmbryo.newBuilder()
.setAbilityNameHash(Utils.abilityHash(skill)) .setAbilityId(++embryoId)
.setAbilityOverrideNameHash(GameConstants.DEFAULT_ABILITY_NAME) .setAbilityNameHash(Utils.abilityHash(skill))
.build(); .setAbilityOverrideNameHash(GameConstants.DEFAULT_ABILITY_NAME)
.build();
abilityControlBlock.addAbilityEmbryoList(emb); abilityControlBlock.addAbilityEmbryoList(emb);
} }
} }

View File

@@ -1,9 +1,8 @@
package emu.grasscutter.game.props; package emu.grasscutter.game.props;
import it.unimi.dsi.fastutil.ints.*; import it.unimi.dsi.fastutil.ints.*;
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),
@@ -62,8 +61,10 @@ public enum PlayerProperty {
PROP_PLAYER_WAIT_SUB_GCG_COIN(10046), // New; unknown/un-used. PROP_PLAYER_WAIT_SUB_GCG_COIN(10046), // New; unknown/un-used.
PROP_PLAYER_ONLINE_TIME(10047), // New; unknown/un-used. PROP_PLAYER_ONLINE_TIME(10047), // New; unknown/un-used.
PROP_PLAYER_CAN_DIVE(10048, 0, 1), // Can the player dive? [0, 1] PROP_PLAYER_CAN_DIVE(10048, 0, 1), // Can the player dive? [0, 1]
PROP_DIVE_MAX_STAMINA(10049, 0, 10000), // The maximum stamina of the player when diving. [0, 10000] PROP_DIVE_MAX_STAMINA(
PROP_DIVE_CUR_STAMINA(10050, 0, 10000); // The current stamina of the player when diving. [0, 10000] 10049, 0, 10000), // The maximum stamina of the player when diving. [0, 10000]
PROP_DIVE_CUR_STAMINA(
10050, 0, 10000); // The current stamina of the player when diving. [0, 10000]
private static final int inf = Integer.MAX_VALUE; // Maybe this should be something else? private static final int inf = Integer.MAX_VALUE; // Maybe this should be something else?
private static final Int2ObjectMap<PlayerProperty> map = new Int2ObjectOpenHashMap<>(); private static final Int2ObjectMap<PlayerProperty> map = new Int2ObjectOpenHashMap<>();

View File

@@ -23,8 +23,8 @@ import emu.grasscutter.game.props.*;
import emu.grasscutter.game.quest.QuestGroupSuite; import emu.grasscutter.game.quest.QuestGroupSuite;
import emu.grasscutter.game.world.data.TeleportProperties; import emu.grasscutter.game.world.data.TeleportProperties;
import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.proto.AttackResultOuterClass.AttackResult;
import emu.grasscutter.net.proto.*; import emu.grasscutter.net.proto.*;
import emu.grasscutter.net.proto.AttackResultOuterClass.AttackResult;
import emu.grasscutter.net.proto.VisionTypeOuterClass.VisionType; import emu.grasscutter.net.proto.VisionTypeOuterClass.VisionType;
import emu.grasscutter.scripts.*; import emu.grasscutter.scripts.*;
import emu.grasscutter.scripts.constants.EventType; import emu.grasscutter.scripts.constants.EventType;
@@ -35,12 +35,11 @@ import emu.grasscutter.server.packet.send.*;
import emu.grasscutter.server.scheduler.ServerTaskScheduler; import emu.grasscutter.server.scheduler.ServerTaskScheduler;
import emu.grasscutter.utils.objects.KahnsSort; import emu.grasscutter.utils.objects.KahnsSort;
import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
import lombok.*;
import javax.annotation.Nullable;
import java.util.*; import java.util.*;
import java.util.concurrent.*; import java.util.concurrent.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import javax.annotation.Nullable;
import lombok.*;
public final class Scene { public final class Scene {
@Getter private final World world; @Getter private final World world;

View File

@@ -1,15 +1,14 @@
package emu.grasscutter.scripts; package emu.grasscutter.scripts;
import static emu.grasscutter.utils.FileUtils.getScriptPath;
import emu.grasscutter.Grasscutter; import emu.grasscutter.Grasscutter;
import emu.grasscutter.scripts.data.controller.EntityController; import emu.grasscutter.scripts.data.controller.EntityController;
import lombok.val;
import java.io.IOException; import java.io.IOException;
import java.nio.file.Files; import java.nio.file.Files;
import java.util.Map; import java.util.Map;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import lombok.val;
import static emu.grasscutter.utils.FileUtils.getScriptPath;
public class EntityControllerScriptManager { public class EntityControllerScriptManager {
private static final Map<String, EntityController> gadgetController = new ConcurrentHashMap<>(); private static final Map<String, EntityController> gadgetController = new ConcurrentHashMap<>();

View File

@@ -8,18 +8,17 @@ import emu.grasscutter.scripts.constants.*;
import emu.grasscutter.scripts.data.SceneMeta; import emu.grasscutter.scripts.data.SceneMeta;
import emu.grasscutter.scripts.serializer.*; import emu.grasscutter.scripts.serializer.*;
import emu.grasscutter.utils.FileUtils; import emu.grasscutter.utils.FileUtils;
import lombok.Getter;
import org.luaj.vm2.*;
import org.luaj.vm2.lib.OneArgFunction;
import org.luaj.vm2.lib.jse.CoerceJavaToLua;
import org.luaj.vm2.script.LuajContext;
import javax.script.*;
import java.lang.ref.SoftReference; import java.lang.ref.SoftReference;
import java.nio.file.*; import java.nio.file.*;
import java.util.*; import java.util.*;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReference;
import javax.script.*;
import lombok.Getter;
import org.luaj.vm2.*;
import org.luaj.vm2.lib.OneArgFunction;
import org.luaj.vm2.lib.jse.CoerceJavaToLua;
import org.luaj.vm2.script.LuajContext;
public class ScriptLoader { public class ScriptLoader {
private static ScriptEngineManager sm; private static ScriptEngineManager sm;
@@ -34,8 +33,7 @@ public class ScriptLoader {
/** sceneId - SceneMeta */ /** sceneId - SceneMeta */
private static Map<Integer, SoftReference<SceneMeta>> sceneMetaCache = new ConcurrentHashMap<>(); private static Map<Integer, SoftReference<SceneMeta>> sceneMetaCache = new ConcurrentHashMap<>();
private static final AtomicReference<Bindings> currentBindings private static final AtomicReference<Bindings> currentBindings = new AtomicReference<>(null);
= new AtomicReference<>(null);
public static synchronized void init() throws Exception { public static synchronized void init() throws Exception {
if (sm != null) { if (sm != null) {
@@ -110,17 +108,13 @@ public class ScriptLoader {
} }
/** /**
* Performs a smart evaluation. * Performs a smart evaluation. This allows for 'require' to work.
* This allows for 'require' to work.
* *
* @param script The script to evaluate. * @param script The script to evaluate.
* @param bindings The bindings to use. * @param bindings The bindings to use.
* @return The result of the evaluation. * @return The result of the evaluation.
*/ */
public static Object eval( public static Object eval(CompiledScript script, Bindings bindings) throws ScriptException {
CompiledScript script,
Bindings bindings)
throws ScriptException {
// Set the current bindings. // Set the current bindings.
currentBindings.set(bindings); currentBindings.set(bindings);
// Evaluate the script. // Evaluate the script.

View File

@@ -5,11 +5,10 @@ import com.github.davidmoten.rtreemulti.geometry.*;
import emu.grasscutter.Grasscutter; import emu.grasscutter.Grasscutter;
import emu.grasscutter.game.world.Position; import emu.grasscutter.game.world.Position;
import emu.grasscutter.scripts.*; import emu.grasscutter.scripts.*;
import lombok.*;
import javax.script.*;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import javax.script.*;
import lombok.*;
@ToString @ToString
@Setter @Setter

View File

@@ -3,12 +3,11 @@ package emu.grasscutter.scripts.data;
import emu.grasscutter.Grasscutter; import emu.grasscutter.Grasscutter;
import emu.grasscutter.game.world.Position; import emu.grasscutter.game.world.Position;
import emu.grasscutter.scripts.ScriptLoader; import emu.grasscutter.scripts.ScriptLoader;
import lombok.*;
import org.luaj.vm2.*;
import javax.script.*;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import javax.script.*;
import lombok.*;
import org.luaj.vm2.*;
@ToString @ToString
@Setter @Setter

View File

@@ -4,11 +4,10 @@ import com.github.davidmoten.rtreemulti.RTree;
import com.github.davidmoten.rtreemulti.geometry.Geometry; import com.github.davidmoten.rtreemulti.geometry.Geometry;
import emu.grasscutter.Grasscutter; import emu.grasscutter.Grasscutter;
import emu.grasscutter.scripts.*; import emu.grasscutter.scripts.*;
import lombok.*;
import javax.script.*;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import javax.script.*;
import lombok.*;
@ToString @ToString
@Setter @Setter

View File

@@ -1,5 +1,7 @@
package emu.grasscutter.server.packet.recv; package emu.grasscutter.server.packet.recv;
import static emu.grasscutter.config.Configuration.ACCOUNT;
import emu.grasscutter.*; import emu.grasscutter.*;
import emu.grasscutter.database.DatabaseHelper; import emu.grasscutter.database.DatabaseHelper;
import emu.grasscutter.game.player.Player; import emu.grasscutter.game.player.Player;
@@ -11,12 +13,9 @@ import emu.grasscutter.server.game.GameSession.SessionState;
import emu.grasscutter.server.packet.send.PacketGetPlayerTokenRsp; import emu.grasscutter.server.packet.send.PacketGetPlayerTokenRsp;
import emu.grasscutter.utils.*; import emu.grasscutter.utils.*;
import emu.grasscutter.utils.helpers.ByteHelper; import emu.grasscutter.utils.helpers.ByteHelper;
import javax.crypto.Cipher;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.security.Signature; import java.security.Signature;
import javax.crypto.Cipher;
import static emu.grasscutter.config.Configuration.ACCOUNT;
@Opcodes(PacketOpcodes.GetPlayerTokenReq) @Opcodes(PacketOpcodes.GetPlayerTokenReq)
public class HandlerGetPlayerTokenReq extends PacketHandler { public class HandlerGetPlayerTokenReq extends PacketHandler {

View File

@@ -1,5 +1,8 @@
package emu.grasscutter.tools; package emu.grasscutter.tools;
import static emu.grasscutter.utils.FileUtils.getResourcePath;
import static emu.grasscutter.utils.lang.Language.getTextMapKey;
import emu.grasscutter.*; import emu.grasscutter.*;
import emu.grasscutter.command.*; import emu.grasscutter.command.*;
import emu.grasscutter.data.*; import emu.grasscutter.data.*;
@@ -11,8 +14,6 @@ import emu.grasscutter.utils.*;
import emu.grasscutter.utils.lang.Language; import emu.grasscutter.utils.lang.Language;
import emu.grasscutter.utils.lang.Language.TextStrings; import emu.grasscutter.utils.lang.Language.TextStrings;
import it.unimi.dsi.fastutil.ints.*; import it.unimi.dsi.fastutil.ints.*;
import lombok.*;
import java.io.*; import java.io.*;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.nio.file.*; import java.nio.file.*;
@@ -21,9 +22,7 @@ import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.*; import java.util.stream.*;
import lombok.*;
import static emu.grasscutter.utils.FileUtils.getResourcePath;
import static emu.grasscutter.utils.lang.Language.getTextMapKey;
public final class Tools { public final class Tools {
/** /**
@@ -422,8 +421,7 @@ public final class Tools {
case "ver" -> resourceInfo.version(value); case "ver" -> resourceInfo.version(value);
case "patches" -> resourceInfo.patches(value); case "patches" -> resourceInfo.patches(value);
case "scripts" -> resourceInfo.scripts(ScriptsType.valueOf(value.toUpperCase())); case "scripts" -> resourceInfo.scripts(ScriptsType.valueOf(value.toUpperCase()));
case "hasnolocals" -> resourceInfo.hasNoLocals( case "hasnolocals" -> resourceInfo.hasNoLocals(Boolean.parseBoolean(value));
Boolean.parseBoolean(value));
case "hasserverres" -> resourceInfo.hasServerResources( case "hasserverres" -> resourceInfo.hasServerResources(
Boolean.parseBoolean(value)); Boolean.parseBoolean(value));
case "hasscenescriptdata" -> resourceInfo.hasSceneScriptData( case "hasscenescriptdata" -> resourceInfo.hasSceneScriptData(