1
0
Disbranĉigi 0
Ĉi tiu deponejo arĥiviĝis je 2024-01-28. Vi povas vidi kaj elŝuti dosierojn, sed ne povas puŝi nek raporti problemojn nek tirpeti.
minetest_ocd3/mods/mychisel/chisel.lua.diff
2018-03-18 19:18:46 -05:00

551 lines
14 KiB
Diff

2,11c2
< local color = '#FF6700'
< local TechnicMaxCharge = 300000
< chisel = {}
<
< chisel.materials = {}
< chisel.mods = {}
< chisel.selected = {}
< chisel.active = {}
< chisel.program = {}
< chisel.mode = {}
---
> local mode = {}
12a4,12
> local function parti(pos)
> minetest.add_particlespawner(25, 0.3,
> pos, pos,
> {x=2, y=0.2, z=2}, {x=-2, y=2, z=-2},
> {x=0, y=-6, z=0}, {x=0, y=-10, z=0},
> 0.2, 1,
> 0.2, 2,
> true, "mychisel_parti.png")
> end
13a14
> mode = "1"
14a16,19
> minetest.register_tool( "mychisel:chisel",{
> description = "Chisel",
> inventory_image = "mychisel_chisel.png",
> wield_image = "mychisel_chisel.png",
16c21
< local wehavetechnic = minetest.get_modpath("technic")
---
> on_use = function(itemstack, user, pointed_thing)
17a23,25
> if pointed_thing.type ~= "node" then
> return
> end
19,20c27,28
<
<
---
> local pos = pointed_thing.under
> local node = minetest.get_node(pos)
22c30
< local default_material = {
---
> local default_material = {
40,185d47
< -- Chatcommand to show loaded mods with names and number of styles
<
< minetest.register_chatcommand("chisel", {
< params = "",
< description = "Shows supported mods in mychisel",
< privs = {interact = true},
< func = function(name, poi_name)
<
< for i in ipairs (chisel.mods) do
<
< minetest.chat_send_player(name,core.colorize(color,i..") modname :"..chisel.mods[i][1].." styles: "..chisel.mods[i][2]))
< end
<
< end,
< })
<
< -- global API
<
< function chisel.register_node(modname, prefix, raw, design) -- global function to register new stuff
< local counter = chisel.count_stuff() +1
< chisel.materials [counter] = {}
< chisel.materials [counter][1] = modname
< chisel.materials [counter][2] = prefix
< chisel.materials [counter][3] = raw
< chisel.materials [counter][4] = design
< end
<
<
< function chisel.add_mod(modname,number) -- global function to init a new mod for the chisel.
< local counter = chisel.count_mods() +1
< chisel.mods [counter] = {}
< chisel.mods [counter][1] = modname
< chisel.mods [counter][2] = number
< minetest.log("action","[CHISEL] Added mod "..modname .. " with " .. number.." styles to mychisel") -- log loaded mods to debug.txt
< end
<
<
<
< function chisel.count_stuff() -- how many materials have been registered already ?
< local counter = 0
< for i in ipairs (chisel.materials) do counter = counter +1 end
< return counter
< end
<
<
<
< function chisel.count_mods() -- how many different mods are registered ?
<
< local counter = 0
< for i in ipairs (chisel.mods) do counter = counter +1 end
< return counter
< end
<
<
<
<
< -- init chisel for each player joining
<
< local function chiselinit(name)
< chisel.selected[name] = 1
< chisel.active[name] = "default"
< chisel.program[name] = 1
< chisel.mode[name] = "1"
< end
<
< minetest.register_on_joinplayer(function(player)
< chiselinit(player:get_player_name())
< end)
<
< -- end init
<
<
<
<
< local function parti(pos)
< minetest.add_particlespawner(25, 0.3,
< pos, pos,
< {x=2, y=0.2, z=2}, {x=-2, y=2, z=-2},
< {x=0, y=-6, z=0}, {x=0, y=-10, z=0},
< 0.2, 1,
< 0.2, 2,
< true, "mychisel_parti.png")
< end
<
<
<
<
< local function chiselcut(pos,user,node)
< local name = user:get_player_name()
<
< for i in ipairs (chisel.materials) do
<
< if chisel.materials[i][1] == chisel.active[name] then
< if node.name == chisel.materials[i][3] and chisel.materials[i][4] == chisel.materials[chisel.program[name]][4] then
<
< minetest.set_node(pos, {name=chisel.materials[i][1]..":"..chisel.materials[i][2].."_"..chisel.materials[i][4], param2=minetest.dir_to_facedir(user:get_look_dir())})
< end
< end
< end
< end
<
<
< local function change_mode(user, choice)
<
< local name = user:get_player_name()
<
<
< if choice then
< if chisel.mode[name] == "1" then
< chisel.mode[name] = "2"
< minetest.chat_send_player(name,core.colorize(color, "Horizontal Groove"))
<
< elseif chisel.mode[name] == "2" then
< chisel.mode[name] = "3"
< minetest.chat_send_player(name,core.colorize(color, "Vertical Groove"))
<
< elseif chisel.mode[name] == "3" then
< chisel.mode[name] = "4"
< minetest.chat_send_player(name, core.colorize(color, "Cross Grooves"))
<
< elseif chisel.mode[name] == "4" then
< chisel.mode[name] = "5"
< minetest.chat_send_player(name, core.colorize(color, "Square"))
<
< elseif chisel.mode[name] == "5" then
< chisel.mode[name] = "1"
< minetest.chat_send_player(name, core.colorize(color, "Chisel 4 Edges"))
< end
< else
< chisel.program[name] = chisel.program[name] +1
< if chisel.program[name] > chisel.mods [chisel.selected[name]][2] then chisel.program[name] = 1 end
< minetest.chat_send_player(name, core.colorize(color, chisel.materials [chisel.program[name]][4]))
< end
<
< end
<
<
<
<
< local function chiselme(pos, user, node)
<
<
< local name = user:get_player_name()
<
<
<
190d51
<
192c53,62
< if chisel.mode[name] == "1" then
---
> if pointed_thing.type ~= "node" then
> return
> end
>
> if minetest.is_protected(pos, user:get_player_name()) then
> minetest.record_protection_violation(pos, user:get_player_name())
> return
> end
>
> if mode == "1" then
197d66
<
203d71
<
209d76
<
215d81
<
217,218d82
<
<
221c85
< if chisel.mode[name] == "2" then
---
> if mode == "2" then
226d89
<
232d94
<
238d99
<
244d104
<
246d105
<
249c108
< if chisel.mode[name] == "3" then
---
> if mode == "3" then
254d112
<
260d117
<
266d122
<
272d127
<
274d128
<
277c131
< if chisel.mode[name] == "4" then
---
> if mode == "4" then
282d135
<
288d140
<
294d145
<
300d150
<
302d151
<
305c154
< if chisel.mode[name] == "5" then
---
> if mode == "5" then
310d158
<
316d163
<
322d168
<
328d173
<
330d174
<
332a177,192
> if mode == "6" then
> -- on_place = function(itemstack, placer, pointed_thing)
> local pt = pointed_thing
> if ( minetest.get_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}).name == "air" ) then
> local wear = itemstack:get_wear()
> local direction = minetest.dir_to_facedir(user:get_look_dir())
> local meta1 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y , z=pt.under.z})
> local meta2 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y+1, z=pt.under.z})
> minetest.set_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}, {name="mychisel:chisel_deco", param2=direction})
> meta1:set_int("wear", wear)
> meta2:set_int("wear", wear)
> itemstack:take_item()
> return itemstack
> end
> end
>
334,335d193
<
< end
337,338c195,197
<
< if not wehavetechnic then
---
> if not minetest.setting_getbool("creative_mode") then
> itemstack:add_wear(65535 / (USES - 1))
> end
340,531c199,221
< minetest.register_tool( "mychisel:chisel",{
< description = "Chisel",
< inventory_image = "mychisel_chisel.png",
< wield_image = "mychisel_chisel.png",
<
< on_use = function(itemstack, user, pointed_thing)
<
< if pointed_thing.type ~= "node" then
< return
< end
<
< local pos = pointed_thing.under
< local node = minetest.get_node(pos)local feedback = false
< local name = user:get_player_name()
<
<
<
<
< if minetest.is_protected(pos, user:get_player_name()) then
< minetest.record_protection_violation(pos, user:get_player_name())
< return
< end
<
<
< if chisel.active[name] == "default" then
< chiselme(pos,user,node)
<
< else
<
< chiselcut(pos,user,node)
<
< end
<
<
< if not minetest.setting_getbool("creative_mode") then
< itemstack:add_wear(65535 / (USES - 1))
< end
<
< return itemstack
<
< end,
<
< on_place = function(itemstack, user, pointed_thing)
<
<
< local number = chisel.count_mods()
< local keys = user:get_player_control()
< local name = user:get_player_name()
<
<
<
< -- change design mode of chisel by pressing sneak while right-clicking
< if( not( keys["sneak"] )) then
< if chisel.active[name] == "default" then
< change_mode(user,true)
< else
<
< change_mode(user,false)
<
< end
< else
< chisel.selected[name] = chisel.selected[name] +1
< if chisel.selected[name] > chisel.count_mods() then chisel.selected[name] = 1 end
<
< chisel.active[name] = chisel.mods[chisel.selected[name]][1]
< minetest.chat_send_player(user:get_player_name(), core.colorize(color, " ***>>> switched to mod: "..chisel.active[name]))
<
< end
<
< return itemstack
<
< end
<
< })
<
< minetest.register_craft({
< output = "mychisel:chisel",
< recipe = {
< {"default:steel_ingot"},
< {"wool:brown"},
< },
< })
<
<
<
<
< else
<
<
< local S = technic.getter
<
< technic.register_power_tool("mychisel:chisel",TechnicMaxCharge)
< local chisel_charge_per_node =math.floor( TechnicMaxCharge / USES )
<
<
< minetest.register_tool("mychisel:chisel", {
< description = S("Chisel"),
< inventory_image = "mychisel_chisel.png",
< stack_max = 1,
< wear_represents = "technic_RE_charge",
< on_refill = technic.refill_RE_charge,
< on_use = function(itemstack, user, pointed_thing)
<
<
< if pointed_thing.type ~= "node" then
< return
< end
<
< local pos = pointed_thing.under
< local node = minetest.get_node(pos)
< local name = user:get_player_name()
<
<
<
< if minetest.is_protected(pos, user:get_player_name()) then
< minetest.record_protection_violation(pos, user:get_player_name())
< return
< end
<
< --
<
< local meta = minetest.deserialize(itemstack:get_metadata())
< if not meta or not meta.charge or
< meta.charge < chisel_charge_per_node then
< return
< end
<
< if chisel.active[name] == "default" then
< chiselme(pos,user,node)
< meta.charge = meta.charge - chisel_charge_per_node
< else
<
< chiselcut(pos,user,node)
< meta.charge = meta.charge - chisel_charge_per_node
< end
<
<
<
< if not technic.creative_mode then
< technic.set_RE_wear(itemstack, meta.charge, TechnicMaxCharge)
< itemstack:set_metadata(minetest.serialize(meta))
< end
<
< return itemstack
<
<
< end,
<
< on_place = function(itemstack, user, pointed_thing)
<
< local number = chisel.count_mods()
< local keys = user:get_player_control()
< local name = user:get_player_name()
<
<
<
< -- change design mode of chisel by pressing sneak while right-clicking
< if( not( keys["sneak"] )) then
< if chisel.active[name] == "default" then
< change_mode(user,true)
< else
<
< change_mode(user,false)
<
< end
< else
< chisel.selected[name] = chisel.selected[name] +1
< if chisel.selected[name] > chisel.count_mods() then chisel.selected[name] = 1 end
<
< chisel.active[name] = chisel.mods[chisel.selected[name]][1]
< minetest.chat_send_player(user:get_player_name(),core.colorize(color, " ***>>> switched to mod: "..chisel.active[name]))
<
< end
<
< return itemstack
<
< end
< })
<
<
< minetest.register_craft({
< output = "mychisel:chisel",
< recipe = {
< {"default:diamond", "default:diamond" , "default:diamond" },
< {"", "technic:stainless_steel_ingot", ""},
< {"", "technic:battery", ""},
< }
< })
<
<
<
< end
---
> return itemstack
>
> end,
>
> on_place = function(itemstack, user, pointed_thing)
>
> local usr = user:get_player_name()
>
> if mode == "1" then
> mode = "2"
> minetest.chat_send_player(usr,"Horizontal Groove")
>
> elseif mode == "2" then
> mode = "3"
> minetest.chat_send_player(usr,"Vertical Groove")
>
> elseif mode == "3" then
> mode = "4"
> minetest.chat_send_player(usr,"Cross Grooves")
>
> elseif mode == "4" then
> mode = "5"
> minetest.chat_send_player(usr,"Square")
533c223,247
< chisel.add_mod("default",5)
\ No newline at end of file
---
> elseif mode == "5" then
> mode = "6"
> minetest.chat_send_player(usr,"Place Tool")
> elseif mode == "6" then
> mode = "1"
> minetest.chat_send_player(usr,"Chisel 4 Edges")
> end
>
> if not minetest.setting_getbool("creative_mode") then
> itemstack:add_wear(65535 / (USES - 1))
> end
>
> return itemstack
>
> end
>
> })
>
> minetest.register_craft({
> output = "mychisel:chisel",
> recipe = {
> {"default:steel_ingot"},
> {"wool:brown"},
> },
> })