This guide covers common issues encountered during development and usage of Steve's Simple Storage, along with their solutions.
Issue: Build fails with dependency resolution errors
Could not resolve all files for configuration ':compileClasspath'
Solution:
- Check internet connection
- Clear Gradle cache:
./gradlew clean --refresh-dependencies - Verify repository accessibility in
build.gradle - Check NeoForge/JEI version compatibility
Issue: Java version mismatch
Unsupported class file major version
Solution:
- Ensure Java 21 is installed and active
- Set
JAVA_HOMEenvironment variable - Verify Gradle is using correct Java version:
./gradlew -version
Issue: Missing imports or class not found
cannot find symbol: class SimpleContainer
Solution:
- Check import statements match NeoForge 1.21.1 API
- Verify class names haven't changed between versions
- Consult NeoForge documentation for correct imports
Issue: Method signature mismatch
method does not override or implement a method from a supertype
Solution:
- Check method signatures against parent class
- Verify return types match expected types
- Update to modern Minecraft method signatures
Issue: Mod fails to load
Failed to load mod s3
Solution:
- Check
neoforge.mods.tomlfor correct metadata - Verify main mod class is properly annotated with
@Mod - Check logs for specific error messages
- Ensure all required dependencies are present
Issue: Missing textures (black/purple checkerboard)
Missing textures in model s3:storage_box#inventory
Solution:
- Verify texture files exist in correct directories
- Check texture paths in model files use
block/notblocks/ - Ensure texture files are valid PNG format
- Verify model files reference correct texture paths
Issue: Items disappear when inserted
Items vanish without being stored
Solution:
- Check
StorageSlot.set()implementation - Verify
insertItem()returns remainder correctly - Enable debug logging to trace item flow
- Check storage capacity is properly set
Issue: Storage capacity is zero
Storage shows 0/0 capacity
Solution:
- Verify multiblock scanning is working
- Check storage blocks extend
BlockStoragecorrectly - Ensure
scanMultiblock()is called on placement - Verify
getCapacity()returns correct values
Issue: Multiblock not detected
Storage blocks don't connect to core
Solution:
- Check blocks are adjacent (6-directional connectivity)
- Verify all blocks extend
StorageMultiblock - Check
attemptMultiblock()is called on block placement - Enable debug logging for multiblock scanning
Issue: Text overlaps with slots
Labels render in middle of inventory grid
Solution:
- Check
titleLabelYandinventoryLabelYpositioning - Verify GUI height matches slot layout
- Update label positions in screen constructor
- Test with different GUI scale settings
Issue: Slots positioned incorrectly
Inventory slots don't align with GUI texture
Solution:
- Verify slot positioning formulas:
8 + column * 18 - Check GUI texture dimensions match expected size
- Ensure slot coordinates match texture layout
- Test with GUI debug overlay enabled
Issue: Shift-click doesn't work
Items don't transfer when shift-clicking
Solution:
- Check
quickMoveStack()implementation - Verify slot index ranges are correct
- Ensure
moveItemStackTo()parameters are valid - Check slot types support the operation
Issue: Drag & drop not working
Items don't insert when dragged to storage slots
Solution:
- Verify
StorageSlot.mayPlace()returns true - Check
StorageSlot.set()handles insertion - Ensure storage core block entity is accessible
- Verify container is properly initialized
Issue: Client and server out of sync
Items appear on client but not on server
Solution:
- Check packet registration in
ModNetwork - Verify packet serialization/deserialization
- Ensure sync packets are sent after storage changes
- Check packet handling on both sides
Issue: Packet serialization errors
Failed to encode/decode packet data
Solution:
- Verify
StreamCodecimplementation - Check data types match between encode/decode
- Ensure all packet fields are properly serialized
- Test with simple packet data first
Issue: JEI recipe transfer not working
Clicking recipes doesn't fill crafting grid
Solution:
- Check JEI plugin registration
- Verify recipe transfer handler implementation
- Ensure crafting menu is properly registered
- Check slot indices match expected layout
Issue: Items not visible in JEI
S3 items don't appear in ingredient list
Solution:
- Verify creative tab registration
- Check items are added to creative tab
- Ensure item registration is complete
- Verify JEI can access item registry
Issue: High memory usage
OutOfMemoryError during gameplay
Solution:
- Check for memory leaks in storage system
- Verify proper cleanup of block entities
- Monitor packet frequency and size
- Use profiler to identify memory hotspots
Issue: Slow multiblock scanning
Game freezes when placing storage blocks
Solution:
- Optimize multiblock scanning algorithm
- Add limits to scan depth/breadth
- Cache scan results when possible
- Consider async scanning for large networks
Add to log4j2.xml:
<Logger level="DEBUG" name="io.github.scuba10steve.s3"/>Or use JVM argument:
-Dlog4j.logger.io.github.scuba10steve.s3=DEBUG
Storage Operations:
[DEBUG] StorageInventory.insertItem: minecraft:cobblestone x64, current capacity: 0/50000
[DEBUG] Creating new storage entry for minecraft:cobblestone x64
Multiblock Scanning:
[INFO] Scanning multiblock at BlockPos{x=100, y=64, z=200}
[DEBUG] Found storage block at BlockPos{x=101, y=64, z=200} with capacity 10000
[INFO] Multiblock scan complete. Found 5 blocks, total capacity: 50000
GUI Operations:
[DEBUG] StorageSlot.set: minecraft:iron_ingot x32
[DEBUG] quickMoveStack: slot 27
Recommended IDE Settings:
- Enable auto-import for NeoForge classes
- Set up run configurations for client/server
- Configure debugger for mod development
Useful Gradle Tasks:
./gradlew :neoforge:build # Build the installable mod JAR
./gradlew :neoforge:runClient # Test client
./gradlew :neoforge:runServer # Test server
./gradlew :core:test # Run unit tests
./gradlew clean # Clean build artifactsWhen reporting issues, include:
- Full error stack trace
- Relevant log entries with timestamps
- Steps to reproduce the issue
- Minecraft/NeoForge/mod versions
- System information (OS, Java version)
Version Information:
Minecraft: 1.21.1
NeoForge: 21.1.218
Steve's Simple Storage: 0.12.0
Java: 21
Gradle: 8.10.2
System Information:
OS: [Operating System]
Memory: [Available RAM]
Graphics: [GPU Information]
- NeoForge Documentation: https://docs.neoforged.net/
- Minecraft Wiki: https://minecraft.wiki/
- ModDevGradle: https://github.com/neoforged/ModDevGradle
- JEI Documentation: https://github.com/mezz/JustEnoughItems
- Regular Testing: Test changes frequently during development
- Version Control: Commit working states before major changes
- Logging: Add comprehensive logging for debugging
- Documentation: Keep code well-documented
- Error Handling: Implement proper error handling and validation
- Null Checks: Always check for null values
- Bounds Checking: Validate array/list indices
- Resource Cleanup: Properly dispose of resources
- Thread Safety: Consider thread safety for client/server code
- Performance: Profile and optimize critical paths
- Unit Tests: Test individual components
- Integration Tests: Test component interactions
- Manual Testing: Test user workflows
- Edge Cases: Test boundary conditions
- Regression Testing: Verify fixes don't break existing functionality