SHOW:
|
|
- or go back to the newest paste.
1 | - | --File: /startup |
1 | + | --File: /worldServer |
2 | - | --Install : pastebin get cXTMm7G1 startup |
2 | + | |
3 | dofile("/cattech/common.lua") | |
4 | - | function downloadFromPastebin(pastebinCode, filename) |
4 | + | dofile("/cattech/serverops.lua") |
5 | - | local url = "https://pastebin.com/raw/" .. pastebinCode -- Construct the URL |
5 | + | |
6 | - | local response, err = http.get(url) -- Perform the HTTP GET request |
6 | + | function putItemsInContainer(x,y,z,items) |
7 | local itemsString = table.concat(items,",") | |
8 | - | if response then |
8 | + | local cmd = "/data merge block " .. x .. " " .. y .. " " .. z .. " {Items:[" .. itemsString .. "]}" |
9 | - | local file = fs.open(filename, "w") -- Open a file for writing |
9 | + | log("debug","putItemInContainer : " .. cmd) |
10 | - | file.write(response.readAll()) -- Write the response to the file |
10 | + | executeCommand(cmd) |
11 | - | file.close() -- Close the file |
11 | + | |
12 | - | response.close() -- Close the HTTP response |
12 | + | |
13 | - | print(pastebinCode .. " -> " .. filename) |
13 | + | function restockStore() |
14 | - | else |
14 | + | local items = {} |
15 | - | error("Pastebin download " .. pasetebinCode .. " error: " .. err) |
15 | + | for slot = 0, 8 do |
16 | - | end |
16 | + | table.insert(items ,"{Slot:" .. slot .. ",Count:" .. 1 .. ",id:\"minecraft:beef\"}") |
17 | table.insert(items ,"{Slot:" .. slot+9 .. ",Count:" .. 1 .. ",id:\"minecraft:mutton\"}") | |
18 | table.insert(items ,"{Slot:" .. slot+18 .. ",Count:" .. 1 .. ",id:\"minecraft:porkchop\"}") | |
19 | - | -- Function to create a directory |
19 | + | end |
20 | - | function createDirectory(dirName) |
20 | + | putItemsInContainer(43,88,51,items) |
21 | - | if not fs.exists(dirName) then -- Check if the directory already exists |
21 | + | |
22 | - | fs.makeDir(dirName) -- Create the directory |
22 | + | items = {} |
23 | - | print("Directory created: " .. dirName) |
23 | + | for slot = 0, 26 do |
24 | - | else |
24 | + | table.insert(items ,"{Slot:" .. slot .. ",Count:" .. 1 .. ",id:\"minecraft:leather\"}") |
25 | - | print("Directory already exists: " .. dirName) |
25 | + | end |
26 | - | end |
26 | + | putItemsInContainer(43,88,50,items) |
27 | ||
28 | items = {} | |
29 | - | -- Main program starts here |
29 | + | for slot = 0, 8 do |
30 | - | print("Downloading programs from Pastebin...") |
30 | + | table.insert(items ,"{Slot:" .. slot .. ",Count:" .. 1 .. ",id:\"minecraft:rabbit\"}") |
31 | - | fs.makeDir("cattech" ) |
31 | + | table.insert(items ,"{Slot:" .. slot+9 .. ",Count:" .. 1 .. ",id:\"minecraft:rabbit_hide\"}") |
32 | - | downloadFromPastebin("gBBQJrAH", "/cattech/file.lua") |
32 | + | table.insert(items ,"{Slot:" .. slot+18 .. ",Count:" .. 1 .. ",id:\"minecraft:rabbit_foot\"}") |
33 | - | dofile("/cattech/file.lua") |
33 | + | end |
34 | - | downloadNamedFileFromPastebin("0xjcxant") |
34 | + | putItemsInContainer(43,88,49,items) |
35 | ||
36 | - | dofile("/cattech/updateAll.lua") |
36 | + | items = {} |
37 | for slot = 0, 8 do | |
38 | - | -- Define an array where each element is a pair: {pattern, program} |
38 | + | table.insert(items ,"{Slot:" .. slot .. ",Count:" .. 1 .. ",id:\"minecraft:ink_sac\"}") |
39 | - | local patternPrograms = { |
39 | + | table.insert(items ,"{Slot:" .. slot+9 .. ",Count:" .. 1 .. ",id:\"minecraft:glow_ink_sac\"}") |
40 | - | --{"MiningTurtle%d+", "mining_program.lua"}, -- Matches "MiningTurtle" followed by digits |
40 | + | end |
41 | - | {"WorldServer", "/worldServer"}, |
41 | + | putItemsInContainer(43,88,48,items) |
42 | - | {"testing", "/testCode"}, |
42 | + | |
43 | - | } |
43 | + | items = {} |
44 | for slot = 0, 8 do | |
45 | - | local initialFuel = turtle.getFuelLevel() |
45 | + | table.insert(items ,"{Slot:" .. slot .. ",Count:" .. 1 .. ",id:\"minecraft:chicken\"}") |
46 | - | print("Starting at " .. initialFuel .. " fuel") |
46 | + | table.insert(items ,"{Slot:" .. slot+9 .. ",Count:" .. 1 .. ",id:\"minecraft:feather\"}") |
47 | end | |
48 | - | local turtleName = os.getComputerLabel() |
48 | + | putItemsInContainer(43,88,47,items) |
49 | ||
50 | - | if not turtleName then |
50 | + | items = {} |
51 | - | print("Turtle has no name, no auto start.") |
51 | + | for slot = 0, 8 do |
52 | - | return |
52 | + | table.insert(items ,"{Slot:" .. slot .. ",Count:" .. 1 .. ",id:\"waystones:waystone\"}") |
53 | - | else |
53 | + | end |
54 | - | for _, pair in ipairs(patternPrograms) do |
54 | + | putItemsInContainer(43,88,45,items) |
55 | - | local pattern, program = pair[1], pair[2] |
55 | + | |
56 | - | -- Check if the turtle's name matches the pattern |
56 | + | |
57 | - | if string.match(turtleName, pattern) then |
57 | + | |
58 | - | -- Check if the program exists |
58 | + | -- Make sure the modem is open for communication |
59 | - | if fs.exists(program) then |
59 | + | local modemSide = "top" |
60 | - | print("Pattern matched: " .. pattern .. ". Starting program: " .. program) |
60 | + | rednet.open(modemSide) |
61 | - | shell.run(program) |
61 | + | |
62 | - | return |
62 | + | log("info","Listening as 'worldServer'") |
63 | - | else |
63 | + | |
64 | - | print("Error: Program " .. program .. " not found.") |
64 | + | local chunkTimeout = 0 |
65 | - | return |
65 | + | local restockTimeout = 0 |
66 | - | end |
66 | + | while true do |
67 | - | end |
67 | + | local senderId, message, protocol = rednet.receive("worldServer",5) |
68 | - | end |
68 | + | |
69 | - | print("Turtle name " .. turtleName .. " no autostart") |
69 | + | if message then |
70 | - | end |
70 | + | local processed=false |
71 | local cmd,data = string.match(message, "^(%S+)%s+(.+)$") | |
72 | ||
73 | if cmd == "chunkLoad" then | |
74 | log("debug","Chunkload coordinates received: " .. data) | |
75 | ||
76 | local x, y, z = data:match("(%S+)%s+(%S+)%s+(%S+)") | |
77 | ||
78 | addChunkLoad(tonumber(x),tonumber(y),tonumber(z),5) | |
79 | chunkTimeout = 0 -- Trigger a new check immediately. | |
80 | ||
81 | processed=true | |
82 | end | |
83 | ||
84 | if not processed then | |
85 | log("info","Unhandled [" .. senderId .. "]: " .. message) | |
86 | end | |
87 | end | |
88 | ||
89 | io.write(".") | |
90 | ||
91 | if (restockTimeout < deltaTime(0)) then | |
92 | log("debug","Restocking Store") | |
93 | restockStore() | |
94 | restockTimeout = deltaTime(60 * 10) -- Restock every 15 minutres | |
95 | end | |
96 | ||
97 | log("debug",chunkTimeout .. "=C=" .. deltaTime(0)) | |
98 | if (chunkTimeout < deltaTime(0)) then | |
99 | log("debug","Chunks Processing") | |
100 | handleChunkLoad() | |
101 | chunkTimeout = deltaTime(60 * 1) -- Check in 1 minute to handle chunks | |
102 | end | |
103 | end | |
104 | ||
105 | ||
106 |