Skip to content
Open
Show file tree
Hide file tree
Changes from 9 commits
Commits
Show all changes
50 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
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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 |
| 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
13 changes: 5 additions & 8 deletions bootstrap/mod/fabric/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,10 @@ loom {
}

dependencies {
modImplementation(libs.fabric.loader)
modApi(libs.fabric.api)
implementation(libs.fabric.loader)
api(libs.fabric.api)

api(project(":mod", configuration = "namedElements"))
api(project(":mod"))
shadowBundle(project(path = ":mod", configuration = "transformProductionFabric"))
shadowBundle(projects.core)
includeTransitive(projects.core)
Expand All @@ -47,7 +47,7 @@ dependencies {
shadowBundle(projects.api)
shadowBundle(projects.common)

modImplementation(libs.cloud.fabric)
implementation(libs.cloud.fabric)
include(libs.cloud.fabric)
include(libs.fabric.permissions.api)
}
Expand All @@ -61,15 +61,12 @@ relocate("org.cloudburstmc.protocol")
relocate("org.spongepowered.configurate")

tasks {
remapJar {
archiveBaseName.set("Geyser-Fabric")
}

remapModrinthJar {
archiveBaseName.set("geyser-fabric")
}

shadowJar {
archiveBaseName.set("Geyser-Fabric")
mergeServiceFiles()
}
}
Expand Down
2 changes: 1 addition & 1 deletion bootstrap/mod/fabric/src/main/resources/fabric.mod.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,6 @@
"depends": {
"fabricloader": ">=0.18.2",
"fabric-api": "*",
"minecraft": ">=1.21.11"
"minecraft": "~26.1"
Comment thread
onebeastchris marked this conversation as resolved.
}
}
9 changes: 3 additions & 6 deletions bootstrap/mod/neoforge/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ dependencies {

neoForge(libs.neoforge.minecraft)

api(project(":mod", configuration = "namedElements"))
api(project(":mod"))
shadowBundle(project(path = ":mod", configuration = "transformProductionNeoForge"))
shadowBundle(projects.core)

Expand All @@ -51,7 +51,7 @@ dependencies {
// Include all transitive deps of core via JiJ
includeTransitive(projects.core)

modImplementation(libs.cloud.neoforge)
implementation(libs.cloud.neoforge)
include(libs.cloud.neoforge)
}

Expand All @@ -62,15 +62,12 @@ tasks.withType<Jar> {
}

tasks {
remapJar {
archiveBaseName.set("Geyser-NeoForge")
}

remapModrinthJar {
archiveBaseName.set("geyser-neoforge")
}

shadowJar {
archiveBaseName.set("Geyser-NeoForge")
mergeServiceFiles()
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,12 @@ config = "geyser_neoforge.mixins.json"
[[dependencies.geyser_neoforge]]
modId="neoforge"
type="required"
versionRange="[21.11.0-beta,)"
versionRange="[26.1.0.1-beta,)"
ordering="NONE"
side="BOTH"
[[dependencies.geyser_neoforge]]
modId="minecraft"
type="required"
versionRange="[1.21.11,)"
versionRange="[26.1,)"
Comment thread
onebeastchris marked this conversation as resolved.
ordering="NONE"
side="BOTH"
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ public String name() {
@Override
public void sendMessage(@NonNull String message) {
if (source.getEntity() instanceof ServerPlayer) {
((ServerPlayer) source.getEntity()).displayClientMessage(Component.literal(message), false);
((ServerPlayer) source.getEntity()).sendSystemMessage(Component.literal(message), false);
} else {
GeyserImpl.getInstance().getLogger().info(ChatColor.toANSI(message + ChatColor.RESET));
}
Expand All @@ -68,7 +68,7 @@ public void sendMessage(@NonNull String message) {
public void sendMessage(net.kyori.adventure.text.Component message) {
if (source.getEntity() instanceof ServerPlayer player) {
JsonElement jsonComponent = GsonComponentSerializer.gson().serializeToTree(message);
player.displayClientMessage(ComponentSerialization.CODEC.parse(RegistryOps.create(JsonOps.INSTANCE, player.registryAccess()), jsonComponent).getOrThrow(), false);
player.sendSystemMessage(ComponentSerialization.CODEC.parse(RegistryOps.create(JsonOps.INSTANCE, player.registryAccess()), jsonComponent).getOrThrow(), false);
return;
}
GeyserCommandSource.super.sendMessage(message);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,8 +61,8 @@ private void onOpenToLan(GameType gameType, boolean cheatsAllowed, int port, Cal
GeyserLocale.loadGeyserLocale(this.minecraft.options.languageCode);
// Give indication that Geyser is loaded
Objects.requireNonNull(this.minecraft.player);
this.minecraft.player.displayClientMessage(Component.literal(GeyserLocale.getPlayerLocaleString("geyser.core.start.ip_suppressed",
this.minecraft.options.languageCode, String.valueOf(GeyserImpl.getInstance().bedrockListener().port()))), false);
this.minecraft.player.sendSystemMessage(Component.literal(GeyserLocale.getPlayerLocaleString("geyser.core.start.ip_suppressed",
this.minecraft.options.languageCode, String.valueOf(GeyserImpl.getInstance().bedrockListener().port()))));
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,17 +32,19 @@
import net.minecraft.server.dedicated.DedicatedServer;
import net.minecraft.server.level.progress.LevelLoadListener;
import net.minecraft.server.packs.repository.PackRepository;
import net.minecraft.world.level.gamerules.GameRules;
import net.minecraft.world.level.storage.LevelStorageSource;
import org.geysermc.geyser.platform.mod.GeyserServerPortGetter;
import org.spongepowered.asm.mixin.Mixin;

import java.net.Proxy;
import java.util.Optional;

@Mixin(DedicatedServer.class)
public abstract class DedicatedServerMixin extends MinecraftServer implements GeyserServerPortGetter {

public DedicatedServerMixin(Thread thread, LevelStorageSource.LevelStorageAccess levelStorageAccess, PackRepository packRepository, WorldStem worldStem, Proxy proxy, DataFixer dataFixer, Services services, LevelLoadListener levelLoadListener) {
super(thread, levelStorageAccess, packRepository, worldStem, proxy, dataFixer, services, levelLoadListener);
public DedicatedServerMixin(Thread thread, LevelStorageSource.LevelStorageAccess levelStorageAccess, PackRepository packRepository, WorldStem worldStem, Optional<GameRules> gameRules, Proxy proxy, DataFixer dataFixer, Services services, LevelLoadListener levelLoadListener) {
super(thread, levelStorageAccess, packRepository, worldStem, gameRules, proxy, dataFixer, services, levelLoadListener, true);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ public int getBlockAt(GeyserSession session, int x, int y, int z) {
}

// Only loads active chunks, and doesn't delegate to main thread
ChunkAccess chunk = ((ServerChunkCache) level.getChunkSource()).chunkMap.getChunkToSend(ChunkPos.asLong(x >> 4, z >> 4));
ChunkAccess chunk = ((ServerChunkCache) level.getChunkSource()).chunkMap.getChunkToSend(ChunkPos.pack(x >> 4, z >> 4));
if (chunk == null) {
return 0;
}
Expand Down
14 changes: 3 additions & 11 deletions build-logic/src/main/kotlin/geyser.modded-conventions.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import org.gradle.kotlin.dsl.dependencies
plugins {
id("geyser.platform-conventions")
id("architectury-plugin")
id("dev.architectury.loom")
id("dev.architectury.loom-no-remap")
}
Comment thread
onebeastchris marked this conversation as resolved.
Comment thread
onebeastchris marked this conversation as resolved.

// These are provided by Minecraft/modded platforms already, no need to include them
Expand Down Expand Up @@ -49,7 +49,7 @@ loom {

indra {
javaVersions {
target(21)
target(25)
Comment thread
onebeastchris marked this conversation as resolved.
}
Comment thread
onebeastchris marked this conversation as resolved.
}
Comment thread
onebeastchris marked this conversation as resolved.
Comment thread
onebeastchris marked this conversation as resolved.

Expand All @@ -75,15 +75,8 @@ tasks {
// Mirrors the example fabric project, otherwise tons of dependencies are shaded that shouldn't be
configurations = listOf(project.configurations.getByName("shadowBundle"))
// The remapped shadowJar is the final desired mod jar
archiveVersion.set(project.version.toString())
archiveClassifier.set("shaded")
}

remapJar {
dependsOn(shadowJar)
inputFile.set(shadowJar.get().archiveFile)
archiveClassifier.set("")
archiveVersion.set("")
archiveClassifier.set("")
}

register("remapModrinthJar", RemapJarTask::class) {
Expand Down Expand Up @@ -115,5 +108,4 @@ afterEvaluate {

dependencies {
minecraft(libs.minecraft)
mappings(loom.officialMojangMappings())
}
2 changes: 1 addition & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,6 @@ plugins {

java {
toolchain {
languageVersion = JavaLanguageVersion.of(21)
languageVersion = JavaLanguageVersion.of(25)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ public void execute(CommandContext<GeyserCommandSource> context) {
GeyserSession session = Objects.requireNonNull(context.sender().connection());

session.setWaitingForStatistics(true);
ServerboundClientCommandPacket packet = new ServerboundClientCommandPacket(ClientCommand.STATS);
ServerboundClientCommandPacket packet = new ServerboundClientCommandPacket(ClientCommand.REQUEST_STATS);
session.sendDownstreamGamePacket(packet);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -58,12 +58,14 @@ public void setItem(EntityMetadata<ItemStack, ?> entityMetadata) {
}

private static TemperatureVariantAnimal.BuiltInVariant getVariantOrFallback(GeyserSession session, GeyserItemStack stack) {
Holder<Key> holder = stack.getComponent(DataComponentTypes.CHICKEN_VARIANT);
if (holder != null) {
Key chickenVariant = holder.getOrCompute(id -> JavaRegistries.CHICKEN_VARIANT.key(session, id));
for (var variant : TemperatureVariantAnimal.BuiltInVariant.values()) {
if (chickenVariant.asMinimalString().equalsIgnoreCase(variant.name())) {
return variant;
Integer id = stack.getComponent(DataComponentTypes.CHICKEN_VARIANT);
if (id != null) {
Key chickenVariant = JavaRegistries.CHICKEN_VARIANT.key(session, id);
if (chickenVariant != null) {
for (var variant : TemperatureVariantAnimal.BuiltInVariant.values()) {
if (chickenVariant.asMinimalString().equalsIgnoreCase(variant.name())) {
return variant;
}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ protected float getAdultSize() {
* The scale that should be used when this entity is a baby.
*/
protected float getBabySize() {
return 0.55f;
return 0.5f;
}

public boolean isBaby() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,11 @@ public boolean canBeLeashed() {
return true;
}

@Override
protected float getBabySize() {
return 0.65f;
}

@NonNull
@Override
protected InteractiveTag testMobInteraction(@NonNull Hand hand, @NonNull GeyserItemStack itemInHand) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,11 @@ public void onPeeking() {
}
}

@Override
protected float getBabySize() {
return 0.6f;
}

@Override
@Nullable
protected Tag<Item> getFoodTag() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,8 @@
import org.geysermc.geyser.translator.text.MessageTranslator;
import org.geysermc.geyser.util.MinecraftKey;
import org.geysermc.geyser.util.SoundUtils;
import org.geysermc.mcprotocollib.protocol.data.game.item.component.InstrumentComponent;
import org.geysermc.mcprotocollib.protocol.data.game.Holder;
import org.geysermc.mcprotocollib.protocol.data.game.item.component.Instrument;
import org.geysermc.mcprotocollib.protocol.data.game.level.sound.BuiltinSound;

import java.util.Locale;
Expand Down Expand Up @@ -90,20 +91,16 @@ static int bedrockIdToJava(GeyserSession session, int id) {
}

// TODO test in 1.21.5
static GeyserInstrument fromComponent(GeyserSession session, InstrumentComponent component) {
if (component.instrumentLocation() != null) {
return session.getRegistryCache().registry(JavaRegistries.INSTRUMENT).byKey(component.instrumentLocation());
} else if (component.instrumentHolder() != null) {
if (component.instrumentHolder().isId()) {
return session.getRegistryCache().registry(JavaRegistries.INSTRUMENT).byId(component.instrumentHolder().id());
}
InstrumentComponent.Instrument custom = component.instrumentHolder().custom();
return new Wrapper(custom, session.locale());
static GeyserInstrument fromComponent(GeyserSession session, Holder<Instrument> component) {
if (component.isCustom()) {
return new Wrapper(component.custom(), session.locale());
} else if (component.isId()) {
return session.getRegistryCache().registry(JavaRegistries.INSTRUMENT).byId(component.id());
}
throw new IllegalStateException("InstrumentComponent must have either a location or a holder");
throw new IllegalStateException("Instrument must either be custom or have an id");
}

record Wrapper(InstrumentComponent.Instrument instrument, String locale) implements GeyserInstrument {
record Wrapper(Instrument instrument, String locale) implements GeyserInstrument {
@Override
public String soundEvent() {
return instrument.soundEvent().getName();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@
import org.geysermc.mcprotocollib.protocol.data.game.Holder;
import org.geysermc.mcprotocollib.protocol.data.game.item.component.ArmorTrim;
import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
import org.geysermc.mcprotocollib.protocol.data.game.item.component.ProvidesTrimMaterial;

import java.util.HashMap;
import java.util.Map;
Expand All @@ -49,7 +48,7 @@
* Stores information on trim materials and patterns, including smithing armor hacks for pre-1.20.
*/
public final class TrimRecipe {
private static final Map<ProvidesTrimMaterial, Item> trimMaterialProviders = new HashMap<>();
private static final Map<Holder<ArmorTrim.TrimMaterial>, Item> trimMaterialProviders = new HashMap<>();

// For CraftingDataPacket
public static final String ID = "minecraft:smithing_armor_trim";
Expand All @@ -69,9 +68,8 @@ public static TrimMaterial readTrimMaterial(RegistryEntryContext context) {
int networkId = context.getNetworkId(context.id());
ItemMapping trimItem = null;
if (context.session().isPresent()) {
for (ProvidesTrimMaterial provider : materialProviders().keySet()) {
Holder<ArmorTrim.TrimMaterial> materialHolder = provider.materialHolder();
if (context.id().equals(provider.materialLocation()) || (materialHolder != null && materialHolder.isId() && materialHolder.id() == networkId)) {
for (Holder<ArmorTrim.TrimMaterial> provider : materialProviders().keySet()) {
if ((provider.isCustom() && context.id().asString().equals(provider.custom().assetBase())) || (provider.isId() && provider.id() == networkId)) {
Copy link

Copilot AI Apr 5, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the provider.isCustom() branch, this compares context.id().asString() (namespaced, e.g. minecraft:amethyst) to provider.custom().assetBase() (the asset_name field, which is typically non-namespaced). This looks like it will never match, causing custom trim material providers to be missed. Consider comparing against context.id().asMinimalString() instead, or otherwise matching on the same identifier format.

Suggested change
if ((provider.isCustom() && context.id().asString().equals(provider.custom().assetBase())) || (provider.isId() && provider.id() == networkId)) {
if ((provider.isCustom() && context.id().asMinimalString().equals(provider.custom().assetBase())) || (provider.isId() && provider.id() == networkId)) {

Copilot uses AI. Check for mistakes.
trimItem = context.session().get().getItemMappings().getMapping(materialProviders().get(provider));
break;
}
Expand Down Expand Up @@ -110,10 +108,10 @@ private TrimRecipe() {
}

// Lazy initialise
private static Map<ProvidesTrimMaterial, Item> materialProviders() {
private static Map<Holder<ArmorTrim.TrimMaterial>, Item> materialProviders() {
if (trimMaterialProviders.isEmpty()) {
for (Item item : Registries.JAVA_ITEMS.get()) {
ProvidesTrimMaterial provider = item.getComponent(null, DataComponentTypes.PROVIDES_TRIM_MATERIAL);
Holder<ArmorTrim.TrimMaterial> provider = item.getComponent(null, DataComponentTypes.PROVIDES_TRIM_MATERIAL);
if (provider != null) {
trimMaterialProviders.put(provider, item);
}
Expand Down
3 changes: 2 additions & 1 deletion core/src/main/java/org/geysermc/geyser/item/Items.java
Original file line number Diff line number Diff line change
Expand Up @@ -296,6 +296,7 @@ public final class Items {
public static final Item RED_WOOL = register(new BlockItem(builder(), Blocks.RED_WOOL));
public static final Item BLACK_WOOL = register(new BlockItem(builder(), Blocks.BLACK_WOOL));
public static final Item DANDELION = register(new BlockItem(builder(), Blocks.DANDELION));
public static final Item GOLDEN_DANDELION = register(new BlockItem(builder(), Blocks.GOLDEN_DANDELION));
public static final Item OPEN_EYEBLOSSOM = register(new BlockItem(builder(), Blocks.OPEN_EYEBLOSSOM));
public static final Item CLOSED_EYEBLOSSOM = register(new BlockItem(builder(), Blocks.CLOSED_EYEBLOSSOM));
public static final Item POPPY = register(new BlockItem(builder(), Blocks.POPPY));
Expand Down Expand Up @@ -1193,7 +1194,7 @@ public final class Items {
public static final Item BLAZE_POWDER = register(new Item("blaze_powder", builder()));
public static final Item MAGMA_CREAM = register(new Item("magma_cream", builder()));
public static final Item BREWING_STAND = register(new BlockItem(builder(), Blocks.BREWING_STAND));
public static final Item CAULDRON = register(new BlockItem(builder(), Blocks.CAULDRON, Blocks.LAVA_CAULDRON, Blocks.POWDER_SNOW_CAULDRON, Blocks.WATER_CAULDRON));
public static final Item CAULDRON = register(new BlockItem(builder(), Blocks.CAULDRON, Blocks.POWDER_SNOW_CAULDRON, Blocks.WATER_CAULDRON, Blocks.LAVA_CAULDRON));
public static final Item ENDER_EYE = register(new Item("ender_eye", builder()));
public static final Item GLISTERING_MELON_SLICE = register(new Item("glistering_melon_slice", builder()));
public static final Item CHICKEN_SPAWN_EGG = register(new SpawnEggItem("chicken_spawn_egg", builder()));
Expand Down
Loading
Loading