From 2c6eccad1a53011523ff45f157e6fa8c25517da1 Mon Sep 17 00:00:00 2001 From: lvxinran Date: Fri, 3 Jan 2020 15:02:54 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=92=E8=A1=8C=E6=A6=9C=EF=BC=8C=E7=89=B9?= =?UTF-8?q?=E6=9D=83=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ljsd/jieling/core/VipPrivilegeType.java | 5 +- .../com/ljsd/jieling/handler/RankHandler.java | 2 +- .../ljsd/jieling/handler/map/MapLogic.java | 2 +- .../map/behavior/FourtyTwoBehavior.java | 2 +- .../activity/LimitRandomCardActivity.java | 2 +- .../ljsd/jieling/logic/fight/CombatLogic.java | 5 +- .../jieling/logic/player/PlayerLogic.java | 71 +++++++++++++------ .../ljsd/jieling/logic/rank/RankLogic.java | 4 +- .../logic/rank/rankImpl/AbstractRank.java | 12 ++-- .../ljsd/jieling/logic/store/StoreLogic.java | 14 ++-- .../java/com/ljsd/jieling/util/ItemUtil.java | 26 +++---- .../java/config/SPrivilegeTypeConfig.java | 9 +-- 12 files changed, 95 insertions(+), 59 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/core/VipPrivilegeType.java b/serverlogic/src/main/java/com/ljsd/jieling/core/VipPrivilegeType.java index 08ec0f78c..b620f203b 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/core/VipPrivilegeType.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/core/VipPrivilegeType.java @@ -6,7 +6,7 @@ public interface VipPrivilegeType { int ADVENTURE_RUNNE_REWARD = 3;//探险符文奖励收益 int ADVENTURE_EXP_REWARD = 27;//探险符文奖励收益 - int FAST_MAP_LIMIT = 4;//快速探险的次数上限 + int FAST_MAP_LIMIT = 4;//极速探索每日免费次数 int BUY_STAIM_LIMIT = 5;//购买体力次数上限 int SECRET_RANDOM_LIMIT = 6;//秘盒抽取次数上限 @@ -21,12 +21,11 @@ public interface VipPrivilegeType { int BUY_GOLD_DAY_LIMIT = 12; //每日可购买金币的次数 - int POKEMON_NUM = 13; //异妖上阵栏位 int FREE_HERO_RANDOM = 14;//免费抽取妖灵师 int FREE_SECRET_RANDOM = 15; //解锁免费抽取秘盒 int TOWER_RESRT_NUM= 17; //每日试炼重置次数 int TIME_RANDOM_FREE = 32;//东海寻仙每日赠送招募次数 - + int FAST_BUY_COUNT = 33;//极速探索购买次数 //功能项解锁 int UNLOCK_TWO_FIGHT = 501;//解锁2倍速战斗 diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/RankHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/RankHandler.java index e91d0f451..b3b767447 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/RankHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/RankHandler.java @@ -20,6 +20,6 @@ public class RankHandler extends BaseHandler { @Override public void processWithProto(ISession iSession, PlayerInfoProto.RankRequest proto) throws Exception { // MapLogic.getInstance().getTowerRank(iSession,proto.getType(),MessageTypeProto.MessageType.GET_ONE_RANK_RESPONSE); - RankLogic.getInstance().getRank(iSession,proto.getType(),MessageTypeProto.MessageType.GET_ONE_RANK_RESPONSE); + RankLogic.getInstance().getRank(iSession,proto.getType(),proto.getActiviteId(),MessageTypeProto.MessageType.GET_ONE_RANK_RESPONSE); } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java index 37b2085bf..31548aadc 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java @@ -1083,7 +1083,7 @@ public class MapLogic { mapManager.setHighestTower(mapManager.getTower()); AbstractRank towerRank = RankContext.getRankEnum(RankEnum.TOWER_RANK.getType()); // TowerRankUtil.getRankNumber(mapManager.getTower(),(int)(mapManager.getCurrTowerTime()/1000)) - if(towerRank.getScore(mapManager.getTower(),(int)(mapManager.getCurrTowerTime()/1000))>towerRank.getScoreById(user.getId())){ + if(towerRank.getScore(mapManager.getTower(),(int)(mapManager.getCurrTowerTime()/1000))>towerRank.getScoreById(user.getId(),0)){ towerRank.addRank(user.getId(),0,mapManager.getTower(),(int)mapManager.getCurrTowerTime()/1000); // RedisUtil.getInstence().zsetAddOne(RedisKey.getKey(RedisKey.TOWER_RANK,"",false),String.valueOf(user.getId()),TowerRankUtil.getRankNumber(mapManager.getTower(),(int)(mapManager.getCurrTowerTime()/1000))); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/FourtyTwoBehavior.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/FourtyTwoBehavior.java index 4eb472ab5..5fe270db6 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/FourtyTwoBehavior.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/FourtyTwoBehavior.java @@ -44,7 +44,7 @@ public class FourtyTwoBehavior extends BaseBehavior { AbstractRank towerRank = RankContext.getRankEnum(RankEnum.TOWER_RANK.getType()); // Double zSetScore = RedisUtil.getInstence().getZSetScore(RedisKey.TOWER_RANK, "", String.valueOf(user.getId())); // TowerRankUtil.getRankNumber(mapManager.getTower(),(int)time/1000) - if(towerRank.getScore(mapManager.getTower(),(int)time/1000)>towerRank.getScoreById(user.getId())){ + if(towerRank.getScore(mapManager.getTower(),(int)time/1000)>towerRank.getScoreById(user.getId(),0)){ // String key = RedisKey.getKey(RedisKey.TOWER_RANK,"",false); // RedisUtil.getInstence().zsetAddOne(key,String.valueOf(user.getId()),TowerRankUtil.getRankNumber(mapManager.getTower(),(int)time/1000)); towerRank.addRank(user.getId(),0,mapManager.getTower(),(int)time/1000); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LimitRandomCardActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LimitRandomCardActivity.java index 62087d2bc..c21b21102 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LimitRandomCardActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LimitRandomCardActivity.java @@ -53,7 +53,7 @@ public class LimitRandomCardActivity extends AbstractActivity { return; } AbstractRank randomRank= RankContext.getRankEnum(RankEnum.RANDOM_CARD_RANK.getType()); - int scoreById = Double.valueOf(randomRank.getScoreById(((RandomCardEvent) event).getUid())).intValue(); + int scoreById = Double.valueOf(randomRank.getScoreById(((RandomCardEvent) event).getUid(),id)).intValue(); if(scoreById==-1){ scoreById=0; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/CombatLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/CombatLogic.java index 607ec1137..91b172043 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/CombatLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/CombatLogic.java @@ -26,6 +26,7 @@ import com.ljsd.jieling.logic.hero.HeroAttributeEnum; import com.ljsd.jieling.logic.hero.HeroLogic; import com.ljsd.jieling.logic.mail.MailLogic; import com.ljsd.jieling.logic.mission.GameEvent; +import com.ljsd.jieling.logic.player.PlayerLogic; import com.ljsd.jieling.logic.store.StoreLogic; import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.protocols.CommonProto; @@ -208,7 +209,9 @@ public class CombatLogic { }else{ String err =""; if(position == 0){ - err = StoreLogic.checkBuyGoodsAndUpdate(user,7,10008,1); + if(!PlayerLogic.getInstance().check(user,VipPrivilegeType.FAST_MAP_LIMIT,1)) { + err = StoreLogic.checkBuyGoodsAndUpdate(user,7,10008,1); + } }else{ err = StoreLogic.checkBuyGoodsAndUpdate(user,7,10015,1); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java index 4aca0f5c0..1c7b31c48 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java @@ -715,23 +715,43 @@ public class PlayerLogic { user.getPlayerInfoManager().setRideLevel(rideLevel+1); MessageUtil.sendMessage(session,1,messageType.getNumber(),null,true); } - public boolean check(User user,int privilageId,int updateNum){ + public boolean check(User user,int privilageTypeId,int updateNum){ Map vipInfo = user.getPlayerInfoManager().getVipInfo(); - if(privilageId == 0){ + if(privilageTypeId == 0){ return true; } - - if(!vipInfo.containsKey(privilageId)){ + List sPrivilegeTypeConfigs = SPrivilegeTypeConfig.privilegeByType.get(privilageTypeId); + List typePrivileges = new ArrayList<>(); + for(SPrivilegeTypeConfig config:sPrivilegeTypeConfigs){ + if(!vipInfo.containsKey(config.getId())){ + continue; + } + typePrivileges.add(config.getId()); + } + if(typePrivileges.isEmpty()){ return false; } - VipInfo info = vipInfo.get(privilageId); - if(info.getEffectTime()!=0&&TimeUtils.now()/1000>info.getEffectTime()){ - return false; + for(Integer privilageId:typePrivileges){ + VipInfo info = vipInfo.get(privilageId); + if(info.getEffectTime()!=0&&TimeUtils.now()/1000>info.getEffectTime()){ + continue; + } + int mCount = getMaxCountByPrivilege(user,privilageId); + if(mCount==-1){ + return true; + } + if((info.getCount()+updateNum>mCount)|| (info.getEffectTime()!=0&&TimeUtils.now()/1000>info.getEffectTime())){ + continue; + } + user.getPlayerInfoManager().updateVipPrivilage(privilageId, updateNum); + return true; } - - SPrivilegeTypeConfig sPrivilegeTypeConfig = SPrivilegeTypeConfig.getsPrivilegeTypeConfigMap().get(privilageId); + return false; + } + public int getMaxCountByPrivilege(User user,int privilegeId){ + SPrivilegeTypeConfig sPrivilegeTypeConfig = SPrivilegeTypeConfig.getsPrivilegeTypeConfigMap().get(privilegeId); Map> conditionMap = SPrivilegeTypeConfig.conditionMap.get(sPrivilegeTypeConfig.getUnlockType()); - int maxCount = 0; + int mCount = 0; int cond = 0; switch (sPrivilegeTypeConfig.getUnlockType()){ case GlobalsDef.LEVEL_UNLOCK_PRIVILEGE: @@ -744,19 +764,30 @@ public class PlayerLogic { cond = user.getPlayerInfoManager().getVipLevel(); break; } + TreeMap condition = (TreeMap)conditionMap.get(privilegeId); if(sPrivilegeTypeConfig.getUnlockType()!=GlobalsDef.RECHARGE_UNLOCK_PRIVILEGE){ - TreeMap condition = (TreeMap)conditionMap.get(privilageId); - maxCount = condition.floorEntry(cond).getValue(); + mCount = condition.floorEntry(cond).getValue(); + }else{ + mCount = condition.get(0); } - if(maxCount==-1){ - return true; + return mCount; + } + public int getMaxCountByPrivilegeType(User user ,int privilegeType){ + List sPrivilegeTypeConfigs = SPrivilegeTypeConfig.privilegeByType.get(privilegeType); + List typePrivileges = new ArrayList<>(); + for(SPrivilegeTypeConfig config:sPrivilegeTypeConfigs){ + if(!user.getPlayerInfoManager().getVipInfo().containsKey(config.getId())){ + continue; + } + typePrivileges.add(config.getId()); } - if((info.getCount()+updateNum>maxCount)|| (info.getEffectTime()!=0&&TimeUtils.now()/1000>info.getEffectTime())){ - return false; + if(typePrivileges.isEmpty()){ + return 0; } - user.getPlayerInfoManager().updateVipPrivilage(privilageId, updateNum); - return true; - - + int maxCount = 0; + for(Integer privilageId:typePrivileges){ + maxCount+=getMaxCountByPrivilege(user,privilageId); + } + return maxCount; } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/RankLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/RankLogic.java index 2860512c6..859a1744c 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/RankLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/RankLogic.java @@ -31,9 +31,9 @@ public class RankLogic { public static class Instance { public final static RankLogic instance = new RankLogic(); } - public void getRank(ISession session, int type, MessageTypeProto.MessageType messageType) throws Exception { + public void getRank(ISession session, int type, int activityId,MessageTypeProto.MessageType messageType) throws Exception { int page = 1; - PlayerInfoProto.RankResponse rankResponse= RankContext.getRankEnum(type).getRank(session.getUid(),0,1, -1); + PlayerInfoProto.RankResponse rankResponse= RankContext.getRankEnum(type).getRank(session.getUid(),activityId,1, -1); MessageUtil.sendMessage(session,1,messageType.getNumber(),rankResponse,true); } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/AbstractRank.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/AbstractRank.java index bb270c2c9..b3bf3841a 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/AbstractRank.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/AbstractRank.java @@ -49,7 +49,7 @@ public abstract class AbstractRank implements IRank { } PlayerInfoProto.RankResponse.Builder allUserResponse = getAllUserResponse(zsetreverseRangeWithScores,start); //当前用户信息 - getMyInfo(user,allUserResponse); + getMyInfo(user,activityId,allUserResponse); return allUserResponse.build(); } @@ -107,9 +107,9 @@ public abstract class AbstractRank implements IRank { builder.addRanks(everyRank); } - protected void getMyInfo(User user,PlayerInfoProto.RankResponse.Builder allUserResponse){ - int myRank= RedisUtil.getInstence().getZSetreverseRank(redisKey,"",Integer.toString(user.getId())).intValue(); - Double zSetScore = RedisUtil.getInstence().getZSetScore(redisKey, "", Integer.toString(user.getId())); + protected void getMyInfo(User user,int activityId,PlayerInfoProto.RankResponse.Builder allUserResponse){ + int myRank= RedisUtil.getInstence().getZSetreverseRank(redisKey,String.valueOf(activityId),Integer.toString(user.getId())).intValue(); + Double zSetScore = RedisUtil.getInstence().getZSetScore(redisKey, String.valueOf(activityId), Integer.toString(user.getId())); CommonProto.RankInfo towerRankInfo = CommonProto.RankInfo.newBuilder() .setRank(myRank) .setParam1(getParam1(zSetScore)) @@ -162,7 +162,7 @@ public abstract class AbstractRank implements IRank { public int getParam3(double data) { return getDataByScore(data).length>2?getDataByScore(data)[2]:0; } - public double getScoreById(int uid){ - return RedisUtil.getInstence().getZSetScore(redisKey, "", String.valueOf(uid)); + public double getScoreById(int uid,int activityId){ + return RedisUtil.getInstence().getZSetScore(redisKey, String.valueOf(activityId), String.valueOf(uid)); } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/StoreLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/StoreLogic.java index 61f0e2344..4dfb2c228 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/StoreLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/StoreLogic.java @@ -485,13 +485,13 @@ public class StoreLogic { if (!result){ throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH); } - if(relatedtoVIP == 1 && limit!=0){ - int updateValue = itemNum; - if(limit == 6){ - updateValue= sStoreConfig.getGoods()[0][1]*itemNum; - } - playerInfoManager.updateVipPrivilage(limit,updateValue); - } +// if(relatedtoVIP == 1 && limit!=0){ +// int updateValue = itemNum; +// if(limit == 6){ +// updateValue= sStoreConfig.getGoods()[0][1]*itemNum; +// } +// playerInfoManager.updateVipPrivilage(limit,updateValue); +// } itemNumMap.put(itemId,buyTimes +itemNum); storeInfo.setItemNumMap(itemNumMap); KtEventUtils.onKtEvent(user, ParamEventBean.UserStoreEvent,storeId,itemId,cost[0][0],itemNum,cost[0][1]); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java index 688a81168..f50f68714 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java @@ -23,6 +23,7 @@ import com.ljsd.jieling.logic.dao.*; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.mail.MailLogic; import com.ljsd.jieling.logic.mission.GameEvent; +import com.ljsd.jieling.logic.player.PlayerLogic; import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.protocols.CommonProto; import com.ljsd.jieling.protocols.MessageTypeProto; @@ -267,13 +268,13 @@ public class ItemUtil { } - public static void extraAddItem(User user, Map itemMap,int resson){ + public static void extraAddItem(User user, Map itemMap,int reason){ ItemManager itemManager = user.getItemManager(); for(Map.Entry item : itemMap.entrySet()){ Integer itemId = item.getKey(); Integer value = item.getValue(); SItem sItem = SItem.getsItemMap().get(itemId); - int itemNums = privilegeAdd(user, resson, sItem.getId(), value); + int itemNums = privilegeAdd(user, reason, sItem.getId(), value); Item hadItem = itemManager.getItem(itemId); int hadNums = 0; if(hadItem !=null){ @@ -1480,29 +1481,30 @@ public class ItemUtil { //特权加成收益计算 public static int privilegeAdd(User user,int reason,int itemType,int sourceNum){ - int vipLevel = user.getPlayerInfoManager().getVipLevel(); - SVipLevelConfig sVipLevelConfig = SVipLevelConfig.getsVipLevelConfigMap().get(vipLevel); - Map privilegeMap = sVipLevelConfig.getPrivilegeMap(); +// int vipLevel = user.getPlayerInfoManager().getVipLevel(); +// SVipLevelConfig sVipLevelConfig = SVipLevelConfig.getsVipLevelConfigMap().get(vipLevel); +// Map privilegeMap = sVipLevelConfig.getPrivilegeMap(); if(reason == BIReason.ADVENTURE_BASE_REWARD){ if(itemType == Global.EXP){ - sourceNum = parseTheValueByPrivilegeMap(privilegeMap,sourceNum,VipPrivilegeType.ADVENTURE_EXP_REWARD); + sourceNum = parseTheValueByPrivilegeMap(user,sourceNum,VipPrivilegeType.ADVENTURE_EXP_REWARD); return sourceNum; } - sourceNum = parseTheValueByPrivilegeMap(privilegeMap,sourceNum, VipPrivilegeType.ADVENTURE_BASE_REWARD); + sourceNum = parseTheValueByPrivilegeMap(user,sourceNum, VipPrivilegeType.ADVENTURE_BASE_REWARD); } if(reason == BIReason.ADVENTURE_BASE_REWARD || reason == BIReason.ADVENTURE_RANDOM_REWARDD ){ if(itemType == GlobalItemType.MINERAL){ - sourceNum = parseTheValueByPrivilegeMap(privilegeMap,sourceNum,VipPrivilegeType.ADVENTURE_MINERAL_REWARD); + sourceNum = parseTheValueByPrivilegeMap(user,sourceNum,VipPrivilegeType.ADVENTURE_MINERAL_REWARD); }else if(itemType == GlobalItemType.RUNNE){ - sourceNum = parseTheValueByPrivilegeMap(privilegeMap,sourceNum,VipPrivilegeType.ADVENTURE_RUNNE_REWARD); + sourceNum = parseTheValueByPrivilegeMap(user,sourceNum,VipPrivilegeType.ADVENTURE_RUNNE_REWARD); } } return sourceNum; } - private static int parseTheValueByPrivilegeMap( Map privilegeMap,int sourceNum,int privigeId){ - Integer privigeValue = privilegeMap.get(privigeId); - if(privigeValue!=null){ + private static int parseTheValueByPrivilegeMap(User user,int sourceNum,int privigeId){ + int privigeValue = PlayerLogic.getInstance().getMaxCountByPrivilegeType(user,privigeId); +// Integer privigeValue = privilegeMap.get(privigeId); + if(privigeValue!=0){ SPrivilegeTypeConfig sPrivilegeTypeConfig = SPrivilegeTypeConfig.getsPrivilegeTypeConfigMap().get(privigeId); int dataType = sPrivilegeTypeConfig.getIfFloat(); if(dataType == GlobalsDef.PERCENT_TYPE){ diff --git a/tablemanager/src/main/java/config/SPrivilegeTypeConfig.java b/tablemanager/src/main/java/config/SPrivilegeTypeConfig.java index 5e03d94f9..5b71904a8 100644 --- a/tablemanager/src/main/java/config/SPrivilegeTypeConfig.java +++ b/tablemanager/src/main/java/config/SPrivilegeTypeConfig.java @@ -3,10 +3,7 @@ package config; import manager.STableManager; import manager.Table; -import java.util.Arrays; -import java.util.HashMap; -import java.util.Map; -import java.util.TreeMap; +import java.util.*; @Table(name ="PrivilegeTypeConfig") public class SPrivilegeTypeConfig implements BaseConfig { @@ -32,12 +29,16 @@ public class SPrivilegeTypeConfig implements BaseConfig { private static Map sPrivilegeTypeConfigMap; public static Map>> conditionMap; + + public static Map> privilegeByType; @Override public void init() throws Exception { sPrivilegeTypeConfigMap = STableManager.getConfig(SPrivilegeTypeConfig.class); conditionMap = new HashMap<>(); + privilegeByType = new HashMap<>(); for (Map.Entry entry:sPrivilegeTypeConfigMap.entrySet()){ + privilegeByType.computeIfAbsent(entry.getValue().getPrivilegeType(),n->new ArrayList<>()).add(entry.getValue()); conditionMap.computeIfAbsent(entry.getValue().getUnlockType(),n->new HashMap<>()).computeIfAbsent(entry.getKey(),n->new TreeMap<>()); if(entry.getValue().getCondition()!=null){ for(int[] cond:entry.getValue().getCondition()){