MachineMuse / MachineMusePowersuits

Minecraft mod, take 2
236 stars 105 forks source link

[1.14.4 ?] planning and progress #936

Open lehjr opened 5 years ago

lehjr commented 5 years ago

I've decided to skip 1.13.2 and go to 1.14.2 1.14.4. As always, there will be some changes to the mod due to changes in Minecraft and Forge.

I'll update this as time goes on...

eyeonus commented 4 years ago

The important thing is that you decided to go the addon route, regardless of the reasons behind the decision or your desire to do it versus some other way, like registering every item at launch, and then disabling the items that depend on other mods, once you can check if the other mods are installed, if they aren't.

I'm not arguing that you shouldn't. I'm not saying I don't like that you are.

I defer to your expertise, since you know the code you're working with, and I don't.

I am simply identifying things that seem like they will be issues you'll have to deal with in the future, in the event that you haven't already thought of, and come up with solutions for, these potential issues.

lehjr commented 4 years ago

You can't extend an item that doesn't exist. And if you try to register it with the base class missing that the item extends, you're going to have a bad time. There is also no real way of disabling items, at least not in the sense you're talking about. Yeah, sure, you can try and grab the item from the registry, and try to wrap the methods, but the problem is that the parameters are all changed now, and there are places where the itemstack parameter for the item in use no longer exists and you have no way to pass that parameter to the method. Instead the itemstack is fetched inside the method body, where you don't have access. This is what I'm trying to explain to you. It's simply not worth the headache.

lehjr commented 4 years ago

for instance:

public ActionResult<ItemStack> onItemRightClick(World world, PlayerEntity playerIn, Hand handIn) 
eyeonus commented 4 years ago

Okay, I have a question.

How difficult would it be to make it so that you can just put a mod's item into the Fist's module hole and use it directly?

So, instead of having a TOP module, and a leaf blower module, etc. etc., just put the actual TOP in the module hole, and when it's selected as active in the fist, pass on the onrightclick to the actual TOP item?

lehjr commented 4 years ago

That's the problem, as I illustrated, you can't. There's no itemstack parameter, the result of which is that anyone that implements that method is going to use

ItemStack modItem = playerIn.getHeldItem(handIn);
eyeonus commented 4 years ago

Huh. That must not be how the Morph-O-Tool and the Akashic Tome do it, then. I wonder how they do do it.

lehjr commented 4 years ago

and that will be inside the method body. So you can't control that as there is no access to it.

How the Morph-O-Tool mod thing does it is switch the item out and back again, which is usually safe in a single player environment. In a loaded laggy server, I wouldn't be so sure about its reliability.

eyeonus commented 4 years ago

So it literally turns itself into the other item, I imagine with some tag that enables the MOT code to change it back. That doesn't sound like a viable solution for MPS. Oh well.

lehjr commented 4 years ago

Yeah, that's what it does. Which is why I didn't replace the omniwrench with it in 1.12.2. On it's own it's a pretty cool idea. But for the sake of reliability, I don't know.

lehjr commented 4 years ago

The other reason I didn't do that is I would have basically had to do a copy and paste of a large portion of the mod to get it to work. I don't even like doing that for small segments of code.

lehjr commented 4 years ago

I should point out though, that your question about using other modules, in the case where the itemstack in use is available as a method parameter, or isn't needed, then turning that item into a module is just a matter of attaching the right capability to it. It's really just an issue where the itemstack parameter is needed for an item in use.

eyeonus commented 4 years ago

The reason I was asking was because, if it's possible to install modules generically like that, that would open up compatibility for a lot of things without actually needing to specifically implement them. I.e., any item from any mod that is a hold-in-your-hand-and-right-click-to-make-it-do-its-thing would work, if it were possible to just drop an item into the fist's module hole. In terms of making your life easier, that would be a tremendous improvement.

But it's an idea that doesn't pan out, so....

lehjr commented 4 years ago

Good news everyone!! 1.12.2 development is broken with the current version of Intellij. For whatever reason, the assets don't get loaded. They get copied to the build directory, but not loaded at launch. On the bright side, 1.14.4 is unaffected. So this won't have much impact on getting the 1.14.4 port finished, but any backports and fixes won't happen until I find a solution.

eyeonus commented 4 years ago

Yay?

lehjr commented 4 years ago

https://images.app.goo.gl/fAJ9qgtHTK6PyZtPA

lehjr commented 4 years ago

The only solution for the 1.12.2 problem is to use a different IDE. I’ll try netbeans later and see if I can get that up and running. I would like to be able to at least roll out a maintenance release or 2 for 1.12.2 before moving over to 1.14.4 completely.

Edit: nope. Gradle is only supported by a plugin, the plugin adds an all in one right click context menu for gradle tasks, which by itself is painful, but doable. The problem is that it relies on the gradle runClient task, which for whatever reason, is only able to run once and every consecutive attempt just quits after building. Anyway, the solution is to just use an older version of Intellij, specifically 2018.3.6.

lehjr commented 4 years ago

Armor is now rendering correctly again. List of stuff to fix before the first alpha is getting pretty short, mainly just the heating and cooling code and fluid tank module. Recipes aren't finished yet, but they don't prevent people from trying things out.

lehjr commented 4 years ago

screw it, I'm done. Oh, and screw curseforge.

lehjr commented 4 years ago

Clarification: https://twitter.com/Lehjr1/status/1182788394105081859

eyeonus commented 4 years ago

Well fuck.

lehjr commented 4 years ago

Yeah, there’s more to the story. So I created a new CurseForge project page, called Numina-Continued where I was going to continue Numina. CurseForge said that it would confuse people and I had to completely rename it. So the person who has been porting, maintaining and uploading the project for the past 3 years has to completely renaim the project to basically start over. Yet, Everyone else that changes a single fucking line of code is ok to create their own project page without changing the name. It was then I realized there’s just no fucking point anymore. It’s my work, over and over again, dumping countless hours into a mod I don’t even have time to use myself. And for what? It’s always going to be someone else’s project.

EzerArch commented 4 years ago

Damn these stupid restrictions!

Did you try to contact @MachineMuse to hand over the keys? And the CurseForge? The last time I did they answered in a few days. Perhaps they can help you out.

lehjr commented 4 years ago

Haven't even heard from her in years.

EzerArch commented 4 years ago

Haven't even heard from her in years.

At least her last activity on GitHub was ~4 months ago here: https://github.com/chummer5a/chummer5a/pull/3503#issuecomment-493705281. I could try to post an off-topic reply there to get her attention... just to see what happens. XD (oh, it's someone else's project)

I could, I'd hug you for gratitude for keeping one of my favorite mods. BTW, just discovered your Patreon page. It's not much. It's a reward for keeping the project as I enjoyed playing the mod.

lehjr commented 4 years ago

The thing that pisses me off is it’s fine for someone to create a project page called Numina-Fix, change a single one of code and that passes the sniff test for them. But me with my commit and upload history right there for the world to see, no, I can’t do that because it would create confusion. I’m tempted to just call it FCF-Lib, as in FuckCurseForge-Lib.

lehjr commented 4 years ago

By the way, I do appreciate the Patreon contributions. It was the only reason I was going to upload the project to CusreForge in the first place.

lehjr commented 4 years ago

for instance, this is OK: https://www.curseforge.com/minecraft/mc-mods/numina-patched

EzerArch commented 4 years ago

Really, Curse is sometimes drunk.

as in FuckCurseForge-Lib.

(Is this my "Some men just want to watch the world burn" time?) Go go go! XD

As to abandoned or inactive projects that now are being continued, it's not only one time I've seen mods been renamed just by adding a suffix such as "reborn", "reloaded", "1.8+", "2019" etc.: Shoulder Surfing, Smart Moving, NEI and so on.

It seems you're sweating it too much or having a break-down by trying to support every version and side-mods. Players are demanding and you have to draw a line as you did with that 1.7.10 nightmare. If you don't focus you won't feel you're making progress.

Give it a time. Perhaps meanwhile @MachineMuse says something or we find a better workaround for the drunk CurseForge thing.

lehjr commented 4 years ago

I've had plenty of issues in with them in the past, and I'm pretty open about it, from their message in a bottle support system, to their taking several months to restock Amazon gift cards, despite them being an Amazon owned company. I actually considered moving the project to NexusMods, but they aren't currently setup to support Minecraft mods, nor is there any activity in their Minecraft subforums.

The current situation is that I can't do the things I need to do at an optimal lever as they are. For instance, the CurseForge project pages. I "left" those pages, so now I can't do anything, but even at best, I could edit some stuff, but I couldn't add users to the project. So if I wanted to put a team together and share "points" with them, I simply could not do that. You can no longer give other people points. Not that I was swimming in points. "You were awarded 8.24 points for your project(s) 4.52 points for Modular Powersuits 3.71 points for Numina " Where $1 is like 20 points. And even here, I cannot even change the default branch. I use branches to preserve code for running versions of the mod. A lot of mod authors don't. They just update that branch and move on to the next version, essentially burning the previous version, making updating it a pain.

As far as "abandoned", that's a bit trickier. Technically, the mod probably wouldn't fall into that category since I was updating and maintaining it. But I'm done with that now. The only way to continue the mod through CurseForge would be to completely rename the project, severing it from it's legacy.

But anyway, the short version of it all is that the status quo is no longer working for me, it's working against me.

EzerArch commented 4 years ago

As far as "abandoned", that's a bit trickier.

My point wasn't so much focused on whether the mod was abandoned, instead mods with a range of reasons, be it abandoned or inactive, got a minor renaming so they could continue in new project pages. But, in your case, Curse decided to be a curse.

Looking at the Curse page out of curiosity: under members (on the right panel) is only MachineMuse. Did she forget to add you as a team member so you can manage the page? She recently logged on on September 17th.

lehjr commented 4 years ago

I left those pages last night because it doesn't make sense to continue as is. It just doesn't work for me anymore.

lehjr commented 4 years ago

Well, I'll try renaming both projects and if that doesn't fly then I really am done.

lehjr commented 4 years ago

Just so everyone is clear, I suck at naming things... example: https://github.com/MachineMuse/MachineMusePowersuits/blob/1.12.2-experimental/src/main/java/net/machinemuse/powersuits/client/model/helper/ColoredQuadHelperThingie.java

EzerArch commented 4 years ago

Just so everyone is clear, I suck at naming things... example:

Looking for suggestions? Modular Powersuits Xtended Neo-Revamp Plus Ported? :)

lehjr commented 4 years ago

Was thinking Modular Power Armor, and MPA-Lib, but I don't know if it will pass the smell test where CurseForge is concerned. MPA-Lib is pretty bad though, especially when prefixing java classes with it.

EzerArch commented 4 years ago

Modular Power Armor is excellent. It depicts the original/main idea quite well.

Hope it gets approved.

lehjr commented 4 years ago

Still need a name for the library though. MPA-Lib is pretty bad because you end up with class names like MPALibBiMap, because BiMap is already a class name

EzerArch commented 4 years ago

MPA-Core?

lehjr commented 4 years ago

Was trying to come up with a single word that could be used as a prefix. Oh well. Not super important at the moment.

EzerArch commented 4 years ago

We use MicdoodleCore as name for the Galacticraft lib module. Maybe yours could be called LehCore. ;)

lehjr commented 4 years ago

MPA-lib project page is done for the moment. I’m hoping to have the MPA code ready for the first alpha in a couple days if all goes well. Still need a logo for it before I can upload it

EzerArch commented 4 years ago

I’m hoping to have the MPA code ready for the first alpha in a couple days if all goes well.

Looking forward to the news.

Still need a logo for it before I can upload it

Has MPS/A changed much? I barely got passed 1.10 version, all I know it's that you had to remake the Tinker Table. XD

If you don't mind, could you take a few screenshots that best depict the current/desirable state of the mod? Perhaps I could get someone to make a logo for you.

lehjr commented 4 years ago

The biggest change for the user is the modules are items now, so you have to craft them. That also replaces the install costs. Code-wise, there are a lot of changes that go beyond the usual porting.

lehjr commented 4 years ago

MPA-Lib: https://github.com/lehjr/MPA-Lib https://www.curseforge.com/minecraft/mc-mods/mpa-lib

MPA: https://github.com/lehjr/ModularPowerArmor https://www.curseforge.com/minecraft/mc-mods/modular-power-armor

EzerArch commented 4 years ago

Congratz!!!

lehjr commented 4 years ago

I will be doing a 1.12.2 backport of MPA-Lib and a maintenance rollup/MPA bridge for MPS. This is because 1.14.4 is a bit hit or miss for modding at the moment.

EzerArch commented 4 years ago

Question: can I post about the release of MPA or should I wait?

lehjr commented 4 years ago

Sure. Keep in mind that 1.14.4 is very early alpha. 1.12.2 stuff is being backported. The current plan is to do a maintenance version of MPS and a new version of MPA, both using MPA-lib instead of Numina. I'll probably also create something to convert MPS items to MPA. All that will take time though.

lehjr commented 4 years ago

1.12.2 backport is about 80% done. The work on this port will help me finish the 1.14.4 version since I can test more things in 1.12.2 since many of the other mods don't even exist yet. There are some mods like Tech Reborn that went with Fabric instead of Forge and those won't be supported.

Edit: Pretty sure Buildcraft is gonna go with Fabric.

eyeonus commented 4 years ago

Fabric? Someone else decided to make an API for 1.14.x?