]> git.lizzy.rs Git - Crafter.git/blob - mods/redstone/space_maker.lua
Make redstone have 16 states, overhaul performance
[Crafter.git] / mods / redstone / space_maker.lua
1 local minetest,vector,pairs = minetest,vector,pairs
2 --this is a debug for creating flat planes to test redstone
3 local items = {
4 "redstone:dust 50",
5 "redstone:repeater_off_0 50", 
6 "redstone:comparator_0 50", 
7 "redstone:torch 50", 
8 "redstone:lever_off 50", 
9 "redstone:button_off 50", 
10 "redstone:piston_off 50",
11 "redstone:light_off 50",
12 "redstone:inverter_off 50",
13 "redstone:player_detector_0 50"}
14
15 minetest.register_node("redstone:space", {
16     description = "Stone",
17     tiles = {"stone.png"},
18     groups = {stone = 1, hard = 1, pickaxe = 1, hand = 4,pathable = 1},
19     sounds = main.stoneSound(),
20     after_place_node = function(pos, placer, itemstack, pointed_thing)
21                 local min = vector.subtract(pos,50)
22                 min.y = pos.y
23                 local max = vector.add(pos,50)
24                 max.y = pos.y
25                 local vm = minetest.get_voxel_manip()   
26                 local emin, emax = vm:read_from_map(min,max)
27                 local area = VoxelArea:new{MinEdge=emin, MaxEdge=emax}
28                 local data = vm:get_data()
29                 local content_id = minetest.get_name_from_content_id
30                 
31                 local y = pos.y
32                 
33                 for x = -50,50 do
34                         for z = -50,50 do
35                                 local i = vector.add(pos,vector.new(x,0,z))
36                                 i.y = pos.y
37                                 local p_pos = area:index(i.x,i.y,i.z)   
38                                 data[p_pos] = minetest.get_content_id("main:stone")
39                         end
40                 end
41                 vm:set_data(data)
42                 vm:write_to_map()
43                 
44                 local placer_pos = placer:get_pos()
45                 placer_pos.y = pos.y + 1
46                 placer:move_to(placer_pos)
47                 
48                 pos.y = pos.y + 1
49                 for _,item in pairs(items) do
50                         local obj = minetest.add_item(pos,item)
51                         --local x=math.random(-2,2)*math.random()
52                         --local y=math.random(2,5)
53                         --local z=math.random(-2,2)*math.random()
54                         --if obj and obj:get_luaentity() then
55                         --      obj:setvelocity({x=x, y=y, z=z})
56                         --end
57                 end
58     end,    
59 })
60
61
62
63 minetest.register_node("redstone:the_stone", {
64     description = "redstone ultimate",
65     tiles = {"redstone_dust_item.png"},
66     groups = {stone = 1, hard = 1, pickaxe = 1, hand = 4,pathable = 1},
67     sounds = main.stoneSound(),
68     after_place_node = function(pos, placer, itemstack, pointed_thing)
69                 local min = vector.subtract(pos,50)
70                 min.y = pos.y
71                 local max = vector.add(pos,50)
72                 max.y = pos.y
73                 local vm = minetest.get_voxel_manip()   
74                 local emin, emax = vm:read_from_map(min,max)
75                 local area = VoxelArea:new{MinEdge=emin, MaxEdge=emax}
76                 local data = vm:get_data()
77                 local content_id = minetest.get_name_from_content_id
78                 
79                 local y = pos.y
80                 
81                 for x = -50,50 do
82                         for z = -50,50 do
83                                 local i = vector.add(pos,vector.new(x,0,z))
84                                 i.y = pos.y
85                                 local p_pos = area:index(i.x,i.y,i.z)   
86                                 data[p_pos] = minetest.get_content_id("redstone:dust_0")
87                                 redstone.inject(i,{dust=0})
88                         end
89                 end
90                 vm:set_data(data)
91                 vm:write_to_map()
92     end,    
93 })