I myself enjoy this mod. I think it has a lot of potential as a mod.I would enjoy if you added citrus trees and added more ''ground plants''. I like the rake and the fact that bonemeal isn't ''allowed''.
I hope it will stay like this since i pretty mush hate bone meal and the fast growth things.
Its too much unrealitic even for mincraft and i think you shouldnt add the option to use bonemeal on your plants.
I also think you should only get the first apple/watermellon/coco beans from dungeons and chest and only then you can plant them and make farms and not with the rake
Interesting mod. You could probably implement a special vacuum that could suck up ghosts and receive items from them/tame them, though it would make things seem less scarier.
Yes, that or building blessed swords or water which will be expensive and will keep ghost away from your house.
Ouh, that's too bad.
Gravitycraft and Mineup need to edit pretty much every important class.
If you have got anything that exceeds the minecraft basics, it won't be compatible. Yeah I know, too sad :sad.gif:
Good thing is, we plan on extending our mods to provide a mod API themselves, since our mods won't be compatible with anything big anyways. :happy.gif:
Thats really sad to hear.
it means i dont need to wait for the mod to come out, but the api which will take even longer :sad.gif:
Nope, I haven't yet had the time to update, and since I'm programming on a new basis anyway, the next release will probably be the full release :smile.gif:
FIMALYY
for you if it will be compatible with all of my mods lol
Name of program: DoorOS Functions: Secure a door Download link/Copy of code:
shell.run("clear")
currentUsername = ("user")
currentPass = ("pass")
loggedIn = false
while true do
shell.run("clear")
print("Default username is 'user'.")
print("Default password is 'pass'.")
print("")
print ("username: ")
username = read()
print("")
print ("password: ")
pass = read()
if pass == (currentPass) and username == (currentUsername) then
print ("correct password. Access granted.")
sleep (1.5)
loggedIn = true
else
print ("Username and password don't match.")
sleep (0.7)
print ("goodbye :biggrin.gif:")
sleep (0.2)
oneShot()
oneShot()
oneShot()
end
while loggedIn == true do
shell.run("clear")
print(" what do you want to do?")
print(",----------------------,")
print("|[1] open door |")
print("|[2] change username |")
print("|[3] change password |")
print("|[0] log off |")
print("| |")
print("'----------------------'")
func = read()
if func == "1" then
redstone.setOutput ("back", true)
sleep (4)
redstone.setOutput ("back", false)
sleep (0.3)
end
if func == "2" then
print("Password: ")
pass = read()
if pass == (currentPass) then
print("Correct password.")
print("What do you want the new username to be?")
username = read()
print("Username changed.")
currentUsername = (username)
print("")
print("Your new username is now")
print(currentUsername)
sleep (2)
else
print("wrong password.")
sleep (2)
end
end
if func == "3" then
print("Old password: ")
pass = read()
if pass == (currentPass) then
print("Correct password.")
print("What do you want the new password to be?")
pass = read()
print("Password changed.")
currentPass = (pass)
print("")
print("Your password is now")
print(currentPass)
sleep (2)
else
print("wrong password.")
sleep (2)
end
end
if func == "0" then
loggedIn = false
print("logging off.")
sleep (0.7)
print("logging off. .")
sleep (0.7)
print("logging off. . .")
sleep (0.6)
end
end
function oneShot ()
redstone.setOutput("bottom", true)
sleep (0.2)
redstone.setOutput("bottom", false)
sleep (0.2)
end
end
A description (Optional): A user interface where you must log in with user name and password. You are able to change the username and password.
phone friendly version
Its kinda like the other "LockedDoors with password" programs only with user or at least that what its look like.
Here is my network code using bundled cables. This uses cables 0-9 leaving 7 other cables still useable in the same bundle.
--[[
Network API by XLilCasper. Original idea from D0han
All API can be accessed directly or though network.
Basic useage is
network.sendStr(0xFF,"Hello World")
Will send Hello World to all connected computers that are listening
To set your computer to listen use
local data = network.waitForData()
You can set your computers network ID with
network.setid(XXX) where XXX is a number 0-254, computers default to an ID of 0.
Finaly by default data is sent out the back. You can change this with
network.setDataSide(side)
--]]
sDataSide = "back"
computerid = 0x00
fThrottle = 0.2 --This was the fastest that worked for me. This gives us 5 Bps or 40 bps
Dec2BinTable = {}
b = {}
packetHeaders = {
['trans'] = {0x1, 0x11},
}
------------borrowed code------------------------
for n=1,8 do
table.insert(b, 0)
end
for n=0,255 do
table.insert(Dec2BinTable, 0)
Dec2BinTable[n] = b[1] .. b[2] .. b[3] .. b[4] .. b[5] .. b[6] .. b[7] .. b[8]
b[8] = b[8] + 1
for n2=1,7 do
if b[9-n2] == 2 then
b[9-n2] = 0
b[8-n2] = b[8-n2] + 1
end
end
end
------------end of borrowed code------------------
function getDataClock()
return rs.testBundledInput(sDataSide,256)
end
function networkReady()
os.startTimer(3*fThrottle)
event = os.pullEvent()
if event == "redstone" and getDataClock() then
return false
elseif event =="timer" then
return true
end
end
function sendByte(byte)
local bits = Dec2BinTable[byte]
local wires=0
for n=0,7 do
if (string.sub(bits,n+1,n+1) == "1") then
wires = wires + (2^(7-n))
end
end
rs.setBundledOutput(sDataSide,wires+256)
sleep(fThrottle)
rs.setBundledOutput(sDataSide,0)
sleep(fThrottle)
end
function readByte(timeout)
if (timeout) then
timeStarted = false
os.startTimer(timeout/2)
end
while true do
event, param = os.pullEvent()
if event == "key" and param == 197 then --Exit on pause/break
return "Exited"
elseif event == "redstone" then
--print("Redstone - " .. rs.getBundledOutput(sDataSide))
if getDataClock() then --Clock fired
--print("clock fired")
local byte=0
for n=0,7 do
if rs.testBundledInput(sDataSide,2^n) then byte=byte+(2^n) end
--print("Bit " .. n .. "= " .. tostring(rs.testBundledInput(sDataSide,2^n)))
end
return tonumber(byte);
end
elseif event =="timer" and timeStarted and timeout then
break
elseif event =="timer" and timeout then
timeStarted=true
os.startTimer(timeout/2)
end
end
return nil
end
function sendStr(addr, data, tries)
tries = tries or 3
while not networkReady() do
sleep(3*fThrottle)
end
sendByte(0x01)
sendByte(0x11)
sendByte(addr)
sendByte(#data)
sendByte(0x02)
for n=1,#data do
sendByte(string.byte(string.sub(data, n,n)))
end
sendByte(0x04)
--print("Data sent, wait for ack")
local ack = readByte(10*fThrottle)
if ack then
if ack == 0x06 then
--print("Got ack")
return true
elseif ack == 0x15 then -- failed, try a resend
--print("Got failed")
tries=tries-1
if (tries <=0) then
return false
else --We still have tries left, retry
return sendStr(addr,data,tries)
end
else --Unknown error, abort.
--print("Got unknown " .. ack)
return false
end
else
--We timed out
return false
end
end
function waitForData()
local bExit = false
local packs = { 0x00, 0x00}
while not bExit do
event, param = os.pullEvent()
if event == "key" and param == 197 then --Exit on pause/break
bExit = true
end
newByte = readByte()
--print("got byte " .. tostring(newByte))
if newByte then
table.remove(packs, 1)
table.insert(packs, newByte)
for index, val in pairs(packetHeaders) do
if (packs[1] == val[1]) and (packs[2] == val[2]) then
newByte = readByte()
if (newByte == computerid) or (newByte == 0xff) then --It is our id or it is a broadcast
if (val[2] == packetHeaders["trans"][2]) then --Incomeing trasnmition
--print("Incoming data")
local str = readPacket()
return str
end
end
end
end
end
sleep(0.1)
end
end
function readPacket(len)
local failed = 0
if not len then
len = readByte() -- if we don't have a lenght it should be the next byte
end
--verify that the next byte is 0x02 and that our text is starting. This is here so we can have larger then 255 packets later
if (readByte() == 0x02) then
packet = {}
for n=1, len do
table.insert(packet, readByte())
end
--we are done getting our string next byte should be the end transmition
endByte = readByte()
if endByte and endByte == 0x04 then
sleep(3*fThrottle)
sendByte(0x06)
--Convert back to a string
local str = ""
for index, val in ipairs(packet) do
str = str .. string.char(val)
end
return str
else
sendByte(0x15) --send transmition failed.
return false
end
else
return nil
end
end
Wow thats really cool...
So from what i understand the computer send a packet to all the computers on "waitForData" mode. And the first packet tells the computer to start recording the packets and stop when it gets packet which ==0x02 then it creates a sentence from all the packets the computer recieved?
A new program i created is a program to tell the computer which redpower wire to activate / deactivate trough bundled wire.
for example you write red then the red wire which connects to the bundled wire which connects to the computer will be on. Write red again and it is off
commands:
colors such as : red,cyan,blue,lightgray,yellow etc.
reset- turn all the wires off
all - turn all the wires on
Note: the output is only to the back of the computer
function light(color,j)
if color=="red" then
return colors.red,1,"Red"
end
if color=="white" then
return colors.white,2,"White"
end
if color=="blue" then
return colors.blue,3,"Blue"
end
if color=="green" then
return colors.green,4,"Green"
end
if color=="pink" then
return colors.pink,5,"Pink"
end
if color=="orange" then
return colors.orange,6,"Orange"
end
if color=="magenta" then
return colors.magenta,7,"Magenta"
end
if color=="lightblue" then
return 8,8,"Light Blue"
end
if color=="yellow" then
return colors.yellow,9,"Yellow"
end
if color=="lime" then
return colors.lime,10,"Lime"
end
if color=="gray" then
return colors.gray,11,"Gray"
end
if color=="break" then
j=1
return (redstone.getBundledOutput("back")*(-1)),1,"Error",j
end
if color=="lightgray" then
return 256,12,"Light Gray"
end
if color=="cyan" then
return colors.cyan,13,"Cyan"
end
if color=="purple" then
return colors.purple,14,"Purple"
end
if color=="brown" then
return colors.brown,15,"Brown"
end
if color=="black" then
return colors.black,16,"Black"
end
if color=="reset" then
return (redstone.getBundledOutput("back")*(-1))
end
if color=="all" then
return (65535)
end
return 0
end
l={}
for i=1, 16 do
l[i]=0
end
term.clear()
term.setCursorPos(1,1)
write("All Colors Are Off")
print(newline)
write("------------")
print(newline)
j=nill
while j==nill do
write("Enter Color ")
a=read()
num,place,b,j=light(a,l)
if num==redstone.getBundledOutput("back")*(-1) then
redstone.setBundledOutput("back", 0)
term.clear()
term.setCursorPos(1,1)
print("All The Colors Are Off")
write("------------")
print(newline)
for i=1, 16 do
l[i]=0
end
else
if num==65535 then
redstone.setBundledOutput("back", 65535)
term.clear()
term.setCursorPos(1,1)
print("All The Colors Are On")
write("------------")
print(newline)
for i=1, 16 do
l[i]=1
end
else
if num~=0 then
if l[place]==0 then
l[place]=1
else
l[place]=0
end
if l[place]==0 then
redstone.setBundledOutput("back", redstone.getBundledOutput("back")-num)
term.clear()
term.setCursorPos(1,1)
print(b.." Is Off")
write("------------")
print(newline)
else
redstone.setBundledOutput("back", redstone.getBundledOutput("back")+num)
term.clear()
term.setCursorPos(1,1)
print(b.." Is On")
write("------------")
print(newline)
end
else
term.clear()
term.setCursorPos(1,1)
write("Wrong Color ")
print(newline)
write("------------")
print(newline)
end
end
end
end
term.clear()
term.setCursorPos(1,1)
write("CraftOS 1.1")
print(newline)
Edit:
Fixed a the lightgray + gray lights which didnt work properly togheter
I would like to get some more content on there as right now I just have a hello world script.
Would any of you be willing to post your scripts on the cc-get website for people to install? Once the scripts are on there you can make any changes and the updates will be available to users immedietly with the cc-get update command.
If you don't want to register or post them on cc-get, will you give me permission to redistribute them on there? I will of course attribute the script to the author.
How to use:
1.Choose how many counts you want which will be 'x'
2.Write which side you want the pulse to be made after x counts has been made
3.Choose how much time the pulse will last
Example
lets say i will do it like that
1. 100 counts
2.front
3. 5
After the counter counts 100 pulses from its back it will send a pulse to its front for 5 seconds and it will start to count again as soon as 100 pulses has been counted (It is used with the Item Detector of RP2)
you can use it for other things aswell so its up to you
function Check(way)
if way~="left" then
if way~="right" then
if way~="top" then
if way~="button" then
if way~="front" then
if way~="back" then
return true
end
end
end
end
end
end
return false
end
function check(nus)
if nus==nill then
return true
end
return false
end
term.clear()
term.setCursorPos(1,1)
write("Enter How Many Times To Count")
print(newline)
num=read()
while check(tonumber(num)) do
write("Write a number")
print(newline)
num=read()
end
write("Enter The Side The Pulse Will Be Sended After "..num.." Counts Has been Made")
print(newline)
Side=read()
while Check(Side) do
write("Side Doesn't Exitst , Write Again")
print(newline)
Side = read()
end
write("Enter How Long The Pulse Will Be In Seconds")
print(newline)
delay=tonumber(read())
while check(delay) do
write("Write a number")
print(newline)
delay=read()
delay = tonumber(delay)
end
write ("Automate Counting Started- Now Executing ")
print(newline)
num=tonumber(num)
Counter=0
while true do
while Counter<num do
sleep(0.01)
if redstone.getInput("back") then
j = 0
while j==0 do
sleep(0.05)
if redstone.getInput("back")==false then
Counter = Counter + 1
a = tostring(Counter)
print("Pulse " .. a .. " ")
j=1
end
end
end
end
Counter=0
redstone.setOutput(Side, true)
sleep(delay)
redstone.setOutput(Side, false)
end
If you just want to count pulses without reseting the counter just choose a really high number for the counts like 9999999999 and it will count the pulses
Perfect just what I need I'll test this and get back to you with any suggestions i have, can I modify this however I like or do u want your code to be your code only
Im open to suggestions
and you can modifly it however you like lol its not like i can control what you will do with the code
the only thing im against is not giving credit if you are posting it anywhere
1
I hope it will stay like this since i pretty mush hate bone meal and the fast growth things.
Its too much unrealitic even for mincraft and i think you shouldnt add the option to use bonemeal on your plants.
I also think you should only get the first apple/watermellon/coco beans from dungeons and chest and only then you can plant them and make farms and not with the rake
1
Yes, that or building blessed swords or water which will be expensive and will keep ghost away from your house.
maybe adding vampires and garlic aswell
0
Thats really sad to hear.
it means i dont need to wait for the mod to come out, but the api which will take even longer :sad.gif:
0
FIMALYY
for you if it will be compatible with all of my mods lol
0
Its kinda like the other "LockedDoors with password" programs only with user or at least that what its look like.
0
0
I agree :biggrin.gif:
0
yes,
red,blue,cyan,lightblue and etc
0
Wow thats really cool...
So from what i understand the computer send a packet to all the computers on "waitForData" mode. And the first packet tells the computer to start recording the packets and stop when it gets packet which ==0x02 then it creates a sentence from all the packets the computer recieved?
1
for example you write red then the red wire which connects to the bundled wire which connects to the computer will be on. Write red again and it is off
commands:
colors such as : red,cyan,blue,lightgray,yellow etc.
reset- turn all the wires off
all - turn all the wires on
Note: the output is only to the back of the computer
if color=="red" then
return colors.red,1,"Red"
end
if color=="white" then
return colors.white,2,"White"
end
if color=="blue" then
return colors.blue,3,"Blue"
end
if color=="green" then
return colors.green,4,"Green"
end
if color=="pink" then
return colors.pink,5,"Pink"
end
if color=="orange" then
return colors.orange,6,"Orange"
end
if color=="magenta" then
return colors.magenta,7,"Magenta"
end
if color=="lightblue" then
return 8,8,"Light Blue"
end
if color=="yellow" then
return colors.yellow,9,"Yellow"
end
if color=="lime" then
return colors.lime,10,"Lime"
end
if color=="gray" then
return colors.gray,11,"Gray"
end
if color=="break" then
j=1
return (redstone.getBundledOutput("back")*(-1)),1,"Error",j
end
if color=="lightgray" then
return 256,12,"Light Gray"
end
if color=="cyan" then
return colors.cyan,13,"Cyan"
end
if color=="purple" then
return colors.purple,14,"Purple"
end
if color=="brown" then
return colors.brown,15,"Brown"
end
if color=="black" then
return colors.black,16,"Black"
end
if color=="reset" then
return (redstone.getBundledOutput("back")*(-1))
end
if color=="all" then
return (65535)
end
return 0
end
l={}
for i=1, 16 do
l[i]=0
end
term.clear()
term.setCursorPos(1,1)
write("All Colors Are Off")
print(newline)
write("------------")
print(newline)
j=nill
while j==nill do
write("Enter Color ")
a=read()
num,place,b,j=light(a,l)
if num==redstone.getBundledOutput("back")*(-1) then
redstone.setBundledOutput("back", 0)
term.clear()
term.setCursorPos(1,1)
print("All The Colors Are Off")
write("------------")
print(newline)
for i=1, 16 do
l[i]=0
end
else
if num==65535 then
redstone.setBundledOutput("back", 65535)
term.clear()
term.setCursorPos(1,1)
print("All The Colors Are On")
write("------------")
print(newline)
for i=1, 16 do
l[i]=1
end
else
if num~=0 then
if l[place]==0 then
l[place]=1
else
l[place]=0
end
if l[place]==0 then
redstone.setBundledOutput("back", redstone.getBundledOutput("back")-num)
term.clear()
term.setCursorPos(1,1)
print(b.." Is Off")
write("------------")
print(newline)
else
redstone.setBundledOutput("back", redstone.getBundledOutput("back")+num)
term.clear()
term.setCursorPos(1,1)
print(b.." Is On")
write("------------")
print(newline)
end
else
term.clear()
term.setCursorPos(1,1)
write("Wrong Color ")
print(newline)
write("------------")
print(newline)
end
end
end
end
term.clear()
term.setCursorPos(1,1)
write("CraftOS 1.1")
print(newline)
Edit:
Fixed a the lightgray + gray lights which didnt work properly togheter
0
Well you wrote this comment yesterday (31) now its the the start of the new year so you didnt finish it last year as you said. :[
0
Cool, im in
0
Doesnt work for me
the username is still invalid
0
How to use:
1.Choose how many counts you want which will be 'x'
2.Write which side you want the pulse to be made after x counts has been made
3.Choose how much time the pulse will last
Example
lets say i will do it like that
1. 100 counts
2.front
3. 5
After the counter counts 100 pulses from its back it will send a pulse to its front for 5 seconds and it will start to count again as soon as 100 pulses has been counted (It is used with the Item Detector of RP2)
you can use it for other things aswell so its up to you
if way~="left" then
if way~="right" then
if way~="top" then
if way~="button" then
if way~="front" then
if way~="back" then
return true
end
end
end
end
end
end
return false
end
function check(nus)
if nus==nill then
return true
end
return false
end
term.clear()
term.setCursorPos(1,1)
write("Enter How Many Times To Count")
print(newline)
num=read()
while check(tonumber(num)) do
write("Write a number")
print(newline)
num=read()
end
write("Enter The Side The Pulse Will Be Sended After "..num.." Counts Has been Made")
print(newline)
Side=read()
while Check(Side) do
write("Side Doesn't Exitst , Write Again")
print(newline)
Side = read()
end
write("Enter How Long The Pulse Will Be In Seconds")
print(newline)
delay=tonumber(read())
while check(delay) do
write("Write a number")
print(newline)
delay=read()
delay = tonumber(delay)
end
write ("Automate Counting Started- Now Executing ")
print(newline)
num=tonumber(num)
Counter=0
while true do
while Counter<num do
sleep(0.01)
if redstone.getInput("back") then
j = 0
while j==0 do
sleep(0.05)
if redstone.getInput("back")==false then
Counter = Counter + 1
a = tostring(Counter)
print("Pulse " .. a .. " ")
j=1
end
end
end
end
Counter=0
redstone.setOutput(Side, true)
sleep(delay)
redstone.setOutput(Side, false)
end
If you just want to count pulses without reseting the counter just choose a really high number for the counts like 9999999999 and it will count the pulses
0
Im open to suggestions
and you can modifly it however you like lol its not like i can control what you will do with the code
the only thing im against is not giving credit if you are posting it anywhere