Merge branch 'main' into dev-scene

This commit is contained in:
Melledy
2022-04-18 21:35:01 -07:00
parent 59c027eab9
commit cd81494b8f
22 changed files with 1335 additions and 549 deletions

View File

@@ -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() {

View File

@@ -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);

View File

@@ -229,7 +229,7 @@ public class GenshinScene {
// Godmode check
if (target instanceof EntityAvatar) {
if (((EntityAvatar) target).getPlayer().hasGodmode()) {
if (((EntityAvatar) target).getPlayer().inGodmode()) {
return;
}
}

View File

@@ -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));
}