private String formatBytes(byte[] bytes) {

		int totalWidth = (3 * 4) + 2;
		StringBuilder buf = new StringBuilder();

		for (int i = 0; i < bytes.length && i < MAX_BYTES; i++) {
			if (i != 0) {
				buf.append(' ');
			}
			int v = bytes[i] & 0xff;
			if (v < 0x10) {
				buf.append('0');
			}
			buf.append(Integer.toHexString(v));
		}
		if (bytes.length > MAX_BYTES) {
			buf.append('.');
		}

		return StringUtilities.pad(buf.toString(), ' ', -totalWidth);
	}
Required properties:
 min - minimum disassembly address or block name
 max - maximum disassembly address (not used if block name used for min)
 out - disassembly output file path

Optional:
 set.<context-reg-name>       - optional starting context value
 set.range.<context-reg-name> - optional context value over range
Ghidra/Features/Base/developer_scripts/RangeDisassemblerScript.java