Merge remote-tracking branch 'origin/unstable' into unstable

# Conflicts:
#	src/main/java/emu/grasscutter/game/entity/EntityWeapon.java
This commit is contained in:
KingRainbow44
2023-05-31 19:56:14 -04:00
8 changed files with 38 additions and 27 deletions

View File

@@ -1,5 +1,8 @@
package emu.grasscutter.auth; package emu.grasscutter.auth;
import static emu.grasscutter.config.Configuration.ACCOUNT;
import static emu.grasscutter.utils.lang.Language.translate;
import at.favre.lib.crypto.bcrypt.BCrypt; import at.favre.lib.crypto.bcrypt.BCrypt;
import emu.grasscutter.Grasscutter; import emu.grasscutter.Grasscutter;
import emu.grasscutter.Grasscutter.ServerRunMode; import emu.grasscutter.Grasscutter.ServerRunMode;
@@ -10,16 +13,12 @@ import emu.grasscutter.server.dispatch.*;
import emu.grasscutter.server.http.objects.*; import emu.grasscutter.server.http.objects.*;
import emu.grasscutter.utils.*; import emu.grasscutter.utils.*;
import io.javalin.http.ContentType; import io.javalin.http.ContentType;
import javax.crypto.Cipher;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.security.KeyFactory; import java.security.KeyFactory;
import java.security.interfaces.RSAPrivateKey; import java.security.interfaces.RSAPrivateKey;
import java.security.spec.PKCS8EncodedKeySpec; import java.security.spec.PKCS8EncodedKeySpec;
import java.util.concurrent.*; import java.util.concurrent.*;
import javax.crypto.Cipher;
import static emu.grasscutter.config.Configuration.ACCOUNT;
import static emu.grasscutter.utils.lang.Language.translate;
/** A class containing default authenticators. */ /** A class containing default authenticators. */
public final class DefaultAuthenticators { public final class DefaultAuthenticators {

View File

@@ -4,9 +4,8 @@ import emu.grasscutter.data.excels.ProudSkillData;
import emu.grasscutter.game.ability.Ability; import emu.grasscutter.game.ability.Ability;
import it.unimi.dsi.fastutil.floats.FloatArrayList; import it.unimi.dsi.fastutil.floats.FloatArrayList;
import it.unimi.dsi.fastutil.objects.*; import it.unimi.dsi.fastutil.objects.*;
import lombok.*;
import java.util.*; import java.util.*;
import lombok.*;
@Getter @Getter
public class DynamicFloat { public class DynamicFloat {

View File

@@ -17,11 +17,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 {

View File

@@ -32,7 +32,7 @@ public class ActionSetGlobalValueToOverrideMap extends AbilityActionHandler {
entity.getGlobalAbilityValues().put(globalValueKey, globalValue); entity.getGlobalAbilityValues().put(globalValueKey, globalValue);
//TODO: ChangeServerGlobalValueNotify // TODO: ChangeServerGlobalValueNotify
return true; return true;
} }

View File

@@ -463,11 +463,16 @@ public class Avatar {
this.getEquips().put(itemEquipType.getValue(), item); this.getEquips().put(itemEquipType.getValue(), item);
if (itemEquipType == EquipType.EQUIP_WEAPON && getPlayer().getWorld() != null) { if (itemEquipType == EquipType.EQUIP_WEAPON && getPlayer().getWorld() != null) {
if (!(item.getWeaponEntity() != null && item.getWeaponEntity().getScene() == getPlayer().getScene())) { if (!(item.getWeaponEntity() != null
item.setWeaponEntity(new EntityWeapon(this.getPlayer().getScene(), item.getItemData().getGadgetId())); && item.getWeaponEntity().getScene() == getPlayer().getScene())) {
this.getPlayer().getScene().getWeaponEntities().put(item.getWeaponEntity().getId(), item.getWeaponEntity()); item.setWeaponEntity(
new EntityWeapon(this.getPlayer().getScene(), item.getItemData().getGadgetId()));
this.getPlayer()
.getScene()
.getWeaponEntities()
.put(item.getWeaponEntity().getId(), item.getWeaponEntity());
} }
//item.setWeaponEntityId(this.getPlayer().getWorld().getNextEntityId(EntityIdType.WEAPON)); // item.setWeaponEntityId(this.getPlayer().getWorld().getNextEntityId(EntityIdType.WEAPON));
} }
item.setEquipCharacter(this.getAvatarId()); item.setEquipCharacter(this.getAvatarId());
@@ -1262,9 +1267,14 @@ public class Avatar {
item.setEquipCharacter(this.getAvatarId()); item.setEquipCharacter(this.getAvatarId());
item.setOwner(player); item.setOwner(player);
if (item.getItemData().getEquipType() == EquipType.EQUIP_WEAPON) { if (item.getItemData().getEquipType() == EquipType.EQUIP_WEAPON) {
if (!(item.getWeaponEntity() != null && item.getWeaponEntity().getScene() == player.getScene())) { if (!(item.getWeaponEntity() != null
item.setWeaponEntity(new EntityWeapon(player.getScene(), item.getItemData().getGadgetId())); && item.getWeaponEntity().getScene() == player.getScene())) {
player.getScene().getWeaponEntities().put(item.getWeaponEntity().getId(), item.getWeaponEntity()); item.setWeaponEntity(
new EntityWeapon(player.getScene(), item.getItemData().getGadgetId()));
player
.getScene()
.getWeaponEntities()
.put(item.getWeaponEntity().getId(), item.getWeaponEntity());
} }
player.sendPacket(new PacketAvatarEquipChangeNotify(this, item)); player.sendPacket(new PacketAvatarEquipChangeNotify(this, item));

View File

@@ -64,7 +64,8 @@ public class EntityAvatar extends GameEntity {
var weapon = this.getAvatar().getWeapon(); var weapon = this.getAvatar().getWeapon();
if (weapon != null) { if (weapon != null) {
if (!(weapon.getWeaponEntity() != null && weapon.getWeaponEntity().getScene() == scene)) { if (!(weapon.getWeaponEntity() != null && weapon.getWeaponEntity().getScene() == scene)) {
weapon.setWeaponEntity(new EntityWeapon(this.getPlayer().getScene(), weapon.getItemData().getGadgetId())); weapon.setWeaponEntity(
new EntityWeapon(this.getPlayer().getScene(), weapon.getItemData().getGadgetId()));
scene.getWeaponEntities().put(weapon.getWeaponEntity().getId(), weapon.getWeaponEntity()); scene.getWeaponEntities().put(weapon.getWeaponEntity().getId(), weapon.getWeaponEntity());
} }
} }

View File

@@ -276,13 +276,14 @@ public class GameItem {
} }
public SceneWeaponInfo createSceneWeaponInfo() { public SceneWeaponInfo createSceneWeaponInfo() {
var weaponInfo = SceneWeaponInfo.newBuilder() var weaponInfo =
.setEntityId(this.getWeaponEntity() != null ? this.getWeaponEntity().getId() : 0) SceneWeaponInfo.newBuilder()
.setItemId(this.getItemId()) .setEntityId(this.getWeaponEntity() != null ? this.getWeaponEntity().getId() : 0)
.setGuid(this.getGuid()) .setItemId(this.getItemId())
.setLevel(this.getLevel()) .setGuid(this.getGuid())
.setGadgetId(this.getItemData().getGadgetId()) .setLevel(this.getLevel())
.setAbilityInfo(AbilitySyncStateInfo.newBuilder().setIsInited(getAffixes().size() > 0)); .setGadgetId(this.getItemData().getGadgetId())
.setAbilityInfo(AbilitySyncStateInfo.newBuilder().setIsInited(getAffixes().size() > 0));
if (this.getAffixes() != null && this.getAffixes().size() > 0) { if (this.getAffixes() != null && this.getAffixes().size() > 0) {
for (int affix : this.getAffixes()) { for (int affix : this.getAffixes()) {

View File

@@ -800,7 +800,9 @@ public final class Scene {
for (GameEntity entity : this.getEntities().values()) { for (GameEntity entity : this.getEntities().values()) {
var spawnEntry = entity.getSpawnEntry(); var spawnEntry = entity.getSpawnEntry();
if (spawnEntry != null && !(entity instanceof EntityWeapon) && !visible.contains(spawnEntry)) { if (spawnEntry != null
&& !(entity instanceof EntityWeapon)
&& !visible.contains(spawnEntry)) {
toRemove.add(entity); toRemove.add(entity);
spawnedEntities.remove(spawnEntry); spawnedEntities.remove(spawnEntry);
} }