init.lua 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. minetest.register_node("mydraughts:board", {
  2. description = "Draughts",
  3. inventory_image = "mydraughts_inv.png",
  4. wield_image = "mydraughts_inv.png",
  5. light_source = 5,
  6. tiles = {"mycheckers_border_cbl.png","mycheckers_border.png","mycheckers_border_side.png","mycheckers_border_side.png","mycheckers_border_side.png","mycheckers_border_side.png"},
  7. drawtype = "normal",
  8. paramtype = "light",
  9. groups = {cracky = 1},
  10. sounds = default.node_sound_stone_defaults(),
  11. on_rightclick = function(pos, node, player, itemstack, pointed_thing)
  12. local schem = minetest.get_modpath("mydraughts").."/schems/mydraughts.mts"
  13. minetest.place_schematic({x=pos.x,y=pos.y,z=pos.z},schem,0, "air", true)
  14. end,
  15. after_place_node = function(pos, placer, itemstack, pointed_thing)
  16. if placer and minetest.check_player_privs(placer:get_player_name(), {myboardgames = true}) then
  17. else
  18. minetest.remove_node(pos)
  19. return true
  20. end
  21. end,
  22. })
  23. local board = {
  24. {"mydraughts:border" ,{"mycheckers_border.png"}},
  25. {"mydraughts:borderb" ,{
  26. "mycheckers_border_bottom.png",
  27. "mycheckers_border.png",
  28. "mycheckers_border_side.png",
  29. "mycheckers_border_side.png",
  30. "mycheckers_border_side.png",
  31. "mycheckers_border_side.png"}},
  32. {"mydraughts:bordercbl" ,{
  33. "mycheckers_border_cornerbl.png",
  34. "mycheckers_border.png",
  35. "mycheckers_border_side.png",
  36. "mycheckers_border_side.png",
  37. "mycheckers_border_side.png",
  38. "mycheckers_border_side.png"}},
  39. {"mydraughts:borderocbr",{
  40. "mycheckers_border_cbr.png",
  41. "mycheckers_border.png",
  42. "mycheckers_border_side.png",
  43. "mycheckers_border_side.png",
  44. "mycheckers_border_side.png",
  45. "mycheckers_border_side.png"}}
  46. ,
  47. {"mydraughts:white" ,{"mycheckers_wboard.png"}},
  48. {"mydraughts:black" ,{"mycheckers_bboard.png"}},
  49. }
  50. for i in ipairs (board) do
  51. local item = board[i][1]
  52. local img = board[i][2]
  53. minetest.register_node(item, {
  54. description = item,
  55. light_source = 5,
  56. tiles = img,
  57. drawtype = "normal",
  58. paramtype = "light",
  59. paramtype2 = "facedir",
  60. groups = {cracky = 1,not_in_creative_inventory=1},
  61. })
  62. end
  63. local regp = {
  64. type = "fixed",
  65. fixed = {
  66. {-0.1875, -0.5, -0.3125, 0.1875, -0.3125, 0.3125},
  67. {-0.3125, -0.5, -0.1875, 0.3125, -0.3125, 0.1875},
  68. {-0.1875, -0.3125, -0.1875, 0.1875, -0.25, 0.1875},
  69. }
  70. }
  71. local crown = {
  72. type = "fixed",
  73. fixed = {
  74. {-0.1875, -0.5, -0.3125, 0.1875, -0.3125, 0.3125},
  75. {-0.3125, -0.5, -0.1875, 0.3125, -0.3125, 0.1875},
  76. {-0.3125, -0.25, -0.1875, 0.3125, -0.0625, 0.1875},
  77. {-0.1875, -0.25, -0.3125, 0.1875, -0.0625, 0.3125},
  78. {-0.1875, -0.3125, -0.1875, 0.1875, -0.25, 0.1875},
  79. {-0.1875, -0.0625, -0.1875, 0.1875, 0, 0.1875},
  80. }
  81. }
  82. minetest.register_node("mydraughts:redp_c", {
  83. description = "Red Crown",
  84. light_source = 5,
  85. tiles = {"default_acacia_wood.png"},
  86. drawtype = "nodebox",
  87. paramtype = "light",
  88. drop = "mydraughts:redp 2",
  89. sunlight_propagates = true,
  90. groups = {cracky = 1, dig_immediate=3,not_in_creative_inventory=1},
  91. node_box = crown,
  92. })
  93. minetest.register_node("mydraughts:blackp_c", {
  94. description = "Black Crown",
  95. light_source = 5,
  96. tiles = {"default_obsidian.png"},
  97. drawtype = "nodebox",
  98. paramtype = "light",
  99. drop = "mydraughts:blackp 2",
  100. sunlight_propagates = true,
  101. groups = {cracky = 1, dig_immediate=3,not_in_creative_inventory=1},
  102. node_box = crown,
  103. })
  104. minetest.register_node("mydraughts:blackp", {
  105. description = "Black Piece",
  106. light_source = 5,
  107. tiles = {"default_obsidian.png"},
  108. drawtype = "nodebox",
  109. paramtype = "light",
  110. sunlight_propagates = true,
  111. groups = {cracky = 1, dig_immediate=3,not_in_creative_inventory=1},
  112. node_box = regp,
  113. after_place_node = function(pos, placer, itemstack, pointed_thing)
  114. local node = minetest.get_node(pos)
  115. local nodeu = minetest.get_node({x=pos.x,y=pos.y-1,z=pos.z})
  116. if nodeu.name == "mydraughts:blackp" and
  117. node.name == "mydraughts:blackp" then
  118. minetest.set_node({x=pos.x,y=pos.y-1,z=pos.z},{name = "mydraughts:blackp_c"})
  119. minetest.set_node(pos,{name = "air"})
  120. elseif nodeu ~= "mydraughts:blackp" then
  121. minetest.set_node(pos,{name="mydraughts:blackp"})
  122. end
  123. end
  124. })
  125. minetest.register_node("mydraughts:redp", {
  126. description = "Red Piece",
  127. light_source = 5,
  128. tiles = {"default_acacia_wood.png"},
  129. drawtype = "nodebox",
  130. paramtype = "light",
  131. sunlight_propagates = true,
  132. groups = {cracky = 1, dig_immediate=3,not_in_creative_inventory=1},
  133. node_box = regp,
  134. after_place_node = function(pos, placer, itemstack, pointed_thing)
  135. local node = minetest.get_node(pos)
  136. local nodeu = minetest.get_node({x=pos.x,y=pos.y-1,z=pos.z})
  137. if nodeu.name == "mydraughts:redp" and
  138. node.name == "mydraughts:redp" then
  139. minetest.set_node({x=pos.x,y=pos.y-1,z=pos.z},{name = "mydraughts:redp_c"})
  140. minetest.set_node(pos,{name = "air"})
  141. elseif nodeu ~= "mydraughts:redp" then
  142. minetest.set_node(pos,{name="mydraughts:redp"})
  143. end
  144. end
  145. })