Migration
This guide explains how to migrate from BetonQuest 1.12.X or any BetonQuest 2.0.0 dev build to the latest BetonQuest 2.0.0 dev build. The migration must be done manually. This will not change while BQ 2.0 is in development!
Warning
Before you start migrating, you should backup your server!
Changesπ
Skip to the first version that is newer than the version that you're migrating from:
- 2.0.0-DEV-98 - RPGMenu Merge
- 2.0.0-DEV-238 - Package Structure Rework
- 2.0.0-DEV-337 - Event Scheduling Rework
- 2.0.0-DEV-450 - Package section
- 2.0.0-DEV-485 - Experience changes
- 2.0.0-DEV-538 - Smelt Objective
- 2.0.0-DEV-539 - NPC Holograms
2.0.0-DEV-98 - RPGMenu Mergeπ
All existing RPGMenu users must update their RPGMenu config file. Simply rename it from rpgmenu.config.yml
to
menuConfig.yml
.
2.0.0-DEV-238 - Package Structure Reworkπ
- Ensure your server is running on Java 17
- Move your current Quests to the folder "BetonQuest/QuestPackages"`, as quests are now loaded from there
- Rename all "main.yml" files to "package.yml"
- Quest packages can now contain nested quest packages in sub folders. You can also have any file and folder structure with any file and folder names you want. Only the "package.yml" is reserved as indicator for a quest package.
-
Therefore, the "events.yml`, "objectives.yml", "conditions.yml", "journal.yml" and "items.yml" files must be updated to the following format: Every type that was previously a separate file with a special name is now identified by a "parent-section". It's the names of the type / the name the file previously had. Let's take a look at an example for events and conditions:
Example
events.ymlmyEvent: "teleport 1;2;3;world" myOtherEvent: "point level 1"
conditions.ymlmyCondition: "location 300;200;300;world"
events.ymlevents: myEvent: "teleport 1;2;3;world" myOtherEvent: "point level 1"
conditions.ymlThis allows you to freely name the files. Also, it is no longer necessary that events, conditions etc. are in separate files. You could also put everything in a single file or use any other file structure:conditions: myCondition: "location 300;200;300;world"
anyFileName.ymlevents: myEvent: "teleport 1;2;3;world" myOtherEvent: "point level 1" conditions: myCondition: "location 300;200;300;world"
Warning
You must do this change for all types, not just events and conditions!
-
Alongside the previous change, conversations and menus must also be updated to the following format: Add an extra prefix matching their type and the file name:
Example
lisa.ymlquester: Lisa first: option1, option2 NPC_options: option1: # ...
anyFileName.ymlconversations: lisa: #(1)! quester: Lisa first: option1, option2 NPC_options: option1: # ...
- This key is now the conversation name that you must refer to when linking NPCs to conversations.
Or alternatively:
conversations.lisa: quester: Lisa first: option1, option2 NPC_options: option1: # ...
2.0.0-DEV-337 - Event Scheduling Reworkπ
-
All your static events need to be converted to the new scheduling system. The
realtime-daily
schedule makes this easy:Example
Old Syntaxstatic: '09:00': beton '11:23': some_command,command_announcement
New Syntaxschedules: betonAt09: #(1)! type: realtime-daily #(2)! time: '09:00' #(3)! events: beton #(4)! cmdAt1123: type: realtime-daily time: '11:23' events: some_command,command_announcement
-
A name for the new schedule.
Can be anything you want for organizing your schedules. -
The type schedule
realtime-daily
was created for easy updating.
It behaves just like the old static events. -
The former key is now the time value.
You still have to put it in 'quotes'. -
The former value is now the events value.
-
2.0.0-DEV-450 - Package Sectionπ
-
There is now a new section
package
for organizing package related settings. As a result of this theenabled
boolean was moved to this section. If you use theenabled
boolean you need to move it to thepackage
section.Example
Old Syntaxenabled: false
New Syntaxpackage: enabled: false
2.0.0-DEV-485 - Experience changesπ
Due to a misuse, all code regarding player experience (experience
event, condition and objective) has been changed.
It is not possible to obtain the amount of experience points a player has, only their level can be obtained.
If you used these you might have to adjust the configured values because the behaviour changed as follows:
- The
experience
objective and condition do not allow raw experience anymore. Only levels are supported from now on. - The
experience
objective, condition and event now supports decimal numbers.
For example, you can useexperience 1.5
to check for one and a half level.
You can convert raw experience points to levels, using such decimal numbers.
2.0.0-DEV-538 - Smelt Objectiveπ
The smelt
objective now requires a quest item instead of a BlockSelector.
Therefore, you now need to define the item you want to smelt in the items section.
It is recommended to use the /q item packageName.ItemName
command to save the target item from in-game. This will save the
item you currently hold in your hand to the given package with the given name.
After you did this, you need to replace the BlockSelector in the smelt
objective with the item's name.
2.0.0-DEV-539 - NPC Hologramsπ
Holograms were reworked. Mainly three things have to be changed:
- The
vector
is now above the head of the NPC by default. This was previously achieved with0;3;0
. Therefore, every hologram that has defined a vector is now three blocks higher than you want. If you have0;3;0
you can just delete the vector argument. If you have another value you need to subtract3
from the y-axis. - The
follow
boolean can now be set for each NPC Hologram, so you have to add it to each NPC Hologram. It's off by default. Don't add it to still-standing NPCs. This will save you a lot of performance. - The
check_interval
can now be set for each NPC Hologram as well. This allows for finer control over how much server resources are used.
npc_holograms:
check_interval: 100
follow: true
default:
lines:
- "Some text!"
conditions: "has_some_quest"
vector: 0;3;0
npcs:
- 0
- 22
npc_holograms:
default:
lines:
- "Some text!"
conditions: "has_some_quest"
vector: 0;0;0 #(1)!
check_interval: 100 #(2)!
follow: true #(3)!
npcs:
- 0
- 22
- You can delete this if you had
0;3;0
previously as the origin was changed. Subtract 3 from the y-axis for any other value. - You can delete this if you had the default value of
100
(or whatever you set in "config.yml"). - You can delete this if you had the default value of
false
.