mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2025-12-21 03:15:59 +01:00
Merge branch 'main' into dev-scene
This commit is contained in:
@@ -9,6 +9,8 @@ import emu.grasscutter.utils.Crypto;
|
||||
import emu.grasscutter.utils.Utils;
|
||||
import dev.morphia.annotations.IndexOptions;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Entity(value = "accounts", noClassnameStored = true)
|
||||
public class Account {
|
||||
@Id private String id;
|
||||
@@ -23,6 +25,7 @@ public class Account {
|
||||
|
||||
private String token;
|
||||
private String sessionKey; // Session token for dispatch server
|
||||
private List<String> permissions;
|
||||
|
||||
@Deprecated
|
||||
public Account() {}
|
||||
@@ -84,6 +87,22 @@ public class Account {
|
||||
this.save();
|
||||
return this.sessionKey;
|
||||
}
|
||||
|
||||
/**
|
||||
* The collection of a player's permissions.
|
||||
*/
|
||||
public List<String> getPermissions() {
|
||||
return this.permissions;
|
||||
}
|
||||
|
||||
public boolean addPermission(String permission) {
|
||||
if(this.permissions.contains(permission)) return false;
|
||||
this.permissions.add(permission); return true;
|
||||
}
|
||||
|
||||
public boolean removePermission(String permission) {
|
||||
return this.permissions.remove(permission);
|
||||
}
|
||||
|
||||
// TODO make unique
|
||||
public String generateLoginToken() {
|
||||
|
||||
@@ -1,11 +1,6 @@
|
||||
package emu.grasscutter.game;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.*;
|
||||
|
||||
import dev.morphia.annotations.*;
|
||||
import emu.grasscutter.GenshinConstants;
|
||||
@@ -494,7 +489,7 @@ public class GenshinPlayer {
|
||||
this.regionId = regionId;
|
||||
}
|
||||
|
||||
public boolean hasGodmode() {
|
||||
public boolean inGodmode() {
|
||||
return godmode;
|
||||
}
|
||||
|
||||
@@ -567,6 +562,15 @@ public class GenshinPlayer {
|
||||
public void dropMessage(Object message) {
|
||||
this.sendPacket(new PacketPrivateChatNotify(GenshinConstants.SERVER_CONSOLE_UID, getId(), message.toString()));
|
||||
}
|
||||
|
||||
/**
|
||||
* Sends a message to another player.
|
||||
* @param sender The sender of the message.
|
||||
* @param message The message to send.
|
||||
*/
|
||||
public void sendMessage(GenshinPlayer sender, Object message) {
|
||||
this.sendPacket(new PacketPrivateChatNotify(sender.getId(), this.getId(), message.toString()));
|
||||
}
|
||||
|
||||
public void interactWith(int gadgetEntityId) {
|
||||
GenshinEntity entity = getScene().getEntityById(gadgetEntityId);
|
||||
|
||||
@@ -229,7 +229,7 @@ public class GenshinScene {
|
||||
|
||||
// Godmode check
|
||||
if (target instanceof EntityAvatar) {
|
||||
if (((EntityAvatar) target).getPlayer().hasGodmode()) {
|
||||
if (((EntityAvatar) target).getPlayer().inGodmode()) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,14 +1,18 @@
|
||||
package emu.grasscutter.game.managers;
|
||||
|
||||
import emu.grasscutter.Grasscutter;
|
||||
import emu.grasscutter.commands.PlayerCommands;
|
||||
import emu.grasscutter.commands.CommandMap;
|
||||
import emu.grasscutter.game.GenshinPlayer;
|
||||
import emu.grasscutter.net.packet.GenshinPacket;
|
||||
import emu.grasscutter.server.game.GameServer;
|
||||
import emu.grasscutter.server.packet.send.PacketPlayerChatNotify;
|
||||
import emu.grasscutter.server.packet.send.PacketPrivateChatNotify;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
public class ChatManager {
|
||||
static final List<Character> PREFIXES = Arrays.asList('/', '!');
|
||||
|
||||
private final GameServer server;
|
||||
|
||||
public ChatManager(GameServer server) {
|
||||
@@ -19,15 +23,15 @@ public class ChatManager {
|
||||
return server;
|
||||
}
|
||||
|
||||
public void sendPrivChat(GenshinPlayer player, int targetUid, String message) {
|
||||
public void sendPrivateMessage(GenshinPlayer player, int targetUid, String message) {
|
||||
// Sanity checks
|
||||
if (message == null || message.length() == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Check if command
|
||||
if (message.charAt(0) == '!' || message.charAt(0) == '/') {
|
||||
PlayerCommands.handle(player, message);
|
||||
if (PREFIXES.contains(message.charAt(0))) {
|
||||
CommandMap.getInstance().invoke(player, message);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -45,7 +49,7 @@ public class ChatManager {
|
||||
target.sendPacket(packet);
|
||||
}
|
||||
|
||||
public void sendPrivChat(GenshinPlayer player, int targetUid, int emote) {
|
||||
public void sendPrivateMessage(GenshinPlayer player, int targetUid, int emote) {
|
||||
// Get target
|
||||
GenshinPlayer target = getServer().getPlayerById(targetUid);
|
||||
|
||||
@@ -60,15 +64,15 @@ public class ChatManager {
|
||||
target.sendPacket(packet);
|
||||
}
|
||||
|
||||
public void sendTeamChat(GenshinPlayer player, int channel, String message) {
|
||||
public void sendTeamMessage(GenshinPlayer player, int channel, String message) {
|
||||
// Sanity checks
|
||||
if (message == null || message.length() == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Check if command
|
||||
if (message.charAt(0) == '!') {
|
||||
PlayerCommands.handle(player, message);
|
||||
if (PREFIXES.contains(message.charAt(0))) {
|
||||
CommandMap.getInstance().invoke(player, message);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -76,7 +80,7 @@ public class ChatManager {
|
||||
player.getWorld().broadcastPacket(new PacketPlayerChatNotify(player, channel, message));
|
||||
}
|
||||
|
||||
public void sendTeamChat(GenshinPlayer player, int channel, int icon) {
|
||||
public void sendTeamMessage(GenshinPlayer player, int channel, int icon) {
|
||||
// Create and send chat packet
|
||||
player.getWorld().broadcastPacket(new PacketPlayerChatNotify(player, channel, icon));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user