大家好! 首先感谢你耐心地等待这次更新 - 这次更新我用来差不多两个月的时间和数小时的时间来敲代码完成.
如果你正在使用我的插件,请仔细阅读安装信息和更新记录 . 这次更新更改了一些与文件和数据库表相关内容 - 我不会对由于你未阅读更新记录并正确操作而导致的文件损坏或数据库丢失负任何责任 ! 建议您花10分支来阅读这些重要的内容. ^^
-- 安装
请在安装新版本前备份你的服务器来以防万一.
请彻底关服,删掉旧插件,安装新插件,然后开服.
PyrCore (GCore)
因为我改了我的用户名, 所以我也改了我的插件名. 所有插件文件都会自动转化.
对于使用MySQL的用户 : 请重命名你的数据库表, 或者创建新的 :
- 重命名 pyrcore_dataprofiles 为 gcore_dataprofiles
- 重命名 pyrcore_statistics 为 gcore_statistics
QuestCreator
进行中的任务 (由于玩家离开服务器而暂停任务的功能已关闭) 将不会自动暂停, 因为插件文件/数据库 的结构发生了变化. 添加了新的指令 (/questcreator importprev5quest) 来导入文件,因此玩家的任务进度不会丢失 . 这个指令只能在自动文件转化完成并且插件正确启用后才能使用.
除此之外, 你的文件会被自动转化,所有新的内容都在更新记录内. 你不需要担心! (我可能忘记了一些小的选项, 但大多数选项都已完成)
其它插件
文件结构没有较大的变动.
-- 更新记录
已完成后端更改和代码重构, 这也是我用了三分之一的时间来完成的. 这可能看起来没有增加什么新的特性, 但是这优化了插件性能并且将简化我在未来版本更新的工作. ^^
GCore v7.0.0
添加 :
- 位于客户端的 NPC 库,用于 1.9.0 - 1.13.2, 目前提供一些特性 (操控、交互和寻路),更多特性将在未来更新. 目前只用于QuestCreator .
- (QC #33) 配置内物品选项 'effects' .
- 物品选项 'remove_after_action' .
优化 :
- 重构配置加载和解析的代码 : 优化代码.
- 重构并优化游戏内编辑器的代码,添加新的材料图标等内容.
- 不再支持编辑器内附魔选择的原始字符串,现在已有可视化菜单以供编辑.
修复 :
- (QC #23) 无法在编辑器内选择enum 或材料数值.
- 编辑器内只显示普通的怪物实体类型以供选择.
- (QC #49) 缺失的 GCore 材料 : DEAD_BRAIN_CORAL, DEAD_BRAIN_CORAL_FAN, DEAD_BRAIN_CORAL_WALL_FAN, DEAD_BUBBLE_CORAL, DEAD_BUBBLE_CORAL_FAN, DEAD_BUBBLE_CORAL_WALL_FAN, DEAD_FIRE_CORAL, DEAD_FIRE_CORAL_FAN, DEAD_FIRE_CORAL_WALL_FAN, DEAD_HORN_CORAL, DEAD_HORN_CORAL_FAN, DEAD_HORN_CORAL_WALL_FAN, DEAD_TUBE_CORAL, DEAD_TUBE_CORAL_FAN, DEAD_TUBE_CORAL_WALL_FAN, FIRE_CORAL_WALL_FAN, HORN_CORAL_WALL_FAN, TUBE_CORAL_WALL_FAN
- (QC #49) 缺失的 GCore 音效 : ITEM_BUCKET_EMPTY, ITEM_BUCKET_EMPTY_FISH, ITEM_BUCKET_EMPTY_LAVA, ITEM_BUCKET_FILL, ITEM_BUCKET_FILL_FISH, ITEM_BUCKET_FILL_LAVA, ITEM_FLINTANDSTEEL_USE, BLOCK_FIRE_EXTINGUISH
- (BG #12) 缺失的 GCore 材料 : SUGAR_CANE_BLOCK
- (BG #3) MySQL 表的数据名过长.
- IRON_GOLEM 音效在 1.13 无法正常使用.
QuestCreator v5.0.0
添加 :
- 客户端 NPC :
- 使用新的 GCore 客户端 NPC 库, 并添加了一些任务目标来操控NPC.
- 拥有这个新的系统后, 一个NPC的数据可以对每个玩家分为 : 地点、装备、状态 (着火/潜行/冲刺/交互/隐身/发光/鞘翅飞行) (可叠加), 显示/隐藏 皮肤、名称和目标距离.
- 每名玩家会在第一次看到NPC时拥有相同的数据(所有的NPC和默认数据位于'npcs.yml'), 但数据会在不同的任务路线中不同.
- There are currently basic objects to manipulate them and make the player interact with them : PLAYER_NPC_ATTACK (interacting with left click), PLAYER_NPC_INTERACT, SERVER_NPC_HIDE, SERVER_NPC_MOVE, SERVER_NPC_MOVE_WAIT, SERVER_NPC_SET_EQUIPMENT, SERVER_NPC_SET_NAME, SERVER_NPC_SET_SKIN, SERVER_NPC_SET_STATUS, SERVER_NPC_SET_TARGET_DISTANCE, SERVER_NPC_SHOW, SERVER_NPC_TELEPORT.
- I also developed an advanced pathfinding system in that library, meaning that the NPCs will travel from a point A to a point B.
- It supports heigh difference, avoids obstacles, and is quite fast to calculate (less than 500ms for "close" (let's say within 30-40 blocks) targets with not huge obstacles, and maximum 5 seconds for farther ones.
- However, it has some difficulties with finding paths to targets that are really far away if it's a complex terrain (for example mountains), so it's recommended to set some steps to your MOVE objects.
- Also, it has difficulties if you're on a specific floor of a house and you want to go down two stairs for example - please make some steps to show the NPC where the stairs are... xD
- Other than that, I tested that system a lot and it works pretty fine. You can also customize your pathfinding/navigation for every MOVE object : pathfinding step (default 1 block per one block), pathfinding speed (default if 50 checks per tick), y tolerance up/down (for jumps, so the npc can jump two blocks for example) (default 1), target distance tolerance (how close to the target the pathfinding is considered as completed) (default 1), tick per step for navigation (basically defines the walking speed of the npc) (default 2).
- More features are planned, such a health and combat system, gravity for NPCs (currently it doesn't fall if you break the block below the npc), pushing them, and more features or interactions an actual player would do.
- All objects or conditions in your files with NPC in their names will automatically be renamed with CITIZENS_NPC.
- (#28) Quest pools :
- You can now create actual daily/weekly/monthly quests.
- A quest pool is a configuration file (can be edited in-game) to define when certain quests can be started, within an interval, with many options.
- Every quest pool can have multiple time frames. A time frame can be DAILY, WEEKLY, MONTHLY, or FIXED.
- If the player connects during a time frame period, the pool will attempt to manipulate quests for him. When a quest pool has successfully manipulated quests for a player during a given period, it will not make a new manipulation attempt before the next period (so, the next day, week, or month).
- When manipulating, a pool will select a certain amount of quests in its list (randomly, or in registration order).
- For every selected quest, it will eventually stop/reset it (option), then give the player tokens to start the quest. Tokens given will replace existing ones if there are any present for the quest.
- One token allows the quest to be started once for the player. If the player has no token for the current time frame period, or if he has no data yet (not calculated), the quest will not start. However, if he has at least one token, it will be consumed and the quest will start.
- (#38, #47) Parameter '-online' for '/questcreator start' : attempt to start the quest for all online players.
- (#25) Object DIVERGE_PHYSICAL : basically the current DIVERGE object, but instead of text to click in the chat, the player can do PLAYER objects (and choose which one he wants to do). This works like a GROUP object.
- (#41) Condition GAME_TIME : require a specific IG time in the player's world.
- (#41) Condition TIME_OF_DAY : require a specific IRL time.
- (#31) Condition DAY_OF_WEEK : require a specific IRL day of the week.
- Option 'bossbar' for quest models : supports UltraBar, BossBarAPI and BarAPI.
- (#21) Option 'cooldown_only_for_role' for quest models : give the cooldown only for a specific role (LEADER/PLAYER (coop)).
- (#21) Option 'complete_only_for_role' for quest models : mark the quest as completed only for a specific role (LEADER/PLAYER (coop)).
- Option 'world_blacklist' for quest models.
- (#21) Option 'only_for_role' for quest objects : restrict the progression of specific quest objects to a specific role (LEADER/PLAYER (coop)).
- Option 'required_valid' for conditions lists (also for 'start_conditions' for quest models).
- Option 'required_not_valid' for conditions lists (also for 'start_conditions' for quest models).
- (#14) Option 'time_limit' and 'time_limit_fail_goto' for quest objects.
- Some developper events.
优化 :
- Improvements to the category system :
- The biggest problem with categories was that you had to create a new category per quest, or if you wanted a quest to have a different activator (but then it wouldn't be part of a group anymore).
- Splitted 'categories.yml' to 3 parts : '/quests/registration.yml', '/quests/activators.yml' and '/quests/groups.yml'. Moved the quests models (previously '/quests/') to '/quests/models/'.
- In 'activators.yml', you can register activators with an id, so you don't need to copy/paste all the settings if you have one NPC with all your quests.
- In 'groups.yml', you can register additionnal settings, mainly about in what order or how much concurrent quests from the same group can be active at the same time.
- In 'registration.yml', you can register a quest and specify its activators (can have multiple activators now), and its group (optional).
- Your current 'categories.yml' file will be converted and split automatically to that new system.
- Improvements to the guis system :
- Splitted 'guis.yml' to a folder with every file being one GUI : '/guis/'.
- This is way clearier for users who have complex GUIs systems.
- Every 'content' item will now have a type : 'QUEST [model id]', 'QUEST_GROUP [group id]', 'GUI [gui id]', 'GUI_GROUP [group id]', 'GUI_ACTIVE_QUESTS' or 'NONE' (for display items). If it's a GUI type, then the specified GUI will be opened on click.
- Every 'content' item can have a 'commands' option that will be performed on click.
- Added parameter 'quests', to add quests in the GUI in the available slots after all the 'content' items were added.
- Added paremeters 'show_gui_available', 'show_gui_progress', 'show_gui_cooldown', 'show_gui_completed', 'show_gui_unavailable' to display only quests with a certain state.
- A GUI can be linked to a group in the new 'groups.yml' file.
- Your current 'guis.yml' file will be converted and split automatically to that new system.
- Coop quests will not be paused if a coop player disconnects, meaning the leader of the quest can still continue the quest. However, if the leader disconnects, the quest will be paused.
- Conditions will now be taken for objects 'DIVERGE' and 'DIVERGE_PHYSICAL' if option 'take_after_action' is set to 'true'.
- PlaceholderAPI : renamed %questcreator_completions_category_<category id>% to %questcreator_completions_group_<group id>%.
- Command '/questcreator progress' can now be used on offline players.
- Command '/questcreator reset' can now be used on offline players.
- Command '/questcreator setcompleted' can now be used on offline players.
- Command '/questcreator stats' can now be used on offline players.
- Command '/questcreator stop' can now be used on offline players.
- Command '/questcreator variable' can now be used on offline players.
- Command '/questcreator menu' with param '-playerLAYER' can now be used by console.
- Command '/questcreator journal' with param '-playerLAYER' can now be used by console.
- Some activators have new/renamed settings, check the wiki to see them.
- Renamed object containing 'NPC' to 'CITIZENS_NPC'.
- Renamed activator 'NPC' to 'CITIZENS_NPC'.
- Renamed option 'restricted_worlds' to 'world_whitelist' for quest models.
- Renamed option 'block.type' to 'block_type' for blocks.
- Renamed option 'block.amount' to 'amount' for block settings.
- Renamed option 'auto_start' to 'starts_directly' for branches.
- (#21) Renamed option 'check_leader_only' to 'only_for_role' for conditions : you can now restrict conditions to a specific role (LEADER/PLAYER (coop)).
- Renamed option 'fail_goto' to 'goto_if_not_valid' for a few things.
- Renamed option 'conditions_type' to 'conditions.type' for conditions lists.
- Renamde option 'group_type' to 'objects_required' for object GROUP.
- Option 'conditions' was renamed to 'conditions.conditions' for a few things, due to other conditions list specific settings being added or renamed.
移除 :
- The compact 'sound: [SOUND_TYPE]' raw string for sounds options. It now has to be 'sound.type'.
- Option 'server_versions' for quest models.
- Option 'leader_only: true' for a few objects, replaced it by 'only_for_role: LEADER'.
- A few locale messages for objects details, it was getting too messy for not much.
修复 :
- Custom goto for groups being changed by a quest would affect all instances of this quest.
- World whitelist/blacklist will now be parsed by the quest leader and not the coop players.
- Some location settings will now be parsed by the quest leader and not the coop players.
- Only the y coordinate is taken into consideration for object PLAYER_FALL_DISTANCE.
- (#43) Object PLAYER_SNEAK would throw errors after completing it.
- (#40) Quest journal couldn't be built in 1.8.8 and lower.
- (#44) Fish type wasn't taken into consideration for object PLAYER_FISH.
- (#32) Couldn't start quests from console using the command.
- (#15) Could not interact with Citizens younger villagers. |