More detailed description: https://github.com/minetest/minetest/issues/2730#issuecomment-350390373
In creative mode clicking a node with the middle mouse button will place it in the inventory and wield it. In adventure mode it would seek if the selected node is in the hotbar, select and wield it.
The middle mouse button would function similar to a color picking tool in photo editing.
Previous discussion:
https://forum.minetest.net/viewtopic.php?f=5&t=11034
:+1:
That would be a great addition!
Nice idea.
Mice with no middle button are very common though, neither of mine have one.
I've just checked the shops and couldn't find a store that sold mice without a middle mouse button, so my guess is that they're slowly dying out,. Also, without a middle button you wouldn't really miss an important feature.
Yes, it is definitely not something that mods should rely real features other than speed improvements on.
After all, Android doesn't feature even a right "button".
This feature should still be offered for our users with a middle button though, because of the same reasons we have shaders: people who have the hardware should be abled to use it.
I haven't seen a mouse without a middle mouse "button" (usually it's pressing the scroll wheel though) for about 15 years :/
@paramat On some laptops, pressing the left AND right mouse buttons counts as a middle click.
Okay that's cool then, my experience is different because i only use trackballs and my last two have 2 buttons.
This seems okay as a client-side-only addition. The server or mods don't need to know about this; it would simply be a convenience feature to those that aren't playing on laptops or using other kinds of limited pointing devices.
OK
The middle click in the inventory is already used for picking or “dropping” 10 items of an item stack. It also allows you to craft things very fast. :-)
What should happen to this feature, which I find very useful btw?
Thats about the middle click inside formspec menus, the middle click for highlighted nodes is unnaffected from that, isn't it?
Oh, nevermind. It seems I have misunderstood this issue. xD
That's exactly the feature I want to ask for. There should be a "on_middleclick" callback for nodes, then mods can add this feature if wanted
@MarkuBu I think people are talking about adding it as client-side feature here, not exposing it to mods.
Client side? That doesn't makes sense at all
For setups with no middle click, you could use ctrl+click
Why not simply allow mods to register own actions so people can bind them to whatever button they want via the “Change Keys” dialog? (The dialog has to be completely revamped, of course.)
With this the whole discussion about trackballs (not widespread enough in the gaming scene to be relevant) or mouses without middleclick (virtually not existent anymore) will be irrelevant because, well, people can bind that function to whatever they want.
Any more comments? Is anyone interested in coding this sometime?
Any more comments?
Too bad none of the core devs cares about a proper input system.
I'm interested in this, minetest has poor crafting usability.
If this gets added, the blocks the player mines should not appear in the player's inventory when he is in creative mode. That means I can clear big patches of grass without having to worry about clogging my inventory with seeds.
none of the core devs cares about a proper input system.
The idea is fine, but it's hardly as essential as you imply.
If the input system is the only thing to interact with a software then the input system IS essential.
this issue is called "Pick node by middle click" not "input system".
"Pick node by middle click" is the issue, but "input system" is the underlying problem.
Yes i was referring to the specific request.
So your comment was offtopic moaning :)
I have written down a more detailed feature request:
Summary
I suggest the “Pick Item” control for Creative Mode. Pick Item is a control like any other.
If you press Pick Item (default: middle mouse button), the current item in hand will be replaced by the “item form” of the pointed thing (if there is any).
Pick Item is a no-op if you're not in Creative Mode.Example:
If you point a cobblestone, and press Pick Item, your wielded item will be replaced with cobblestone.Rationale
Creative Mode will become about one billion times more convenient, since you don't have to go through the inventory as much. :wink:
Design
Nodes
By default, nodes will be picked by their itemstring. For most nodes, the default will work perfectly fine. The new wielded item always has the stack size of 1.
But in some cases, customization will be required for items which should never be aquired by the player.
All items can optionally set a “pick item override” attribute in their definition. This can be a string or function. The function is only possible for nodes.
If it's a string, this is the itemstring the player will obtain.
If it's a function, this function will be called with argumentspos, nodeand must return theItemStackto pick. By convention, the stack size should always be 1.This can be useful for internal items/blocks which the player must not obtain in the inventory. The idea is the same as for the
not_in_creative_mode=1group.
Example: In Minetest Game, the 5 grass nodes (5 heights) should all give the same item if picked.The attribute can also be set to the empty string. This has a special meaning. In this case, the item/node can NOT be picked; nothing happens if you use Pick Item on this.
Entities
Pick items is a no-op for entities and players by default.
But entities can optionally set the itemstring to be “picked” when pick item is used on this entity. This must only affect the wielded item, the entity itself must remain unchanged.
This attribute can be a string or function.
stringis an itemstring, as before.
The function getsselfand must return theItemStackto pick. By convention, the stack size should by 1.
If the attribute isnilor the empty string, using pick item is a no-op.Behaviour for builtin entities:
- Falling node: Pick the node it represents. This must work as if the node is picked. So if the node has any overrides, they have to be respected.
- Dropped items: Pick the item this entity represents, using the function syntax. Similar to falling nodes.
- Players: No-op.
Behaviour for Minetest Game entities:
- Boat: Pick
boats:boat- Cart: Pick
carts:cart
(I won't bother making a PR)
diff --git a/src/client/inputhandler.cpp b/src/client/inputhandler.cpp
index b176f3ad..61c1e8b1 100644
--- a/src/client/inputhandler.cpp
+++ b/src/client/inputhandler.cpp
@@ -79,12 +79,18 @@ bool MyEventReceiver::OnEvent(const SEvent &event)
if (event.MouseInput.Event == EMIE_LMOUSE_PRESSED_DOWN) {
leftclicked = true;
}
+ if (event.MouseInput.Event == EMIE_MMOUSE_PRESSED_DOWN) {
+ middleclicked = true;
+ }
if (event.MouseInput.Event == EMIE_RMOUSE_PRESSED_DOWN) {
rightclicked = true;
}
if (event.MouseInput.Event == EMIE_LMOUSE_LEFT_UP) {
leftreleased = true;
}
+ if (event.MouseInput.Event == EMIE_MMOUSE_LEFT_UP) {
+ middlereleased = true;
+ }
if (event.MouseInput.Event == EMIE_RMOUSE_LEFT_UP) {
rightreleased = true;
}
diff --git a/src/client/inputhandler.h b/src/client/inputhandler.h
index 24933694..51cd836b 100644
--- a/src/client/inputhandler.h
+++ b/src/client/inputhandler.h
@@ -128,12 +128,15 @@ class MyEventReceiver : public IEventReceiver
keyWasDown.clear();
leftclicked = false;
+ middleclicked = false;
rightclicked = false;
+
leftreleased = false;
+ middlereleased = false;
rightreleased = false;
left_active = false;
- middle_active = false;
+ middle_active = false;
right_active = false;
mouse_wheel = 0;
@@ -147,12 +150,15 @@ class MyEventReceiver : public IEventReceiver
}
bool leftclicked = false;
+ bool middleclicked = false;
bool rightclicked = false;
+
bool leftreleased = false;
+ bool middlereleased = false;
bool rightreleased = false;
bool left_active = false;
- bool middle_active = false;
+ bool middle_active = false;
bool right_active = false;
s32 mouse_wheel = 0;
@@ -193,16 +199,23 @@ class InputHandler
virtual void setMousePos(s32 x, s32 y) = 0;
virtual bool getLeftState() = 0;
+ virtual bool getMiddleState() = 0;
virtual bool getRightState() = 0;
virtual bool getLeftClicked() = 0;
+ virtual bool getMiddleClicked() = 0;
virtual bool getRightClicked() = 0;
+
virtual void resetLeftClicked() = 0;
+ virtual void resetMiddleClicked() = 0;
virtual void resetRightClicked() = 0;
virtual bool getLeftReleased() = 0;
+ virtual bool getMiddleReleased() = 0;
virtual bool getRightReleased() = 0;
+
virtual void resetLeftReleased() = 0;
+ virtual void resetMiddleReleased() = 0;
virtual void resetRightReleased() = 0;
virtual s32 getMouseWheel() = 0;
@@ -260,16 +273,23 @@ class RealInputHandler : public InputHandler
}
virtual bool getLeftState() { return m_receiver->left_active; }
+ virtual bool getMiddleState() { return m_receiver->middle_active; }
virtual bool getRightState() { return m_receiver->right_active; }
virtual bool getLeftClicked() { return m_receiver->leftclicked; }
+ virtual bool getMiddleClicked() { return m_receiver->middleclicked; }
virtual bool getRightClicked() { return m_receiver->rightclicked; }
+
virtual void resetLeftClicked() { m_receiver->leftclicked = false; }
+ virtual void resetMiddleClicked() { m_receiver->middleclicked = false; }
virtual void resetRightClicked() { m_receiver->rightclicked = false; }
virtual bool getLeftReleased() { return m_receiver->leftreleased; }
+ virtual bool getMiddleReleased() { return m_receiver->middlereleased; }
virtual bool getRightReleased() { return m_receiver->rightreleased; }
+
virtual void resetLeftReleased() { m_receiver->leftreleased = false; }
+ virtual void resetMiddleReleased() { m_receiver->middlereleased = false; }
virtual void resetRightReleased() { m_receiver->rightreleased = false; }
virtual s32 getMouseWheel() { return m_receiver->getMouseWheel(); }
@@ -296,16 +316,23 @@ class RandomInputHandler : public InputHandler
virtual void setMousePos(s32 x, s32 y) { mousepos = v2s32(x, y); }
virtual bool getLeftState() { return leftdown; }
+ virtual bool getMiddleState() { return middledown; }
virtual bool getRightState() { return rightdown; }
virtual bool getLeftClicked() { return leftclicked; }
+ virtual bool getMiddleClicked() { return middleclicked; }
virtual bool getRightClicked() { return rightclicked; }
+
virtual void resetLeftClicked() { leftclicked = false; }
+ virtual void resetMiddleClicked() { middleclicked = false; }
virtual void resetRightClicked() { rightclicked = false; }
virtual bool getLeftReleased() { return leftreleased; }
+ virtual bool getMiddleReleased() { return middlereleased; }
virtual bool getRightReleased() { return rightreleased; }
+
virtual void resetLeftReleased() { leftreleased = false; }
+ virtual void resetMiddleReleased() { middlereleased = false; }
virtual void resetRightReleased() { rightreleased = false; }
virtual s32 getMouseWheel() { return 0; }
@@ -386,9 +413,12 @@ class RandomInputHandler : public InputHandler
v2s32 mousepos;
v2s32 mousespeed;
bool leftdown = false;
+ bool middledown = false;
bool rightdown = false;
bool leftclicked = false;
+ bool middleclicked = false;
bool rightclicked = false;
bool leftreleased = false;
+ bool middlereleased = false;
bool rightreleased = false;
};
diff --git a/src/client/keys.h b/src/client/keys.h
index 9b8e5035..2923a969 100644
--- a/src/client/keys.h
+++ b/src/client/keys.h
@@ -100,6 +100,7 @@ class KeyType
// joystick specific keys
MOUSE_L,
+ MOUSE_M,
MOUSE_R,
SCROLL_UP,
SCROLL_DOWN,
diff --git a/src/game.cpp b/src/game.cpp
index 0123a908..e7efc953 100644
--- a/src/game.cpp
+++ b/src/game.cpp
@@ -1332,6 +1332,11 @@ class Game {
return input->getLeftClicked() ||
input->joystick.getWasKeyDown(KeyType::MOUSE_L);
}
+ inline bool getMiddleClicked()
+ {
+ return input->getMiddleClicked() ||
+ input->joystick.getWasKeyDown(KeyType::MOUSE_M);
+ }
inline bool getRightClicked()
{
return input->getRightClicked() ||
@@ -1342,6 +1347,11 @@ class Game {
return input->getLeftState() ||
input->joystick.isKeyDown(KeyType::MOUSE_L);
}
+ inline bool isMiddlePressed()
+ {
+ return input->getMiddleState() ||
+ input->joystick.isKeyDown(KeyType::MOUSE_M);
+ }
inline bool isRightPressed()
{
return input->getRightState() ||
@@ -1352,6 +1362,16 @@ class Game {
return input->getLeftReleased() ||
input->joystick.wasKeyReleased(KeyType::MOUSE_L);
}
+ inline bool getMiddleReleased()
+ {
+ return input->getMiddleReleased() ||
+ input->joystick.wasKeyReleased(KeyType::MOUSE_M);
+ }
+ inline bool getRightReleased()
+ {
+ return input->getRightReleased() ||
+ input->joystick.wasKeyReleased(KeyType::MOUSE_R);
+ }
inline bool isKeyDown(GameKeyType k)
{
@@ -3089,6 +3109,7 @@ void Game::updatePlayerControl(const CameraOrientation &cam)
isKeyDown(KeyType::SNEAK),
isKeyDown(KeyType::ZOOM),
isLeftPressed(),
+ isMiddlePressed(),
isRightPressed(),
cam.camera_pitch,
cam.camera_yaw,
@@ -3105,7 +3126,8 @@ void Game::updatePlayerControl(const CameraOrientation &cam)
( (u32)(isKeyDown(KeyType::SPECIAL1) & 0x1) << 5) |
( (u32)(isKeyDown(KeyType::SNEAK) & 0x1) << 6) |
( (u32)(isLeftPressed() & 0x1) << 7) |
- ( (u32)(isRightPressed() & 0x1) << 8
+ ( (u32)(isRightPressed() & 0x1) << 8) |
+ ( (u32)(isMiddlePressed() & 0x1) << 9
);
#ifdef ANDROID
@@ -3705,15 +3727,19 @@ void Game::processPlayerInteraction(f32 dtime, bool show_hud, bool show_debug)
camera->setDigging(0); // left click animation
input->resetLeftClicked();
+ input->resetMiddleClicked();
input->resetRightClicked();
input->joystick.clearWasKeyDown(KeyType::MOUSE_L);
+ input->joystick.clearWasKeyDown(KeyType::MOUSE_M);
input->joystick.clearWasKeyDown(KeyType::MOUSE_R);
input->resetLeftReleased();
+ input->resetMiddleReleased();
input->resetRightReleased();
input->joystick.clearWasKeyReleased(KeyType::MOUSE_L);
+ input->joystick.clearWasKeyReleased(KeyType::MOUSE_M);
input->joystick.clearWasKeyReleased(KeyType::MOUSE_R);
}
diff --git a/src/network/serverpackethandler.cpp b/src/network/serverpackethandler.cpp
index 62da136a..e129a8c6 100644
--- a/src/network/serverpackethandler.cpp
+++ b/src/network/serverpackethandler.cpp
@@ -819,6 +819,7 @@ void Server::process_PlayerPos(RemotePlayer *player, PlayerSAO *playersao,
player->control.sneak = (keyPressed & 64);
player->control.LMB = (keyPressed & 128);
player->control.RMB = (keyPressed & 256);
+ player->control.MMB = (keyPressed & 512);
if (playersao->checkMovementCheat()) {
// Call callbacks
diff --git a/src/player.h b/src/player.h
index 27da73c1..19889312 100644
--- a/src/player.h
+++ b/src/player.h
@@ -45,6 +45,7 @@ struct PlayerControl
bool a_sneak,
bool a_zoom,
bool a_LMB,
+ bool a_MMB,
bool a_RMB,
float a_pitch,
float a_yaw,
@@ -61,6 +62,7 @@ struct PlayerControl
sneak = a_sneak;
zoom = a_zoom;
LMB = a_LMB;
+ MMB = a_MMB;
RMB = a_RMB;
pitch = a_pitch;
yaw = a_yaw;
@@ -76,6 +78,7 @@ struct PlayerControl
bool sneak = false;
bool zoom = false;
bool LMB = false;
+ bool MMB = false;
bool RMB = false;
float pitch = 0.0f;
float yaw = 0.0f;
diff --git a/src/script/lua_api/l_object.cpp b/src/script/lua_api/l_object.cpp
index 90e725d1..d9cd5b44 100644
--- a/src/script/lua_api/l_object.cpp
+++ b/src/script/lua_api/l_object.cpp
@@ -1317,6 +1317,8 @@ int ObjectRef::l_get_player_control(lua_State *L)
lua_setfield(L, -2, "sneak");
lua_pushboolean(L, control.LMB);
lua_setfield(L, -2, "LMB");
+ lua_pushboolean(L, control.MMB);
+ lua_setfield(L, -2, "MMB");
lua_pushboolean(L, control.RMB);
lua_setfield(L, -2, "RMB");
return 1;
Thanks.
Middle click is very complicated in modern touchpads. Specially all these buttomless ones.
👎
Although I support the idea the choice for using the middle click won't work. I rather have a key combo for it, like ctrl click of shift click.
Middle click is very complicated in modern touchpads.
As complicated as two or three finger tap.
All the mouse devices i have used (not everyone uses a mouse) have no middle button, clicking both simultaneously to trigger middle-click is potentially stressful on the hand (depending on button location) and unreliable as you may click one button just before the other, causing accidental left or right clicks.
:-1: for using the middle button for anything but this would be ok with a key+mouse combination.
This is one example for what I mentioned in the other thread. Just because a few people don't have a 3 button mouse all other people won't have
3-button-mice are common for most users, even if they use a Laptop. And even on a laptop most OS support left and right click simultaneously as middle click.
It is your personal choice to use a trackball.
In general it is a bad idea to hard code any kind of input for something. Normally it is common practice to make inputs configurable and it is already used in Minetest. Without this I couldn't play Minetest because I don't use a default keyboard, not even a default qwerty/z keyboard layout
If you make it configurable, you can add a keybinding which does the same as middle mouse click.
Pressing some key instead of the middle mouse button is not much more inconvenient for colour/node picking because you don't do it constantly.
If someone want's to know what keyboard I'm using
And this is the layout
I don't use WASD as usual, I use LIAE. U is my sneak key, V is my inventory and I use Shift (left hand thumb) to jump. Without configurable keybindings this wouldn't be possible
Please don't derail this discussion about the choice of the default key. *rolleyes* I couldn't care less. Just pick a commonly available key and make it configurable (just in case).
What's more important is the actual feature itself.
Please don't derail this discussion about the choice of the default key.
But that's the point. Because the title of the issue is Pick node by _middle click_ the whole idea could be dumped and the actual idea, to pick and wield an node directly from the map, is forgotten.
All the mouse devices i have used (not everyone uses a mouse) have no middle button
Thats why it should be "button 3" configurable in menu for people who don't have middle mouse button ;) Set to middle mouse button by default.
I'm back from the dead because this thread is getting ridiculous and I couldn't bear looking at it;
Pick the middle mouse button by default, it's like that in Minecraft (that doesn't mean it's the best option, but it has been tried-and-tested) and 99.9% of mice sold in stores right now offer a middle mouse button (hint; it's clicking the scrollwheel!)
Let the user change this button to a keyboard key or combination if they wish.
Just implement the damn thing, I've never seen development so butchered by endless discussions about what fancy keyboard you have or what pre-war era mouse you use.
1
As you have read @paramat doesn’t own a device with a middle mouse button. Thus middle mouse button won’t be the default ever.
I've never seen development so butchered by endless discussions
You’re new here, aren’t you? :smile:
Paracrap is too poor to buy a mice w/ middle button and a decent computer. That's why he's so anal retentive with the features we add to a game of the 21th century...
Pardon him to be a complete loser.
Hey, @kilbith This is the most ridiculous and unnecessary comment I've ever read.
I don't like all decisions he made, but I respect him
Meanwhile I gave you the code above. Somebody noticed?
Was that really necessary, @kilbith? While @paramat usually denies the reality the players are living in and usually he and me disagree completely on each others opinions I would never talk like this about him even if I don’t like him very much.
Oh, and yes. I guess everyone was able to see your code, but it will likely won’t be implemented anytime soon.
Ad-hominem attacks are sometimes necessary to explain the "philosophy" that someone has...
Gentlemen please, this is not the place for this kind of discussion.
GitHub is a public and somewhat professional place for software development.
Not for lectures about philosophy and personal "requests"
@kilbith, you've been warned many times before about this. This is not acceptable. Paramat is a valued and well liked developer. He's a good developer as he actually puts time in.
Also, your patch sucks as it does support binding and requires you to monitor player controls rather than having a callback. This is why it won't be included.
@KenneyNL the issue isnt the default action, but making the action rebindable using the input system. I'm not sure why discussion has gone for so long when it's pretty clean cut. And it hasn't been implemented as no-ones got around to it
I think you're biased because he introduced you in the core-team and there is also the common nationality... I don't share your observation and I have absolutely nothing to learn about human interaction from a very young guy.
Just ignore me and go ahead.
You certainly have a lot to learn about human interaction. You'd probably find life easier if you weren't such an arsehole
I'd probably have an easier "life" among this community at some small particular place of the internet, which I don't really care about. You should be thankful already that I still give patches.
[…] it requires you to monitor player controls rather than having a callback. This is why it won't be included.
I assume before implementing this the input system should be reworked. kilbith's patch has lots of similar looking code, having so many functions only for three buttons looks wrong to me.
This is a fire truck: :fire_engine:
It will end this flame war.
:droplet: :droplet: :droplet: :relieved:
Regarding the middle mouse button: I am totally in favor, but it's not mandatory for the actual pick feature itself. Please note that the biggest problem with putting controls on the mouse is that they're not rebindable at the moment (which is, of course, bad). So if you insist on the middle mouse button, this issue depends on #4536.
As long this dependency is not resolved, you could temporarily choose any keyboard key as default, and change it later (when mouse is rebindable). I don't care a lot about default controls. Making controls rebindable is way more important. Religious wars about default controls are pointless.
Also, I have made a detailed writeup about the feature itself (note that this was originally an issue I posted). I was the first one to think about implementation details like what to do when you pick an entity etc. Can you please scroll back up and give your thoughts on this?
Making controls rebindable is way more important. Religious wars about default controls are pointless.
Quoted for emphasis.
Is it considered bad coding if you set a pointer to a function?
You could add a pointer to a function which is executed when pressing down a mouse button, in formspecs you let it point to some function which has to do with inventory movement, if no formspecs are opened, it points to something used for punching and digging, etc. Then you can bind some keypress to also execute this function.
It is your personal choice to use a trackball.
It's due to long term health issues, mice cause pain for me.
and 99.9% of mice sold in stores right now offer a middle mouse button
Yes, but not everyone uses a mouse, some devices have a workaround for middle-click that can be tricky or unpleasant to use, that was my point. Also keep in mind most MT players use smartphones.
As you have read @paramat doesn’t own a device with a middle mouse button. Thus middle mouse button won’t be the default ever.
Nah =) It's just one disapproval.
If the middle button can be rebound to a key this concept is acceptable and the default could probably be middle button.
I'm still :-1: for using middle button though for reasons above. Neutral on the feature.
Once we have the ability to rebind key actions to mouse buttons players can bind this to middle button if they want.
///////////
In case there is misunderstanding, and because my -1s seem to upset people, a disapproval does not subtract from approvals, so with the usual 2 required approvals this could still be merged. It takes 2-3+ disapprovals to delay or stop a feature, depending on how many approvals there are.
Core devs are powerless to do anything on their own, they can't merge something or stop something, all decisions are group decisions. You can disagree with their opinions, but blaming any one person for something not being added, or for certain types of features not being added, or for the general direction of MT, is irrational.
just quote an earlier comment that hit the nail on the head
This feature should still be offered for our users with a middle button though, because of the same reasons we have shaders: people who have the hardware should be abled to use it.
So implement this feature until
we have the ability to rebind key actions to mouse buttons
So implement this feature until
https://github.com/minetest/minetest/issues/2730#issuecomment-350567605
Why was this closed? There is a LOT of interest in the feature, kilbith even gave you code, so even “no dev interest” is clearly wrong.
Today I implemented middle click in a game of mine, it took a few minutes to implement and is now in the patch release.
Total production: 1 day.
Middle clicking in Minetest production: Almost 3 years, and counting.
Because the only person that cared enough to write some code didn't make a PR and didn't do it probably (ie: didn't support binding let alone), and got banned for repeated personal attacks
You're probably using Unity, which has a better control binding scheme - Minetest has something similar, but it doesn't support mouse events yet. I'm planning to work on this in the next month or so, at which point this could be included (but unlikely to be the feature as requested, that would be part of MTG's creative)
I'm about to solve one of my big 4 problems of Minetest, in my option: Ingame content browser
The input bindings is next up.
Looks like there is dev interest now :)
Wuzzy, the label refers to dev intention to work on it sometime, not player interest. est31 and c55 wrote it was 'nice' or 'ok' 3 years ago and est31 has left, since then no interest from devs.
After discussion with SmallJoker I created that label in order to be able to search for feature requests that are very old with no or little interest from devs, so that we can close them, without doing this issue number will never be under control. I judged 3 years as being a reasonably 'long time' in MT.
KenneyNL, no decision had been made on this feature and there has been little interest or support from devs, so it hasn't been worked on. It has not been in development for 3 years so can't be used as a way to briefly drop in here again to insult MT.
Just implement the damn thing, I've never seen development so butchered by endless discussions about what fancy keyboard you have or what pre-war era mouse you use.
If you only appear to insult MT then stay away.
Note that you haven't even created a voxel game yet.
Come on. Assume Minetest is a voxel editor, and the feature wanted is a "color picker".
Please don't bump old issues by complaining about lack of action by others, you've done this before. We are open source so you are able to code it if you want it.
If you bump a topic, please write something useful and less rude.
Please don't bump old issues by complaining about lack of action by others, you've done this before.
Sure, and I'll keep doing that on every stupid issue I find like this. We already have on_dig and on_rightclick and hey, we even got nice inventory item picking via mouse wheel, so I think it would take any of our core developers a little time to implement feature requested and it would be maybe a tiniest fraction of whole Minetest development but convenience of the feature would pay for itself.
We are open source so you are able to code it if you want it.
I'm not a C++ developer.
If you bump a topic, please write something useful and less rude.
https://github.com/beyondlimits/minetest/commit/394feedce58218f86c6e77050568d8520057b0af
https://github.com/beyondlimits/pick
That points out to be almost no different than kilbith's. It sucks as @rubenwardy said, but I think it's way better than 3 years of nothing from our core gurus.
https://github.com/minetest/minetest/compare
Acceptance criteria:
Sure, and I'll keep doing that on every stupid issue I find like this.
Best not, as bad behaviour could have consequences.
I'm not a C++ developer.
That's irrelevant, the point is this is OSS so anyone is able to learn, code and submit.
You don't seem to realise how short we are on core dev time, and this is a nice idea but not high priority.
Please be more pleasant, you won't get anywhere or have the desired effect by having a bad attitude.
It's good to see you trying to code it.
Most helpful comment
I'm back from the dead because this thread is getting ridiculous and I couldn't bear looking at it;
Pick the middle mouse button by default, it's like that in Minecraft (that doesn't mean it's the best option, but it has been tried-and-tested) and 99.9% of mice sold in stores right now offer a middle mouse button (hint; it's clicking the scrollwheel!)
Let the user change this button to a keyboard key or combination if they wish.
Just implement the damn thing, I've never seen development so butchered by endless discussions about what fancy keyboard you have or what pre-war era mouse you use.