YOU CAN ALSO READ IT HERE : https://paste.md-5.net/jumugaboja.sql (it might be easier to read)
Hello! First of all, thanks for your patience and support during the development of this update - it's been almost two months and dozens of hours of coding.
Please read carefully the installation information and changelog related to the plugins you're using (PyrCore/GCore is for everyone). This update changes some things relating to files and database tables - I will not take responsibility for broken files or lost data because you didn't read the instructions properly ! 10 minutes of your time is not much to read this, it's important. ^^
Please create a backup of your server before installing the new version, just in case. It's always something to do.
Please shut down your server completely, replace the new .jar files, then start your server.
Since I changed my username, I also renamed this plugin. All files on disk will automatically be converted.
For MySQL users : please rename your database tables, or new empty ones will be created :
- Rename pyrcore_dataprofiles to gcore_dataprofiles
- Rename pyrcore_statistics to gcore_statistics
Quests that are currently in progress (the quests that are paused when players disconnect or the server is closed) will not be resumed automatically, because the structure of the file/database data was changed. A command was added (/questcreator importprev5quest) to import them, so the progression of your user's active quests is not lost. This command must be performed after the automatic file conversion is over and the plugin is successfully enabled.
Other than that, your files will automatically be converted, with all the new systems, options and renaming described in the changelog. No need to worry about that ! (I might have forgotten some minor options, but really the biggest is done)
No major changes were made to the files structure.
Major back-end changes and restructurations were made, about 1/3 of my total work for this update. It might look like there's "not that much" features for the time waited, however back-end improvements and code refactoring is a big part of optimizing things and simplifying my future work, so optimized plugins and faster updates. ^^
- A client-side NPC library for 1.9.0 to 1.13.2, currently offering a few features (manipulation, interaction and pathfinding) and more to come. Only used in QuestCreator currently.
- (QC #33) Option 'effects' for items in config.
- Option 'remove_after_action' for every 'item' setting.
- Major code refactoring for config loading and parsing : clearier in code and more optimized.
- Major code refactorings and a few improvements for the in-game editor, added new icons materials, slots, clearier control items, etc.
- No longer raw string format for the enchantments selection in the in-game editor, there's now an actual menu with type and level of enchants.
- (QC #23) Couldn't select an enum or material value in the in-game editor.
- Only displaying regular mobs in the entity type selector in the in-game editor.
- (QC #49) Missing GCore materials : 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) Missing GCore sounds : 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) Missing GCore material : SUGAR_CANE_BLOCK
- (BG #3) Statistic names being too long for MySQL tables.
- Sounds for IRON_GOLEM wouldn't work in 1.13.
- Client-side NPCs :
- Using the new GCore client-side NPC library, I've added a few quest objects to manipulate them.
- With this new system, the data of a NPC will be different for every player : location, equipment, status (on fire/crouched/sprinting/interact/invisible/glowing/elytra) (can be cumulated), skin, hidden/shown, name, and target distance.
- Every player will have the same data when first seeing the NPC (all npcs and default data is registered in 'npcs.yml'), but it will evolve and differ during their path through the quests of your server.
- 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.
- Adapted to the newest GCore version.
- (#10) If you challenged another player in a versus game but you already created a bet yourself, it wasn't cancelled and refunded.
- Adapted to the newest GCore version.
Please use DISCORD to get support, it's way faster ! The link is on the plugin page
This changelog contains all the changes related to this plugin. Thanks to all the community members for reporting bugs and suggesting features ! Consider leaving a nice review to the plugin if you're satisfied of my work and dedication ! <3
If you own a server running one of my plugins, I might be interested in displaying it on the plugin page. Don't hesitate to contact me by PM or on discord if you're interested !