Skip to content

Comments

Custom registry#163

Draft
MeAlam1 wants to merge 31 commits into1.21-1.21.3from
custom-registry
Draft

Custom registry#163
MeAlam1 wants to merge 31 commits into1.21-1.21.3from
custom-registry

Conversation

@MeAlam1
Copy link
Owner

@MeAlam1 MeAlam1 commented Aug 6, 2025

No description provided.

Dan6335 and others added 28 commits May 13, 2025 15:56
Added keybind registries
… custom-registry

# Conflicts:
#	common/build.gradle
#	fabric/src/main/java/software/bluelib/BlueLib.java
#	neoforge/build.gradle
#	neoforge/src/main/java/software/bluelib/BlueLib.java
#	neoforge/src/main/java/software/bluelib/client/BlueLibClient.java
… custom-registry

# Conflicts:
#	common/src/main/java/software/bluelib/BlueLibCommon.java
#	common/src/main/java/software/bluelib/internal/registry/TestEntityReg.java
#	common/src/main/java/software/bluelib/platform/IRegistryHelper.java
#	common/src/main/resources/META-INF/accesstransformer-nf.cfg
#	fabric/src/main/java/software/bluelib/BlueLib.java
#	fabric/src/main/java/software/bluelib/platform/FabricRegistryHelper.java
#	fabric/src/main/resources/bluelib.accesswidener
#	fabric/src/main/resources/fabric.mod.json
#	neoforge/src/main/java/software/bluelib/BlueLib.java
#	neoforge/src/main/java/software/bluelib/platform/NeoForgeRegistryHelper.java
Fixed blockstate gen returning null
Fixed recipe gen only generating one item recipe
…istry

# Conflicts:
#	common/src/main/java/software/bluelib/internal/registry/TestEntityReg.java
… custom-registry

# Conflicts:
#	common/src/main/java/software/bluelib/BlueLibCommon.java
#	common/src/main/java/software/bluelib/BlueLibConstants.java
#	common/src/main/java/software/bluelib/api/entity/variant/IVariantEntity.java
#	common/src/main/java/software/bluelib/api/event/mod/ModIntegration.java
#	common/src/main/java/software/bluelib/api/json/JSONMerger.java
#	common/src/main/java/software/bluelib/api/json/JSONParser.java
#	common/src/main/java/software/bluelib/api/net/NetworkPacket.java
#	common/src/main/java/software/bluelib/api/utils/IsValidUtils.java
#	common/src/main/java/software/bluelib/api/utils/conversion/CaseConverterUtils.java
#	common/src/main/java/software/bluelib/api/utils/conversion/ColorConverterUtils.java
#	common/src/main/java/software/bluelib/api/utils/conversion/MathConverterUtils.java
#	common/src/main/java/software/bluelib/api/utils/math/AlgebraicUtils.java
#	common/src/main/java/software/bluelib/api/utils/math/GeometricUtils.java
#	common/src/main/java/software/bluelib/api/utils/math/MatrixUtils.java
#	common/src/main/java/software/bluelib/api/utils/math/RandomGenUtils.java
#	common/src/main/java/software/bluelib/api/utils/math/StatisticalUtils.java
#	common/src/main/java/software/bluelib/api/utils/minecraft/ChunkUtils.java
#	common/src/main/java/software/bluelib/api/utils/variant/ParameterUtils.java
#	common/src/main/java/software/bluelib/client/gui/logging/LoggerScreen.java
#	common/src/main/java/software/bluelib/commands/OpenLoggerScreenCommand.java
#	common/src/main/java/software/bluelib/compat/jei/BlueJeiPlugin.java
#	common/src/main/java/software/bluelib/entity/variant/VariantLoader.java
#	common/src/main/java/software/bluelib/event/ReloadHandler.java
#	common/src/main/java/software/bluelib/markdown/MarkdownFeature.java
#	common/src/main/java/software/bluelib/markdown/MarkdownParser.java
#	common/src/main/java/software/bluelib/markdown/syntax/Color.java
#	common/src/main/java/software/bluelib/markdown/syntax/CopyToClipboard.java
#	common/src/main/java/software/bluelib/markdown/syntax/Hyperlink.java
#	common/src/main/java/software/bluelib/mixin/common/brewing/BrewingStandBlockEntityMixin.java
#	common/src/main/java/software/bluelib/net/messages/client/OpenLoggerPacket.java
#	common/src/main/java/software/bluelib/net/messages/client/variant/AllDataPacket.java
#	common/src/main/java/software/bluelib/net/messages/client/variant/ParameterDataPacket.java
#	common/src/main/java/software/bluelib/net/messages/client/variant/VariantsPacket.java
#	common/src/main/java/software/bluelib/net/messages/server/TestPacket.java
#	common/src/main/java/software/bluelib/net/serverHandling/TestPacketHandler.java
#	common/src/main/java/software/bluelib/platform/IPlatformHelper.java
#	common/src/main/java/software/bluelib/platform/IRegistryHelper.java
#	fabric/src/main/java/software/bluelib/BlueLib.java
#	fabric/src/main/java/software/bluelib/config/BlueLibConfig.java
#	fabric/src/main/java/software/bluelib/platform/FabricPlatformHelper.java
#	fabric/src/main/java/software/bluelib/platform/FabricRegistryHelper.java
#	gradle/libs.versions.toml
#	neoforge/src/main/java/software/bluelib/BlueLib.java
#	neoforge/src/main/java/software/bluelib/client/BlueLibClient.java
#	neoforge/src/main/java/software/bluelib/config/BlueLibConfig.java
#	neoforge/src/main/java/software/bluelib/event/ReloadHandler.java
#	neoforge/src/main/java/software/bluelib/platform/NeoForgePlatformHelper.java
#	neoforge/src/main/java/software/bluelib/platform/NeoForgeRegistryHelper.java
@MeAlam1 MeAlam1 added this to the 3.0.0 milestone Aug 6, 2025
@MeAlam1 MeAlam1 self-assigned this Aug 6, 2025
Copilot AI review requested due to automatic review settings August 6, 2025 18:53
@MeAlam1 MeAlam1 added Enhancement New feature or request 1.21 Minecraft Version labels Aug 6, 2025
@MeAlam1 MeAlam1 moved this to In Progress in BlueLib Features Aug 6, 2025
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull Request Overview

This PR introduces a comprehensive custom registry system for the BlueLib mod framework, providing unified registration across platforms (Fabric and NeoForge) with automatic data generation capabilities.

  • Implements builder pattern for registering items, blocks, entities, and other game objects
  • Adds automatic generation of data files (recipes, models, blockstates) during development
  • Unifies registration logic across Fabric and NeoForge platforms

Reviewed Changes

Copilot reviewed 43 out of 43 changed files in this pull request and generated 7 comments.

Show a summary per file
File Description
NeoForgeRegistryHelper.java Implements NeoForge-specific registration methods for items, blocks, entities, etc.
FabricRegistryHelper.java Implements Fabric-specific registration methods using built-in registries
AbstractRegistryBuilder.java Core registry builder providing platform-agnostic registration API
Various builder classes Builder pattern implementations for different game object types
Data generation classes Automatic generation of JSON files for recipes, models, and blockstates

package software.bluelib.platform;

import java.util.function.Supplier;
import java.util.function.Supplier;
Copy link

Copilot AI Aug 6, 2025

Choose a reason for hiding this comment

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

There is a duplicate import of java.util.function.Supplier on lines 10 and 11. Remove the duplicate import.

Suggested change
import java.util.function.Supplier;

Copilot uses AI. Check for mistakes.
package software.bluelib.platform;

import java.util.function.Supplier;
import java.util.function.Supplier;
Copy link

Copilot AI Aug 6, 2025

Choose a reason for hiding this comment

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

There is a duplicate import of java.util.function.Supplier on lines 10 and 11. Remove the duplicate import.

Suggested change
import java.util.function.Supplier;

Copilot uses AI. Check for mistakes.
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.core.Holder;
Copy link

Copilot AI Aug 6, 2025

Choose a reason for hiding this comment

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

There are duplicate imports for several Minecraft classes (Holder, Registry, BuiltInRegistries) between lines 15-18 and 28-31. Remove the duplicate imports.

Copilot uses AI. Check for mistakes.
Comment on lines +31 to +38
try {
Field resultField = recipe.getClass().getDeclaredField("result");
resultField.setAccessible(true);
Object value = resultField.get(recipe);
if (value instanceof ItemStack stack) {
return stack;
}
} catch (Exception ignored) {}
Copy link

Copilot AI Aug 6, 2025

Choose a reason for hiding this comment

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

This method uses reflection to access private fields, which is fragile and could break with code changes. Consider using a more stable approach or adding proper error handling for when the field doesn't exist.

Suggested change
try {
Field resultField = recipe.getClass().getDeclaredField("result");
resultField.setAccessible(true);
Object value = resultField.get(recipe);
if (value instanceof ItemStack stack) {
return stack;
}
} catch (Exception ignored) {}
// Try to access the "result" field, with proper error handling and alternative field names
String[] possibleFieldNames = {"result", "f_43781_"}; // Add obfuscated or alternative names if needed
for (String fieldName : possibleFieldNames) {
try {
Field resultField = recipe.getClass().getDeclaredField(fieldName);
resultField.setAccessible(true);
Object value = resultField.get(recipe);
if (value instanceof ItemStack stack) {
return stack;
}
} catch (NoSuchFieldException e) {
// Field not found, try next
} catch (IllegalAccessException e) {
System.err.println("Failed to access field '" + fieldName + "' in " + recipe.getClass().getName() + ": " + e.getMessage());
} catch (Exception e) {
System.err.println("Unexpected error accessing field '" + fieldName + "' in " + recipe.getClass().getName() + ": " + e.getMessage());
}
}
System.err.println("Could not retrieve 'result' field from recipe class: " + recipe.getClass().getName());

Copilot uses AI. Check for mistakes.
@MeAlam1 MeAlam1 marked this pull request as draft August 6, 2025 19:20
Repository owner deleted a comment from Copilot AI Aug 7, 2025
Repository owner deleted a comment from Copilot AI Aug 7, 2025
Repository owner deleted a comment from Copilot AI Aug 7, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

1.21 Minecraft Version Enhancement New feature or request

Projects

Status: In Progress

Development

Successfully merging this pull request may close these issues.

2 participants