Jump to content

Recommended Posts

Posted (edited)

Hey there everyone,

I'm building a Minecraft mod inspired by the Fallout series using Forge.
My goal is to create an immersive Fallout 76-like experience, including a completely overhauled inventory system centered around a Pip-Boy.

Core features:

  • Custom Pip-Boy Interface: Replacing the default Minecraft inventory with a visually appealing Pip-Boy GUI, styled after the Fallout series.
  • Pip-Boy Activation: Accessing the inventory only when a specific Pip-Boy item is equipped.
  • Tab-based Organization: Implementing tabs and subtabs (STATS, ITEMS, DATA, RADIO) for efficient item management.
  • Weight-Based Inventory: Using a weight system instead of limited slots for a more realistic inventory experience.
  • 3D Pip-Boy Model: Rendering a 3D Pip-Boy model within the custom inventory GUI for enhanced immersion.

My current Challenges:

  • Resource Scarcity: Difficulty finding up-to-date and comprehensive Minecraft modding tutorials that align with my project's scope.
  • Inventory Overhaul: Replacing the default inventory system with a custom Pip-Boy interface while maintaining core functionality.
  • GUI Development: Creating a visually appealing and functional Pip-Boy GUI, including the integration of a 3D model.
  • Weight System Implementation: Balancing item weights and player carrying capacity for a realistic and engaging experience.

I'm seeking guidance on:

  • Efficient GUI creation techniques and best practices.
  • Methods for overriding the default inventory system.
  • Strategies for implementing a weight-based inventory system.
  • Tips for integrating a 3D model into a 2D GUI.

I'm open to suggestions for libraries or frameworks that could streamline the development process.
While I have experience with programming languages like PHP and C#, I'm relatively new to Java, so clear explanations would be greatly appreciated.
Any advice, code snippets, or recommendations would be invaluable.

Thank you for your time and expertise!

Edited by Cassis2310
  • Cassis2310 changed the title to Inventory Overhaul / Editing the existing survival inventory
Posted

Thank you for including such detailed information about what you're trying to do, that's a rarity here! 

The reason you probably haven't gotten many replies is probably that (from what I have seen) most people here are asking for help and not giving it. Unfortunately, I don't know enough about how GUIs work to help you either, but I hope that someone here can! 

Keeping that in mind, here's some general advice (take this with a grain of salt):
Split the problem into smaller pieces. For example, start by finding everything you can about modifying the standard inventory. I'm pretty sure that TerraFirmaCraft modifies the inventory, so I'd suggest starting by looking at their GitHub and trying to figure out what parts control their replacement GUI: https://github.com/TerraFirmaCraft/TerraFirmaCraft. Start small; for instance, just change the layout or something to start with. Then, add tabs, and so forth. Once that is done and working, see if you can restrict the inventory from opening, and only allow it to open when the user has a certain item. Proceed slowly. If something isn't needed, delay it for a future step.

For learning Java, here's some links to tutorials and resources (copied from the Forge Discord's bot):
JetBrains Academy (free online course): https://www.jetbrains.com/academy/ Codeacademy (free online course): https://www.codecademy.com/learn/learn-java University of Helsinki (free online course): https://java-programming.mooc.fi/ Basic Java Tutorials: https://docs.oracle.com/javase/tutorial/ Introduction to Programming using Java by David J. Eck (free online textbook): http://math.hws.edu/javanotes/

Those may or may not be helpful, depending on how advanced you are by now. 

All the same, best of luck with your inventory overhaul project!

  • Thanks 1
  • 2 weeks later...
Posted

Ahhhhh, modded inventories, my favourite. You are going to need a LOT of skill to pull this one of. Start by replacing the inventory screen with your own, and then you are basically on your own. It is achievable, but trust me, it’s going to be a lot of hard work.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Im trying to build my mod using shade since i use the luaj library however i keep getting this error Reason: Task ':reobfJar' uses this output of task ':shadowJar' without declaring an explicit or implicit dependency. This can lead to incorrect results being produced, depending on what order the tasks are executed. So i try adding reobfJar.dependsOn shadowJar  Could not get unknown property 'reobfJar' for object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler. my gradle file plugins { id 'eclipse' id 'idea' id 'maven-publish' id 'net.minecraftforge.gradle' version '[6.0,6.2)' id 'com.github.johnrengelman.shadow' version '7.1.2' id 'org.spongepowered.mixin' version '0.7.+' } apply plugin: 'net.minecraftforge.gradle' apply plugin: 'org.spongepowered.mixin' apply plugin: 'com.github.johnrengelman.shadow' version = mod_version group = mod_group_id base { archivesName = mod_id } // Mojang ships Java 17 to end users in 1.18+, so your mod should target Java 17. java.toolchain.languageVersion = JavaLanguageVersion.of(17) //jarJar.enable() println "Java: ${System.getProperty 'java.version'}, JVM: ${System.getProperty 'java.vm.version'} (${System.getProperty 'java.vendor'}), Arch: ${System.getProperty 'os.arch'}" minecraft { mappings channel: mapping_channel, version: mapping_version copyIdeResources = true runs { configureEach { workingDirectory project.file('run') property 'forge.logging.markers', 'REGISTRIES' property 'forge.logging.console.level', 'debug' arg "-mixin.config=derp.mixin.json" mods { "${mod_id}" { source sourceSets.main } } } client { // Comma-separated list of namespaces to load gametests from. Empty = all namespaces. property 'forge.enabledGameTestNamespaces', mod_id } server { property 'forge.enabledGameTestNamespaces', mod_id args '--nogui' } gameTestServer { property 'forge.enabledGameTestNamespaces', mod_id } data { workingDirectory project.file('run-data') args '--mod', mod_id, '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources/') } } } sourceSets.main.resources { srcDir 'src/generated/resources' } repositories { flatDir { dirs './libs' } maven { url = "https://jitpack.io" } } configurations { shade implementation.extendsFrom shade } dependencies { minecraft "net.minecraftforge:forge:${minecraft_version}-${forge_version}" implementation 'org.luaj:luaj-jse-3.0.2' implementation fg.deobf("com.github.Virtuoel:Pehkui:${pehkui_version}") annotationProcessor 'org.spongepowered:mixin:0.8.5:processor' minecraftLibrary 'luaj:luaj-jse:3.0.2' shade 'luaj:luaj-jse:3.0.2' } // Example for how to get properties into the manifest for reading at runtime. tasks.named('jar', Jar).configure { manifest { attributes([ 'Specification-Title' : mod_id, 'Specification-Vendor' : mod_authors, 'Specification-Version' : '1', // We are version 1 of ourselves 'Implementation-Title' : project.name, 'Implementation-Version' : project.jar.archiveVersion, 'Implementation-Vendor' : mod_authors, 'Implementation-Timestamp': new Date().format("yyyy-MM-dd'T'HH:mm:ssZ"), "TweakClass" : "org.spongepowered.asm.launch.MixinTweaker", "TweakOrder" : 0, "MixinConfigs" : "derp.mixin.json" ]) } rename 'mixin.refmap.json', 'derp.mixin-refmap.json' } shadowJar { archiveClassifier = '' configurations = [project.configurations.shade] finalizedBy 'reobfShadowJar' } assemble.dependsOn shadowJar reobf { re shadowJar {} } publishing { publications { mavenJava(MavenPublication) { artifact jar } } repositories { maven { url "file://${project.projectDir}/mcmodsrepo" } } }  
    • All versions of Minecraft Forge suddenly black screen even without mods (tried reinstalling original Minecraft, Java, updating drivers doesn't work)
    • When i join minecraft all ok, when i join world all working fine, but when i open indentity menu, i get this The game crashed whilst unexpected error Error: java.lang.NullPointerException: Cannot invoke "top.ribs.scguns.common.Gun$Projectile.getDamage()" because "this.projectile" is null crash report here https://paste.ee/p/0vKaf
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.