Time |
Nick |
Message |
00:10 |
onehittoaster |
update: Placing a chest at an air-node w/ minegeld inventory clears the meta, so this illicit minegeld cannot be reclaimed. |
00:13 |
onehittoaster |
The player who created this minegeld claimed that they used an unpublished hack running as a CSM to duplicate items. I have no futher info on how they did it. I know this via a second hand witness. |
00:13 |
onehittoaster |
It seems odd to me that a CSM (or even a hacked client) could tell the server "place this thing here", and the server would blindly trust it. |
00:13 |
onehittoaster |
but I've not studied this part of minetest code yet. |
00:18 |
onehittoaster |
using world-edit "//replace air stone" does NOT clear meta. |
00:19 |
|
AliasAlreadyTake joined #minetest |
00:26 |
onehittoaster |
worldedit air->leaves, then a technic chainsaw to remove the leaves removed the meta. |
00:30 |
|
Verticen joined #minetest |
01:05 |
erlehmann |
onehittoaster i know how this happened |
01:06 |
erlehmann |
i have plucked items from thin air before |
01:06 |
erlehmann |
the CSM is not the issue here |
01:06 |
erlehmann |
neither is the engine |
01:07 |
erlehmann |
you simply have a mod installed that allows this to occur |
01:07 |
erlehmann |
onehittoaster can you tell me the server name so i can log in and take a look around? |
01:09 |
erlehmann |
also, is this a pay to win server? |
01:09 |
erlehmann |
usually people dupe money or items on pay to win servers |
01:09 |
erlehmann |
to ruin the ingame economy |
01:09 |
onehittoaster |
no, absolutely not a pay-to-win. |
01:09 |
onehittoaster |
lol, I've seen Horizon's videos on taking down P2W though... love those. |
01:09 |
onehittoaster |
Nope, this is just a run of the mill minetests server. |
01:10 |
onehittoaster |
with a former player who was a bit of a trouble-maker. |
01:10 |
erlehmann |
i once made a machine on a server that had ingame money |
01:11 |
Pexin |
we've seen digtrons glitch so the inventory gets stuck in the dighead nodes when they dig too fast. some sort of race condition something I believe. |
01:11 |
erlehmann |
and duped a lot of items and money and made the machine dispense random duped items |
01:11 |
erlehmann |
when someone pressed a button |
01:11 |
erlehmann |
it was protected by protection node |
01:11 |
erlehmann |
so you could not steal my dupe stash |
01:11 |
erlehmann |
it turned minetest into a clicker game, players went to the machine and clicked the button a lot |
01:12 |
erlehmann |
instead of mining |
01:12 |
erlehmann |
it was very funny |
01:12 |
Pexin |
ding levelup |
01:12 |
erlehmann |
until an admin banned me for having too much fun |
01:13 |
erlehmann |
from my point of view there is little difference between mining a mineshaft to get items and clicking an in-game button to get items |
01:13 |
erlehmann |
in both case you are clicking the mouse a lot ^^ |
01:14 |
Pexin |
from what i've seen, ingame economies are almost as stupid as irl economy. minegeld must come from somewhere, especially since it's flammable / droppable and GC-ed / etc |
01:15 |
erlehmann |
i think that duping ingame money and “ruining the economy” is a funny thing, but *threatening* to do it is an asshole move |
01:15 |
Pexin |
then concentrated in a bunch of smartshops |
01:15 |
erlehmann |
like, if you hate the economy that much, just do it |
01:15 |
erlehmann |
ppl who threaten to do something instead of just doing it usually want something out of it |
01:16 |
Pexin |
yeah I seem to be incapable of imagining a server where, if someone flooded "circulation" with a bunch of minegeld, they wouldnt just laugh at the sillyness. I mean the person would still get banned for the attitude, but nobody cares about minegeld |
01:17 |
erlehmann |
yep, it's the attitude |
01:17 |
erlehmann |
i once had someone /give me slime blocks on a server |
01:17 |
erlehmann |
but tell me to not share them |
01:17 |
erlehmann |
to not ruin the “slime economy” hahahahaha |
01:18 |
erlehmann |
sticky blocks |
01:18 |
erlehmann |
i believe sticky blocks is the correct translation |
01:18 |
* Pexin |
scratches chin |
01:18 |
Pexin |
I know of sticky pistons. and I know of quicksand.. |
01:25 |
erlehmann |
pexin if you move a sticky block with a piston all blocks that are adjacent, are moved too |
01:27 |
erlehmann |
onehittoaster i am sorry for not knowing which mod allows it. but surely more than one player on your server knows how to dupe. it is always multiples. |
01:28 |
erlehmann |
onehittoaster could you elaborate a bit on the ingame economy? where does the money come from? |
01:28 |
erlehmann |
is it like catlandia, where everdone is rich? |
01:28 |
erlehmann |
everyone |
01:28 |
onehittoaster |
The server issues $10 minegeld to anyone with none in their inventory when they craft something. (from observation, I've not actually looked at the mod code for this). |
01:29 |
onehittoaster |
Some players have shops and sell stuff. |
01:29 |
onehittoaster |
Most players average a few hundred to a few thousand minegeld in their inventories, and ATM accounts, and protected chests. |
01:30 |
onehittoaster |
but there are some (long ago banned) players with inventories and chests with tens of millions of minegeld. |
01:30 |
onehittoaster |
mithril chests (90 slots) willed w/ minegeld_100 65535 |
01:30 |
onehittoaster |
filled |
01:30 |
Pexin |
the server where I regular at, gives you 5bux each ingame "day" you do one of mining,building,farming, uhh some other stuff I think |
01:30 |
Pexin |
also the bank i believe gives some interest |
01:30 |
onehittoaster |
some of these chests are burried in unprotected places, so this person could log in w/ an alt and recover it. |
01:30 |
onehittoaster |
well, until today. I wrote a tool that found all of them. |
01:31 |
onehittoaster |
takes ~5h to process a 34 GiB map.sqlite file on an AMD 5950 |
01:32 |
onehittoaster |
I'll make it multi-threaded and clean it up a bit later. |
01:32 |
onehittoaster |
gprof, fix what is slow, etc... |
01:32 |
onehittoaster |
maybe I'll post it on github. |
01:34 |
erlehmann |
onehittoaster if it is minetest 5.3 or earlier, you will have the same problem again |
01:34 |
erlehmann |
see security advisories |
01:34 |
onehittoaster |
ok, I'll go find them. |
01:34 |
erlehmann |
rubenwardy did a writeup, wait, i look it up |
01:35 |
onehittoaster |
sadly, the server is multicraft-2.0.0 (some fork of minetest-5.??). I didn't choose the binary, and if I go back to minetest-5.4.1, then some mobile users can no longer connect. |
01:35 |
onehittoaster |
I'm not very familiar w/ the multicrap vs minetest schism. |
01:35 |
erlehmann |
https://github.com/minetest/minetest/security/advisories/GHSA-hwj2-xf72-r4cf |
01:35 |
erlehmann |
> If a mod saves user input in an ItemStack's metadata, then this can be abused by an attacker to add or modify other meta fields of the same item stack. |
01:35 |
erlehmann |
this is one way to get arbitrary items |
01:36 |
onehittoaster |
ah, ok |
01:36 |
erlehmann |
usually limited to whatever input is saved in there |
01:36 |
onehittoaster |
interesting. |
01:36 |
erlehmann |
but if you deserialize meta, you can also have this! https://github.com/minetest/minetest/security/advisories/GHSA-7q63-4fq2-hqcr |
01:36 |
erlehmann |
RCE |
01:36 |
onehittoaster |
"remote code execution...". yeah, I always wondered why the lua table serialization format was "return {...table...}". |
01:36 |
onehittoaster |
that just reads like a bad idea to me. |
01:37 |
erlehmann |
hehe |
01:37 |
erlehmann |
well |
01:37 |
onehittoaster |
(in my former life I was a network security type person...) |
01:37 |
erlehmann |
onehittoaster what is the worst that would happen if all that ingame money got out? |
01:37 |
erlehmann |
like what is the “Economy” based on |
01:37 |
erlehmann |
is it item shops? |
01:37 |
onehittoaster |
probably not much. I mostly hunted down the chests to see if I could - technical challange. |
01:37 |
onehittoaster |
the server isn't crazy popular, and there is no real-world money. |
01:38 |
Pexin |
34G map for a server that is not crazy popular.. o_o |
01:38 |
onehittoaster |
the other problem is that some older/defucnt shops were set up by ealrier admins w/ "creative" powers, so they sell veyr high end gear for stupid cheap. full draconis armor for $5MG |
01:38 |
onehittoaster |
HV_technic for cheap. |
01:40 |
lagash |
Anyone know of a mod with a formspec that looks like a passcode entry? Like, 4 digits, up and down arrows to increment and decrement, etc? |
01:40 |
MTDiscord |
<GreenXenith> My server isnt crazy popular either but its still a 75GB map. It mostly just depends on regular players and time. |
01:42 |
Pexin |
GreenXenith: x_x |
01:42 |
onehittoaster |
Before admining this server, I played (well I still do) on pandorabox. They take the issues of player balance, progression and "its a surivival server" seriously, and I guess that I'm trying to clean up this new server in that spriti. |
01:43 |
Pexin |
I...think(?) our admin periodically wipes unprotected distant areas |
01:43 |
onehittoaster |
yeah, I plan to run BB's "mapcleaner" at some point also. |
01:43 |
onehittoaster |
at least, I'll wipe all mapblocks that contain only "water, air, vacuum, stone". |
01:44 |
onehittoaster |
but I'm affraid that if/when they re-mapgen that they the cavegen thing will destroy adjacent player buildings. |
01:44 |
onehittoaster |
idk. |
01:44 |
onehittoaster |
need to test that in a backup copy of the server. |
01:45 |
MTDiscord |
<GreenXenith> Yeah, id run a cleaner if I had a backup, but I dont have room on the drive to make a backup. And I cant be bothered to make a remote backup at the moment. |
01:46 |
onehittoaster |
i've got BB's "mapserver" installed as well. This adds an "mtime" column to the "blocks" table in map.sqlite, and triggers to set the value on isert/update. Using that, I am developing a python script to make a lazy "slony-like" (if you;'ve ever used "slony" for postgresql...) backup. |
01:47 |
onehittoaster |
it will copy over ~100 mapblocks per cycle, from the oldest mtime to current. |
01:47 |
onehittoaster |
so it will slowly catch up to current, and then replicate just the changing/new mapblocks after that. |
01:47 |
onehittoaster |
but yeah, still need 2x the disk space. |
01:48 |
erlehmann |
onehittoaster do not wipe areas |
01:48 |
onehittoaster |
Or I could down the server, and "cp map.sqlite backup.sqlite", but that causes ~4 minutes of outage. |
01:48 |
onehittoaster |
pbox wiped areas once, when their database got to 200G.. |
01:56 |
onehittoaster |
erlehmann: is there any other downsize to removing "unused" mapblocks other than cavegen disturbing adjacent mapblocks? |
01:57 |
erlehmann |
onehittoaster yes, some people hate protection nodes or protection areas |
01:57 |
erlehmann |
i never protecc |
01:57 |
erlehmann |
except as a troll |
01:57 |
erlehmann |
like the clicker machine |
01:57 |
erlehmann |
it was meant as a statement against protection nodes |
01:58 |
erlehmann |
the cavegen griefing is very serious though |
01:58 |
erlehmann |
ask kay27 about it |
01:59 |
erlehmann |
you should really avoid it |
01:59 |
onehittoaster |
I don't plan to remove mapblocks that have any "real" content in them, protected or not. At least, not unless forced. |
01:59 |
erlehmann |
you can remove ones that have only air |
01:59 |
onehittoaster |
Just blocks that contain only air, water, vacuum or stone (or combos of). |
01:59 |
erlehmann |
it will only remove dupestashes |
01:59 |
erlehmann |
but why remove mapblocks that are generated? |
01:59 |
erlehmann |
they will need to be generated again |
01:59 |
onehittoaster |
such blocks are really small though, so it won't reduce the database size by much. |
01:59 |
erlehmann |
leading to lag probably |
02:00 |
erlehmann |
you only have a limited number of emerge threads |
02:00 |
onehittoaster |
b/c maybe 10G of them were generated by ME as I flew around the map exploring as an admin. |
02:00 |
erlehmann |
ideally you have 1 emerge thread because the emerge is racy as far as i know |
02:00 |
onehittoaster |
when i took over, the server database was maybe 20G or so. Not its 34G. |
02:00 |
erlehmann |
happens |
02:00 |
onehittoaster |
not/now |
02:00 |
erlehmann |
the bigger the map is, the slower it grows |
02:01 |
erlehmann |
if i were you i would manually look for giant mapblocks |
02:01 |
erlehmann |
and figure out why they are big |
02:01 |
erlehmann |
consider the following |
02:01 |
erlehmann |
do you have shulkers? |
02:01 |
erlehmann |
portable chests i mean |
02:01 |
onehittoaster |
most of the existing players are highly concentrated within 5k nodes of world center. We are going to try to encourage new players to spread out a bit more, so I expect the map filesize to grow. |
02:01 |
onehittoaster |
"wifi" chests. |
02:01 |
erlehmann |
a shulker contains an entire inventory |
02:02 |
onehittoaster |
but those are not quite the same as a shulker. |
02:02 |
erlehmann |
a chest you can pick up |
02:02 |
erlehmann |
that means it can have a meta of like 50k or so |
02:02 |
onehittoaster |
btw, I've never played minecraft. not once. I only know about them from Horizon's youtube videos. |
02:02 |
erlehmann |
never played it either |
02:02 |
erlehmann |
whatever, let's consider books |
02:02 |
onehittoaster |
IDK where the wifi chest stores its meta, but they are not per-player, but universal. eg, you interact w/ anyone's wifi chest and see your inventory. |
02:02 |
erlehmann |
what's the maximum amount of characters in a book? |
02:02 |
onehittoaster |
its huge I assume. |
02:03 |
erlehmann |
so lets assume 10 kilobytes |
02:03 |
erlehmann |
what's the maximum amount of inventory space in a chest? |
02:03 |
erlehmann |
in mineclonia it is 27 |
02:03 |
onehittoaster |
lol... my C++ code crashed earlier today when trying to handle a mapblock w/ a chest w/ a crated digtron. the Inventory "Item" sttring was HUGE. I was lazy and used "std::regex()" to parse it. |
02:03 |
onehittoaster |
and that recursed 200k stack frames and segfaulted. |
02:03 |
erlehmann |
what |
02:04 |
erlehmann |
this should not happen |
02:04 |
onehittoaster |
mithril chest is either 90 or 100. |
02:04 |
erlehmann |
your regex implementation may be stupid |
02:04 |
onehittoaster |
it is |
02:04 |
onehittoaster |
c++17 g++ v 11.2 |
02:04 |
erlehmann |
let me look i up |
02:04 |
erlehmann |
wait |
02:04 |
onehittoaster |
https://discord.com/channels/513329453741637637/668091303883571200 SX did an analysis. It recursed 1 frame for each character. |
02:04 |
onehittoaster |
so I recoded it. |
02:04 |
erlehmann |
https://swtch.com/~rsc/regexp/regexp1.html |
02:05 |
erlehmann |
> This is a tale of two approaches to regular expression matching. One of them is in widespread use in the standard interpreters for many languages, including Perl. The other is used only in a few places, notably most implementations of awk and grep. The two approaches have wildly different performance characteristics: |
02:05 |
onehittoaster |
I was just being laze and did a "std::regex_match()" on "Item (.*)". |
02:05 |
erlehmann |
> Notice that Perl requires over sixty seconds to match a 29-character string. The other approach, labeled Thompson NFA for reasons that will be explained later, requires twenty microseconds to match the string. That's not a typo. |
02:05 |
onehittoaster |
It was the greedy ".*" that did it. |
02:05 |
erlehmann |
that should *not* be a problem |
02:05 |
erlehmann |
unless your regex matching algorithm is garbage |
02:05 |
onehittoaster |
I just rewrote the code to byte-bang the string like it was ansi C in the 1980's. |
02:05 |
erlehmann |
it is not you being lazy |
02:06 |
erlehmann |
it is the std::regex() people who were probably |
02:06 |
onehittoaster |
:) |
02:06 |
erlehmann |
ok so lets get back to the chests |
02:06 |
onehittoaster |
I should clean up my code and pit it on github... |
02:06 |
onehittoaster |
put |
02:06 |
erlehmann |
100 item slots times 10kb books with random characters |
02:06 |
erlehmann |
that is 1000kb for a node |
02:07 |
onehittoaster |
The packed digtron (329 nodes) item-string was over 200k long. Imagine a chest w/ 90 of those in it. And then 4096 of those in one mapblock. |
02:07 |
erlehmann |
so you get 1MB chests! |
02:07 |
erlehmann |
yes |
02:07 |
erlehmann |
i assume a packed digtron is a digtron as an item? |
02:07 |
onehittoaster |
I wonder if that would crash minetest when that mapblock is loaded. |
02:07 |
erlehmann |
that you can place as a schematic? |
02:07 |
onehittoaster |
yup |
02:07 |
onehittoaster |
I think so. |
02:07 |
erlehmann |
no, minetest is pretty cool |
02:07 |
onehittoaster |
I've not actually used a digtron though. |
02:07 |
erlehmann |
you may have one problem though |
02:07 |
erlehmann |
get one of those and then drop it as an item |
02:07 |
onehittoaster |
but the item string was filled w/ escapes that looked like "\u(0003)foo foo foo".... |
02:07 |
erlehmann |
and then *unload* the map block |
02:08 |
erlehmann |
it might crash |
02:08 |
onehittoaster |
the static_object list maxes out at 65536 chars per string...? |
02:08 |
erlehmann |
a bit less |
02:08 |
onehittoaster |
I need to check the spec. |
02:08 |
erlehmann |
it is fixed in mineclonia |
02:08 |
erlehmann |
items with really long meta are only problematic in two ways |
02:08 |
onehittoaster |
I must go. I need to incinirate some marginally edible item for dinner (IRL). |
02:09 |
erlehmann |
1. if they exist as an entity instead of in your inventory or node meta, unloading them would crash older minetest |
02:09 |
onehittoaster |
it was great talking with you. I'll be back later. |
02:09 |
erlehmann |
2. if your bandwith is low, you can bookban yourself with it |
02:09 |
erlehmann |
look up bookbanning |
02:09 |
|
Jason232 joined #minetest |
02:09 |
erlehmann |
it is a known technique to make ppl unable to play the game |
02:09 |
erlehmann |
by throwing them items with large meta |
03:15 |
citrons |
how can I get a perisistent identifier for an entity so that I can reference it in, for instance, node metadata |
03:15 |
MTDiscord |
<Jonathon> you make it yourself |
03:16 |
citrons |
what do you mean |
03:21 |
MTDiscord |
<Jonathon> you make a unique id for the entity, store it in the entity, make sure it gets loaded in on activate, and then store it in node meta |
03:21 |
MTDiscord |
<Jonathon> and then build in error checking if the entity is gone/not loaded |
03:22 |
citrons |
I see |
03:29 |
|
queria joined #minetest |
03:33 |
|
queria joined #minetest |
03:52 |
|
olliy joined #minetest |
04:04 |
|
Jason232 joined #minetest |
05:00 |
|
MTDiscord joined #minetest |
05:40 |
|
Sven_vB joined #minetest |
06:01 |
|
riff-IRC joined #minetest |
06:18 |
|
beanzilla joined #minetest |
06:20 |
|
redquasar joined #minetest |
06:57 |
|
redquasar joined #minetest |
06:58 |
|
redquasar joined #minetest |
07:02 |
|
redquasar joined #minetest |
07:03 |
|
redquasar joined #minetest |
07:05 |
|
redquasar joined #minetest |
07:06 |
|
redquasar joined #minetest |
07:13 |
|
calcul0n joined #minetest |
07:31 |
|
Sven_vB_ joined #minetest |
07:37 |
|
Oksanaa joined #minetest |
07:45 |
|
definitelya joined #minetest |
07:46 |
citrons |
I have this https://0x0.st/oXDl.txt set of functions |
07:46 |
citrons |
and |
07:48 |
citrons |
I have code which uses it to set metadata for a block. but when it reads back the metadata, it's empty. I've made sure that 1. it's reading the same block 2. the "data" table contains keys 3. meta:from_table returns true |
07:50 |
definitelya |
It's citrons!I remember APIONET now ahah. Fun times |
07:52 |
citrons |
hi! |
07:52 |
definitelya |
Hey |
07:52 |
citrons |
apionet is still active |
07:53 |
definitelya |
nicee, lemme check in. |
07:57 |
MTDiscord |
<Heav> too bad most of the bridges to apionet are down. |
07:57 |
MTDiscord |
<Heav> (the miscellaneous ones) |
07:57 |
definitelya |
hmm |
07:58 |
definitelya |
Wait.. there's a bee |
07:58 |
definitelya |
Found the culprit |
08:03 |
|
redquasar joined #minetest |
08:11 |
|
definitelya_ joined #minetest |
08:51 |
|
independent56 joined #minetest |
09:10 |
|
definitelya__ joined #minetest |
09:18 |
|
GNUHacker joined #minetest |
09:24 |
citrons |
we have a node that we want to make transparent. it is currently casting shadows on other blocks and the entity which is created inside it https://0x0.st/oXk_.png |
09:24 |
citrons |
we set its drawtype to airlike and sunlight_propagates is set to true |
09:35 |
|
Yad_ joined #minetest |
09:37 |
|
grouinos joined #minetest |
09:39 |
|
Talkless joined #minetest |
09:55 |
|
olliy joined #minetest |
09:57 |
erlehmann |
citrons does this happen without shadows? |
10:01 |
definitelya__ |
citrons FYI shadow code was somewhat buggy and controversial, it's been removed in 5.5.0 . |
10:02 |
definitelya__ |
Hopefully we can fix it. |
10:05 |
sfan5 |
I don't think they mean those shadows, just the normal stuff |
10:05 |
sfan5 |
citrons: you need paramtype = "light" too |
10:06 |
definitelya__ |
yes |
10:08 |
erlehmann |
oh |
10:17 |
|
specing joined #minetest |
10:44 |
|
Fixer joined #minetest |
11:38 |
|
appguru joined #minetest |
12:58 |
|
independent56 joined #minetest |
13:01 |
independent56 |
90% of the new players on my server are either incompetent or too young. Is this common? |
13:08 |
erlehmann |
wdym too young |
13:16 |
independent56 |
Too young to understand anything, like the fact i won't give admin to you you just joined |
13:18 |
erlehmann |
i am over 12 years old, can you give me admin rights |
13:18 |
erlehmann |
i did not even join |
13:19 |
independent56 |
They're not tto young for admin, they're too young to understand that admin is a lot of power for a place with so much hard work |
13:20 |
erlehmann |
then give them no admin and let them play |
13:20 |
erlehmann |
look, it's just kids |
13:20 |
erlehmann |
they will have fun and build some houses |
13:21 |
independent56 |
I had a player who was just like "give me admin give me all the commands i want to help the server" |
13:21 |
erlehmann |
and sometimes they make big statues of genitals or poop, because HAHA LOOK WHAT I MADE (they are kids after all) |
13:21 |
erlehmann |
sounds like a scam! |
13:21 |
erlehmann |
kids on servers are funny |
13:21 |
independent56 |
But they are so annoying. Maybe i am being a bit tough |
13:21 |
erlehmann |
i once helped a girl find the ingredients for a cake, because her brother was on the server too |
13:21 |
erlehmann |
and she wanted to make a cake in game |
13:22 |
erlehmann |
for his birthday |
13:22 |
independent56 |
That's sweet |
13:22 |
erlehmann |
yeah, unfortunately some other kid came and stole a lot of stuff |
13:22 |
definitelya__ |
Yes, it's cake, obv. |
13:22 |
erlehmann |
and killed the horses |
13:22 |
erlehmann |
definitelya__ lOL |
13:22 |
erlehmann |
LOL |
13:22 |
definitelya__ |
-_- |
13:23 |
definitelya__ |
I like cake of the sweet variety. |
13:23 |
erlehmann |
independent56 i'd say let them play or do not run a public server |
13:23 |
independent56 |
Ok, fine |
13:23 |
erlehmann |
the only kid i ever encountered who was really annoying and stupid was ASKI |
13:23 |
definitelya__ |
yay |
13:24 |
erlehmann |
ASKI helped me when i was low on health in some mcl5 server |
13:24 |
erlehmann |
but later aski was like „show me how to cheat“ (while flying around me) |
13:24 |
erlehmann |
also aski gave me a netherite ingot and i gave ASKI a stack of netherite ingots back |
13:25 |
erlehmann |
and then every time we met ASKI was like “show me how to dupe or i attack you” |
13:25 |
erlehmann |
he is like 11 or so? |
13:25 |
erlehmann |
and plays with his grandpa on the same server or so i heard |
13:25 |
erlehmann |
so ASKI shot arrows of harming in my general direction |
13:25 |
erlehmann |
but then remembered that those arrows are hard to make |
13:26 |
erlehmann |
and have value |
13:26 |
erlehmann |
and wanted them back |
13:26 |
independent56 |
https://pastebin.com/EQh8Q9Cu |
13:26 |
Pexin |
hahaha |
13:26 |
erlehmann |
so i shot them back, which angered ASKI a tiny bit |
13:26 |
erlehmann |
but i had duped the arrows, so i shot way more arrows back than i had collected |
13:26 |
erlehmann |
which angerede ASKI a bit more |
13:26 |
erlehmann |
angered |
13:26 |
erlehmann |
because before ASKI hat shot at me i did not have any arrows of harming hehe |
13:27 |
definitelya__ |
Smart |
13:27 |
erlehmann |
can't dupe an item you do not have |
13:27 |
definitelya__ |
Do business, not war! |
13:27 |
|
tech_exorcist joined #minetest |
13:28 |
erlehmann |
independent56 that does not sound too bad |
13:28 |
erlehmann |
just let the kid build some stuff, come back later and look at the cool shit they came up with |
13:28 |
|
moongaia joined #minetest |
13:29 |
independent56 |
They weren't building anything. They were just being annoying. |
13:30 |
erlehmann |
adult players can be annoying too |
13:30 |
erlehmann |
in fact, the most annoying players i have met where definitely not kids |
13:31 |
erlehmann |
really, just let them be |
13:31 |
erlehmann |
if they do not have fun |
13:31 |
erlehmann |
they will go away |
13:31 |
independent56 |
ok |
13:31 |
independent56 |
so no /revoke player shout ? |
13:31 |
erlehmann |
not unless they spam |
13:31 |
|
chilledfrogs joined #minetest |
13:31 |
|
Gustavo6046 joined #minetest |
13:31 |
independent56 |
Ok |
13:31 |
erlehmann |
i think yuo are worrying too much about managing your server tbh |
13:32 |
erlehmann |
i mean the players |
13:32 |
erlehmann |
if some kid asks for admin rights that is a reason to laugh, not to revoke the shout priv |
13:33 |
independent56 |
makes sense |
13:33 |
independent56 |
I'm just inexperienced |
13:33 |
|
Taoki joined #minetest |
13:36 |
independent56 |
Is there an adminship course out there :p? |
13:56 |
independent56 |
I've just had a player say "I'M GOING BYE" because i didn't watch the chat whilst doing building. -_- |
13:56 |
independent56 |
They were like "CREATIVE\nCREATIVITY\nI CONSISTENTLY DIE" |
13:58 |
MTDiscord |
<Warr1024> Adminship lesson 1: about 99% of players are not worth struggling to retain. A lot of them just aren't willing to invest that much energy into your world. You have to accept that finding players who are a good fit is rare and takes a long time. |
13:58 |
|
wolfshappen joined #minetest |
13:59 |
MTDiscord |
<Warr1024> As long as you make the product good, you can't sweat customers who don't click with it the first time around. There are some things you might be able to do, but nothing that has that big of an impact. |
14:00 |
independent56 |
Makes sense |
14:00 |
independent56 |
I |
14:00 |
independent56 |
I've given up retaining players by now. But i have got two somewhat regulars. |
14:01 |
MTDiscord |
<Warr1024> You'll always get a bunch of fly-throughs who join, complain about something that they don't (and probably couldn't possibly) immediately understand, and then they go leave to whine about some other server. |
14:02 |
|
TomTom joined #minetest |
14:04 |
independent56 |
"But i wanted Etheral biomes where im standing right now!!!" |
14:06 |
MTDiscord |
<Warr1024> "Why isn't grantme working?!" |
14:06 |
independent56 |
"/xban 56independent horrible admin" "Wait it dosent work!" |
14:10 |
definitelya__ |
I often wonder why, if I complain about complainers |
14:10 |
definitelya__ |
complaining about other people complaining |
14:10 |
definitelya__ |
the world lets me do it... |
14:16 |
|
tech_exorcist joined #minetest |
14:44 |
|
Jason232 joined #minetest |
14:46 |
|
queria^clone joined #minetest |
14:48 |
|
queria^clone joined #minetest |
14:51 |
|
queria joined #minetest |
14:51 |
jonadab |
The trick is to notice if you're losing the kinds of players you'd prefer not to lose, and figure out why. |
14:52 |
jonadab |
You know, the ones who want to build cool stuff and help people and whatnot. |
14:53 |
jonadab |
The ones who advise people on how to automate things in a way that doesn't create too much lag. |
14:53 |
jonadab |
And show them working examples. |
14:59 |
|
Komodo joined #minetest |
14:59 |
independent56 |
Cool |
15:31 |
MTDiscord |
<wwar> "Why don't we have (mod)? They use it in (server)." |
15:33 |
|
grouinos joined #minetest |
15:36 |
independent56 |
Haha so relatable |
15:37 |
independent56 |
I've been asked for vehicles, yet i have no car infrastrucutre. Use rails |
15:38 |
onehittoaster |
I've been asked to install "Nether", "NSSM" and "NSSB". We're already at 29k registered nodes, and 32k is the max... |
15:38 |
onehittoaster |
And I have to put "nether" someplace... it wants 3k vertical nodes minimum. |
15:40 |
erlehmann |
can it be that LBMs are super unreliable? |
15:41 |
erlehmann |
i.e. mapblocks can be loaded without the lbm activating |
15:44 |
|
queria^clone joined #minetest |
15:44 |
MTDiscord |
<Warr1024> I've run into reliability issues with LBMs but was never able to prove that it wasn't because they were just firing too early, e.g. before the block was actually properly loaded and active. |
15:45 |
MTDiscord |
<Warr1024> I have an LBM that's supposed to regenerate some ents and every now and then it just doesn't. As a result pretty much every LBM I use is backed by an ABM to retry in those cases. It sucks. |
15:48 |
MTDiscord |
<MisterE> Put a minetest.after in it? |
15:48 |
|
queria^clone joined #minetest |
15:51 |
MTDiscord |
<luatic> That's dirty as well, because you can't tell whether the time will actually be enough for the block to change state. |
15:53 |
independent56 |
I have just decommisioned a line and i haven't realised how much rolling stock there was: https://i.imgur.com/B1zEc4B.png |
15:53 |
MTDiscord |
<MisterE> Put it in a minetest.after that uses a get_node to check if the block is ready (not ignore) and if not, calls another minetest.after |
15:53 |
MTDiscord |
<luatic> Now you might get an infinite loop in some cases if blocks never get loaded |
15:54 |
MTDiscord |
<MisterE> Make it give up after a set num of tries |
15:54 |
onehittoaster |
Also consider not using a fixed delay, but "exponential decay with random jitter". |
15:55 |
onehittoaster |
decay -> delay. sorry, mixing EE and CS... ugh |
15:55 |
onehittoaster |
so, the Nth delay might be "1 + 1.5 ^ N + random(10)" or so. |
15:56 |
MTDiscord |
<MisterE> Map corruption on failure |
15:56 |
MTDiscord |
<MisterE> XD |
15:56 |
onehittoaster |
so that if lots of blocks all trigger the same timer, then they won't all fire at synchronous intervals. |
16:00 |
|
queria^clone joined #minetest |
16:13 |
erlehmann |
ok so in my case the lbm is for a mapgen layer |
16:13 |
erlehmann |
mineclone2 <0.71 generates void nodes above the nether roof |
16:13 |
erlehmann |
mineclone2 0.71 generates air |
16:13 |
erlehmann |
i think |
16:13 |
erlehmann |
so i have an lbm on void |
16:14 |
erlehmann |
turns out a) the process is not too laggy b) after a few minutes minetest stops converting void to air on load |
16:14 |
erlehmann |
in fact, it seems as if mapblocks get loaded and only after that they get converted |
16:15 |
definitelya__ |
Ahah wtf was my last message? I slept and I'm normal now, I swear. |
16:16 |
definitelya__ |
Obsessive Yuri moment. |
16:29 |
|
independent56 joined #minetest |
16:48 |
MTDiscord |
<Warr1024> I already tried queueing and delaying for the mapblock to be definitely loaded so I guess that's not it. |
16:49 |
MTDiscord |
<Warr1024> For mapgen specifically I also ran into the lovely problem that sometimes mapgen modifies stuff outside of the newly generated area, like dungeons overwriting themselves multiple times. |
16:49 |
MTDiscord |
<Warr1024> So far I have found nothing other than an ABM that will definitely always eventually find a node and make sure some code runs against it. |
16:58 |
|
independent56 joined #minetest |
17:00 |
|
grouinos joined #minetest |
17:36 |
erlehmann |
Warr1024 you may want to look into the work that kay27 does |
17:36 |
erlehmann |
he is basically trying to make a non-racy mapgen that does not grief your map |
17:37 |
erlehmann |
ppl suggest that he work with the engine devs, but i think he said he tried that and had bad experiences |
17:37 |
erlehmann |
so he is doing it in lua |
17:38 |
erlehmann |
meanwhile, i have fought the stupid stone clouds again today and won |
17:39 |
|
Komodo joined #minetest |
17:40 |
Komodo |
Hello world |
17:41 |
MTDiscord |
<Warr1024> I have had some success with Lua mapgen. There are some things I'm not sure make sense to to in mapgen though, so in some cases I use a special node to mark things and then LBM+ABM to sweep them post hoc. |
17:41 |
MTDiscord |
<Warr1024> I almost added an "albm" abstraction but out of the like 8 cases, at least half of them are subtly different enough that it wouldn't have made much sense. |
17:49 |
erlehmann |
yes, structure nodes |
17:50 |
erlehmann |
the advantage of a structure node, that unpacks into a structure after mapgen: if is atomic |
17:50 |
erlehmann |
you get either the whole structure or not |
17:50 |
erlehmann |
but not half the structure griefed by cavegen |
17:50 |
erlehmann |
or chewed up by an adjacent mapblock generating |
17:50 |
MTDiscord |
<Warr1024> Yeah, it's just annoying how much tooling is necessary to ensure they unpack... |
17:50 |
erlehmann |
or chunk, whatever |
17:51 |
erlehmann |
oh how much? |
17:51 |
erlehmann |
have a link? |
17:51 |
erlehmann |
is there maybe a generalized structure node unpacking mod? |
17:51 |
MTDiscord |
<Warr1024> I just mean the need for an ABM to catch LBM failures. |
17:51 |
erlehmann |
ah |
17:51 |
erlehmann |
i once read that some user managed to snag a dfcaverns (?) structure thing that unpacked into an underground fortress or something like that hehe |
17:52 |
MTDiscord |
<Warr1024> Also ABMs for node timer failures suck too. Seems like those will get purged out of a mapblock at save time if there are too many or something. |
17:52 |
erlehmann |
just by mining it when the server was laggy |
17:52 |
erlehmann |
timers are cursed |
17:52 |
MTDiscord |
<Warr1024> Everything is at least a little cursed ;-D |
17:52 |
erlehmann |
coras fires using timers leaked memory a lot |
17:53 |
erlehmann |
ABMs are the least cursed |
17:53 |
erlehmann |
having 40k fires and an ABM to extinguish them randomly does not increase memory by a noticeable amount |
17:53 |
erlehmann |
make each fire remember how long it burned and you fill the memory to the brim |
17:54 |
MTDiscord |
<Warr1024> ABMs are good for what they're good for but if you need periodic firing of an event for a node on a strict interval, it'd be a lot of work to avoid timers. |
17:54 |
MTDiscord |
<Warr1024> Node metadata at least is surprisingly less cursed than I'd have expected though. |
17:55 |
erlehmann |
it is cursed in that you can put stuff in it |
17:55 |
erlehmann |
it sees to be bottomless |
17:55 |
erlehmann |
thicc mapblocks with lots of chests full of stuff |
17:56 |
erlehmann |
way better than entity staticdata imo |
17:56 |
definitelya__ |
erlehmann: Is a mapblock full of metadata nodes more prone to corruption? |
17:58 |
definitelya__ |
Maybe it's unrelated; I just thought more node complexity = more breakage. |
18:00 |
erlehmann |
definitelya__ having a lot of metadata and having a bit of metadata is the same complexity |
18:00 |
erlehmann |
only when you get into stuff like split network packets it gets hairy |
18:00 |
definitelya__ |
Ah I see, thanks. |
18:18 |
|
Talkless joined #minetest |
18:31 |
MTDiscord |
<Warr1024> Metadata fields can be marked private, which can help mitigate network impact. |
19:11 |
|
sec^nd joined #minetest |
19:17 |
|
proller joined #minetest |
19:25 |
MinetestBot |
[git] dennisjenkins75 -> minetest/minetest: Correct world_format.txt specification (#12061) 0cd9c5b https://github.com/minetest/minetest/commit/0cd9c5b5be47dffd433e9bad8fd2119eb9ddf0f5 (2022-02-12T19:23:46Z) |
19:25 |
MinetestBot |
[git] Wuzzy2 -> minetest/minetest: Add support for 'seed' in disallow_mapgen_settings (#12023) 10cf2f3 https://github.com/minetest/minetest/commit/10cf2f3eddb9106a87721e36f0dd284ec041c4d8 (2022-02-12T19:23:58Z) |
19:25 |
MinetestBot |
[git] rollerozxa -> minetest/minetest: Apply texture pack main menu textures immediately (#12018) 258ae99 https://github.com/minetest/minetest/commit/258ae994915e1b9fc5b3a72627886f2ce4334902 (2022-02-12T19:24:20Z) |
19:25 |
|
grouinos joined #minetest |
19:45 |
|
Komodo joined #minetest |
20:06 |
|
v-rob joined #minetest |
20:35 |
|
independent56 joined #minetest |
20:36 |
|
v-rob joined #minetest |
20:56 |
|
chilledfrogs joined #minetest |
20:58 |
|
chilledfrogs joined #minetest |
21:05 |
|
Flabb joined #minetest |
21:07 |
lagash |
What's a quick way to determine is something is a player or a node? E.g. from docs `clicker`: an `ObjectRef` (may or may not be a player) |
21:08 |
Krock |
lagash: it's always an ObjectRef |
21:09 |
Krock |
nodes are not objects |
21:09 |
Krock |
use clicker:get_player_name() to check if it's a player |
21:09 |
MTDiscord |
<luatic> no, use clicker:is_player() |
21:10 |
MTDiscord |
<luatic> clicker:get_player_name() returns the empty string for non-players, which I wouldn't rely on |
21:11 |
Krock |
it's documented to return an empty string. but agreed, there might be better functions |
21:11 |
MTDiscord |
<luatic> Compare: if clicker:is_player() then ... end vs if clicker:get_player_name() ~= "" then ... end |
21:12 |
lagash |
so when clicker is not a player, what can it be? a mob perhaps? |
21:14 |
Krock |
any kind of lua entity, which includes mobs, vehicles, or dropped item stacks |
21:16 |
Krock |
although I don't think there's a vehicle that performs right-click actions |
21:16 |
lagash |
not yet you mean! }:) |
21:17 |
Krock |
yes |
21:17 |
Krock |
I have high expectations in you |
21:36 |
MTDiscord |
<luatic> lagash: or sometimes a "fake player". These might be NPCs, but sometimes are just Lua structures for automation purposes. |
22:04 |
|
chilledfrogs joined #minetest |
22:19 |
|
specing joined #minetest |
22:25 |
independent56 |
Is it normal to spawn to be full of bones? |
22:25 |
independent56 |
Especially a spawn as mountainous as mine? |
22:25 |
independent56 |
http://56i.duckdns.org:8080/#!/map/0/10/109/-3005 |
22:26 |
independent56 |
Here, see? Bones everywhere! |
22:30 |
independent56 |
Should i make a button in spawn which grants shout for those who press it? |
22:30 |
independent56 |
Or is it unethical? |
23:00 |
|
Sven_vB joined #minetest |
23:22 |
sfan5 |
why would it |
23:24 |
|
independent56 joined #minetest |
23:40 |
|
v-rob joined #minetest |
23:42 |
|
Verticen joined #minetest |
23:54 |
|
Hawk777 joined #minetest |