mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2026-04-04 23:12:28 +02:00
Update to REL3.7
This commit is contained in:
@@ -6,7 +6,7 @@ import emu.grasscutter.utils.Utils;
|
||||
import java.util.Arrays;
|
||||
|
||||
public final class GameConstants {
|
||||
public static String VERSION = "3.6.0";
|
||||
public static String VERSION = "3.7.0";
|
||||
public static final boolean DEBUG = true;
|
||||
|
||||
public static final int DEFAULT_TEAMS = 4;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -152,7 +152,10 @@ public class GameSession implements GameSessionManager.KcpChannel {
|
||||
@Override
|
||||
public void handleReceive(byte[] bytes) {
|
||||
// Decrypt and turn back into a packet
|
||||
Crypto.xor(bytes, useSecretKey() ? Crypto.ENCRYPT_KEY : Crypto.DISPATCH_KEY);
|
||||
if (this.getState() != SessionState.WAITING_FOR_TOKEN)
|
||||
Crypto.xor(bytes, useSecretKey() ?
|
||||
Crypto.ENCRYPT_KEY :
|
||||
Crypto.DISPATCH_KEY);
|
||||
ByteBuf packet = Unpooled.wrappedBuffer(bytes);
|
||||
|
||||
// Log
|
||||
|
||||
@@ -64,11 +64,11 @@ public class GameSessionManager {
|
||||
|
||||
@Override
|
||||
public void handleReceive(ByteBuf buf, Ukcp kcp) {
|
||||
byte[] byteData = Utils.byteBufToArray(buf);
|
||||
var byteData = Utils.byteBufToArray(buf);
|
||||
logicThread.execute(
|
||||
() -> {
|
||||
try {
|
||||
GameSession conversation = sessions.get(kcp);
|
||||
var conversation = sessions.get(kcp);
|
||||
if (conversation != null) {
|
||||
conversation.handleReceive(byteData);
|
||||
}
|
||||
|
||||
@@ -6,19 +6,18 @@ import emu.grasscutter.net.proto.GachaWishRspOuterClass.GachaWishRsp;
|
||||
|
||||
public class PacketGachaWishRsp extends BasePacket {
|
||||
|
||||
public PacketGachaWishRsp(
|
||||
int gachaType, int scheduleId, int itemId, int progress, int maxProgress) {
|
||||
public PacketGachaWishRsp(int gachaType, int scheduleId, int itemId, int progress, int maxProgress) {
|
||||
super(PacketOpcodes.GachaWishRsp);
|
||||
|
||||
GachaWishRsp proto =
|
||||
GachaWishRsp.newBuilder()
|
||||
.setGachaType(gachaType)
|
||||
.setGachaScheduleId(scheduleId)
|
||||
.setWishItemId(itemId)
|
||||
.setWishProgress(progress)
|
||||
.setWishMaxProgress(maxProgress)
|
||||
.build();
|
||||
GachaWishRsp proto = GachaWishRsp.newBuilder()
|
||||
.setGachaType(gachaType)
|
||||
.setGachaScheduleId(scheduleId)
|
||||
.setTenCostItemId(itemId)
|
||||
.setWishProgress(progress)
|
||||
.setWishMaxProgress(maxProgress)
|
||||
.build();
|
||||
|
||||
this.setData(proto);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -13,6 +13,7 @@ public class PacketGetPlayerTokenRsp extends BasePacket {
|
||||
super(PacketOpcodes.GetPlayerTokenRsp, true);
|
||||
|
||||
this.setUseDispatchKey(true);
|
||||
this.shouldEncrypt = false;
|
||||
|
||||
GetPlayerTokenRsp p =
|
||||
GetPlayerTokenRsp.newBuilder()
|
||||
@@ -38,6 +39,7 @@ public class PacketGetPlayerTokenRsp extends BasePacket {
|
||||
super(PacketOpcodes.GetPlayerTokenRsp, true);
|
||||
|
||||
this.setUseDispatchKey(true);
|
||||
this.shouldEncrypt = false;
|
||||
|
||||
GetPlayerTokenRsp p =
|
||||
GetPlayerTokenRsp.newBuilder()
|
||||
@@ -59,6 +61,7 @@ public class PacketGetPlayerTokenRsp extends BasePacket {
|
||||
super(PacketOpcodes.GetPlayerTokenRsp, true);
|
||||
|
||||
this.setUseDispatchKey(true);
|
||||
this.shouldEncrypt = false;
|
||||
|
||||
GetPlayerTokenRsp p =
|
||||
GetPlayerTokenRsp.newBuilder()
|
||||
|
||||
@@ -12,6 +12,7 @@ import emu.grasscutter.net.proto.ItemParamOuterClass;
|
||||
import emu.grasscutter.net.proto.ShopGoodsOuterClass.ShopGoods;
|
||||
import emu.grasscutter.net.proto.ShopOuterClass.Shop;
|
||||
import emu.grasscutter.utils.Utils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
@@ -21,46 +22,33 @@ public class PacketGetShopRsp extends BasePacket {
|
||||
super(PacketOpcodes.GetShopRsp);
|
||||
|
||||
// TODO: CityReputationLevel
|
||||
Shop.Builder shop =
|
||||
Shop.newBuilder()
|
||||
.setShopType(shopType)
|
||||
.setCityId(1) // mock
|
||||
.setCityReputationLevel(10); // mock
|
||||
Shop.Builder shop = Shop.newBuilder()
|
||||
.setShopType(shopType)
|
||||
.setCityId(1) //mock
|
||||
.setCityReputationLevel(10); //mock
|
||||
|
||||
ShopSystem manager = Grasscutter.getGameServer().getShopSystem();
|
||||
if (manager.getShopData().get(shopType) != null) {
|
||||
List<ShopInfo> list = manager.getShopData().get(shopType);
|
||||
List<ShopGoods> goodsList = new ArrayList<>();
|
||||
for (ShopInfo info : list) {
|
||||
ShopGoods.Builder goods =
|
||||
ShopGoods.newBuilder()
|
||||
.setGoodsId(info.getGoodsId())
|
||||
.setGoodsItem(
|
||||
ItemParamOuterClass.ItemParam.newBuilder()
|
||||
.setItemId(info.getGoodsItem().getId())
|
||||
.setCount(info.getGoodsItem().getCount())
|
||||
.build())
|
||||
.setScoin(info.getScoin())
|
||||
.setHcoin(info.getHcoin())
|
||||
.setBuyLimit(info.getBuyLimit())
|
||||
.setBeginTime(info.getBeginTime())
|
||||
.setEndTime(info.getEndTime())
|
||||
.setMinLevel(info.getMinLevel())
|
||||
.setMaxLevel(info.getMaxLevel())
|
||||
.setMcoin(info.getMcoin());
|
||||
// These fields are DEPRECATED.
|
||||
// .setDisableType(info.getDisableType())
|
||||
// .setSecondarySheetId(info.getSecondarySheetId());
|
||||
ShopGoods.Builder goods = ShopGoods.newBuilder()
|
||||
.setGoodsId(info.getGoodsId())
|
||||
.setGoodsItem(ItemParamOuterClass.ItemParam.newBuilder().setItemId(info.getGoodsItem().getId()).setCount(info.getGoodsItem().getCount()).build())
|
||||
.setScoin(info.getScoin())
|
||||
.setHcoin(info.getHcoin())
|
||||
.setBuyLimit(info.getBuyLimit())
|
||||
.setBeginTime(info.getBeginTime())
|
||||
.setEndTime(info.getEndTime())
|
||||
.setMinLevel(info.getMinLevel())
|
||||
.setMaxLevel(info.getMaxLevel())
|
||||
.setMcoin(info.getMcoin());
|
||||
|
||||
// These fields are deprecated as of REL3.7
|
||||
// .setDisableType(info.getDisableType())
|
||||
// .setSecondarySheetId(info.getSecondarySheetId());
|
||||
if (info.getCostItemList() != null) {
|
||||
goods.addAllCostItemList(
|
||||
info.getCostItemList().stream()
|
||||
.map(
|
||||
x ->
|
||||
ItemParamOuterClass.ItemParam.newBuilder()
|
||||
.setItemId(x.getId())
|
||||
.setCount(x.getCount())
|
||||
.build())
|
||||
.collect(Collectors.toList()));
|
||||
goods.addAllCostItemList(info.getCostItemList().stream().map(x -> ItemParamOuterClass.ItemParam.newBuilder().setItemId(x.getId()).setCount(x.getCount()).build()).collect(Collectors.toList()));
|
||||
}
|
||||
if (info.getPreGoodsIdList() != null) {
|
||||
goods.addAllPreGoodsIdList(info.getPreGoodsIdList());
|
||||
|
||||
Reference in New Issue
Block a user