mojira.dev

BugTracker_

Assigned

No issues.

Reported

View all
MC-306706 The game hangs/freezes upon losing focus Fixed MC-306463 Game crashes when mobs go below the world Duplicate MC-306327 The chat restriction warning ignores the Chat Width option Fixed MC-271348 Shulker bullets can go through the world border. Duplicate MC-271329 Block outline disappears after pushing block next/outside world border using piston Duplicate MC-271132 Can glitch through any block using lava and water. Invalid MC-271059 Items can be thrown outside world border through the invisible world border but cannot be thrown through the world border Works As Intended MC-271052 Mobs can go through invisible/world border when summoned. Works As Intended MC-271051 Cannot take damage outside world border in survival mode. Works As Intended MC-271050 Trident can go through the invisible border outside world border Duplicate

Comments

Could you please provide a screenshot showcasing the issue? Additionally, make sure you have no resource packs enabled.

Based on the attached screenshot your game seems to be modified, please note modified versions are not supported here.

The attached video says otherwise, could you please try disabling all mods and resource packs and see if the issue still occurs?

a few seconds ago, I found a weird bug on Minecraft 1.20.1 (I was on optifine).

Please note that modified versions are not supported here.

This is invalid, please note that outdated versions are not supported here.

The previous attached datapack did not display the action bar/title, fixed datapack:

[media]




Can confirm in 1.21.11, datapack:

[media]

How to Reproduce:

  • Run the following command:

    /give @s minecraft:bow[minecraft:custom_data={'xclib:run_command':{inventory_change:{enable:true,command:"say 3"}}}]
  • Drop the given bow, observe how no title appears and no sound plays.



Minecraft 1.21.1
NeoForge 21.1.197

Please note that modified versions are not supported here. This also describes the same issue as MC-249414 which has been fixed in 25w34a.

This is intended, the updated command is now:

/gamerule minecraft:fire_spread_radius_around_player 0

Can confirm in 1.21.11 as well.

I can confirm this in 1.21.11 as well. However, it seems like you’ve created the same bug report twice. Therefore, this ticket should be closed as a duplicate of MC-186068 . MC-186068 can then be reopened.

Can confirm:

[media: Minecraft Screenshot 2026.03.15 - 18.44.44.17.png]

How to Reproduce:

  • Make sure you have Python installed

  • Save this following script as a .py file:

    import socket
    import json
    
    def encode_varint(value):
        result = bytearray()
        while True:
            byte = value & 0x7F
            value >>= 7
            if value != 0:
                byte |= 0x80
            result.append(byte)
            if value == 0:
                break
        return bytes(result)
    
    def decode_varint(data, pos=0):
        result = 0
        shift = 0
        while pos < len(data):
            byte = data[pos]
            pos += 1
            result |= (byte & 0x7F) << shift
            shift += 7
            if not (byte & 0x80):
                return result, pos
        raise ValueError("Ran out of data reading VarInt")
    
    def encode_string(text):
        encoded = text.encode('utf-8')
        return encode_varint(len(encoded)) + encoded
    
    def build_packet(packet_id, data=b''):
        id_bytes = encode_varint(packet_id)
        content = id_bytes + data
        return encode_varint(len(content)) + content
    
    def recv_exact(sock, n):
        data = b''
        while len(data) < n:
            chunk = sock.recv(n - len(data))
            if not chunk:
                raise ConnectionError("Client disconnected early")
            data += chunk
        return data
    
    def recv_packet(sock):
        length_bytes = bytearray()
        while True:
            byte = recv_exact(sock, 1)[0]
            length_bytes.append(byte)
            if not (byte & 0x80):
                break
            if len(length_bytes) >= 5:
                raise ValueError("VarInt too long")
        length, _ = decode_varint(bytes(length_bytes))
        content = recv_exact(sock, length)
        packet_id, offset = decode_varint(content)
        payload = content[offset:]
        return packet_id, payload
    
    STATUS_JSON = {
        "description": [
            {"player": {"name": "alex"}},
            {"sprite": "block/stone"}
        ],
        "players": {"max": 20, "online": 0},
        "version": {"name": "26.1 Pre-Release 2", "protocol": 1073742123},
        "enforcesSecureChat": True
    }
    
    def handle_client(conn, addr):
        print(f"\n[+] Client connected from {addr}")
        try:
            packet_id, payload = recv_packet(conn)
            if packet_id != 0x00:
                return
            pos = 0
            protocol_ver, pos = decode_varint(payload, pos)
            addr_len, pos = decode_varint(payload, pos)
            server_addr = payload[pos:pos + addr_len].decode('utf-8')
            pos += addr_len
            server_port = int.from_bytes(payload[pos:pos+2], 'big')
            pos += 2
            next_state, pos = decode_varint(payload, pos)
            if next_state != 1:
                return
            packet_id, _ = recv_packet(conn)
            json_str = json.dumps(STATUS_JSON)
            response_packet = build_packet(0x00, encode_string(json_str))
            conn.sendall(response_packet)
            print(f"    Payload sent: {json_str}")
            try:
                packet_id, ping_payload = recv_packet(conn)
                if packet_id == 0x01:
                    conn.sendall(build_packet(0x01, ping_payload))
            except Exception:
                pass
        except Exception as e:
            print(f"    Error: {e}")
        finally:
            conn.close()
            print(f"[-] Client disconnected.")
    
    def main():
        server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        server.bind(('0.0.0.0', 25565))
        server.listen(5)
        print("Mock server running on port 25565. Add 127.0.0.1 in Minecraft.")
        print("Press Ctrl+C to stop.")
        try:
            while True:
                conn, addr = server.accept()
                handle_client(conn, addr)
        except KeyboardInterrupt:
            print("\nStopped.")
        finally:
            server.close()
    
    if __name__ == '__main__':
        main()
  • Open Command Prompt or Powershell and run the .py file: python _.py

  • Launch Minecraft Java Edition 26.1 Pre Release 2

  • Go to Multiplayer and add the following server address: 127.0.0.1

  • Click done and observe the MOTD displayed under the server name in the list.


Expected Result:

  • {"player": {"name": "alex"}} should render as fallback text ([alex]), as player objects are no longer permitted in Motd’s

  • {"sprite": "block/stone"} should render as a visible block sprite icon.

Observed Result:

  • {"player": {"name": "alex"}} renders as a player head sprite, it is not being blocked as the changelog states it should be

  • {"sprite": "block/stone"} renders as the fallback text [block/stone], the sprite is not rendering.

I was unable to confirm this as of 1.21.11:

  • The method downloadAndSelectResourcePack no longer exists. The resource pack system now uses a CompletableFuture based asynchronous architecture.

  • The string "Pack application failed" is gone. The closest equivalent code is:

public CompletableFuture<Void> b(final UUID $$0) {
    final CompletableFuture<Void> $$1 = new CompletableFuture<Void>();
    @Override
    public void a(UUID $$02, ioo.a $$12) {
        if ($$0.equals($$02)) {
            iom.this.m = $$2;
            if ($$12 == ioo.a.b) {
                $$1.complete(null);
            } else {
                $$1.completeExceptionally(new IllegalStateException(
                    "Failed to apply pack " + String.valueOf($$02) + 
                    ", reason: " + String.valueOf((Object)$$12)));
            }
        }
        $$2.a($$02, $$12);
    }
}

This may’ve been resolved due to the complete architectural rewrite of the resource pack download/apply system.

This is still an issue as of 1.21.11.


Steps to Reproduce:

  • Extract the 1.21.11 client JAR.

  • Open assets/minecraft/shaders/core/position_color.fsh.

  • Observe that vertex color is unconditionally multiplied by ColorModulator on line 14.


Code Analysis:

#version 330

#moj_import <minecraft:dynamictransforms.glsl>

in vec4 vertexColor;

out vec4 fragColor;

void main() {
    vec4 color = vertexColor;
    if (color.a == 0.0) {
        discard;
    }
    fragColor = color * ColorModulator;
}

assets/minecraft/shaders/include/dynamictransforms.glsl:

#version 330

layout(std140) uniform DynamicTransforms {
    mat4 ModelViewMat;
    vec4 ColorModulator;
    vec3 ModelOffset;
    mat4 TextureMat;
};


Observed Results: The shader unconditionally multiplies vertex color by ColorModulator (fragColor = color * ColorModulator). When debug markers are rendered, ColorModulator is set to vec4(0.0, 1.0, 0.0, 0.75), which zeroes out the Red channel (×0.0) and distorts Blue/Alpha (×0.75). Only the Green channel passes through correctly. Though the shader has been upgraded from GLSL 150 to 330 and ColorModulator moved from a standalone uniform into a UBO (DynamicTransforms), the core issue remains unchanged.

Expected Results: Debug markers should render with their intended colors, including Red and Blue values, as they did prior to 1.17.

Load more comments