Added Kext Files and updated the config.plist to include the patches for amd.
Let’s see how this goes , With how simple all these steps were , I don’t think its going to boot in the first try. I feel like I am missing a lot of things that are not generated for my EFI.
Also just something I forgot to inform, and this might look kind of cheating , but I have created hackintosh using open simplify for compiling a program , and while it worked, I never really understood.As such I am going blank in here , just the knowledge of my hardware from mess with Arch is pushing me through.
Anyway that’s it for this hour.
├───BOOT
└───OC
├───ACPI
├───Drivers
├───Kexts
│ ├───AMDRyzenCPUPowerManagement.kext
│ │ └───Contents
│ │ ├───MacOS
│ │ └───_CodeSignature
│ ├───AppleALC.kext
│ │ └───Contents
│ │ └───MacOS
│ ├───BrightnessKeys.kext
│ │ └───Contents
│ │ └───MacOS
│ ├───HoRNDIS.kext
│ │ └───Contents
│ │ ├───MacOS
│ │ └───Resources
│ │ └───en.lproj
│ ├───Lilu.kext
│ │ └───Contents
│ │ └───MacOS
│ ├───NootedRed.kext
│ │ └───Contents
│ │ └───MacOS
│ ├───NVMeFix.kext
│ │ └───Contents
│ │ └───MacOS
│ ├───RealtekRTL8111.kext
│ │ └───Contents
│ │ ├───MacOS
│ │ └───_CodeSignature
│ ├───RestrictEvents.kext
│ │ └───Contents
│ │ └───MacOS
│ ├───SMCAMDProcessor.kext
│ │ └───Contents
│ │ ├───MacOS
│ │ └───_CodeSignature
│ ├───SMCBatteryManager.kext
│ │ └───Contents
│ │ ├───MacOS
│ │ └───Resources
│ ├───SMCRadeonSensors.kext
│ │ └───Contents
│ │ └───MacOS
│ ├───USBToolBox.kext
│ │ └───Contents
│ │ └───MacOS
│ ├───UTBMap.kext
│ │ └───Contents
│ ├───VirtualSMC.kext
│ │ └───Contents
│ │ └───MacOS
│ ├───VoodooI2C.kext
│ │ └───Contents
│ │ ├───MacOS
│ │ └───PlugIns
│ │ ├───VoodooGPIO.kext
│ │ │ └───Contents
│ │ │ ├───MacOS
│ │ │ └───_CodeSignature
│ │ ├───VoodooI2CServices.kext
│ │ │ └───Contents
│ │ │ ├───MacOS
│ │ │ └───_CodeSignature
│ │ └───VoodooInput.kext
│ │ └───Contents
│ │ ├───MacOS
│ │ └───_CodeSignature
│ ├───VoodooI2CHID.kext
│ │ └───Contents
│ │ ├───MacOS
│ │ └───_CodeSignature
│ └───VoodooPS2Controller.kext
│ └───Contents
│ ├───MacOS
│ └───PlugIns
│ ├───VoodooInput.kext
│ │ └───Contents
│ │ ├───MacOS
│ │ └───_CodeSignature
│ ├───VoodooPS2Keyboard.kext
│ │ └───Contents
│ │ └───MacOS
│ ├───VoodooPS2Mouse.kext
│ │ └───Contents
│ │ └───MacOS
│ └───VoodooPS2Trackpad.kext
│ └───Contents
│ └───MacOS
├───Resources
│ ├───Audio
│ ├───Font
│ ├───Image
│ └───Label
└───Tools
Howdy People I Will be creating a Hackintosh, yep you read that right , a bare metal hackintosh on my Amd laptop.
So what did I do in these 44 minutes:
Gathering files: So I got the opencore bootloader and setuped the default release option of it.
Next was prepping my hardware information, luckly SSDTtime helps you prepare it within 10 minutes
The next step is gathering files called Kext (Kernel Extension) these are required by macOs to do work , they are Like Drivers I believe.
There is another but if you were to use this tool , the outcome might not be respected by the community of hackintosh but it does give you an easy way for it.
Since I am waiting for modrinth to verify the mod. I made some more improvement to the mod.
From now on you can play this mod on a dedicated server.
Yes before that was not possible but now it is.
due to this , the server was importing a class that it had no idea of and hence the crash.
with this I created two more classes , one for server and other for client , both of which implemented the Interface I just created.
The server class just souted that you are using the wrong method please check your code.
The Client Class had the actual screen code and did the actual stuff.
Now I made it so that when the item is running in server , the server class will be loaded and once the clients connect the client method would be loaded in and take priority.
Kinda hard but not that much
For some reason the mod worked fine for a couple of days, it had no problem with beta testing and stuff.
When I handed it to the requester, he claimed that the item names weren’t staying( persistent ).
e.g. he renamed the Name Tag to be say wolfy, It would show up as wolfy for a second until he interacted with it.
Which is weird since when I tested it , it was working perfectly fine.
So created a new instance of Minecraft and did the testing again , this time even I was getting the issue.
in my old instance the mod worked fine and even in IntelliJ’s runClient instance it worked fine.
This issue was getting annoying as well now.
The worst kind of issue, the cause was that if you renamed the item during the starting of a tick then it would work just fine( no clue , why).
1/20th of second is called a tick.
But if it during the tick , the server won’t sync with the changes and this would create a ghost item , that exist in client only.
now why did the dev tool kit not show this error:
this is due to low performance of dev kit due to high ram.
before the tick Minecraft was doing this sync between client and server dynamically for my item ( there was no sync logic ).
The fix was to delve into networking and create a packet that had my custom payload , now the server would read this payload every time it receives it , not just at the start of the tick.
This solved the issue pretty quickly.
The majority of time I spent on this issue was figuring out the reason behind it
this mod is extremely technical with datagen and Screen, and while the lines are pretty simple and limited , the sheer amount of trial and error , I had to go trough makes it hard for someone just starting out in modding.
That being said , if you do which to make something similar , you should try this.
The making of this mod tested both the registries of Minecraft.
How and when these registries loaded and what part of them did not load at all, yes , inbuilt tags aren’t loaded during datagen.
And most importantly how quickly you can copy and paste vanilla code( that being said , addapting it for your mod is the tought part , alot of the classes are either protected or private , some time you have to do a mixin, not reallly for this mod but you will if you do some complex level modding)
The entire concept of GUI in minecraft is interesting you let it grow on you
My biggest pet peeve is why the hell does two gui components require different type of identifier
one needs the exact path and the other needs just the resourcekey , why mojang just pick a side and stick to it.
The sheer amount of time I had spent trying to figure out why the gui’s texture was not loading only to find that I forgot to add .png extension in one identifiers path.
Also why does the Builder of SpriteIconButton not allow for uv configs . I would have to use only one texture and it would have been so easy , but no ,they want each icon to be a single file.
Well I finished it.
It took way longer than what I was expectation, but I guess that true for all my projects.
Here is a demo of the entire mod, will publish it once the modrinth page is verified
till then github
Okay what I did
Created two new Items called
Added Recipes for the above as well
I wrote a hole ass para but stardance does not allow no more than 4000 words so I will try to keep it concise
back in the day ( 5 years from now ) minecraft used to have NBT data, this is the time when I picked modding, before that I had been doing datapacks.
now In this 5 five years , I have taken a 1.5 year break due to some personal reason (nothing major mind you )
2 years ago minecraft removed the NBT compound and replaced it with DataComponenet
DataComponents are better in all regards( keep this in mind )
Now my major issue is that I want to make sure that only water potion is used for crafting ink, not any other potion
So I had some understanding that using Datacomponents would work
The problem occured when I tried this approch, unfortunatly for me, ItemLike’s cant’ have datacomponents since they are Interfaces and Potions could not have been accessed as an Item
So I had to dig into a rabit hole to find something similar that minecraft it self did, and I did
tinted arrow , it need to know the type of potion for the arrow to have that effect
now the problem was that this required a customcrafting system for my potion.
During this rabit hole I also stumbled at the core of shapless crafting and Shaped Crafting
and when reading the Shapeless crafting , turns out , in the underling code , the crafting needs Ingredients. normaly this would have no effect and I would have continued .
But luckly I knew that fabric had a means to store datacomponent on Ingredients
using
DataComponentPatch data = DataComponentPatch.builder().set(DataComponents.POTION_CONTENTS,new PotionContents(Potions.WATER)).build();Ingredient potion = Ingredient.of(Items.POTION);Ingredient potionIng = DefaultCustomIngredients.components(potion,data);
and then registering a custom shapeless recipe to use core feature, I did it
CustomCraftingRecipeBuilder.customCrafting(RecipeCategory.BREWING,(commonInfo, craftingBookInfo) -> new ShapelessRecipe(commonInfo,craftingBookInfo ,new ItemStackTemplate(InkQuillItems.BOTTLE_OF_INK,1), List.of(potionIng,Ingredient.of(Items.DYE.black())))) .unlockedBy("has_black_dye",has(Items.DYE.black())) .save(output, InkQuill.id("bottle_of_ink").toString());
Added a good Demo video to the Readme
Turns out once I ship a project, devlogs after it are not recorded at all, even if they ask me to fix something. but the ship will show the second devlogs time to you only.
I wasn’t plaing to become the spifing brit , but glitches and exploting things are in my nature.
the render that I have attached took me 2 hours to make but my pc can’t run chrome and blender at the same time so another shame. ( IK blender)
While all the featurs aren’t added yet , a basic firmware is complete and as such I need the thing in hands to optimize it further
I really need a 3d printer and but alas
for anyone that wants to see or use the onshape case here is the link
so far I am using a vm for qmk since its better than wsl2 and both performance and ram usage
but it too has its bottleneck so I am think of a dual boot of arch with cinnamon as DE , since that what I am familiar with
Made some changes to how the mod works
Now the mod has two modes
if you want instant return then you have to enable immediate_respawn game rule
or else you will get the death screen telling you to return by death
there are now sfx added to the mod
////Rant
tell me why the hell does minecraft have 2 distinct playsound methods one in server and one in client???
only the client one playes the sound, the server one seemed to nothig and there is no java docs suggesting to use the one over the other and when to use what
I spent 1 hour 30 mins trying to figure this out and then had to resort to asking in the fabric server for help
luckly the community was extreamly helpfull and I fixed the issue
as for the reason why its done this way:
the server method is actually the main method but it does not play the sound for the sender, since its assuemed that the sender could be code or a thing that can’t hear sound
the same method in serverlevel which you get by senderPlayer.level().playSound(@nullable except entity, source entity, SoundEvent, soundevent, SoundCategory soundCategory);
calles two method, one for the sender since we know its the player ( this is a client method in LocalPlayer which extends the AbstractClientPlayer )
and the normal server method which runs for everyone except the sender
this is all fine but tell me why is this not documented
well now it is
The biggest thing was creating the time loop, fortunatly someone had something similar done so, all I had to do was understand their code and then
implement it.
With that done, it was only a matter of some if statement that checked a timer.
the second problem was that if the timer had’nt ended but the player left the world (ie quits the game) the timer will restart again
This was easy to solve as well, since Minecraft also likes to keep track of playtime
and by using mojangs logic I created a custom stat that counted the loop timer.
The Most time was taking by making logo below, 2 hours to be exact but I was’nt able to record it cuz I forgot.
The logo represent the moibus strip : and that death is not the end but start of a new loop.
This was inspired by outer wilds with moibus studios
Learning QMK is going to be a tast but a fun one
Luckly it does not need knowledge of C language
Else I might pivot to another firmware someware
there is not really a photo for me to add so I will just add a logo
Finished the PCB Housing
Well, the DXF import does not seem constrained like I think it should be
And thus I had to do a lot of manual constraint
Learned OnShape through YouTube and furthermore attempted to make the housing for the PCB.
Haven’t finished it though
Finished the PCB; the next step is making the actual body using one shape
what this hackpad has
7 programmable switches, one programmable rotary encoder for volume /scrolling
I might add a screen but thats if I remake it again which aint happening anytime soon