Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
66 commits
Select commit Hold shift + click to select a range
5f9fbe3
Start on 26.1, fix hitboxes, update blocks, items and tags
Novampr Mar 25, 2026
58c6603
Start on 26.1, fix various hitbox sizes, adjust various java packet a…
Novampr Mar 25, 2026
4d09ef6
Update mappings
Novampr Mar 25, 2026
09c7cdd
Update mappings for block shapes
Novampr Mar 25, 2026
95a2a7b
Update block properties, fix loading block registry
onebeastchris Mar 28, 2026
effb253
Merge remote-tracking branch 'upstream/master' into feat/26.1
onebeastchris Mar 29, 2026
fe1a9f9
Add fallback mapping for golden_dandelion item on 1.21.130 / 26.0
onebeastchris Mar 29, 2026
5dfd49d
Update Java version in README (#6270)
hasankayra04 Mar 29, 2026
3a72865
Initial work for Geyser-Fabric and Geyser-NeoForge on Java 26.1 (#6265)
SleepyPopp Mar 29, 2026
ee5f111
Bump to Java 21 project-wide
onebeastchris Mar 29, 2026
3b0c9c7
Revert fabric.mod.json change
onebeastchris Mar 29, 2026
6706c63
Bump cloud
onebeastchris Mar 29, 2026
f6716f8
Some hasher fixes
eclipseisoffline Mar 29, 2026
7d5d912
Add translation for low disk space warning
onebeastchris Mar 29, 2026
dbc4142
Revert "revert fabric.mod.json change"
onebeastchris Mar 29, 2026
1f5329e
Parse dye data component in ItemStackParser
eclipseisoffline Mar 29, 2026
7ae010d
Bump MCPL, resolves dye color reading
onebeastchris Mar 29, 2026
e46f28c
Merge branch 'master' into feat/26.1
onebeastchris Mar 29, 2026
082ba3a
Bump annotation processors' supported source version too
onebeastchris Mar 30, 2026
df97c0d
Initial work on resolving fabric/neoforge build script issues
onebeastchris Mar 31, 2026
f5c539c
Update Shadow Gradle Plugin and MCProtocolLib (#6284)
SleepyPopp Apr 4, 2026
9ef0cb8
Fix: ageable and some entity metadata.
oryxel1 Apr 5, 2026
722abe6
Update dependencies for Java 26.1.1 (#6286)
SleepyPopp Apr 5, 2026
436a9b8
Small updates to modernize codebase; remove RECIPES registry for hard…
onebeastchris Apr 5, 2026
1d96860
Further java modernization updates
onebeastchris Apr 5, 2026
3e41ca6
Merge remote-tracking branch 'upstream/master' into feat/26.1
onebeastchris Apr 5, 2026
398401f
Remove unused import
onebeastchris Apr 5, 2026
65fe71c
Java time fixes
eclipseisoffline Apr 6, 2026
42488f1
Preparations for using gametest framework
onebeastchris Oct 22, 2025
ccafa76
Initial work on using Minecraft gametests to test component hashing
eclipseisoffline May 2, 2025
248b60f
Set up proper gametest sourceset within Fabric module
eclipseisoffline Aug 30, 2025
61fce61
Implement JavaRegistry(Provider) for game tests, get basic test for c…
eclipseisoffline Oct 24, 2025
ff522d0
Rebase remains
eclipseisoffline Apr 8, 2026
4c163b8
Minecraft 26.1 gametest fixes
eclipseisoffline Apr 8, 2026
0b12ed2
Some codec shenanigans to allow multiple components in a single hash …
eclipseisoffline Apr 8, 2026
b41177d
Custom name component hashing gametests
eclipseisoffline Apr 8, 2026
1827f52
Damage type, enchantments, item model, lore, minimum attack charge, r…
eclipseisoffline Apr 8, 2026
cc7ffe9
Some game test improvements, attribute modifiers, can place/can break…
eclipseisoffline Apr 8, 2026
c8091af
Added gametests for attack range, consumable, damage resistant, death…
eclipseisoffline Apr 8, 2026
8455403
Allow gametests to be optional, turn failing tests optional for now
eclipseisoffline Apr 8, 2026
80eb8bd
Component hashing fixes (see below)
eclipseisoffline Apr 8, 2026
dfb4838
Add hashing gametests for the remaining components (see details)
eclipseisoffline Apr 9, 2026
cb97672
More component hashing fixes (see details)
eclipseisoffline Apr 9, 2026
2385729
Add gametest for testing all hashable components can be hashed in Gey…
eclipseisoffline Apr 9, 2026
07a5757
Some clean ups
eclipseisoffline Apr 9, 2026
b7847c5
DataComponentHashers cleanup
eclipseisoffline Apr 15, 2026
0a22e8e
Adventure 5.0.0
eclipseisoffline Apr 5, 2026
7f8dff2
Properly hash NBT source in NBT text components, refactor hashing of …
eclipseisoffline Apr 6, 2026
5e3089c
Fix EnumMapDispatchHasher instanceof check, ConsumeEffectType hasher,…
eclipseisoffline Apr 15, 2026
f4021dc
Javadoc fixes
eclipseisoffline Apr 15, 2026
e5cbd82
Merge remote-tracking branch 'upstream/master' into feat/26.1
eclipseisoffline Apr 17, 2026
fdef800
Fix: don't send entity interactions twice
eclipseisoffline Apr 19, 2026
5996bd8
Add pause and reset growth mappings
Novampr Apr 22, 2026
1cb6dc2
Merge master
Novampr Apr 22, 2026
d66956d
Switch to JSpecify for nullability annotations in API module (#6303)
eclipseisoffline Apr 23, 2026
3076c3e
Merge branch 'master' into feat/26.1
onebeastchris Apr 25, 2026
d451314
Implement new slot display types (somewhat)
eclipseisoffline May 2, 2026
2d82fbe
Revert "Adventure 5.0.0"
eclipseisoffline Apr 23, 2026
7b392c8
Fix ViaProxy bootstrap
eclipseisoffline May 2, 2026
6c918b4
Fix: initialise time clock rate at 0, properly reset time parameters …
eclipseisoffline May 3, 2026
cbc950a
Fix: support converting CompositeSlotDisplay and TagSlotDisplay to Ge…
eclipseisoffline May 3, 2026
f5f33c1
Fix: reset time parameters at the right place
eclipseisoffline May 4, 2026
b91737f
Merge remote-tracking branch 'upstream/master' into feat/26.1
onebeastchris May 4, 2026
0ab613f
Implement new gamerule menu (#6304)
onebeastchris May 5, 2026
536375f
Target mappings at master (with new sound mappings)
eclipseisoffline May 5, 2026
b5d4cde
Target languages at master
eclipseisoffline May 5, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 4 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,7 @@ max_line_length = off
ij_java_class_count_to_use_import_on_demand = 9999
ij_java_doc_align_exception_comments = false
ij_java_doc_align_param_comments = false

[*.json]
indent_size = 2
tab_width = 2
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ Special thanks to the DragonProxy project for being a trailblazer in protocol tr
| Edition | Supported Versions |
|---------|------------------------------------------------------------------------------------------------------|
| Bedrock | 1.21.130 - 1.21.132, 26.0, 26.1, 26.2, 26.3, 26.10, 26.20 |
| Java | 1.21.11 (For older versions, [see this guide](https://geysermc.org/wiki/geyser/supported-versions/)) |
| Java | 26.1 (For older versions, [see this guide](https://geysermc.org/wiki/geyser/supported-versions/)) |
Comment thread
onebeastchris marked this conversation as resolved.

## Setting Up
Take a look [here](https://geysermc.org/wiki/geyser/setup/) for how to set up Geyser.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
import javax.lang.model.SourceVersion;

@SupportedAnnotationTypes("*")
@SupportedSourceVersion(SourceVersion.RELEASE_17)
@SupportedSourceVersion(SourceVersion.RELEASE_21)
public class BlockEntityProcessor extends ClassProcessor {
public BlockEntityProcessor() {
super("org.geysermc.geyser.translator.level.block.entity.BlockEntity");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
import javax.lang.model.SourceVersion;

@SupportedAnnotationTypes("*")
@SupportedSourceVersion(SourceVersion.RELEASE_17)
@SupportedSourceVersion(SourceVersion.RELEASE_21)
public class CollisionRemapperProcessor extends ClassProcessor {
public CollisionRemapperProcessor() {
super("org.geysermc.geyser.translator.collision.CollisionRemapper");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
import javax.lang.model.SourceVersion;

@SupportedAnnotationTypes("*")
@SupportedSourceVersion(SourceVersion.RELEASE_17)
@SupportedSourceVersion(SourceVersion.RELEASE_21)
public class PacketTranslatorProcessor extends ClassProcessor {
public PacketTranslatorProcessor() {
super("org.geysermc.geyser.translator.protocol.Translator");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
import javax.lang.model.SourceVersion;

@SupportedAnnotationTypes("*")
@SupportedSourceVersion(SourceVersion.RELEASE_17)
@SupportedSourceVersion(SourceVersion.RELEASE_21)
public class SoundHandlerProcessor extends ClassProcessor {
public SoundHandlerProcessor() {
super("org.geysermc.geyser.translator.sound.SoundTranslator");
Expand Down
24 changes: 5 additions & 19 deletions api/src/main/java/org/geysermc/geyser/api/GeyserApi.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2019-2022 GeyserMC. http://geysermc.org
* Copyright (c) 2019-2026 GeyserMC. http://geysermc.org
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
Expand All @@ -25,8 +25,6 @@

package org.geysermc.geyser.api;

import org.checkerframework.checker.nullness.qual.NonNull;
import org.checkerframework.checker.nullness.qual.Nullable;
import org.geysermc.api.Geyser;
import org.geysermc.api.GeyserApiBase;
import org.geysermc.api.util.ApiVersion;
Expand All @@ -40,6 +38,7 @@
import org.geysermc.geyser.api.util.MinecraftVersion;
import org.geysermc.geyser.api.util.PlatformType;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.Nullable;

import java.nio.file.Path;
import java.util.List;
Expand All @@ -54,26 +53,24 @@ public interface GeyserApi extends GeyserApiBase {
* {@inheritDoc}
*/
@Override
@Nullable GeyserConnection connectionByUuid(@NonNull UUID uuid);
@Nullable GeyserConnection connectionByUuid(UUID uuid);

/**
* {@inheritDoc}
*/
@Override
@Nullable GeyserConnection connectionByXuid(@NonNull String xuid);
@Nullable GeyserConnection connectionByXuid(String xuid);

/**
* {@inheritDoc}
*/
@NonNull
List<? extends GeyserConnection> onlineConnections();

/**
* Gets the {@link ExtensionManager}.
*
* @return the extension manager
*/
@NonNull
ExtensionManager extensionManager();

/**
Expand All @@ -85,16 +82,14 @@ public interface GeyserApi extends GeyserApiBase {
* @throws IllegalArgumentException if there is no provider for the specified API class
* @return the builder instance
*/
@NonNull
<R extends T, T> R provider(@NonNull Class<T> apiClass, @Nullable Object... args);
<R extends T, T> R provider(Class<T> apiClass, @Nullable Object... args);

/**
* Gets the {@link EventBus} for handling
* Geyser events.
*
* @return the event bus
*/
@NonNull
EventBus<EventRegistrar> eventBus();

/**
Expand All @@ -103,7 +98,6 @@ public interface GeyserApi extends GeyserApiBase {
*
* @return the default remote server used within Geyser
*/
@NonNull
RemoteServer defaultRemoteServer();

/**
Expand All @@ -112,63 +106,55 @@ public interface GeyserApi extends GeyserApiBase {
*
* @return the listener used for Bedrock client connectins
*/
@NonNull
BedrockListener bedrockListener();

/**
* Gets the {@link Path} to the Geyser config directory.
*
* @return the path to the Geyser config directory
*/
@NonNull
Path configDirectory();

/**
* Gets the {@link Path} to the Geyser packs directory.
*
* @return the path to the Geyser packs directory
*/
@NonNull
Path packDirectory();

/**
* Gets {@link PlatformType} the extension is running on
*
* @return type of platform
*/
@NonNull
PlatformType platformType();

/**
* Gets the version of Java Minecraft that is supported.
*
* @return the supported version of Java Minecraft
*/
@NonNull
MinecraftVersion supportedJavaVersion();

/**
* Gets a list of Bedrock Minecraft versions that are supported.
*
* @return the list of supported Bedrock Minecraft versions
*/
@NonNull
List<MinecraftVersion> supportedBedrockVersions();

/**
* Gets the {@link CommandSource} for the console.
*
* @return the console command source
*/
@NonNull
CommandSource consoleCommandSource();

/**
* Gets the current {@link GeyserApiBase} instance.
*
* @return the current geyser api instance
*/
@NonNull
static GeyserApi api() {
return Geyser.api(GeyserApi.class);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2019-2023 GeyserMC. http://geysermc.org
* Copyright (c) 2019-2026 GeyserMC. http://geysermc.org
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
Expand All @@ -25,9 +25,8 @@

package org.geysermc.geyser.api.bedrock.camera;

import org.checkerframework.checker.nullness.qual.NonNull;
import org.checkerframework.checker.nullness.qual.Nullable;
import org.geysermc.geyser.api.connection.GeyserConnection;
import org.jspecify.annotations.Nullable;

import java.util.Set;
import java.util.UUID;
Expand All @@ -46,7 +45,7 @@ public interface CameraData {
*
* @param fade the camera fade instruction to send
*/
void sendCameraFade(@NonNull CameraFade fade);
void sendCameraFade(CameraFade fade);

/**
* Sends a camera position instruction to the client.
Expand All @@ -58,7 +57,7 @@ public interface CameraData {
*
* @param position the camera position instruction to send
*/
void sendCameraPosition(@NonNull CameraPosition position);
void sendCameraPosition(CameraPosition position);

/**
* Stops all sent camera instructions (fades, movements, and perspective locks).
Expand All @@ -76,7 +75,7 @@ public interface CameraData {
*
* @param perspective the {@link CameraPerspective} to force
*/
void forceCameraPerspective(@NonNull CameraPerspective perspective);
void forceCameraPerspective(CameraPerspective perspective);

/**
* Gets the client's current {@link CameraPerspective}, if one is currently forced.
Expand All @@ -99,7 +98,7 @@ public interface CameraData {
* @param duration the time in seconds that the shake will occur for
* @param type the type of shake
*/
void shakeCamera(float intensity, float duration, @NonNull CameraShake type);
void shakeCamera(float intensity, float duration, CameraShake type);

/**
* Stops all camera shakes of any type.
Expand All @@ -125,7 +124,6 @@ public interface CameraData {
/**
* Returns an immutable copy of all fog affects currently applied to this client.
*/
@NonNull
Set<String> fogEffects();

/**
Expand All @@ -137,7 +135,7 @@ public interface CameraData {
* @param owner the owner of the lock, represented with a UUID
* @return if the camera is locked after this method call
*/
boolean lockCamera(boolean lock, @NonNull UUID owner);
boolean lockCamera(boolean lock, UUID owner);

/**
* Returns whether the client's camera is locked.
Expand All @@ -151,7 +149,7 @@ public interface CameraData {
*
* @param element the {@link GuiElement} to hide
*/
void hideElement(@NonNull GuiElement... element);
void hideElement(GuiElement... element);

/**
* Resets a {@link GuiElement} on the client's side.
Expand All @@ -162,19 +160,19 @@ public interface CameraData {
*
* @param element the {@link GuiElement} to reset
*/
void resetElement(@NonNull GuiElement @Nullable... element);
void resetElement(GuiElement @Nullable... element);

/**
* Determines whether a {@link GuiElement} is currently hidden.
*
* @param element the {@link GuiElement} to check
*/
boolean isHudElementHidden(@NonNull GuiElement element);
boolean isHudElementHidden(GuiElement element);

/**
* Returns the currently hidden {@link GuiElement}s.
*
* @return an unmodifiable view of all currently hidden {@link GuiElement}s
*/
@NonNull Set<GuiElement> hiddenElements();
Set<GuiElement> hiddenElements();
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2019-2023 GeyserMC. http://geysermc.org
* Copyright (c) 2019-2026 GeyserMC. http://geysermc.org
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
Expand All @@ -25,7 +25,6 @@

package org.geysermc.geyser.api.bedrock.camera;

import org.checkerframework.checker.nullness.qual.NonNull;
import org.checkerframework.common.value.qual.IntRange;
import org.geysermc.geyser.api.GeyserApi;

Expand All @@ -44,7 +43,7 @@ public interface CameraFade {
*
* @return the color of the fade
*/
@NonNull Color color();
Color color();

/**
* Gets the seconds it takes to fade in.
Expand Down Expand Up @@ -81,7 +80,7 @@ static CameraFade.Builder builder() {

interface Builder {

Builder color(@NonNull Color color);
Builder color(Color color);

Builder fadeInSeconds(@IntRange(from = 0, to = 10) float fadeInSeconds);

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2019-2023 GeyserMC. http://geysermc.org
* Copyright (c) 2019-2026 GeyserMC. http://geysermc.org
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
Expand All @@ -25,11 +25,10 @@

package org.geysermc.geyser.api.bedrock.camera;

import org.checkerframework.checker.nullness.qual.NonNull;
import org.checkerframework.checker.nullness.qual.Nullable;
import org.checkerframework.common.value.qual.IntRange;
import org.cloudburstmc.math.vector.Vector3f;
import org.geysermc.geyser.api.GeyserApi;
import org.jspecify.annotations.Nullable;

/**
* This interface represents a camera position instruction. Can be built with the {@link #builder()}.
Expand All @@ -47,7 +46,7 @@ public interface CameraPosition {
*
* @return camera position vector
*/
@NonNull Vector3f position();
Vector3f position();

/**
* Gets the {@link CameraEaseType} of the camera.
Expand Down Expand Up @@ -137,7 +136,7 @@ interface Builder {

Builder easeSeconds(float easeSeconds);

Builder position(@NonNull Vector3f position);
Builder position(Vector3f position);

Builder rotationX(@IntRange(from = -90, to = 90) int rotationX);

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
/*
* Copyright (c) 2026 GeyserMC. http://geysermc.org
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*
* @author GeyserMC
* @link https://github.com/GeyserMC/Geyser
*/

@NullMarked
package org.geysermc.geyser.api.bedrock.camera;

import org.jspecify.annotations.NullMarked;
Loading
Loading