[Release] BrainFkMC

##Introduction
So many of the devs here may have heard of BrainF**k, an esoteric programming language with just 8 instructions. The idea of the language is to be incredibly simple, but to be turing complete (given enough memory). The language works with a theoretically infinite array, and functions by moving a pointer left or right, and adding 1 or subtracting 1 from values. The only conditional in the language is a loop which terminates when the pointer points to a zero value.


###Video
So that’s the boring description out of the way, but here’s BrainF**k at a cool 20 Hz (note that most modern computers run at greater than 1 Ghz, so it’s kinda slow, but it is totally awesome!):

(and yes, this program took ~a minute and half to print hello world… Instructions per tick can be edited in the config, so can the max amount of instructions a program can execute (to prevent infinite loops))
Note: this video is slightly out of date. New versions show the pointer moving


###Information:
Commands:

  • Base Command: brainfkmc, bfm, bf
  • Sub Commands (in the form [aliases]; [permission]; [description]):
  • reload, re, r; brainfkmc.admin; reloads the config
  • view, v, list, l; brainfkmc.admin; displays all currently running programs
  • executepre, execpre, exep; brainfkmc.run; runs a pre-defined program, pre-defined programs are:
    • hello_world; prints “Hello World”
    • hello_world2; prints “Hello World” (with a different method than hello_world)
    • trump; builds a wall
    • trump2; builds a different wall
  • execute, exec, exe; brainfkmc.run; runs a program

Config:

  • instructions_per_tick; represents the number of program instructions to execute each tick, defaults to 5. Above example video has this set to 1
  • max_instructions; represents the maximum number of instructions a program is allowed to run. Set this to a negative to allow infinite instructions. This can be used to prevent infinite loops from running forever

Version: Supports Sponge 4.x, should support all other versions that have the same methods in Extent, since this plugin only interacts by setting blocks, sending messages, and getting block types and locations

Links:

6 Likes