Jump to content

Recommended Posts

Posted

Greetings, forge community!

Before I get to the actual suggestions I wish to make I would like to say a few things that may or may not be important (preface), for you convenience I've made the post into sections and sub-sections for easy reading.

 

1. Preface

I will start off by expressing my appreciation to everything you have done so far, most poeple like to thing that you job is easy, "it's just a mod", well I know that it's comleately the opposite, not only you don't have documentation to work with, there is actually nothing to document (atleast at forge level) considering you are working with an un-obfuscated decompilation of java bytecode (or bitcode, can't remember what it's called). So having said that I want to be abosultly clear about one thing, I'm not criticising your work, I may have different ideas about how things should be done, but that's only my opinion which I formed over the years.

 

So as I implicitly stated, I have some experience with the sort of things forge is doing (not exactly the same things but close). Let me give you a little background - if I'm not mistaking I've started programming about 7 years ago as an hobbyist, I was working mainly on development frameworks rather that software, as I gained more experience I became more and more "obsessed" with extensibility. I started to develop more and more frameworks around that that subject, from plugin loaders (similarly to FML) to IoC frameworks. I learned what makes things work and what doesn't, and I'd love to share that with you.

 

2. General rules in making extensible software

The following list is a compilation of things I believe are necessary to make good extensible software.

 

2. 1. Plugins should not load themselves

I believe that once plugins are able to load themselves they have too much control over the system. In forge Mods are loaded through some sort of pipeline where they are first activated (in the sense of instance activation of the '@Mod' decorated classes) and then are "pre-initialized", "initialized" and "post-initialized". The concept behind this process seems right but in my opinion all that is is a glorified hook that lets Mods do whatever they wish to do. It seems that Forge is loading the Mods but in practice the mods are actually loading themselves - they register blocks, items, entities etc. by themselves.

 

2. 2. Inversion of Control is mandatory (almost)

Every time I made something plug-able I found IoC to the perfect solution, although is it not really mandatory (singletons and factories can achieve the same thing), it's just a joy for 3rd-parties to use the system, it's less error-prone and to be honest everyone is incorporating it into their software right now.

In forge I haven't seen IoC being used - singletons (like FMLCommonHandler.instance) and static classes (like GameRegistry) (static classes are much worse than singletons and should not be used in my opinion) are used instead.

 

2. 3. Never ever let 3rd-parties access internals

Well I know I'm unfair about that but 3rd-parties should never have access to internals and all interactions should be done through an API. I know that it's very difficult to achieve using forge because of Minecraft itself, so lets disregard that for now. The same goes for security and sandboxing.

 

2. 4. 3rd-parties have to ask first

To explain this point I'll tell about some framework I've made some time ago - "Overlay" is an Mvvm framework I made some time ago it's purpose was to completely separate Presentation code from Business Logic, controls are bound to data and events through properties by the framework. Some properties allow read-write access and some allow read-only access. That means that, for example, a Textbox bound to a read only property should not be editable - ever, initially code that was using the framework could changed any aspect of the control including its editable, if a Textbox that is bound to a read-only property is made editable and it attempts to change its underlying property an exception will be thrown resulting in a crush most likely. Another problem to arise are race conditions - say one plugin colors all the buttons blue by default and another plugin colors all the buttons inside valid forms green which one should take presence? Well the second one should but who's to overrule that?

These two problems made birth to the Aim framework which ask everyone to express their intents - i.e. changing the color of the button. All intents are given a priority and then the intent with the highest priority gets to act.

In forge this could solve mod conflicts and (partially) the need for the ore dictionary, each mod could express an intent to add copper ore and only one will ever be added.

 

2. 5. This is it for now

For now I can't think about more practices that should be integrated into forge, once I find more things to be improved I'll edit them into this section.

 

3. How I can help

I've read the post that asks for pull requests from those who can help with them, I absolutely can help with that but as you can see the features I'm suggesting may require significant effort and will most likely result in some API changes, so I really want to hear what you think first.

As I said I have a lot of the code base already written the only problem is that it needs to ported from .Net to JVM (C# to java).

Other then I'm on vacation for the next month or so after that I'll be gone for about 3 or 4 weeks and the then I'll be on a mostly standard 8 hours work schedule.

 

Thanks for reading!

 

P.S. while writing the post I noticed you don't have a 'WYSIWYG' editor in place, I once worked with PhpBB forums and I used CKEdit (completely free) for that, it's a grate tool :).

Posted

Your suggestions are good in theory on projects that have full control and want to provide all the abstraction out of modders hands.

 

This IS NOT what Forge is. Forge is spcifically desinged to go against this type of design.

 

If you want a abstraction layer and data orientated mods, youyou out of luck in the minecraft community. This may be something we introduce in the future (once i get forge and fml merged, get some of the update processes streamlimed, deal with other non-forge projects, and so forth). But for now not going to happen because that is not what this project is.

 

 

I do Forge for free, however the servers to run it arn't free, so anything is appreciated.
Consider supporting the team on Patreon

Posted

I'm interested to know why Forge is against this kind of design, I understand the limitations coming from Minecraft, but other then that I don't see why IoC and intent oriented design won't fit, do you feel it's too much of a change or is there another reason?

Posted

Because throwing buzzwords around has nothing to do with functional code. The parts that forge addss on top of minecraft are dictated by minecrafts style, compatibility with other mods, and just the samity of having to deal with mc/modders.

 

Forges goal is to be a small later on top of mc and to have modders work with mc directly. And the designs that forge and fml employ are what are needed to do this. Trying to restrict modders is just a futile effort due to the environment.

I do Forge for free, however the servers to run it arn't free, so anything is appreciated.
Consider supporting the team on Patreon

Posted

I thought this "low level" layer was what FML is, regardless I have a few more things I'd like to discuses would you mind having a chat in a bit more convenient way (IRC, Skype whatever suites you)?

Posted

If you havent noticed fromt my plethora of posts and tweets, i'm traveling right now so irc and the like dont work. However most of your comments and suggestioms cpuld probably be answered with "I know, but thats not how minecraft or the community works" Keep in mind ive been developing systems like this for 15 years, i know what im doing and there are reasons why the methods ive choses are what they are.

I do Forge for free, however the servers to run it arn't free, so anything is appreciated.
Consider supporting the team on Patreon

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

    • latest.log right? If yes, https://mclo.gs/xPN1fAI
    • When i try to start minecraft forge 1.20.1 an error appears an the launcher shows the error 1, i don't know what's that :   "failed to initialize graphics window with current settings" "Timed out trying to setup the Game Window"
    • Also add the client log after trying to join  
    • We’ve got a fantastic deal for new users—just use the acw696499 Temu coupon code to unlock massive savings across Temu’s global marketplace. This code offers maximum benefits to shoppers in the USA, Canada, and major European countries. With the Temu coupon $100 off and Temu 100 off coupon code, you can enjoy generous discounts and exclusive offers. It’s your key to smart shopping without compromising on quality. What Is The Coupon Code For Temu $100 Off? Everyone loves a great deal, and Temu makes it even better with this limited-time offer. Whether you're a new or existing customer, the Temu coupon $100 off or $100 off Temu coupon is the real deal to watch. acw696499: Flat $100 off on your first purchase as a welcome bonus. acw696499: Access a $100 coupon pack with multiple-use options. acw696499: Exclusive $100 flat discount for new customers on sign-up. acw696499: Extra $100 promo code for existing customers. acw696499: Valid for all users in the USA and Canada for a $100 off coupon experience. Temu Coupon Code $100 Off For New Users In 2025 If you're just starting out with Temu, this deal is tailor-made for you. The Temu coupon $100 off and Temu coupon code $100 off are designed specifically to give new users an exceptional start. acw696499: Flat $100 discount for all new users. acw696499: Get a $100 coupon bundle instantly after registering. acw696499: Up to $100 coupon bundle usable over multiple orders. acw696499: Free shipping to 68 countries, making your first purchase even sweeter. acw696499: Enjoy an extra 30% off on any product as a first-time user. How To Redeem The Temu Coupon $100 Off For New Customers? Using the Temu $100 coupon and Temu $100 off coupon code for new users is easy: Download the Temu app or visit the Temu website. Register as a new user with your email or phone number. Go to the coupon section and enter code acw696499. Browse and add your favorite items to the cart. Apply the coupon at checkout to redeem your discount. Temu Coupon $100 Off For Existing Customers Temu doesn’t just stop at new users. Even returning shoppers can make the most of the Temu $100 coupon codes for existing users and Temu coupon $100 off for existing customers free shipping benefits. acw696499: $100 extra discount for existing Temu users. acw696499: Unlock a $100 coupon bundle for multiple purchases. acw696499: Get a free gift with express shipping throughout the USA and Canada. acw696499: Enjoy an extra 30% off on top of existing discounts. acw696499: Free shipping to 68 countries with no strings attached. How To Use The Temu Coupon Code $100 Off For Existing Customers? To use the Temu coupon code $100 off and Temu coupon $100 off code as an existing user: Log into your Temu account via app or website. Go to the ‘Coupons & Promotions’ section. Enter acw696499 in the coupon code box. Shop for your desired products. Apply the code during checkout to enjoy the savings. Latest Temu Coupon $100 Off First Order Your first order with Temu just got a whole lot more exciting. When you use the Temu coupon code $100 off first order, Temu coupon code first order, or Temu coupon code $100 off first time user, big savings await. acw696499: Flat $100 discount on your first order. acw696499: Activate your $100 Temu coupon code with ease. acw696499: Receive up to $100 worth of coupons for multiple purchases. acw696499: Enjoy free shipping across 68 countries. acw696499: Add 30% off on your first purchase. How To Find The Temu Coupon Code $100 Off? If you're searching for a Temu coupon $100 off or even a verified Temu coupon $100 off Reddit code, we’ve got you covered. Simply sign up for the Temu newsletter to get exclusive coupons straight to your inbox. You can also follow Temu’s official pages on Instagram, Facebook, or Twitter for surprise promo codes. For guaranteed and working coupons, visit any trusted coupon site—you’ll always find the best deals like acw696499 there. Is Temu $100 Off Coupon Legit? Yes, the Temu $100 Off Coupon Legit offer is 100% real. Our Temu 100 off coupon legit code—acw696499—has been tested and verified by thousands of users. You can safely use this code for $100 off on your first order and enjoy discounts on recurring purchases too. There’s no expiry date, and the code is valid globally. How Does Temu $100 Off Coupon Work? The Temu coupon code $100 off first-time user and Temu coupon codes 100 off offers work by instantly applying discounts to your cart. Once you sign up and apply the coupon code, Temu automatically adjusts the pricing to reflect your savings. Whether it’s a flat $100 off or a bundle, the discounts will apply across eligible items at checkout. How To Earn Temu $100 Coupons As A New Customer? To earn the Temu coupon code $100 off or 100 off Temu coupon code as a new customer, simply sign up on the Temu app or website. Enter the code acw696499 during registration or at checkout, and you’ll instantly unlock $100 worth of coupons. These can be applied over multiple orders, maximizing your benefits as a newcomer. What Are The Advantages Of Using The Temu Coupon $100 Off? The Temu coupon code 100 off and Temu coupon code $100 off offers bring many great benefits: $100 discount on the first order. $100 coupon bundle for multiple uses. Up to 70% discount on trending items. Extra 30% off for existing customers. Up to 90% off on selected categories. Free gift for new users. Free delivery to 68 countries. Temu $100 Discount Code And Free Gift For New And Existing Customers Using the Temu $100 off coupon code or $100 off Temu coupon code gives you unmatched savings and perks. Whether you’re a new or returning customer, you’ll love the benefits. acw696499: Enjoy a $100 discount on your very first order. acw696499: Get an extra 30% off on all purchases. acw696499: Free gift exclusively for new Temu users. acw696499: Up to 70% off across all product categories. acw696499: Free gift and free shipping in 68 countries, including the USA and UK. Pros And Cons Of Using The Temu Coupon Code $100 Off This Month Take advantage of the Temu coupon $100 off code and Temu 100 off coupon deals with these pros and cons: Pros: Massive $100 discount on eligible purchases. Works for both new and existing users. Stackable with other Temu offers. Valid in 68 countries worldwide. Comes with free shipping and gifts. Cons: Only valid through the app or website. May not apply to some sale items. Terms And Conditions Of Using The Temu Coupon $100 Off In 2025 Please read these Temu coupon code $100 off free shipping and latest Temu coupon code $100 off terms: Our coupon code acw696499 does not have an expiration date. The code is valid for both new and existing users. No minimum purchase is required to use this code. It applies across 68 countries worldwide. Free shipping and gifts are included. Final Note: Use The Latest Temu Coupon Code $100 Off Unlock unbeatable value with the Temu coupon code $100 off today. Whether you're new or returning, the savings are just one click away. Enjoy great deals, exclusive bundles, and premium products with our Temu coupon $100 off. Shop smart and save more every time. FAQs Of Temu $100 Off Coupon  Is the Temu $100 off coupon available to everyone? Yes, both new and existing users in supported countries can access the $100 off offer using code acw696499.  How can I ensure my Temu coupon works? Use a trusted and verified code like acw696499 and follow the redemption steps properly at checkout. Does the Temu $100 coupon expire? No, our exclusive code acw696499 has no expiration date and can be used anytime.  Can I combine the $100 coupon with other discounts? Yes, Temu allows coupon stacking, so you can combine acw696499 with other ongoing deals.  Is the Temu $100 off coupon valid worldwide? Absolutely. The acw696499 code is valid in 68 countries, including the USA, Canada, and Europe.
    • So I tried joining it, but they disconnect me immediately after it opens. Here's the log after closing the server: https://mclo.gs/5Bp0Mno
  • Topics

×
×
  • Create New...

Important Information

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