mirror of
https://github.com/Melledy/Grasscutter.git
synced 2024-11-25 22:06:29 +00:00
3.1 Support (#1808)
* Update 3.0 protos * Update classes to match protos * Fix RegionHandler versions * 3.0 Opcodes * Fixed Gadget Spawning Original Commit Message: fixed gadget spawning ty MJDerp Gitea Author: yh0Nathan Co-authored-by: yh0Nathan <yhonathancaleb@gmail.com> * Make PointData compatible with alternative PointData Original Commit Message: Make PointData compatible with windied scene points. Gitea Author: GanyusLeftHorn Co-authored-by: GanyusLeftHorn <1244229+GanyusLeftHorn@users.noreply.github.com> * Add scene tag for Vanarana. Original Commit Message: Add scene tag for Vanarana. Gitea Author: GanyusLeftHorn Co-authored-by: GanyusLeftHorn <1244229+GanyusLeftHorn@users.noreply.github.com> * Add Sumeru expeditions. Original Commit Message: Add Sumeru expeditions. Gitea Author: GanyusLeftHorn Co-authored-by: GanyusLeftHorn <1244229+GanyusLeftHorn@users.noreply.github.com> * Update game version to 3.0.0 * versionFix must be >= 50 not == 50 in RegionHandler * Add new 3.0 Reliquary and SkillParticleGeneration data Original Commit Message: Repair 3.0 added Reliquary 3-in-1 on the crafting table. Add skill particle generation info for Tighnari,Collei and Dori Gitea Author: Roly * Actually fix RegionHandler * Remove asset names from json and comments * Add scene areas for Sumeru desert to /prop um * Added New MaterialType * Change version to 3.1.0 * funny welcome message back * Fix pyramid skill issue. * Fix pyramid and event scene tags without ugly bruteforce. * Remove backrooms chat welcome message. * Incorporate suggestions. * RoomSceneId and empty list checking. Co-authored-by: Benj <benjamin7006@gmail.com> Co-authored-by: yh0Nathan <yhonathancaleb@gmail.com> Co-authored-by: Kokoboy <anushkumar222001@gmail.com> Co-authored-by: nitro <31241699+nitrog0d@users.noreply.github.com> Co-authored-by: Vexeone <vexeone@gmail.com>
This commit is contained in:
parent
4154229722
commit
5ffc07cf59
@ -6,7 +6,7 @@ import emu.grasscutter.utils.Position;
|
|||||||
import emu.grasscutter.utils.Utils;
|
import emu.grasscutter.utils.Utils;
|
||||||
|
|
||||||
public final class GameConstants {
|
public final class GameConstants {
|
||||||
public static String VERSION = "3.0.0";
|
public static String VERSION = "3.1.0";
|
||||||
|
|
||||||
public static final int DEFAULT_TEAMS = 4;
|
public static final int DEFAULT_TEAMS = 4;
|
||||||
public static final int MAX_TEAMS = 10;
|
public static final int MAX_TEAMS = 10;
|
||||||
|
@ -231,7 +231,7 @@ public final class SetPropCommand implements CommandHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// List of map areas. Unfortunately, there is no readily available source for them in excels or bins.
|
// List of map areas. Unfortunately, there is no readily available source for them in excels or bins.
|
||||||
final static private List<Integer> sceneAreas = List.of(1,2,3,4,5,6,7,8,9,10,11,12,13,14,17,18,19,20,21,22,23,24,25,29,100,101,102,103,200,210,300,400,401,402,403);
|
final static private List<Integer> sceneAreas = List.of(1,2,3,4,5,6,7,8,9,10,11,12,13,14,17,18,19,20,21,22,23,24,25,26,27,28,29,100,101,102,103,200,210,300,400,401,402,403);
|
||||||
private boolean unlockMap(Player targetPlayer) {
|
private boolean unlockMap(Player targetPlayer) {
|
||||||
// Unlock.
|
// Unlock.
|
||||||
GameData.getScenePointsPerScene().forEach((sceneId, scenePoints) -> {
|
GameData.getScenePointsPerScene().forEach((sceneId, scenePoints) -> {
|
||||||
|
@ -75,7 +75,8 @@ public class ItemData extends GameResource {
|
|||||||
private int comfort;
|
private int comfort;
|
||||||
private List<Integer> furnType;
|
private List<Integer> furnType;
|
||||||
private List<Integer> furnitureGadgetID;
|
private List<Integer> furnitureGadgetID;
|
||||||
@SerializedName(value="OHIANNAEEAK", alternate={"DANFGGLKLNO", "JFDLJGDFIGL"})
|
|
||||||
|
@SerializedName(value="roomSceneId", alternate={"DANFGGLKLNO", "JFDLJGDFIGL", "OHIANNAEEAK"})
|
||||||
private int roomSceneId;
|
private int roomSceneId;
|
||||||
|
|
||||||
// Custom
|
// Custom
|
||||||
|
@ -46,7 +46,9 @@ public enum MaterialType {
|
|||||||
MATERIAL_SPICE_FOOD (37),
|
MATERIAL_SPICE_FOOD (37),
|
||||||
MATERIAL_ACTIVITY_ROBOT (38),
|
MATERIAL_ACTIVITY_ROBOT (38),
|
||||||
MATERIAL_ACTIVITY_GEAR (39),
|
MATERIAL_ACTIVITY_GEAR (39),
|
||||||
MATERIAL_ACTIVITY_JIGSAW (40);
|
MATERIAL_ACTIVITY_JIGSAW (40),
|
||||||
|
MATERIAL_ARANARA (41),
|
||||||
|
MATERIAL_DESHRET_MANUAL (46);
|
||||||
|
|
||||||
private final int value;
|
private final int value;
|
||||||
private static final Int2ObjectMap<MaterialType> map = new Int2ObjectOpenHashMap<>();
|
private static final Int2ObjectMap<MaterialType> map = new Int2ObjectOpenHashMap<>();
|
||||||
|
@ -85,6 +85,10 @@ public class WorldDataSystem extends BaseGameSystem {
|
|||||||
return level;
|
return level;
|
||||||
}
|
}
|
||||||
private InvestigationMonsterOuterClass.InvestigationMonster getInvestigationMonster(Player player, InvestigationMonsterData imd) {
|
private InvestigationMonsterOuterClass.InvestigationMonster getInvestigationMonster(Player player, InvestigationMonsterData imd) {
|
||||||
|
if(imd.getGroupIdList().isEmpty() || imd.getMonsterIdList().isEmpty()){
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
var groupId = imd.getGroupIdList().get(0);
|
var groupId = imd.getGroupIdList().get(0);
|
||||||
var monsterId = imd.getMonsterIdList().get(0);
|
var monsterId = imd.getMonsterIdList().get(0);
|
||||||
var sceneId = imd.getCityData().getSceneId();
|
var sceneId = imd.getCityData().getSceneId();
|
||||||
|
@ -19,7 +19,7 @@ public class PacketPlayerEnterSceneNotify extends BasePacket {
|
|||||||
player.setSceneLoadState(SceneLoadState.LOADING);
|
player.setSceneLoadState(SceneLoadState.LOADING);
|
||||||
player.setEnterSceneToken(Utils.randomRange(1000, 99999));
|
player.setEnterSceneToken(Utils.randomRange(1000, 99999));
|
||||||
|
|
||||||
PlayerEnterSceneNotify proto = PlayerEnterSceneNotify.newBuilder()
|
PlayerEnterSceneNotify.Builder proto = PlayerEnterSceneNotify.newBuilder()
|
||||||
.setSceneId(player.getSceneId())
|
.setSceneId(player.getSceneId())
|
||||||
.setPos(player.getPosition().toProto())
|
.setPos(player.getPosition().toProto())
|
||||||
.setSceneBeginTime(System.currentTimeMillis())
|
.setSceneBeginTime(System.currentTimeMillis())
|
||||||
@ -30,8 +30,7 @@ public class PacketPlayerEnterSceneNotify extends BasePacket {
|
|||||||
.setEnterReason(EnterReason.Login.getValue())
|
.setEnterReason(EnterReason.Login.getValue())
|
||||||
.setIsFirstLoginEnterScene(player.isFirstLoginEnterScene())
|
.setIsFirstLoginEnterScene(player.isFirstLoginEnterScene())
|
||||||
.setWorldType(1)
|
.setWorldType(1)
|
||||||
.setSceneTransaction("3-" + player.getUid() + "-" + (int) (System.currentTimeMillis() / 1000) + "-" + 18402)
|
.setSceneTransaction("3-" + player.getUid() + "-" + (int) (System.currentTimeMillis() / 1000) + "-" + 18402);
|
||||||
.build();
|
|
||||||
|
|
||||||
this.setData(proto);
|
this.setData(proto);
|
||||||
}
|
}
|
||||||
@ -61,10 +60,6 @@ public class PacketPlayerEnterSceneNotify extends BasePacket {
|
|||||||
.setWorldType(1)
|
.setWorldType(1)
|
||||||
.setSceneTransaction(newScene + "-" + target.getUid() + "-" + (int) (System.currentTimeMillis() / 1000) + "-" + 18402);
|
.setSceneTransaction(newScene + "-" + target.getUid() + "-" + (int) (System.currentTimeMillis() / 1000) + "-" + 18402);
|
||||||
|
|
||||||
for (int i = 0; i < 3000; i++) {
|
this.setData(proto);
|
||||||
proto.addSceneTagIdList(i);
|
|
||||||
}
|
|
||||||
|
|
||||||
this.setData(proto.build());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,15 +1,12 @@
|
|||||||
package emu.grasscutter.server.packet.send;
|
package emu.grasscutter.server.packet.send;
|
||||||
|
|
||||||
import emu.grasscutter.net.packet.BasePacket;
|
|
||||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
|
||||||
import emu.grasscutter.net.proto.PlayerWorldSceneInfoListNotifyOuterClass.PlayerWorldSceneInfoListNotify;
|
|
||||||
import emu.grasscutter.net.proto.PlayerWorldSceneInfoOuterClass;
|
|
||||||
import emu.grasscutter.net.proto.SceneUnlockInfoOuterClass.SceneUnlockInfo;
|
|
||||||
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import java.util.stream.IntStream;
|
import java.util.stream.IntStream;
|
||||||
|
|
||||||
import static emu.grasscutter.net.proto.PlayerWorldSceneInfoOuterClass.*;
|
import emu.grasscutter.net.packet.BasePacket;
|
||||||
|
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||||
|
import emu.grasscutter.net.proto.PlayerWorldSceneInfoListNotifyOuterClass.PlayerWorldSceneInfoListNotify;
|
||||||
|
import emu.grasscutter.net.proto.PlayerWorldSceneInfoOuterClass.PlayerWorldSceneInfo;
|
||||||
|
|
||||||
public class PacketPlayerWorldSceneInfoListNotify extends BasePacket {
|
public class PacketPlayerWorldSceneInfoListNotify extends BasePacket {
|
||||||
|
|
||||||
@ -27,14 +24,26 @@ public class PacketPlayerWorldSceneInfoListNotify extends BasePacket {
|
|||||||
PlayerWorldSceneInfo.newBuilder()
|
PlayerWorldSceneInfo.newBuilder()
|
||||||
.setSceneId(3)
|
.setSceneId(3)
|
||||||
.setIsLocked(false)
|
.setIsLocked(false)
|
||||||
.addSceneTagIdList(102)
|
.addSceneTagIdList(102) // Jade chamber
|
||||||
.addSceneTagIdList(113)
|
.addSceneTagIdList(113)
|
||||||
.addSceneTagIdList(117)
|
.addSceneTagIdList(117)
|
||||||
.addSceneTagIdList(1093)
|
|
||||||
//.addSceneTagIdList(1094)
|
// Vanarana (Sumeru tree)
|
||||||
//.addSceneTagIdList(1095)
|
.addSceneTagIdList(1093) // Vana_real
|
||||||
//.addSceneTagIdList(1096)
|
// .addSceneTagIdList(1094) // Vana_dream
|
||||||
//.addAllSceneTagIdList(IntStream.range(1000, 2000).boxed().collect(Collectors.toList()))
|
// .addSceneTagIdList(1095) // Vana_first
|
||||||
|
// .addSceneTagIdList(1096) // Vana_festival
|
||||||
|
|
||||||
|
// 3.1 event
|
||||||
|
.addSceneTagIdList(152)
|
||||||
|
.addSceneTagIdList(153)
|
||||||
|
|
||||||
|
// Pyramid
|
||||||
|
.addSceneTagIdList(1164) // Arena (XMSM_CWLTop)
|
||||||
|
.addSceneTagIdList(1166) // Pyramid (CWL_Trans_02)
|
||||||
|
|
||||||
|
// Brute force
|
||||||
|
//.addAllSceneTagIdList(IntStream.range(1150, 1250).boxed().toList())
|
||||||
.build()
|
.build()
|
||||||
)
|
)
|
||||||
.addInfoList(
|
.addInfoList(
|
||||||
@ -63,18 +72,15 @@ public class PacketPlayerWorldSceneInfoListNotify extends BasePacket {
|
|||||||
.setSceneId(7)
|
.setSceneId(7)
|
||||||
.setIsLocked(false)
|
.setIsLocked(false)
|
||||||
.build()
|
.build()
|
||||||
|
)
|
||||||
|
.addInfoList(
|
||||||
|
PlayerWorldSceneInfo.newBuilder()
|
||||||
|
.setSceneId(9)
|
||||||
|
.setIsLocked(false)
|
||||||
|
.addAllSceneTagIdList(IntStream.range(0, 3000).boxed().toList())
|
||||||
|
.build()
|
||||||
);
|
);
|
||||||
|
|
||||||
var gaa = PlayerWorldSceneInfo.newBuilder()
|
|
||||||
.setSceneId(9)
|
|
||||||
.setIsLocked(false);
|
|
||||||
|
|
||||||
for (int i = 0; i < 3000; i++) {
|
|
||||||
gaa.addSceneTagIdList(i);
|
|
||||||
}
|
|
||||||
|
|
||||||
proto.addInfoList(gaa);
|
|
||||||
|
|
||||||
this.setData(proto);
|
this.setData(proto);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user