Skip to content

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πŸ”—

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. Learn more in the Reference.
  • 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 types / the names the file previously had. Let's take a look at an example for events and conditions:

    Example

    events.yml
    myEvent: "teleport 1;2;3;world"
    myOtherEvent: "point level 1"
    
    conditions.yml
    myCondition: "location 300;200;300;world"
    

    events.yml
    events:
      myEvent: "teleport 1;2;3;world"
      myOtherEvent: "point level 1"
    
    conditions.yml
    conditions:
      myCondition: "location 300;200;300;world"
    
    As described in the previous paragraph, the events and conditions must not be in the same file anymore. You could also do this or use any file structure:
    anyFileName.yml
    events:
      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.yml
    quester: Lisa
    first: option1, option2
    NPC_options:
      option1:
      # ...
    
    anyFileName.yml
    conversations:
      lisa: #(1)!
        quester: Lisa
        first: option1, option2
        NPC_options:
          option1:
          # ...
    
    1. 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 Syntax
    static:
      '09:00': beton
      '11:23': some_command,command_announcement
    
    New Syntax
    schedules:
      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
    

    1. A name for the new schedule.
      Can be anything you want for organizing your schedules.

    2. The type schedule realtime-daily was created for easy updating.
      It behaves just like the old static events.

    3. The former key is now the time value.
      You still have to put it in 'quotes'.

    4. The former value is now the events value.