Skip to content

Commit 5f5bd8b

Browse files
authored
Merge pull request #87 from Panquesito7/fix_some_issues
Minor improvements and fixes in the code
2 parents 65cc7d6 + 42b6533 commit 5f5bd8b

9 files changed

+247
-40
lines changed

skyblock/mod.conf

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
name = skyblock
2-
depends = default
2+
depends = default
3+
description = Build a world starting from a small island in the sky.

skyblock/register_node.lua

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ minetest.register_node('skyblock:quest', {
1616
is_ground_content = true,
1717
paramtype = 'light',
1818
sunlight_propagates = true,
19-
light_source = 15,
19+
light_source = 14,
2020
can_dig = function(pos, player)
2121
return false
2222
end,

skyblock/skyblock.lua

+1-1
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ end
173173
function skyblock.make_spawn_blocks(pos, player_name)
174174
skyblock.log('skyblock.make_spawn_blocks('..skyblock.dump_pos(pos)..', '..player_name..') ')
175175
skyblock.load_schem(pos, skyblock.schem)
176-
--minetest.env:add_node(pos, {name='skyblock:quest'})
176+
--minetest.add_node(pos, {name='skyblock:quest'})
177177
end
178178

179179
-- make spawn blocks on generated

skyblock_levels/init.lua

+1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ dofile(modpath..'/skyblock.levels.1.lua')
1818
dofile(modpath..'/skyblock.levels.2.lua')
1919
dofile(modpath..'/skyblock.levels.3.lua')
2020
dofile(modpath..'/skyblock.levels.4.lua')
21+
dofile(modpath..'/skyblock.levels.5.lua')
2122

2223
dofile(modpath..'/register_abm.lua')
2324
dofile(modpath..'/register_craft.lua')

skyblock_levels/register_command.lua

+27-16
Original file line numberDiff line numberDiff line change
@@ -10,27 +10,38 @@ License: GPLv3
1010

1111

1212
-- register register_privilege
13-
minetest.register_privilege('level', 'Can use /level')
13+
minetest.register_privilege('level', 'Can use /setlevel')
1414

15-
-- level
16-
minetest.register_chatcommand('level', {
17-
description = 'Get or change a players current level.',
18-
privs = {level = true},
19-
params = "<player_name> <level>",
15+
-- getlevel
16+
minetest.register_chatcommand('getlevel', {
17+
description = 'Get a player\'s current level.',
18+
params = "<player_name>",
2019
func = function(name, param)
21-
local _, _, player_name, level = param:find("^([^%s]+)%s+(.+)$")
22-
if not player_name then
20+
local player_name = param
21+
if player_name == "" then
2322
player_name = name
2423
end
25-
level = tonumber(level)
26-
if not level then
27-
minetest.chat_send_player(name, player_name..' is on level '..skyblock.feats.get_level(player_name))
28-
return
29-
end
30-
if skyblock.feats.set_level(player_name, level) then
31-
minetest.chat_send_player(name, player_name..' has been set to level '..level)
24+
minetest.chat_send_player(name, player_name..' is on level '..skyblock.feats.get_level(player_name))
25+
return
26+
end,
27+
})
28+
29+
-- setlevel
30+
minetest.register_chatcommand('setlevel', {
31+
description = 'Set a player\'s current level',
32+
privs = {level = true},
33+
params = "<player_name> <level>",
34+
func = function(name, param)
35+
local found, _, player_name, level = param:find("^([^%s]+)%s+(.+)$")
36+
if found and player_name and level then
37+
level = tonumber(level)
38+
if skyblock.feats.set_level(player_name, level) then
39+
minetest.chat_send_player(name, player_name..' has been set to level '..level)
40+
else
41+
minetest.chat_send_player(name, 'cannot change '..player_name..' to level '..level)
42+
end
3243
else
33-
minetest.chat_send_player(name, 'cannot change '..player_name..' to level '..level)
44+
return false, "Invalid use."
3445
end
3546
end,
3647
})

skyblock_levels/skyblock.feats.lua

+3
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,9 @@ end
136136
-- set feat
137137
function skyblock.feats.set(level,player_name,feat,value)
138138
skyblock.log('skyblock.feats.set('..level..','..player_name..','..feat..')')
139+
if not players_feat[player_name] then
140+
players_feat[player_name] = skyblock.feats.load(player_name) or {[0] = {}}
141+
end
139142
players_feat[player_name][level][feat] = value
140143
if level~=0 or feat~='level' then
141144
local rewarded = skyblock.levels[level].reward_feat(player_name,feat)

skyblock_levels/skyblock.levels.3.lua

+2-2
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ level 3 feats and rewards:
1919
* place_steelblock x4 default:obsidian_shard
2020
* place_sand x50 wool:green 50
2121
* dig_stone_with_copper x4 wool:orange 50
22-
* place_bar x8 default:mese_crystal
22+
* place_bar_flat x8 default:mese_crystal
2323
* dig_stone_with_mese x4 default:gold_lump
2424
* place_water_infinite x8 default:diamond
2525
@@ -94,7 +94,7 @@ skyblock.levels[level].feats = {
9494
{
9595
name = 'place 8 Iron Bars',
9696
hint = 'xpanes:bar_flat',
97-
feat = 'place_bar',
97+
feat = 'place_bar_flat',
9898
count = 8,
9999
reward = 'default:mese_crystal',
100100
placenode = {'xpanes:bar_flat'},

skyblock_levels/skyblock.levels.4.lua

+148-19
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,23 @@ License: GPLv3
88
99
]]--
1010

11+
--[[
12+
Level 4 mostly revolving around farming and dying
13+
level 4 feats and rewards:
14+
15+
* craft_diamondhoe farming:seed_wheat
16+
* use_hoe x40 farming:melon_slice
17+
* plant_wheatseed default:cactus
18+
* craft_flour farming:seed_cotton x10
19+
* place_snowblock x50 dye:red x20
20+
* dig_cactus x10 dye:white x20
21+
* dig_geranium x5 flowers:mushroom_brown x2
22+
* dig_tulip x5 flowers:mushroom_red x2
23+
* dig_brownmushroom x15 farming:corn x50
24+
* craft_ethanol default:meselamp x5
25+
26+
]]--
27+
1128
local level = 4
1229

1330
--
@@ -17,46 +34,158 @@ local level = 4
1734
skyblock.levels[level] = {}
1835

1936
-- feats
20-
skyblock.levels[level].feats = {}
37+
-- Parts of this are purely hypothetical and not implement yet
38+
skyblock.levels[level].feats = {
39+
{
40+
name = "Craft a mese hoe",
41+
hint = "farming:hoe_mese",
42+
feat = "craft_mesehoe",
43+
count = 1,
44+
reward = "farming:seed_wheat 2",
45+
craft = {"farming:hoe_mese"}
46+
},
47+
{
48+
name = "Use the hoe 40 times",
49+
hint = "farming:hoe_mese",
50+
feat = "use_hoe",
51+
count = 40,
52+
reward = "farming:melon_slice",
53+
hoeuse = {}
54+
},
55+
{
56+
name = "Plant 10 wheat seeds",
57+
hint = "farming:seed_wheat",
58+
feat = "place_wheatseed",
59+
count = 10,
60+
reward = "default:cactus",
61+
placenode = {"farming:seed_wheat"}
62+
},
63+
{
64+
name = "Craft 4 lumps of flour",
65+
hint = "farming:flour",
66+
feat = "craft_flour",
67+
count = 4,
68+
reward = "farming:seed_cotton 10",
69+
craft = {"farming:flour"},
70+
},
71+
{
72+
name = "Place 50 snow blocks",
73+
hint = "default:snowblock",
74+
feat = "place_snowblock",
75+
count = 50,
76+
reward = "dye:red 20",
77+
placenode = {"default:snowblock"},
78+
},
79+
{
80+
name = "Dig 10 cacti",
81+
hint = "default:cactus",
82+
feat = "dig_cactus",
83+
count = 10,
84+
reward = "dye:white 20",
85+
dignode = {"default:cactus"},
86+
},
87+
{
88+
name = "Pick 5 Geranium flowers",
89+
hint = "flowers:geranium",
90+
feat = "dig_geranium",
91+
count = 5,
92+
reward = "flowers:mushroom_brown 2",
93+
dignode = {"flowers:geranium"},
94+
},
95+
{
96+
name = "Pick 5 orange tulips",
97+
hint = "flowers:tulip",
98+
feat = "dig_tulip",
99+
count = 5,
100+
reward = "flowers:mushroom_red 2",
101+
dignode = {"flowers:tulip"},
102+
},
103+
{
104+
name = "Dig 10 brown mushrooms",
105+
hint = "flowers:mushroom_brown",
106+
feat = "dig_brownmushroom",
107+
count = 10,
108+
reward = "farming:corn",
109+
dignode = {"flowers:mushroom_brown"},
110+
},
111+
{
112+
name = "Make ethanol!",
113+
hint = "farming:corn",
114+
feat = "craft_ethanol",
115+
count = 1,
116+
reward = "default:meselamp 5",
117+
craft = {"farming:bottle_ethanol"},
118+
}
119+
}
21120

22121
-- init level
23122
skyblock.levels[level].init = function(player_name)
24-
local privs = core.get_player_privs(player_name)
25-
privs['fly'] = true
26-
privs['fast'] = true
27-
core.set_player_privs(player_name, privs)
28-
minetest.chat_send_player(player_name, 'You can now use FLY and FAST !')
29123
end
30124

31125
-- get level information
32126
skyblock.levels[level].get_info = function(player_name)
33127
local info = {
34128
level=level,
35-
total=1,
129+
total=10,
36130
count=0,
37131
player_name=player_name,
38132
infotext='',
39133
formspec = '',
40134
formspec_quest = '',
41135
}
42136

43-
local text = 'label[0,0.5; THE END]'
44-
..'label[0,1.0; I hope you enjoyed your journey, and you]'
45-
..'label[0,1.5; are welcome to stay and keep building]'
46-
..'label[0,2.0; your new sky world.]'
137+
local text = 'label[0,2.7; --== Quests ==--]'
138+
..'label[0,0.5; Time Goes On, '..player_name..'...]'
139+
..'label[0,1.0; You may wonder, traveller, where some of your]'
140+
..'label[0,1.5; precious items are. Be patient...]'
141+
..'label[0,2.0; They will come to you in time...]'
47142

48143
info.formspec = skyblock.levels.get_inventory_formspec(level,info.player_name,true)..text
49144
info.formspec_quest = skyblock.levels.get_inventory_formspec(level,info.player_name)..text
50-
info.infotext = 'THE END! for '.. player_name ..' ... or is it ...'
145+
146+
for k,v in ipairs(skyblock.levels[level].feats) do
147+
info.formspec = info.formspec..skyblock.levels.get_feat_formspec(info,k,v.feat,v.count,v.name,v.hint,true)
148+
info.formspec_quest = info.formspec_quest..skyblock.levels.get_feat_formspec(info,k,v.feat,v.count,v.name,v.hint)
149+
end
150+
if info.count>0 then
151+
info.count = info.count/2 -- only count once
152+
end
153+
154+
info.infotext = 'LEVEL '..info.level..' for '..info.player_name..': '..info.count..' of '..info.total
155+
51156
return info
52157
end
53158

54-
-- no feat tracking
55-
skyblock.levels[level].reward_feat = function(player_name, feat) end
56-
skyblock.levels[level].on_placenode = function(pos, newnode, placer, oldnode) end
57-
skyblock.levels[level].on_dignode = function(pos, oldnode, digger) end
58-
skyblock.levels[level].on_item_eat = function(player_name, itemstack) end
59-
skyblock.levels[level].on_craft = function(player_name, itemstack) end
159+
-- Reward feats
160+
skyblock.levels[level].reward_feat = function(player_name, feat)
161+
return skyblock.levels.reward_feat(level, player_name, feat)
162+
end
163+
164+
-- Track node placement
165+
skyblock.levels[level].on_placenode = function(pos, newnode, placer, oldnode)
166+
skyblock.levels.on_placenode(level, pos, newnode, placer, oldnode)
167+
end
168+
169+
-- Track node digging
170+
skyblock.levels[level].on_dignode = function(pos, oldnode, digger)
171+
skyblock.levels.on_dignode(level, pos, oldnode, digger)
172+
end
173+
174+
-- track eating feats
175+
skyblock.levels[level].on_item_eat = function(player_name, itemstack)
176+
skyblock.levels.on_item_eat(level, player_name, itemstack)
177+
end
178+
179+
-- track crafting feats
180+
skyblock.levels[level].on_craft = function(player_name, itemstack)
181+
skyblock.levels.on_craft(level, player_name, itemstack)
182+
end
183+
184+
-- track hoe use
185+
skyblock.levels[level].hoe_on_use = function(player_name, pointed_thing, wieldeditem)
186+
skyblock.levels.hoe_on_use(level, player_name, pointed_thing, wieldeditem)
187+
end
188+
60189
skyblock.levels[level].bucket_on_use = function(player_name, pointed_thing) end
61190
skyblock.levels[level].bucket_water_on_use = function(player_name, pointed_thing) end
62-
skyblock.levels[level].bucket_lava_on_use = function(player_name, pointed_thing) end
191+
skyblock.levels[level].bucket_lava_on_use = function(player_name, pointed_thing) end

skyblock_levels/skyblock.levels.5.lua

+62
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
--[[
2+
3+
Skyblock for Minetest
4+
5+
Copyright (c) 2015 cornernote, Brett O'Donnell <cornernote@gmail.com>
6+
Source Code: https://github.com/cornernote/minetest-skyblock
7+
License: GPLv3
8+
9+
]]--
10+
11+
local level = 5
12+
13+
--
14+
-- PUBLIC FUNCTIONS
15+
--
16+
17+
skyblock.levels[level] = {}
18+
19+
-- feats
20+
skyblock.levels[level].feats = {}
21+
22+
-- init level
23+
skyblock.levels[level].init = function(player_name)
24+
local privs = core.get_player_privs(player_name)
25+
privs['fly'] = true
26+
privs['fast'] = true
27+
core.set_player_privs(player_name, privs)
28+
minetest.chat_send_player(player_name, 'You can now use FLY and FAST !')
29+
end
30+
31+
-- get level information
32+
skyblock.levels[level].get_info = function(player_name)
33+
local info = {
34+
level=level,
35+
total=1,
36+
count=0,
37+
player_name=player_name,
38+
infotext='',
39+
formspec = '',
40+
formspec_quest = '',
41+
}
42+
43+
local text = 'label[0,0.5; THE END]'
44+
..'label[0,1.0; I hope you enjoyed your journey, and you]'
45+
..'label[0,1.5; are welcome to stay and keep building]'
46+
..'label[0,2.0; your new sky world.]'
47+
48+
info.formspec = skyblock.levels.get_inventory_formspec(level,info.player_name,true)..text
49+
info.formspec_quest = skyblock.levels.get_inventory_formspec(level,info.player_name)..text
50+
info.infotext = 'THE END! for '.. player_name ..' ... or is it ...'
51+
return info
52+
end
53+
54+
-- no feat tracking
55+
skyblock.levels[level].reward_feat = function(player_name, feat) end
56+
skyblock.levels[level].on_placenode = function(pos, newnode, placer, oldnode) end
57+
skyblock.levels[level].on_dignode = function(pos, oldnode, digger) end
58+
skyblock.levels[level].on_item_eat = function(player_name, itemstack) end
59+
skyblock.levels[level].on_craft = function(player_name, itemstack) end
60+
skyblock.levels[level].bucket_on_use = function(player_name, pointed_thing) end
61+
skyblock.levels[level].bucket_water_on_use = function(player_name, pointed_thing) end
62+
skyblock.levels[level].bucket_lava_on_use = function(player_name, pointed_thing) end

0 commit comments

Comments
 (0)