Skip to content

Latest commit

 

History

History
80 lines (63 loc) · 3.65 KB

Updating.md

File metadata and controls

80 lines (63 loc) · 3.65 KB

Updating

This document outlines everything that needs to be done when updating CobolCraft to a new version of Minecraft. It is intended as a checklist for project maintainers.

Documentation

  • Update the version number in README.md.

Build System

  • Update the download URL and file name in Makefile.
  • Check the version of OpenJDK in Dockerfile and GitHub Actions workflows.
  • Run make clean and make data to regenerate the data files (registries, datapack).

Code

  • Update the version numbers in the DD-VERSION copybook. "1.xy.0" is written as "1.xy".
  • Manually check the structure of every packet against the wiki. Make sure to explicitly check data types, since they change frequently (such as VarInt becoming int, or angles becoming floats).
  • Take a look at the version's changelog to find out about any other critical changes.

Testing and Debugging

  • Run make run -j $(nproc) to start the server. Fix any compilation errors, or startup errors caused by changes to the generated data files (registries, datapack).
  • Attempt to connect a Minecraft client to the server.
  • Repeat until neither the client nor server crash, and the client connects successfully:
    • Check the server console and client log for errors.
    • Insert delays or comment out code to isolate the issue.
  • Connect a second client. Launchers such as Prism Launcher make it possible to run multiple instances.
  • Verify that all gameplay features still work as expected (see the list below).

Gameplay Features

The following list of features should be tested after updating to a new version of Minecraft. Where applicable, also verify what other players see when you perform an action, and log out and back in to rule out synchronization issues (since the client predicts many actions even if the server has not confirmed them).

  • movement (walking, sprinting, sneaking, flying; head rotation)
  • arm swing animation
  • block breaking and placing (changes blocks, plays effect and sound, spawns item entities)
  • block interaction (right-clicking, e.g., to open doors) - see src/blocks/ for interesting blocks
  • item interaction (such as water bucket) - see src/items/ for interesting items
  • player list (shown when pressing Tab)
  • client-initiated disconnect (player entity should disappear, and player should be removed from the player list)
  • server-initiated disconnect (e.g., due to the whitelist, or when the server is stopped)
  • chat
  • commands (as many variants as possible)
  • command autocomplete
  • gamemode switcher (F3 + F4)
  • dying and respawning
  • chunk loading and unloading (e.g., by flying away from spawn)
  • survival inventory management
  • switching hotbar items, adding/removing armor, changing offhand item (should be visible to other players)
  • picking blocks (middle-click)
  • 2x2 and 3x3 crafting
  • dropping and picking up items
  • world time (day/night cycle)
  • server tick time on debug screen (F3 + 2)

Save Files

  • Verify that CobolCraft can load and save worlds (region files and player data) for all of the following:
    • a world created by the previous CobolCraft version
    • a world created by the new Minecraft version
    • a world newly generated by the new CobolCraft version
  • Check for issues such as:
    • crashes
    • missing chunks
    • missing or incorrect blocks, tile entities, or entities
    • wrong biome data
    • inventory corruption (item NBT data such as enchantments, items in wrong slots)

It is not required that the official server can load world data written by CobolCraft.

Tips and Tricks

It can be helpful to look at past version update commits to see what changes were made. This list is not exhaustive - use your best judgment. Good luck!