Download
(546Kb)
Download
Compatible with Retail, Classic & TBC
Updated: 09-02-22 10:34 PM
Pictures
File Info
Compatibility:
Shadowlands patch (9.2.7)
WOTLK (3.4.0)
Classic (1.14.3)
Updated:09-02-22 10:34 PM
Created:10-20-17 09:37 PM
Downloads:452,592
Favorites:1,028
MD5:

Neuron  Popular! (More than 5000 hits)

Version: 1.4.18
by: Soyier, Maul

Neuron development is on an indefinite hiatus upon the launch of WoW 10.0. If you are interested in helping with development efforts to push the project forward into Dragonflight, please reach out to Soyier.

Introduction:
Neuron is a full featured action Bar addon for World of Warcraft: Shadowlands

Important Note: Neuron tentatively works with World of Warcraft: Classic and The Burning Crusade: Classic, but none of our developers actively play Classic, so support and bug fixes are offered without any guarantee. Realistically, many bugs in Classic require max level characters to debug, and none of us have any such characters. Outside help with Classic is always welcome!


Want to Donate?
Making add-ons is a lot of work! Your help goes a huge way to making my add-on work possible. If you would like to Donate, Github Sponsors is the preferred method as they are currently matching donations dollar for dollar and take zero cut.




Want to contribute?



Example:


Theme Support:
Neuron inherits all theming courtesy of the Masque addon. Neuron has full Masque compatibility, and the theming options found in Masque are quite in-depth, not to mention the robust portfolio of skins made to support Masque. In short, you can make your bars look any way you like!

Features:
  • Neuron features an unlimited number of macros. You can create as many bars/buttons as you want/need per character!
  • Are you a clicker extraordinaire? As many buttons on the screen you want where you want, when you want!
  • Macros the size of Texas! Up to 1024 characters in length!
  • Maul's unique mouse-over key-binding system - where the mouse-over binding system was born!
  • Many other of the favorite desired bar addon features and then some!
  • And, last but not least, MASQUE support!

Graphical Editor:
Neuron contains a graphical bar editor that allows for nearly endless customization to bar shape, size, orientation, and much more! Further, Neuron has neither the limitations on max number of bars nor on the max number of buttons per bar, as you might find in addons such as Bartender4 or Dominoes.


Credits:

Translators:
  • German: Aszkarath, Wolfsmutter
  • French: Cinedelle, El_Mapache
  • Brazilian Portuguese: Alanbre20
  • Russian: Hubbotu
  • Simplified Chinese: Acey7, Cestmysndee

Disclaimer:

Neuron is a fork of the amazing Ion Action Bars addon started by Connor Chenoweth aka Maul, for World of Warcraft Legion and onwards. All credit for the bulk of this addon should go to him accordingly, along with SLOKnightFall for his maintainership throughout the years. I, Soyier, take no credit for the idea or implementation of this addon prior to my adoption of the code in the Fall quarter of 2017.

Neuron
1.4.18 (2022-09-03)
Full Changelog Previous Releases
  • Port to WotLK classic
Archived Files (12)
File Name
Version
Size
Author
Date
1.4.17
545kB
Soyier
08-16-22 04:54 PM
1.4.16
545kB
Soyier
05-31-22 11:14 AM
1.4.15
545kB
Soyier
05-14-22 04:40 PM
1.4.14
518kB
Soyier
05-11-22 08:12 AM
1.4.13
518kB
Soyier
02-22-22 03:35 PM
1.4.10
517kB
Soyier
06-29-21 08:23 AM
1.4.8a
469kB
Soyier
05-28-21 07:14 PM
1.4.8
468kB
Soyier
05-28-21 07:47 AM
1.4.7a
468kB
Soyier
05-19-21 09:24 AM
1.4.7
468kB
Soyier
05-16-21 01:04 PM
1.4.5
493kB
Soyier
03-09-21 01:53 PM
1.4.4
493kB
Maul
01-14-21 02:43 AM


Post A Reply Comment Options
Unread 05-25-19, 01:56 AM  
Soyier
A Deviate Faerie Dragon
 
Soyier's Avatar
AddOn Author - Click to view AddOns

Forum posts: 10
File comments: 268
Uploads: 1
You guys can follow along here if you want:

https://github.com/brittyazel/Neuron...StatusBarSplit
Report comment to moderator  
Reply With Quote
Unread 05-24-19, 04:40 PM  
Soyier
A Deviate Faerie Dragon
 
Soyier's Avatar
AddOn Author - Click to view AddOns

Forum posts: 10
File comments: 268
Uploads: 1
Neuron May Status Report

Hey all,

So things are churning with Neuron, particularly the new GUI. I've been wanting to work on the GUI for quite a while now, but unfortunately the way the code was built it was like a house of cards. I couldnt gut the old GUI without irreparably breaking Status bars, and I couldn't fix the Status bars without fully breaking the old GUI. Etc. Bleh.

So unfortunately I hit a wall where I could no longer piecemeal update the modules, and I had to bite the bullet to just gut and strip out all the old cruft all over the add-on, sledgehammer like. This involved rewriting the entire status bar codebase (which is now functionally done, but I want to clean and polish it further, and finally once and for all deleting the old GUI Lua and XML files. I have also added the first parts of what will be the new, unified GUI window, with it actually starting to look like something :-)

So the big change with the status bars is that Rep, XP, Cast, and Mirror are now all their own individual bar types, rather than all being one "Status Bar" with a separate menu to choose the type. This is a long requested change and it's much more intuitive imo. To make this work took more hours than I care to admit, but it's a huge weight off my chest having finally split these up, and in the process we modernized the code a great deal, and it will now be easier to maintain.

Lastly, for the GUI, I'm not a UX Designer, so I'm kinda just winging it. If anyone wants to get involved in this part, now's the chance. I did all the shitty work, so all that's left is to populate the new GUI with all the necessary options.
Report comment to moderator  
Reply With Quote
Unread 05-12-19, 01:31 AM  
hid
A Kobold Labourer

Forum posts: 1
File comments: 40
Uploads: 0
Re: Re: Hide/unhide toggle for all bars

Originally Posted by Soyier
Originally Posted by hid
Before (old versions of Ion/neuron) I used to use a macro to toggle hidden state for all bars with 1 keybind(to easily edit things while keeping all bars hidden during gameplay), but I recently got back and that macro stopped working (it was just: /script Neuron.NeuronBar:ChangeBar(NeuronActionBar1) /neuron Conceal;" for every bar in a macro), it no longer works and I've looked at the code a bit (to be honest I could just spend half an hour looking through the code and figure out what changed myself, but thought I'd be lazy and just ask for once)

So if anyone could tell me an easy way to hide/unhide all neuron bars with 1 macro/keybind I'd really appreciate it!

Speaking of: If we could get a "/neuron toggleall" option that'd be a great QoL improvement for us using Neuron this way!
Yeah I can add a /neuron toggleall. Please add it to github and I can get it out this weekend.

Just curious, what was the macro you used before so I can know what I did that broke it

**Update** added this feature. Can you please download the Github MASTER version and test this for me. typing "/neuron toggleall" should disable and re-enable all neuron buttons. It was a bit tricky to make sure that the keybinds still work, as usually hiding buttons also disables the buttons keybinds.
Amazing response time! Sadly I'm a bit drunk right now and soon heading to bed, so I probably won't be around much longer.

I did try this out and I have a few thoughts. The way I've been using the addon for years now is to have 11 bars with 12 buttons hidden in the middle of my screen with all my binds, and just 1 bar with 7 buttons as my main action bar actually showing. My "neuron toggle" macro hack simply toggled the 11 hidden bars (while leaving the hidden state of other bars as-is.)

I understand that you can't/shouldn't implement a slash command just for my specific use case, but might I suggest you leave the "toggleall" command as is (it works just fine on my end after some minimal testing on my part btw!) but also add a "/neuron togglebarhiddenstate <num>" (pick a better option argument name :P) command to make it easy for people like me to make a macro to just toggle the hidden state of the specific bars we want to toggle? This would allow people who use bindpad-like addons to instead use Neuron as a (superior) drop-in replacement pretty much.
Last edited by hid : 05-12-19 at 01:38 AM.
Report comment to moderator  
Reply With Quote
Unread 05-11-19, 09:07 PM  
Soyier
A Deviate Faerie Dragon
 
Soyier's Avatar
AddOn Author - Click to view AddOns

Forum posts: 10
File comments: 268
Uploads: 1
Re: Hide/unhide toggle for all bars

Originally Posted by hid
Before (old versions of Ion/neuron) I used to use a macro to toggle hidden state for all bars with 1 keybind(to easily edit things while keeping all bars hidden during gameplay), but I recently got back and that macro stopped working (it was just: /script Neuron.NeuronBar:ChangeBar(NeuronActionBar1) /neuron Conceal;" for every bar in a macro), it no longer works and I've looked at the code a bit (to be honest I could just spend half an hour looking through the code and figure out what changed myself, but thought I'd be lazy and just ask for once)

So if anyone could tell me an easy way to hide/unhide all neuron bars with 1 macro/keybind I'd really appreciate it!

Speaking of: If we could get a "/neuron toggleall" option that'd be a great QoL improvement for us using Neuron this way!
Yeah I can add a /neuron toggleall. Please add it to github and I can get it out this weekend.

Just curious, what was the macro you used before so I can know what I did that broke it

**Update** added this feature. Can you please download the Github MASTER version and test this for me. typing "/neuron toggleall" should disable and re-enable all neuron buttons. It was a bit tricky to make sure that the keybinds still work, as usually hiding buttons also disables the buttons keybinds.
Last edited by Soyier : 05-11-19 at 10:37 PM.
Report comment to moderator  
Reply With Quote
Unread 05-11-19, 08:00 PM  
hid
A Kobold Labourer

Forum posts: 1
File comments: 40
Uploads: 0
Hide/unhide toggle for all bars

Before (old versions of Ion/neuron) I used to use a macro to toggle hidden state for all bars with 1 keybind(to easily edit things while keeping all bars hidden during gameplay), but I recently got back and that macro stopped working (it was just: /script Neuron.NeuronBar:ChangeBar(NeuronActionBar1) /neuron Conceal;" for every bar in a macro), it no longer works and I've looked at the code a bit (to be honest I could just spend half an hour looking through the code and figure out what changed myself, but thought I'd be lazy and just ask for once)

So if anyone could tell me an easy way to hide/unhide all neuron bars with 1 macro/keybind I'd really appreciate it!

Speaking of: If we could get a "/neuron toggleall" option that'd be a great QoL improvement for us using Neuron this way!
Last edited by hid : 05-11-19 at 08:27 PM.
Report comment to moderator  
Reply With Quote
Unread 04-27-19, 02:28 PM  
Soyier
A Deviate Faerie Dragon
 
Soyier's Avatar
AddOn Author - Click to view AddOns

Forum posts: 10
File comments: 268
Uploads: 1
Re: Alpha up

Originally Posted by Apollumi
My alpha up on "combat" and "combat + mouseover" does not work if I go past any 0.9.x version. Meaning, if set set the alpha at anything less and I go into combat or mouse over the buttons stay at the lower alpha. My central combat buttons are at .08 alpha. This means I cannot see anything going on with my actions and spells.

What I have tried to do to solve the issue.

* disabled all other addons
* removed all saved variables (pertaining to Neuron)

I do not get any errors that I have noticed. Any ideas? The reason for posting this is the latest WoW patch causes issues with the menu bar. It disappears when doing something like the turtle quests and a "reload" has to be done to bring back the menu bar.


Note: Edit to add I've tried the above with a few releases, including the latest, and get the same results.
This is fixed
Report comment to moderator  
Reply With Quote
Unread 04-19-19, 02:57 PM  
Soyier
A Deviate Faerie Dragon
 
Soyier's Avatar
AddOn Author - Click to view AddOns

Forum posts: 10
File comments: 268
Uploads: 1
Originally Posted by Apollumi
I like IntelliJ, right up to the point they want me to pony up some cash to develop PHP. I'll use it for trying to learn lua though. And weirdly enough I'm this close (pinches fingers together) to using VSCode for editing PHP. That or Sublime. Just need to figure out how to change my syntax highlighting and figure out how well regular expressions are supported.
Oh, yeah it seems PhP is locked behind the Ultimate edition paywall. I just use the Community Edition, and the EmmyLUA plugin is free and open source so I've never had to worry about it lol.

I do love IntelliJ Idea, but it's really the EmmyLUA plugin that I can't get enough of. It's the best LUA plugin for any software that I've used. It makes coding LUA actually fun, instead of a nightmare. I can't believe Maul just used a text editor for so many years. I could never, I'm too spoiled lol
Last edited by Soyier : 04-19-19 at 02:58 PM.
Report comment to moderator  
Reply With Quote
Unread 04-19-19, 11:59 AM  
Apollumi
A Kobold Labourer

Forum posts: 0
File comments: 50
Uploads: 0
I like IntelliJ, right up to the point they want me to pony up some cash to develop PHP. I'll use it for trying to learn lua though. And weirdly enough I'm this close (pinches fingers together) to using VSCode for editing PHP. That or Sublime. Just need to figure out how to change my syntax highlighting and figure out how well regular expressions are supported.
Report comment to moderator  
Reply With Quote
Unread 04-19-19, 09:11 AM  
Soyier
A Deviate Faerie Dragon
 
Soyier's Avatar
AddOn Author - Click to view AddOns

Forum posts: 10
File comments: 268
Uploads: 1
Originally Posted by Apollumi
Thank you gentlemen.

I can hopefully start C++ tutorials soon and lua is something I want to combine with it. Working on the addon would give me some practical application for the learning process.

I've downloaded IntelliJ IDEA in a zip package. Version info included below. I have this "thing" about only using portable apps and then often only if they are cross platform and opensource.

I have been using Notepad++ and really like it for my web development. I was planning on using Codeblocks for C++. I guess I'll see what IntelliJ has to offer. If I could use one IDE for pretty much everything I would prefer to do that. I had thought about using Eclipse but there is just something I don't like about Eclipse. Perhaps I should just spend more time with it. I also have VSCode but don't trust anything Bill has touched any further than I could throw his ego so really have only touched it twice.

** IntelliJ ver download **
Version: 2019.1.1
Build: 191.6707.61
Released: April 16, 2019


So I'm going to start on C++ by watching and using the videos from TheChernoProject. If you have any other recommendations on beginner tutorials for C++ please let me know.
IntelliJ is my favorite IDE by far, and I've used many. Eclipse was nice, but IntelliJ surpasses it in almost every way.

Also, IntelliJ is open source, cross platform, and portable, so that should address your issues. IntelliJ also has plugins for pretty much every language there is, and it is a very capable C++ IDE
Report comment to moderator  
Reply With Quote
Unread 04-19-19, 01:25 AM  
Apollumi
A Kobold Labourer

Forum posts: 0
File comments: 50
Uploads: 0
Thank you gentlemen.

I can hopefully start C++ tutorials soon and lua is something I want to combine with it. Working on the addon would give me some practical application for the learning process.

I've downloaded IntelliJ IDEA in a zip package. Version info included below. I have this "thing" about only using portable apps and then often only if they are cross platform and opensource.

I have been using Notepad++ and really like it for my web development. I was planning on using Codeblocks for C++. I guess I'll see what IntelliJ has to offer. If I could use one IDE for pretty much everything I would prefer to do that. I had thought about using Eclipse but there is just something I don't like about Eclipse. Perhaps I should just spend more time with it. I also have VSCode but don't trust anything Bill has touched any further than I could throw his ego so really have only touched it twice.

** IntelliJ ver download **
Version: 2019.1.1
Build: 191.6707.61
Released: April 16, 2019


So I'm going to start on C++ by watching and using the videos from TheChernoProject. If you have any other recommendations on beginner tutorials for C++ please let me know.
Last edited by Apollumi : 04-19-19 at 01:26 AM.
Report comment to moderator  
Reply With Quote
Unread 04-18-19, 04:17 PM  
Soyier
A Deviate Faerie Dragon
 
Soyier's Avatar
AddOn Author - Click to view AddOns

Forum posts: 10
File comments: 268
Uploads: 1
Re: Simple coding question

Ok so Buju already got us started but here is a basic 2min lesson on addons haha.

The LUA code is read into memory while the game is loading the character in, and it's at this time that the entire addon is read from top to bottom. What I mean by this is the LUA engine begins reading code starting with the 1st .lua or .xml file in the Neuron.toc file, and goes down the list in the .toc file until the very end. Also, it isn't simply reading the code into memory for later, this is the literal moment that the code is run (which seems counter intuitive but it actually makes sense). Thus if I had an addon that counted from 1->1000 and printed the numbers to the chat window, this would happen at the exact moment it's read the first time, and the user would see the full list of numbers in the chat box right when the world finishes loading. So in essence, the program is run in its entirety before the character is even on the screen.

Now, to answer your other questions, or to pre-empt your question of "if the addon is run in its entirety before the game is even loaded, how does the addon work in real-time?" And the answer to this is 1) Frames and 2) Events.

Frames: Frames are the base UI elements of the game. A frame is anything that is visible on the screen, and Frames can have parent frames, and can be nested in one another etc. I.e. We have a Bar frame, with a bunch of Nested Button frames, and so on. The frames themselves have a number of properties belonging to them, and a number of scripts and events that you can "hook" onto to do work. I.e. a button has an OnClick event, and I can hook a function of mine to do something when this event happens. This function is 'hooked' to the OnClick event of this particular button during the pre-loading stage when all the LUA code is being read in initially. And this code is now bound to the button frame itself, and will be executed each and every time this button event happens so as long as the button exists or we choose to unhook this event. You can see all the frames in game by using the "/framestack" command in game.

Events: The game as far as an addon is concerned is a series of sequential events that are being fired all the time. If you use "/eventtrace" in game you can see all the events happening. Now, events are important because they're the only clue to the UI as to what is going on. So events fire when combat starts, combat ends, a spell is cast, channeling starts, etc. Now, the big trick to creating an addon like Neuron is registering the Neuron scripts to specific events in the game. The castbar for example is registered to the UNIT_SPELLCAST_CHANNEL_START function, so when this particular event fires, the castbar knows to spin up a series of functions that will lead to the castbar becoming visible and showing the cast happening. There are thousands of different events in the game, and they are a nightmare and a gift at times. Finding the correct events to register our scripts and frames onto is a pain in the arse, but it works surprisingly painlessly most of the time. Further, events come in two varieties, game events like "PLAYER_ENTERING_WORLD" that give you status updates on what is happening in the game itself, and object script psuedo-events like "OnMouseclick" or "OnHide" or "OnEnter", which are all functions inherent to frames that can be hooked and leveraged for our purposes. By default a button does nothing when clicked, it's only when we hook this function call and attach our own function that clicking the button actually does something.


So, in summary: The code that you see in the .lua files is very boring and just consists of creating a series of frame objects, setting up a bunch of functions and hooking them to specific events, and registering our frames to in game events. Once this happens, the code that exists and is running in the game is only the stuff that is tied to the frames and events (and any secondary functions that our called by the hooked/registered functions). At runtime during the game, everything that happens in response to player or game input is whatever we front-loaded onto those frames and events ahead of time.

Please see https://github.com/brittyazel/Neuron...ster/README.md particularly the section on Development. Getting a good development environment set up makes all the difference, and I can't rave enough about IntelliJ and the EmmyLUA plugin. It's a serious game changer. This guide in particular is incredible and is 90% the reason I even know what the hell is happening: https://github.com/Ellypse/IntelliJ-...E-WoW-API/wiki
Last edited by Soyier : 04-18-19 at 09:14 PM.
Report comment to moderator  
Reply With Quote
Unread 04-17-19, 10:29 PM  
BujuArena
A Deviate Faerie Dragon
AddOn Author - Click to view AddOns

Forum posts: 13
File comments: 61
Uploads: 1
Re: Re: Re: Simple coding question

Originally Posted by Apollumi
So I am thinking similar to Java (not javascript). Makes sense. Thank you for answering.

I think they have addons run on another thread now so it doesn't take time away from rendering each frame of the game? Don't know, just guessing. Still I am thinking that the game engine must allow time each frame for each of the addons code to look in the buffer for keyboard input and events, etc...? So they can still impact performance but not as much?
They run on the same thread, but the WoW UI engine gives each function a time limit for execution. If the function doesn't return in time, the WoW engine breaks out and throws a Lua error. Responsibly-programmed addons run heavy functions as coroutines, which are not the same as separate threads. Coroutines are functions that run for a self-defined length of time, then yield to the next coroutine until it's their turn again, then continue where they left off.
Last edited by BujuArena : 04-17-19 at 10:32 PM.
Report comment to moderator  
Reply With Quote
Unread 04-17-19, 09:22 PM  
Apollumi
A Kobold Labourer

Forum posts: 0
File comments: 50
Uploads: 0
Re: Re: Simple coding question

So I am thinking similar to Java (not javascript). Makes sense. Thank you for answering.

I think they have addons run on another thread now so it doesn't take time away from rendering each frame of the game? Don't know, just guessing. Still I am thinking that the game engine must allow time each frame for each of the addons code to look in the buffer for keyboard input and events, etc...? So they can still impact performance but not as much?


WoW runs the Lua JIT compiler (just-in-time compiler) when loading the game initially (with the loading screen) and on reloading UI (when running ReloadUI()). This compiles your addons to machine code, which then runs much faster, so it doesn't have to parse the scripts each frame. It parses them once when initially loading, and never while you're playing.

After the scripts are compiled to machine code, yes, the addons' now-compiled machine code runs each frame while you play. This is why a more powerful CPU core is better for running lots of addons.
Report comment to moderator  
Reply With Quote
Unread 04-17-19, 08:28 PM  
BujuArena
A Deviate Faerie Dragon
AddOn Author - Click to view AddOns

Forum posts: 13
File comments: 61
Uploads: 1
Re: Simple coding question

Originally Posted by Apollumi
Yes, this will make me look stupid. And I am coding stupid currently. But I have some questions for you about lua.

What I am wondering is does a lua "addon" stay resident in memory like a program and doesn't exit. My lack of understanding comes from the fact I have only done scripting where the code is parsed until the end and then the variables are gone until the script is parsed again. Server side (host side) variables aside that is.

How does an addon stay present on the screen while the program code executes redrawing the scene over and over? Is it because the program code (wow in this case) is rendering the addon for each frame also? I guess I'm asking is the neuron code rerun for each frame of the game. And by doing this it is checking key presses, events, and modes for every single frame.

I would think parsing a bunch of addon scripts each and every frame would slow you down far more than it does. So in my mind either it stays resident in memory or the lua engine is incredibly fast.

You could possible regret throwing out there that you like to pass on knowledge about coding. Heh.
WoW runs the Lua JIT compiler (just-in-time compiler) when loading the game initially (with the loading screen) and on reloading UI (when running ReloadUI()). This compiles your addons to machine code, which then runs much faster, so it doesn't have to parse the scripts each frame. It parses them once when initially loading, and never while you're playing.

After the scripts are compiled to machine code, yes, the addons' now-compiled machine code runs each frame while you play. This is why a more powerful CPU core is better for running lots of addons.
Last edited by BujuArena : 04-17-19 at 08:30 PM.
Report comment to moderator  
Reply With Quote
Unread 04-17-19, 08:14 PM  
Apollumi
A Kobold Labourer

Forum posts: 0
File comments: 50
Uploads: 0
Simple coding question

Yes, this will make me look stupid. And I am coding stupid currently. But I have some questions for you about lua.

What I am wondering is does a lua "addon" stay resident in memory like a program and doesn't exit. My lack of understanding comes from the fact I have only done scripting where the code is parsed until the end and then the variables are gone until the script is parsed again. Server side (host side) variables aside that is.

How does an addon stay present on the screen while the program code executes redrawing the scene over and over? Is it because the program code (wow in this case) is rendering the addon for each frame also? I guess I'm asking is the neuron code rerun for each frame of the game. And by doing this it is checking key presses, events, and modes for every single frame.

I would think parsing a bunch of addon scripts each and every frame would slow you down far more than it does. So in my mind either it stays resident in memory or the lua engine is incredibly fast.

You could possible regret throwing out there that you like to pass on knowledge about coding. Heh.

@@@@@@@@@@@@@@@@@@@@@@

I think the hardest aspect of learning anything is learning what it "means". Where is it's place and how is it realistically (not idealistic) used. It is hard to teach what something means, for lack of a better word. A subject has to have clear boundaries to focus people otherwise they can assume all sorts of meaningless things.

People deeply versed in something can often make bad teachers because they know what something means in a more or less instinctive way and often lack the ability to express it.
Last edited by Apollumi : 04-17-19 at 08:25 PM.
Report comment to moderator  
Reply With Quote
Post A Reply



Category Jump: