Conversation
Edited 2 months ago

the Minecraft Trickster mod has all the syntactic clarity of Doctor Strange sigils and all the semantic clarity of lambda calculus. it’s like if a crazed mathematician was given an unlimited supply of coffee and one screenshot of Fullmetal Alchemist and told to invent a magic system. it is exactly as mind-bleedingly arcane as I always imagined fantasy magic would be

I spent three hours trying to create a very simple loop and now I can’t figure out how to recreate it. this is a recommendation btw. this mod is incredible

3
2
8

@kasdeya book marked. I need to take a look at this when I can!

0
0
1

@kasdeya Hex Casting but is lisp was all I needed to hear <3

1
0
1

@efi @kasdeya i don’t see any lisp here

if you want actual lua, you can atleast install ComputerCraft: Tweaked. (you can also enable access to the internet, it’s off by default)
yes they do run doom

2
0
0

@a_blahaj @kasdeya stop being hostile towards me when I am not even adressing you

1
0
0

@efi @kasdeya i’m not being hostile???
this mod doesn’t mention lisp, that’s all i told. and also the fact that a mod exists that can run lua.

0
0
0

@a_blahaj it is actually very Lisp-like! it’s a functional programming language with a “code as data” philosophy, where code is represented by nested datastructures. and you can even have macros which behave just like Lisp macros, except they operate on {the datastructure that defines a Trickster spell circle}

with that being said, the specific semantics of Trickster are different than Lisp and so are the datastructures, which threw me for a loop until I got used to it lol

1
0
1

@kasdeya now we need one more: python in minecraft neocat_woozy

tbh, minecraft is alr turing complete so you can do it even in vanilla

0
0
1
Trickster spoilers
Show content

update: I created my own DSL for expressing Trickster spells in a more familiar Lisp-like syntax with some syntactic sugar for abstracting the complexity, and it looks like this:

($mine-tree; $self $block-type $coords) =
  (run-same-args;
    (switch;
      (!=; block-type (get-block-type; $coords)) '()
      '(void;
         (break-block; $coords)
         (sleep)
         ($self; $self (+; $coords (vec; 0 1 0)) block-type))))

($mine-tree;
  $mine-tree
  (get-block-type; (get-look-pos; (get-player))))
  (get-look-pos; (get-player))
0
0
1