Jump to content

using Minecraft as GUI for AutoIT


JRSmile
 Share

Recommended Posts

I had a dream...

using Minecraft as GUI for Homeautomation, in the Help Forum SkinnyWhiteGuy and i developed a rudimentary minecraft server that has now reached a state where you can login into the game.

It has no features at all yet but im prowd to show you the first attempt.

sourcecode will be released once finished, or you can see it here:

The Server can be downloaded here: http://dl.dropbox.com/u/957526/AutoCraft.exe (Minecraft Client Version 1.1 REQUIRED)

start it start minecraft add 127.0.0.1 to your serverlist and you shoud see the first packet arrive in the console window of the server.

if you login there is a bunch of hexcode scrolling down following.

If you want to quit it, just do anything in minecraft that has not jet been implemented, the default behaviour of the server is kick the player if it doesn't know what to do with the incomming packets.

then you can close the server CUI.

If someone is willed to participate into the project feel free to pm me.

Best regards,

J

Edited by JRSmile
$a=StringSplit("547275737420796F757220546563686E6F6C75737421","")
For $b=1 To UBound($a)+(-1*-1*-1)step(2^4/8);&$b+=1*2/40*µ&Asc(4)
Assign("c",Eval("c")&Chr(Dec($a[$b]&$a[$b+1])));''Chr("a")&"HI"
Next ;time_U&r34d,ths,U-may=get$the&c.l.u.e;b3st-regards,JRSmile;
MsgBox(0x000000,"",Eval("c"));PiEs:d0nt+*b3.s4d.4ft3r.1st-try:-)
Link to comment
Share on other sites

  • Moderators

And in case anyone thinks of reporting this thread - take a look here first. :)

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Link to comment
Share on other sites

MInecraft for home automation, as in starting your coffee pot fifteen minutes before you wake up. Raising and lowering your blinds? What's this all about?

Link to comment
Share on other sites

MInecraft for home automation, as in starting your coffee pot fifteen minutes before you wake up. Raising and lowering your blinds? What's this all about?

Indeet this will be the endresult but think of it in a more free way, you will be able to present the user a virtual world with levers, buttons, signs and structures (buildings) that you can define and define actions with them that are as flexible as programming with autoit.

Edited by JRSmile
$a=StringSplit("547275737420796F757220546563686E6F6C75737421","")
For $b=1 To UBound($a)+(-1*-1*-1)step(2^4/8);&$b+=1*2/40*µ&Asc(4)
Assign("c",Eval("c")&Chr(Dec($a[$b]&$a[$b+1])));''Chr("a")&"HI"
Next ;time_U&r34d,ths,U-may=get$the&c.l.u.e;b3st-regards,JRSmile;
MsgBox(0x000000,"",Eval("c"));PiEs:d0nt+*b3.s4d.4ft3r.1st-try:-)
Link to comment
Share on other sites

Since I'm helping some with this, I'll try to see if I can explain what I think is the goal:

You could have a virtual house like your own, that you could do things in, and have them happen in your real house as well. Flip a switch on a wall in minecraft, the lights come on in your house. That type of thing.

Of course, this project on its own can not do all of that. There will need to be other parts, where AutoIt calls Arduino or other things that do the actual light controls, or other things.

I just liked the idea of the server part of it myself, and that's where I like to play most of the time any way. Someone else might be better with the 2nd part of this setup.

Link to comment
Share on other sites

  • 2 months later...

Project closed,

Sad but i have to stop the development of an emuserver for minecraft, the same functionaltiy can be archived with..tatatataaaa

ComputerCraft... http://www.minecraftforum.net/topic/892282-124-computercraft-132-updated/

Which is a single and multiplayer mod for minecraft which adds lua scripting functionality to it.

In addition it is capable to make http get and post requests to directly connect to an arduino with ethernet shield.

So now you can place a computer block right beside a lever or button in minecraft define a url to be called and let the arduino pull some relays to switch on and of your house lighting in realtime. Bäm.

Im really sorry that there is no longer any part of autoit needed for this.

Im planning to use a raspberry pi as controller to run minecraft on, adding a local webserver which is triggered by the http requests from computercraft which then triggers the gpio pins on the device which pull the relays which light up my house, who likes this idea can contact me for further teamwork on that project via pm, i may set up a webside for this as well.

$a=StringSplit("547275737420796F757220546563686E6F6C75737421","")
For $b=1 To UBound($a)+(-1*-1*-1)step(2^4/8);&$b+=1*2/40*µ&Asc(4)
Assign("c",Eval("c")&Chr(Dec($a[$b]&$a[$b+1])));''Chr("a")&"HI"
Next ;time_U&r34d,ths,U-may=get$the&c.l.u.e;b3st-regards,JRSmile;
MsgBox(0x000000,"",Eval("c"));PiEs:d0nt+*b3.s4d.4ft3r.1st-try:-)
Link to comment
Share on other sites

Project closed,

Sad but i have to stop the development of an emuserver for minecraft, the same functionaltiy can be archived with..tatatataaaa

ComputerCraft... http://www.minecraftforum.net/topic/892282-124-computercraft-132-updated/

Which is a single and multiplayer mod for minecraft which adds lua scripting functionality to it.

In addition it is capable to make http get and post requests to directly connect to an arduino with ethernet shield.

So now you can place a computer block right beside a lever or button in minecraft define a url to be called and let the arduino pull some relays to switch on and of your house lighting in realtime. Bäm.

Im really sorry that there is no longer any part of autoit needed for this.

Im planning to use a raspberry pi as controller to run minecraft on, adding a local webserver which is triggered by the http requests from computercraft which then triggers the gpio pins on the device which pull the relays which light up my house, who likes this idea can contact me for further teamwork on that project via pm, i may set up a webside for this as well.

Why close it? it's awesome that it would be written in autoit, would give a user more control over what happens and what not, by what I'm reading, this sounds pretty cool..

But then again, I don't play games.

Edited by ApudAngelorum
Link to comment
Share on other sites

The proove of concept will be kept online so you can go ahead and develop further, just for my purposes it doesn't make sense to create a whole server which has to be updated with every minecraft version upgrade, when the same functionality can be archived with mod that implements itself very easy into the game.

I don't "play" games either ;) but the imagination of a 10" terminal in every room next to the door which displays a virtual reality of the current room and is able to control it entirely makes me having a nerdgasm. :)

$a=StringSplit("547275737420796F757220546563686E6F6C75737421","")
For $b=1 To UBound($a)+(-1*-1*-1)step(2^4/8);&$b+=1*2/40*µ&Asc(4)
Assign("c",Eval("c")&Chr(Dec($a[$b]&$a[$b+1])));''Chr("a")&"HI"
Next ;time_U&r34d,ths,U-may=get$the&c.l.u.e;b3st-regards,JRSmile;
MsgBox(0x000000,"",Eval("c"));PiEs:d0nt+*b3.s4d.4ft3r.1st-try:-)
Link to comment
Share on other sites

still possible to do it the autoit style, at least communication between mc and autoit.

installation:

you will need:

Minecraft (of course)

ComputerCraft http://www.minecraftforum.net/topic/892282-124-computercraft-132-updated/

ModLoader: http://www.minecraftforum.net/topic/75440-v125-risugamis-mods-everything-updated/

ModLoader_MP: http://www.minecraftforum.net/topic/8676...s-v1-apr-4-modloadermp-only/#M

MinecraftForge: http://www.mediafire.com/download.php?ok4ystrloo8kwwb

1. download minecraft.exe (from minecraft.org)

2. start it once and create a world ( if you want to have it portable and/or see a console like the window on the upper left in the screenshots,start it via batch script [

@echo off

set APPDATA=%CD%

minecraft.exe

]

this will put the .minecraft folder right beside your exe file, if you don't start it via batch file your .minecraft folder will land in %appdata%

3. extract Modloader zip to an own folder.

4. open the minecraft.jar with winrar it is located in .minecraft/bin/

5. copy the content of the Modloader folder into the jar

6. remove the META-INF folder inside the jar

7. do the same with Modloader_MP.zip and Minecraft Forge.zip

8. start the game and check if a folder mods was created in the .minecraft folder

9. extract the ComputerCraft.zip

10. Copy the whole ComputerCraft Folder into the mods folder.

11. start the game and you should have the new blocks added to the Game, they are crafted like so (http://computercraft.info/wiki/index.php?title=Recipes)

12. stop the game, go into the .minecraft/config/ folder and change in computercraft.cfg the HTTP api usage from 0 to 1, start the game and add the block wherever you want it.

13. rightklick the block and type: edit scriptfilename this will create a ComputerCraft Program with the name scriptfilename.

14. copy the content of the script below into the script [unfortunately no copy and paste]

15. save it by pressing Ctrl (release the key) then select SAVE and press enter or "S" then press Ctrl again (release the key) and select EXIT or press "E".

16. run your program either manual by typing the scriptfilename into the virtual computer console or rename the file to "startup" and it will load everytime you rightklick the computer.

[beware to implement a exit function or else you will have to destroy your computer and put it back into place.

17. wire a lever/button with some redstone to the left side of the computer (or the side you defined in your script.)

18. start your autoit httpd server (script below)

19. watch the httpd server response while triggering the lever/button.

20. Profit!

just create a http server with TCP.au3 UDF and act on received http requests.

Posted Image

#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Change2CUI=y
#AutoIt3Wrapper_Res_requestedExecutionLevel=asInvoker
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <array.au3>
#include "TCP.au3"
$hServer = _TCP_Server_Create(8081)
_TCP_RegisterEvent($hServer, $TCP_RECEIVE, "Received");
While 1
WEnd
Func Received($hSocket, $sReceived, $iError); And we also registered this! Our homemade do-it-yourself function gets called when something is received.
;~ ConsoleWrite("CLIENT: We received this: "& $sReceived & @CRLF)
if StringInStr($sReceived, "GET /gpio/") Then
$res = StringSplit($sReceived,"/")
ConsoleWrite($res[3] & " ==> " & $res[4] & @CRLF)
EndIf
_TCP_Send($hSocket, "HTTP/1.1 200 OK")
_TCP_Server_DisconnectClient($hSocket)
EndFunc

Posted Image

for communication back use the response codes or craft a real html page which can be scraped by the lua language.

example ComputerCraft program:

while true do

event,param = os.pullEvent()

if event == "redstone" and rs.getInput("left") == true then

print ("ON")

http.get("http://127.0.0.1:8081/gpio/1/true/")

else

print ("OFF")

http.get("http://127.0.0.1:8081/gpio/1/false/")

end

sleep(0.1)

end

Regards,

J

Edited by JRSmile
$a=StringSplit("547275737420796F757220546563686E6F6C75737421","")
For $b=1 To UBound($a)+(-1*-1*-1)step(2^4/8);&$b+=1*2/40*µ&Asc(4)
Assign("c",Eval("c")&Chr(Dec($a[$b]&$a[$b+1])));''Chr("a")&"HI"
Next ;time_U&r34d,ths,U-may=get$the&c.l.u.e;b3st-regards,JRSmile;
MsgBox(0x000000,"",Eval("c"));PiEs:d0nt+*b3.s4d.4ft3r.1st-try:-)
Link to comment
Share on other sites

Hmmm, wonder if i could do somthing like this with the source engine....... actually... well... oh god, mind gasm.

[center][/center]Working on the next big thing.Currently Playing: Halo 4, League of LegendsXBL GT: iRememberYhslaw

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...