• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

ammaraskar / pyCraft
97%
master: 92%

Build:
Build:
LAST BUILD BRANCH: patch-1
DEFAULT BRANCH: master
Repo Added 20 Mar 2015 10:26PM UTC
Files 38
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

LAST BUILD ON BRANCH nonmonotonic-protocol-versions
branch: nonmonotonic-protocol-versions
CHANGE BRANCH
x
Reset
  • nonmonotonic-protocol-versions
  • 1.11
  • 1.12
  • 1.12.1
  • 1.14
  • 1.14.1
  • 1.14.2
  • 1.15.1-pre
  • 1.18.1
  • dev
  • fakeauth
  • improve-packet-aux
  • issue146
  • issue70
  • master
  • meta-test
  • nbt_exploit
  • new_types
  • pylint
  • testing
  • v1.16

pending completion
519

push

travis-ci-com

joodicator
Fix: non-monotonic protocol versions are not correctly handled

After 1.16.3, Mojang started publishing snapshot, pre-release and release
candidate versions of Minecraft with protocol version numbers of the form
`(1 << 30) | n' where 'n' is a small non-negative integer increasing with each
such version; the release versions continued to use the old format. For
example, these are the last 8 published Minecraft versions as of this commit:

release           1.16.3      uses protocol version 753
pre-release       1.16.4-pre1 uses protocol version 1073741825 == (1 << 30) | 1
pre-release       1.16.4-pre2 uses protocol version 1073741826 == (1 << 30) | 2
release candidate 1.16.4-rc1  uses protocol version 1073741827 == (1 << 30) | 3
release           1.16.4      uses protocol version 754
snapshot          20w45a      uses protocol version 1073741829 == (1 << 30) | 5
snapshot          20w46a      uses protocol version 1073741830 == (1 << 30) | 6
snapshot          20w48a      uses protocol version 1073741831 == (1 << 30) | 7

This means that protocol versions no longer increase monotonically with respect
to publication history, a property that was assumed to hold in much of
pyCraft's code relating to support of multiple protocol versions. This commit
rectifies the issue by replacing any comparison of protocol versions by their
numerical value with a comparison based on their publication time.

Newly defined is the dictionary `minecraft.PROTOCOL_VERSION_INDICES', which
maps each known protocol version to its index in the protocol chronology. As
such, the bound method `minecraft.PROTOCOL_VERSION_INDICES.get` can be used as
a key function for the built-in `sorted`, `min` and `max` functions to collate
protocol versions chronologically.

Two utility functions are provided for direct comparison of protocol versions:
    `minecraft.utility.protocol_earlier` and
    `minecraft.utility.protocol_earlier_eq`.

Additionally, four methods are added to the `ConnectionCon... (continued)

621 of 687 branches covered (90.39%)

2257 of 2327 relevant lines covered (96.99%)

0.97 hits per line

Relevant lines Covered
Build:
Build:
2327 RELEVANT LINES 2257 COVERED LINES
0.97 HITS PER LINE
Source Files on nonmonotonic-protocol-versions
  • Tree
  • List 38
  • Changed 1
  • Source Changed 1
  • Coverage Changed 1
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses

Recent builds

Builds Branch Commit Type Ran Committer Via Coverage
519 nonmonotonic-protocol-versions Fix: non-monotonic protocol versions are not correctly handled After 1.16.3, Mojang started publishing snapshot, pre-release and release candidate versions of Minecraft with protocol version numbers of the form `(1 << 30) | n' where 'n' is a smal... push 02 Dec 2020 02:15PM UTC joodicator travis-ci-com pending completion  
518 nonmonotonic-protocol-versions Fix: non-monotonic protocol versions are not correctly handled After 1.16.3, Mojang started publishing snapshot, pre-release and release candidate versions of Minecraft with protocol version numbers of the form `(1 << 30) | n' where 'n' is a smal... push 02 Dec 2020 02:08PM UTC joodicator travis-ci-com pending completion  
See All Builds (509)
  • Repo on GitHub
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc