Regnum 3.4.0 upload

Game-5.4.x
Der1248 2020-02-07 17:53:16 +01:00
parent a16d4bc8cc
commit 11b035cf82
84 changed files with 15571 additions and 2519 deletions

Binary file not shown.

View File

@ -306,6 +306,10 @@ armor.set_player_armor = function(self, player)
if use_armor_monoid then
armor_monoid.monoid:add_change(player, change, "3d_armor:armor")
else
local immortal = player:get_armor_groups().immortal
if immortal and immortal ~= 0 then
groups.immortal = 1
end
player:set_armor_groups(groups)
end
if use_player_monoids then

View File

@ -20,7 +20,7 @@ minetest.register_tool("3d_armor:helmet_admin2", {
description = "Admin Helmet Mode 2 (speed and no jump)",
inventory_image = "3d_armor_inv_helmet_admin.png^technic_tool_mode2.png",
wield_image = "3d_armor_inv_helmet_admin.png",
groups = {armor_head=20, armor_heal=20, armor_use=0, armor_fire=1, physics_speed=0.25, armor_water=0.2},
groups = {armor_head=20, armor_heal=20, armor_use=0, armor_fire=1, physics_speed=0.25, armor_water=0.2, not_in_creative_inventory=1},
wear = 0,
on_use = function(itemstack, user, pointed_thing)
local keys = user:get_player_control()
@ -35,7 +35,7 @@ minetest.register_tool("3d_armor:helmet_admin3", {
description = "Admin Helmet Mode 3 (no speed and jump)",
inventory_image = "3d_armor_inv_helmet_admin.png^technic_tool_mode3.png",
wield_image = "3d_armor_inv_helmet_admin.png",
groups = {armor_head=20, armor_heal=20, armor_use=0, armor_fire=1, physics_jump=0.25, armor_water=0.2},
groups = {armor_head=20, armor_heal=20, armor_use=0, armor_fire=1, physics_jump=0.25, armor_water=0.2, not_in_creative_inventory=1},
wear = 0,
on_use = function(itemstack, user, pointed_thing)
local keys = user:get_player_control()
@ -50,7 +50,7 @@ minetest.register_tool("3d_armor:helmet_admin4", {
description = "Admin Helmet Mode 4 (speed and jump)",
inventory_image = "3d_armor_inv_helmet_admin.png^technic_tool_mode4.png",
wield_image = "3d_armor_inv_helmet_admin.png",
groups = {armor_head=20, armor_heal=20, armor_use=0, armor_fire=1, physics_jump=0.25, physics_speed=0.25, armor_water=0.2},
groups = {armor_head=20, armor_heal=20, armor_use=0, armor_fire=1, physics_jump=0.25, physics_speed=0.25, armor_water=0.2, not_in_creative_inventory=1},
wear = 0,
on_use = function(itemstack, user, pointed_thing)
local keys = user:get_player_control()
@ -80,7 +80,7 @@ minetest.register_tool("3d_armor:chestplate_admin2", {
description = "Admin Chestplate Mode 2 (speed and no jump)",
inventory_image = "3d_armor_inv_chestplate_admin.png^technic_tool_mode2.png",
wield_image = "3d_armor_inv_chestplate_admin.png",
groups = {armor_torso=20, armor_heal=20, armor_use=0, armor_fire=1, physics_speed=0.25, armor_water=0.2},
groups = {armor_torso=20, armor_heal=20, armor_use=0, armor_fire=1, physics_speed=0.25, armor_water=0.2, not_in_creative_inventory=1},
wear = 0,
on_use = function(itemstack, user, pointed_thing)
local keys = user:get_player_control()
@ -94,7 +94,7 @@ minetest.register_tool("3d_armor:chestplate_admin3", {
description = "Admin Chestplate Mode 3 (no speed and jump)",
inventory_image = "3d_armor_inv_chestplate_admin.png^technic_tool_mode3.png",
wield_image = "3d_armor_inv_chestplate_admin.png",
groups = {armor_torso=20, armor_heal=20, armor_use=0, armor_fire=1, physics_jump=0.25, armor_water=0.2},
groups = {armor_torso=20, armor_heal=20, armor_use=0, armor_fire=1, physics_jump=0.25, armor_water=0.2, not_in_creative_inventory=1},
wear = 0,
on_use = function(itemstack, user, pointed_thing)
local keys = user:get_player_control()
@ -108,7 +108,7 @@ minetest.register_tool("3d_armor:chestplate_admin4", {
description = "Admin Chestplate Mode 4 (speed and jump)",
inventory_image = "3d_armor_inv_chestplate_admin.png^technic_tool_mode4.png",
wield_image = "3d_armor_inv_chestplate_admin.png",
groups = {armor_torso=20, armor_heal=20, armor_use=0, armor_fire=1, physics_jump=0.25, physics_speed=0.25, armor_water=0.2},
groups = {armor_torso=20, armor_heal=20, armor_use=0, armor_fire=1, physics_jump=0.25, physics_speed=0.25, armor_water=0.2, not_in_creative_inventory=1},
wear = 0,
on_use = function(itemstack, user, pointed_thing)
local keys = user:get_player_control()
@ -137,7 +137,7 @@ minetest.register_tool("3d_armor:leggings_admin2", {
description = "Admin Leggings Mode 2 (speed and no jump)",
wield_image = "3d_armor_inv_leggings_admin.png",
inventory_image = "3d_armor_inv_leggings_admin.png^technic_tool_mode2.png",
groups = {armor_legs=20, armor_heal=20, armor_use=0, armor_fire=1, physics_speed=0.25, armor_water=0.2},
groups = {armor_legs=20, armor_heal=20, armor_use=0, armor_fire=1, physics_speed=0.25, armor_water=0.2, not_in_creative_inventory=1},
wear = 0,
on_use = function(itemstack, user, pointed_thing)
local keys = user:get_player_control()
@ -152,7 +152,7 @@ minetest.register_tool("3d_armor:leggings_admin3", {
description = "Admin Leggings Mode 3 (no speed and jump)",
wield_image = "3d_armor_inv_leggings_admin.png",
inventory_image = "3d_armor_inv_leggings_admin.png^technic_tool_mode3.png",
groups = {armor_legs=20, armor_heal=20, armor_use=0, armor_fire=1, physics_jump=0.25, armor_water=0.2},
groups = {armor_legs=20, armor_heal=20, armor_use=0, armor_fire=1, physics_jump=0.25, armor_water=0.2, not_in_creative_inventory=1},
wear = 0,
on_use = function(itemstack, user, pointed_thing)
local keys = user:get_player_control()
@ -167,7 +167,7 @@ minetest.register_tool("3d_armor:leggings_admin4", {
description = "Admin Leggings Mode 4 (speed and jump)",
inventory_image = "3d_armor_inv_leggings_admin.png^technic_tool_mode4.png",
wield_image = "3d_armor_inv_leggings_admin.png",
groups = {armor_legs=20, armor_heal=20, armor_use=0, armor_fire=1, physics_jump=0.25, physics_speed=0.25, armor_water=0.2},
groups = {armor_legs=20, armor_heal=20, armor_use=0, armor_fire=1, physics_jump=0.25, physics_speed=0.25, armor_water=0.2, not_in_creative_inventory=1},
wear = 0,
on_use = function(itemstack, user, pointed_thing)
local keys = user:get_player_control()
@ -199,7 +199,7 @@ minetest.register_tool("3d_armor:boots_admin2", {
description = "Admin Boots Mode 2 (speed and no jump)",
inventory_image = "3d_armor_inv_boots_admin.png^technic_tool_mode2.png",
wield_image = "3d_armor_inv_boots_admin.png",
groups = {armor_feet=20, armor_heal=20, armor_use=0, armor_fire=1, physics_speed=0.25, armor_water=0.2},
groups = {armor_feet=20, armor_heal=20, armor_use=0, armor_fire=1, physics_speed=0.25, armor_water=0.2, not_in_creative_inventory=1},
wear = 0,
on_use = function(itemstack, user, pointed_thing)
local keys = user:get_player_control()
@ -214,7 +214,7 @@ minetest.register_tool("3d_armor:boots_admin3", {
description = "Admin Boots Mode 3 (no speed and jump)",
inventory_image = "3d_armor_inv_boots_admin.png^technic_tool_mode3.png",
wield_image = "3d_armor_inv_boots_admin.png",
groups = {armor_feet=20, armor_heal=20, armor_use=0, armor_fire=1, physics_jump=0.25, armor_water=0.2},
groups = {armor_feet=20, armor_heal=20, armor_use=0, armor_fire=1, physics_jump=0.25, armor_water=0.2, not_in_creative_inventory=1},
wear = 0,
on_use = function(itemstack, user, pointed_thing)
local keys = user:get_player_control()
@ -229,7 +229,7 @@ minetest.register_tool("3d_armor:boots_admin4", {
description = "Admin Boots Mode 4 (speed and jump)",
inventory_image = "3d_armor_inv_boots_admin.png^technic_tool_mode4.png",
wield_image = "3d_armor_inv_boots_admin.png",
groups = {armor_feet=20, armor_heal=20, armor_use=0, armor_fire=1, physics_jump=0.25, physics_speed=0.25, armor_water=0.2},
groups = {armor_feet=20, armor_heal=20, armor_use=0, armor_fire=1, physics_jump=0.25, physics_speed=0.25, armor_water=0.2, not_in_creative_inventory=1},
wear = 0,
on_use = function(itemstack, user, pointed_thing)
local keys = user:get_player_control()

View File

@ -1,50 +1,50 @@
minetest.register_tool("3d_armor:boots", {
description = "Boots\nBoots-lv.0",
inventory_image = "3d_armor_inv_boots.png",
groups = {armor_feet=0.1, armor_heal=0, armor_use=0},
groups = {armor_feet=0.1, armor_heal=0, armor_use=0, not_in_creative_inventory=1},
wear = 0,
})
minetest.register_tool("3d_armor:chestplate", {
description = "Chestplate\nChestplate-lv.0",
inventory_image = "3d_armor_inv_chestplate.png",
groups = {armor_torso=0.1, armor_heal=0, armor_use=0},
groups = {armor_torso=0.1, armor_heal=0, armor_use=0, not_in_creative_inventory=1},
wear = 0,
})
minetest.register_tool("3d_armor:helmet", {
description = "Helmet\nHelmet-lv.0",
inventory_image = "3d_armor_inv_helmet.png",
groups = {armor_head=0.1, armor_heal=0, armor_use=0},
groups = {armor_head=0.1, armor_heal=0, armor_use=0, not_in_creative_inventory=1},
wear = 0,
})
minetest.register_tool("3d_armor:leggings", {
description = "Leggings\nLeggings-lv.0",
inventory_image = "3d_armor_inv_leggings.png",
groups = {armor_legs=0.1, armor_heal=0, armor_use=0},
groups = {armor_legs=0.1, armor_heal=0, armor_use=0, not_in_creative_inventory=1},
wear = 0,
})
for i=1,20 do
minetest.register_tool("3d_armor:boots_mega"..i, {
description = "Megaboots lv."..i.."\nBoots-lv."..i,
inventory_image = "3d_armor_inv_boots_mega"..i..".png",
groups = {armor_feet=i*0.1, armor_heal=0, armor_use=0, armor_fire=0.005*i},
groups = {armor_feet=i*0.1, armor_heal=0, armor_use=0, armor_fire=0.005*i, not_in_creative_inventory=1},
wear = 0,
})
minetest.register_tool("3d_armor:chestplate_mega"..i, {
description = "Megachestplate lv."..i.."\nChestplate-lv."..i,
inventory_image = "3d_armor_inv_chestplate_mega"..i..".png",
groups = {armor_torso=i*0.1, armor_heal=0, armor_use=0, armor_fire=0.005*i},
groups = {armor_torso=i*0.1, armor_heal=0, armor_use=0, armor_fire=0.005*i, not_in_creative_inventory=1},
wear = 0,
})
minetest.register_tool("3d_armor:leggings_mega"..i, {
description = "Megaleggings lv."..i.."\nLeggings-lv."..i,
inventory_image = "3d_armor_inv_leggings_mega"..i..".png",
groups = {armor_legs=i*0.1, armor_heal=0, armor_use=0,armor_fire=0.005*i},
groups = {armor_legs=i*0.1, armor_heal=0, armor_use=0,armor_fire=0.005*i, not_in_creative_inventory=1},
wear = 0,
})
minetest.register_tool("3d_armor:helmet_mega"..i, {
description = "Megahelmet lv."..i.."\nHelmet-lv."..i,
inventory_image = "3d_armor_inv_helmet_mega"..i..".png",
groups = {armor_head=i*0.1, armor_heal=0, armor_use=0,armor_fire=0.005*i},
groups = {armor_head=i*0.1, armor_heal=0, armor_use=0,armor_fire=0.005*i, not_in_creative_inventory=1},
wear = 0,
})
end
@ -52,25 +52,25 @@ for i=1,25 do
minetest.register_tool("3d_armor:cloudboots_mega"..i, {
description = "Cloudboots lv."..i.."\nBoots-lv."..(i+20),
inventory_image = "3d_armor_inv_cloudboots_mega"..i..".png",
groups = {armor_feet=(20+i)*0.1, armor_heal=1, armor_use=0, armor_fire=0.005*(i+20)},
groups = {armor_feet=(20+i)*0.1, armor_heal=1, armor_use=0, armor_fire=0.005*(i+20), not_in_creative_inventory=1},
wear = 0,
})
minetest.register_tool("3d_armor:cloudchestplate_mega"..i, {
description = "Cloudchestplate lv."..i.."\nChestplate-lv."..(i+20),
inventory_image = "3d_armor_inv_cloudchestplate_mega"..i..".png",
groups = {armor_torso=(20+i)*0.1, armor_heal=1, armor_use=0, armor_fire=0.005*(i+20)},
groups = {armor_torso=(20+i)*0.1, armor_heal=1, armor_use=0, armor_fire=0.005*(i+20), not_in_creative_inventory=1},
wear = 0,
})
minetest.register_tool("3d_armor:cloudleggings_mega"..i, {
description = "Cloudleggings lv."..i.."\nLeggings-lv."..(i+20),
inventory_image = "3d_armor_inv_cloudleggings_mega"..i..".png",
groups = {armor_legs=(20+i)*0.1, armor_heal=1, armor_use=0,armor_fire=0.005*(i+20)},
groups = {armor_legs=(20+i)*0.1, armor_heal=1, armor_use=0,armor_fire=0.005*(i+20), not_in_creative_inventory=1},
wear = 0,
})
minetest.register_tool("3d_armor:cloudhelmet_mega"..i, {
description = "Cloudhelmet lv."..i.."\nHelmet-lv."..(i+20),
inventory_image = "3d_armor_inv_cloudhelmet_mega"..i..".png",
groups = {armor_head=(20+i)*0.1, armor_heal=1, armor_use=0,armor_fire=0.005*(i+20)},
groups = {armor_head=(20+i)*0.1, armor_heal=1, armor_use=0,armor_fire=0.005*(i+20), not_in_creative_inventory=1},
wear = 0,
})
end
@ -78,25 +78,25 @@ for i=1,4 do
minetest.register_tool("3d_armor:superboots"..i, {
description = "Superboots lv."..i.."\nBoots-lv."..(i+45),
inventory_image = "3d_armor_inv_superboots"..i..".png",
groups = {armor_feet=(45+i)*0.1, armor_heal=2, armor_use=0, armor_fire=0.005*(i+45)},
groups = {armor_feet=(45+i)*0.1, armor_heal=2, armor_use=0, armor_fire=0.005*(i+45), not_in_creative_inventory=1},
wear = 0,
})
minetest.register_tool("3d_armor:superchestplate"..i, {
description = "Superchestplate lv."..i.."\nChestplate-lv."..(i+45),
inventory_image = "3d_armor_inv_superchestplate"..i..".png",
groups = {armor_torso=(45+i)*0.1, armor_heal=2, armor_use=0, armor_fire=0.005*(i+45)},
groups = {armor_torso=(45+i)*0.1, armor_heal=2, armor_use=0, armor_fire=0.005*(i+45), not_in_creative_inventory=1},
wear = 0,
})
minetest.register_tool("3d_armor:superleggings"..i, {
description = "Superleggings lv."..i.."\nLeggings-lv."..(i+45),
inventory_image = "3d_armor_inv_superleggings"..i..".png",
groups = {armor_legs=(45+i)*0.1, armor_heal=2, armor_use=0,armor_fire=0.005*(i+45)},
groups = {armor_legs=(45+i)*0.1, armor_heal=2, armor_use=0,armor_fire=0.005*(i+45), not_in_creative_inventory=1},
wear = 0,
})
minetest.register_tool("3d_armor:superhelmet"..i, {
description = "Superhelmet lv."..i.."\nHelmet-lv."..(i+45),
inventory_image = "3d_armor_inv_superhelmet"..i..".png",
groups = {armor_head=(45+i)*0.1, armor_heal=2, armor_use=0,armor_fire=0.005*(i+45)},
groups = {armor_head=(45+i)*0.1, armor_heal=2, armor_use=0,armor_fire=0.005*(i+45), not_in_creative_inventory=1},
wear = 0,
})
end
@ -104,25 +104,25 @@ for i=1,2 do
minetest.register_tool("3d_armor:uraniumboots"..i, {
description = "Uraniumboots lv."..i.."\nBoots-lv."..(i+49),
inventory_image = "3d_armor_inv_uraniumboots"..i..".png",
groups = {armor_feet=(49+i)*0.1, armor_heal=3, armor_use=0, armor_fire=0.005*(i+49)},
groups = {armor_feet=(49+i)*0.1, armor_heal=3, armor_use=0, armor_fire=0.005*(i+49), not_in_creative_inventory=1},
wear = 0,
})
minetest.register_tool("3d_armor:uraniumchestplate"..i, {
description = "Uraniumchestplate lv."..i.."\nChestplate-lv."..(i+49),
inventory_image = "3d_armor_inv_uraniumchestplate"..i..".png",
groups = {armor_torso=(49+i)*0.1, armor_heal=3, armor_use=0, armor_fire=0.005*(i+49)},
groups = {armor_torso=(49+i)*0.1, armor_heal=3, armor_use=0, armor_fire=0.005*(i+49), not_in_creative_inventory=1},
wear = 0,
})
minetest.register_tool("3d_armor:uraniumleggings"..i, {
description = "Uraniumleggings lv."..i.."\nLeggings-lv."..(i+49),
inventory_image = "3d_armor_inv_uraniumleggings"..i..".png",
groups = {armor_legs=(49+i)*0.1, armor_heal=3, armor_use=0,armor_fire=0.005*(i+49)},
groups = {armor_legs=(49+i)*0.1, armor_heal=3, armor_use=0,armor_fire=0.005*(i+49), not_in_creative_inventory=1},
wear = 0,
})
minetest.register_tool("3d_armor:uraniumhelmet"..i, {
description = "Uraniumhelmet lv."..i.."\nHelmet-lv."..(i+49),
inventory_image = "3d_armor_inv_uraniumhelmet"..i..".png",
groups = {armor_head=(49+i)*0.1, armor_heal=3, armor_use=0,armor_fire=0.005*(i+49)},
groups = {armor_head=(49+i)*0.1, armor_heal=3, armor_use=0,armor_fire=0.005*(i+49), not_in_creative_inventory=1},
wear = 0,
})
end
@ -130,25 +130,25 @@ for i=1,12 do
minetest.register_tool("3d_armor:energyboots"..i, {
description = "Energyboots lv."..i.."\nBoots-lv."..(i+51),
inventory_image = "3d_armor_inv_energyboots"..i..".png",
groups = {armor_feet=(51+i)*0.1, armor_heal=4, armor_use=0, armor_fire=0.005*(i+51)},
groups = {armor_feet=(51+i)*0.1, armor_heal=4, armor_use=0, armor_fire=0.005*(i+51), not_in_creative_inventory=1},
wear = 0,
})
minetest.register_tool("3d_armor:energychestplate"..i, {
description = "Energychestplate lv."..i.."\nChestplate-lv."..(i+51),
inventory_image = "3d_armor_inv_energychestplate"..i..".png",
groups = {armor_torso=(51+i)*0.1, armor_heal=4, armor_use=0, armor_fire=0.005*(i+51)},
groups = {armor_torso=(51+i)*0.1, armor_heal=4, armor_use=0, armor_fire=0.005*(i+51), not_in_creative_inventory=1},
wear = 0,
})
minetest.register_tool("3d_armor:energyleggings"..i, {
description = "Energyleggings lv."..i.."\nLeggings-lv."..(i+51),
inventory_image = "3d_armor_inv_energyleggings"..i..".png",
groups = {armor_legs=(51+i)*0.1, armor_heal=4, armor_use=0,armor_fire=0.005*(i+51)},
groups = {armor_legs=(51+i)*0.1, armor_heal=4, armor_use=0,armor_fire=0.005*(i+51), not_in_creative_inventory=1},
wear = 0,
})
minetest.register_tool("3d_armor:energyhelmet"..i, {
description = "Energyhelmet lv."..i.."\nHelmet-lv."..(i+51),
inventory_image = "3d_armor_inv_energyhelmet"..i..".png",
groups = {armor_head=(51+i)*0.1, armor_heal=4, armor_use=0,armor_fire=0.005*(i+51)},
groups = {armor_head=(51+i)*0.1, armor_heal=4, armor_use=0,armor_fire=0.005*(i+51), not_in_creative_inventory=1},
wear = 0,
})
end
@ -156,25 +156,25 @@ for i=1,7 do
minetest.register_tool("3d_armor:superenergyboots"..i, {
description = "Superenergyboots lv."..i.."\nBoots-lv."..(i+63),
inventory_image = "3d_armor_inv_superenergyboots"..i..".png",
groups = {armor_feet=(63+i)*0.1, armor_heal=5, armor_use=0, armor_fire=0.005*(i+63)},
groups = {armor_feet=(63+i)*0.1, armor_heal=5, armor_use=0, armor_fire=0.005*(i+63), not_in_creative_inventory=1},
wear = 0,
})
minetest.register_tool("3d_armor:superenergychestplate"..i, {
description = "Superenergychestplate lv."..i.."\nChestplate-lv."..(i+63),
inventory_image = "3d_armor_inv_superenergychestplate"..i..".png",
groups = {armor_torso=(63+i)*0.1, armor_heal=5, armor_use=0, armor_fire=0.005*(i+63)},
groups = {armor_torso=(63+i)*0.1, armor_heal=5, armor_use=0, armor_fire=0.005*(i+63), not_in_creative_inventory=1},
wear = 0,
})
minetest.register_tool("3d_armor:superenergyleggings"..i, {
description = "Superenergyleggings lv."..i.."\nLeggings-lv."..(i+63),
inventory_image = "3d_armor_inv_superenergyleggings"..i..".png",
groups = {armor_legs=(63+i)*0.1, armor_heal=5, armor_use=0,armor_fire=0.005*(i+63)},
groups = {armor_legs=(63+i)*0.1, armor_heal=5, armor_use=0,armor_fire=0.005*(i+63), not_in_creative_inventory=1},
wear = 0,
})
minetest.register_tool("3d_armor:superenergyhelmet"..i, {
description = "Superenergyhelmet lv."..i.."\nHelmet-lv."..(i+63),
inventory_image = "3d_armor_inv_superenergyhelmet"..i..".png",
groups = {armor_head=(63+i)*0.1, armor_heal=5, armor_use=0,armor_fire=0.005*(i+63)},
groups = {armor_head=(63+i)*0.1, armor_heal=5, armor_use=0,armor_fire=0.005*(i+63), not_in_creative_inventory=1},
wear = 0,
})
end
@ -182,25 +182,25 @@ for i=1,5 do
minetest.register_tool("3d_armor:kristallboots"..i, {
description = "Crystalboots lv."..i.."\nBoots-lv."..(i+70),
inventory_image = "3d_armor_inv_kristallboots"..i..".png",
groups = {armor_feet=(70+i)*0.1, armor_heal=6, armor_use=0, armor_fire=0.005*(i+70)},
groups = {armor_feet=(70+i)*0.1, armor_heal=6, armor_use=0, armor_fire=0.005*(i+70), not_in_creative_inventory=1},
wear = 0,
})
minetest.register_tool("3d_armor:kristallchestplate"..i, {
description = "Crystalchestplate lv."..i.."\nChestplate-lv."..(i+70),
inventory_image = "3d_armor_inv_kristallchestplate"..i..".png",
groups = {armor_torso=(70+i)*0.1, armor_heal=6, armor_use=0, armor_fire=0.005*(i+70)},
groups = {armor_torso=(70+i)*0.1, armor_heal=6, armor_use=0, armor_fire=0.005*(i+70), not_in_creative_inventory=1},
wear = 0,
})
minetest.register_tool("3d_armor:kristallleggings"..i, {
description = "Crystalleggings lv."..i.."\nLeggings-lv."..(i+70),
inventory_image = "3d_armor_inv_kristallleggings"..i..".png",
groups = {armor_legs=(70+i)*0.1, armor_heal=6, armor_use=0,armor_fire=0.005*(i+70)},
groups = {armor_legs=(70+i)*0.1, armor_heal=6, armor_use=0,armor_fire=0.005*(i+70), not_in_creative_inventory=1},
wear = 0,
})
minetest.register_tool("3d_armor:kristallhelmet"..i, {
description = "Crystalhelmet lv."..i.."\nHelmet-lv."..(i+70),
inventory_image = "3d_armor_inv_kristallhelmet"..i..".png",
groups = {armor_head=(70+i)*0.1, armor_heal=6, armor_use=0,armor_fire=0.005*(i+70)},
groups = {armor_head=(70+i)*0.1, armor_heal=6, armor_use=0,armor_fire=0.005*(i+70), not_in_creative_inventory=1},
wear = 0,
})
end
@ -208,75 +208,75 @@ for i=1,25 do
minetest.register_tool("3d_armor:ultraboots"..i, {
description = "Ultraboots lv."..i.."\nBoots-lv."..(i+75),
inventory_image = "3d_armor_inv_ultraboots"..i..".png",
groups = {armor_feet=(75+i)*0.1, armor_heal=7, armor_use=0, armor_fire=0.005*(i+75)},
groups = {armor_feet=(75+i)*0.1, armor_heal=7, armor_use=0, armor_fire=0.005*(i+75), not_in_creative_inventory=1},
wear = 0,
})
minetest.register_tool("3d_armor:ultrachestplate"..i, {
description = "Ultrachestplate lv."..i.."\nChestplate-lv."..(i+75),
inventory_image = "3d_armor_inv_ultrachestplate"..i..".png",
groups = {armor_torso=(75+i)*0.1, armor_heal=7, armor_use=0, armor_fire=0.005*(i+75)},
groups = {armor_torso=(75+i)*0.1, armor_heal=7, armor_use=0, armor_fire=0.005*(i+75), not_in_creative_inventory=1},
wear = 0,
})
minetest.register_tool("3d_armor:ultraleggings"..i, {
description = "Ultraleggings lv."..i.."\nLeggings-lv."..(i+75),
inventory_image = "3d_armor_inv_ultraleggings"..i..".png",
groups = {armor_legs=(75+i)*0.1, armor_heal=7, armor_use=0,armor_fire=0.005*(i+75)},
groups = {armor_legs=(75+i)*0.1, armor_heal=7, armor_use=0,armor_fire=0.005*(i+75), not_in_creative_inventory=1},
wear = 0,
})
minetest.register_tool("3d_armor:ultrahelmet"..i, {
description = "Ultrahelmet lv."..i.."\nHelmet-lv."..(i+75),
inventory_image = "3d_armor_inv_ultrahelmet"..i..".png",
groups = {armor_head=(75+i)*0.1, armor_heal=7, armor_use=0,armor_fire=0.005*(i+75)},
groups = {armor_head=(75+i)*0.1, armor_heal=7, armor_use=0,armor_fire=0.005*(i+75), not_in_creative_inventory=1},
wear = 0,
})
end
minetest.register_tool("3d_armor:superultraboots", {
description = "Superultraboots\nBoots-lv.101",
inventory_image = "3d_armor_inv_superultraboots.png",
groups = {armor_feet=10.1, armor_heal=8, armor_use=0,armor_fire=0.505},
groups = {armor_feet=10.1, armor_heal=8, armor_use=0,armor_fire=0.505, not_in_creative_inventory=1},
wear = 0,
})
minetest.register_tool("3d_armor:superultrachestplate", {
description = "Superultrachestplate\nChestplate-lv.101",
inventory_image = "3d_armor_inv_superultrachestplate.png",
groups = {armor_torso=10.1, armor_heal=8, armor_use=0, armor_fire=0.505},
groups = {armor_torso=10.1, armor_heal=8, armor_use=0, armor_fire=0.505, not_in_creative_inventory=1},
wear = 0,
})
minetest.register_tool("3d_armor:superultrahelmet", {
description = "Superultrahelmet\nHelmet-lv.101",
inventory_image = "3d_armor_inv_superultrahelmet.png",
groups = {armor_head=10.1, armor_heal=8, armor_use=0,armor_fire=0.505},
groups = {armor_head=10.1, armor_heal=8, armor_use=0,armor_fire=0.505, not_in_creative_inventory=1},
wear = 0,
})
minetest.register_tool("3d_armor:superultraleggings", {
description = "Superultraleggings\nLeggings-lv.101",
inventory_image = "3d_armor_inv_superultraleggings.png",
groups = {armor_legs=10.1, armor_heal=8, armor_use=0,armor_fire=0.505},
groups = {armor_legs=10.1, armor_heal=8, armor_use=0,armor_fire=0.505, not_in_creative_inventory=1},
wear = 0,
})
for i=1,4 do
minetest.register_tool("3d_armor:arenaboots"..i, {
description = "Arenaboots lv."..i.."\nBoots-lv."..(i+101),
inventory_image = "3d_armor_inv_arenaboots"..i..".png",
groups = {armor_feet=(101+i)*0.1, armor_heal=9, armor_use=0, armor_fire=0.005*(i+101)},
groups = {armor_feet=(101+i)*0.1, armor_heal=9, armor_use=0, armor_fire=0.005*(i+101), not_in_creative_inventory=1},
wear = 0,
})
minetest.register_tool("3d_armor:arenachestplate"..i, {
description = "Arenachestplate lv."..i.."\nChestplate-lv."..(i+101),
inventory_image = "3d_armor_inv_arenachestplate"..i..".png",
groups = {armor_torso=(101+i)*0.1, armor_heal=9, armor_use=0, armor_fire=0.005*(i+101)},
groups = {armor_torso=(101+i)*0.1, armor_heal=9, armor_use=0, armor_fire=0.005*(i+101), not_in_creative_inventory=1},
wear = 0,
})
minetest.register_tool("3d_armor:arenaleggings"..i, {
description = "Arenaleggings lv."..i.."\nLeggings-lv."..(i+101),
inventory_image = "3d_armor_inv_arenaleggings"..i..".png",
groups = {armor_legs=(101+i)*0.1, armor_heal=9, armor_use=0,armor_fire=0.005*(i+101)},
groups = {armor_legs=(101+i)*0.1, armor_heal=9, armor_use=0,armor_fire=0.005*(i+101), not_in_creative_inventory=1},
wear = 0,
})
minetest.register_tool("3d_armor:arenahelmet"..i, {
description = "Arenahelmet lv."..i.."\nHelmet-lv."..(i+101),
inventory_image = "3d_armor_inv_arenahelmet"..i..".png",
groups = {armor_head=(101+i)*0.1, armor_heal=9, armor_use=0,armor_fire=0.005*(i+101)},
groups = {armor_head=(101+i)*0.1, armor_heal=9, armor_use=0,armor_fire=0.005*(i+101), not_in_creative_inventory=1},
wear = 0,
})
end
@ -284,25 +284,25 @@ for i=1,10 do
minetest.register_tool("3d_armor:titanboots"..i, {
description = "Titanboots lv."..i.."\nBoots-lv."..(i+105),
inventory_image = "3d_armor_inv_titanboots"..i..".png",
groups = {armor_feet=(105+i)*0.1, armor_heal=10, armor_use=0, armor_fire=0.005*(i+105)},
groups = {armor_feet=(105+i)*0.1, armor_heal=10, armor_use=0, armor_fire=0.005*(i+105), not_in_creative_inventory=1},
wear = 0,
})
minetest.register_tool("3d_armor:titanchestplate"..i, {
description = "Titanchestplate lv."..i.."\nChestplate-lv."..(i+105),
inventory_image = "3d_armor_inv_titanchestplate"..i..".png",
groups = {armor_torso=(105+i)*0.1, armor_heal=10, armor_use=0, armor_fire=0.005*(i+105)},
groups = {armor_torso=(105+i)*0.1, armor_heal=10, armor_use=0, armor_fire=0.005*(i+105), not_in_creative_inventory=1},
wear = 0,
})
minetest.register_tool("3d_armor:titanleggings"..i, {
description = "Titanleggings lv."..i.."\nLeggings-lv."..(i+105),
inventory_image = "3d_armor_inv_titanleggings"..i..".png",
groups = {armor_legs=(105+i)*0.1, armor_heal=10, armor_use=0,armor_fire=0.005*(i+105)},
groups = {armor_legs=(105+i)*0.1, armor_heal=10, armor_use=0,armor_fire=0.005*(i+105), not_in_creative_inventory=1},
wear = 0,
})
minetest.register_tool("3d_armor:titanhelmet"..i, {
description = "Titanhelmet lv."..i.."\nHelmet-lv."..(i+105),
inventory_image = "3d_armor_inv_titanhelmet"..i..".png",
groups = {armor_head=(105+i)*0.1, armor_heal=10, armor_use=0,armor_fire=0.005*(i+105)},
groups = {armor_head=(105+i)*0.1, armor_heal=10, armor_use=0,armor_fire=0.005*(i+105), not_in_creative_inventory=1},
wear = 0,
})
end
@ -310,25 +310,25 @@ for i=1,6 do
minetest.register_tool("3d_armor:legendenboots"..i, {
description = "Legendboots lv."..i.."\nBoots-lv."..(i+115),
inventory_image = "3d_armor_inv_legendenboots"..i..".png",
groups = {armor_feet=(115+i)*0.1, armor_heal=11, armor_use=0, armor_fire=0.005*(i+115)},
groups = {armor_feet=(115+i)*0.1, armor_heal=11, armor_use=0, armor_fire=0.005*(i+115), not_in_creative_inventory=1},
wear = 0,
})
minetest.register_tool("3d_armor:legendenchestplate"..i, {
description = "Legendchestplate lv."..i.."\nChestplate-lv."..(i+115),
inventory_image = "3d_armor_inv_legendenchestplate"..i..".png",
groups = {armor_torso=(115+i)*0.1, armor_heal=11, armor_use=0, armor_fire=0.005*(i+115)},
groups = {armor_torso=(115+i)*0.1, armor_heal=11, armor_use=0, armor_fire=0.005*(i+115), not_in_creative_inventory=1},
wear = 0,
})
minetest.register_tool("3d_armor:legendenleggings"..i, {
description = "Legendleggings lv."..i.."\nLeggings-lv."..(i+115),
inventory_image = "3d_armor_inv_legendenleggings"..i..".png",
groups = {armor_legs=(115+i)*0.1, armor_heal=11, armor_use=0,armor_fire=0.005*(i+115)},
groups = {armor_legs=(115+i)*0.1, armor_heal=11, armor_use=0,armor_fire=0.005*(i+115), not_in_creative_inventory=1},
wear = 0,
})
minetest.register_tool("3d_armor:legendenhelmet"..i, {
description = "Legendhelmet lv."..i.."\nHelmet-lv."..(i+115),
inventory_image = "3d_armor_inv_legendenhelmet"..i..".png",
groups = {armor_head=(115+i)*0.1, armor_heal=11, armor_use=0,armor_fire=0.005*(i+115)},
groups = {armor_head=(115+i)*0.1, armor_heal=11, armor_use=0,armor_fire=0.005*(i+115), not_in_creative_inventory=1},
wear = 0,
})
end
@ -339,7 +339,7 @@ end
minetest.register_tool("3d_armor:superlegendenboots", {
description = "Superlegendboots Mode 1 (no speed and no jump)\nBoots-lv.122",
inventory_image = "3d_armor_inv_superlegendenboots.png^technic_tool_mode1.png",
groups = {armor_feet=12.2, armor_heal=12, armor_use=0,armor_fire=0.61, armor_water=0.2},
groups = {armor_feet=12.2, armor_heal=12, armor_use=0,armor_fire=0.61, armor_water=0.2, not_in_creative_inventory=1},
wear = 0,
wield_image = "3d_armor_inv_superlegendenboots.png",
on_use = function(itemstack, user, pointed_thing)
@ -353,7 +353,7 @@ minetest.register_tool("3d_armor:superlegendenboots", {
minetest.register_tool("3d_armor:superlegendenboots2", {
description = "Superlegendboots Mode 2 (speed and no jump)\nBoots-lv.122",
inventory_image = "3d_armor_inv_superlegendenboots.png^technic_tool_mode2.png",
groups = {armor_feet=12.2, armor_heal=12, armor_use=0,armor_fire=0.61, physics_speed=0.25, armor_water=0.2},
groups = {armor_feet=12.2, armor_heal=12, armor_use=0,armor_fire=0.61, physics_speed=0.25, armor_water=0.2, not_in_creative_inventory=1},
wear = 0,
wield_image = "3d_armor_inv_superlegendenboots.png",
on_use = function(itemstack, user, pointed_thing)
@ -367,7 +367,7 @@ minetest.register_tool("3d_armor:superlegendenboots2", {
minetest.register_tool("3d_armor:superlegendenboots3", {
description = "Superlegendboots Mode 3 (no speed and jump)\nBoots-lv.122",
inventory_image = "3d_armor_inv_superlegendenboots.png^technic_tool_mode3.png",
groups = {armor_feet=12.2, armor_heal=12, armor_use=0,armor_fire=0.61, physics_jump=0.25, armor_water=0.2},
groups = {armor_feet=12.2, armor_heal=12, armor_use=0,armor_fire=0.61, physics_jump=0.25, armor_water=0.2, not_in_creative_inventory=1},
wear = 0,
wield_image = "3d_armor_inv_superlegendenboots.png",
on_use = function(itemstack, user, pointed_thing)
@ -381,7 +381,7 @@ minetest.register_tool("3d_armor:superlegendenboots3", {
minetest.register_tool("3d_armor:superlegendenboots4", {
description = "Superlegendboots Mode 4 (speed and jump)\nBoots-lv.122",
inventory_image = "3d_armor_inv_superlegendenboots.png^technic_tool_mode4.png",
groups = {armor_feet=12.2, armor_heal=12, armor_use=0,armor_fire=0.61, physics_jump=0.25, physics_speed=0.25, armor_water=0.2},
groups = {armor_feet=12.2, armor_heal=12, armor_use=0,armor_fire=0.61, physics_jump=0.25, physics_speed=0.25, armor_water=0.2, not_in_creative_inventory=1},
wear = 0,
wield_image = "3d_armor_inv_superlegendenboots.png",
on_use = function(itemstack, user, pointed_thing)
@ -396,7 +396,7 @@ minetest.register_tool("3d_armor:superlegendenboots4", {
minetest.register_tool("3d_armor:superlegendenchestplate", {
description = "Superlegendchestplate Mode 1 (no speed and no jump)\nChestplate-lv.122",
inventory_image = "3d_armor_inv_superlegendenchestplate.png^technic_tool_mode1.png",
groups = {armor_torso=12.2, armor_heal=12, armor_use=0, armor_fire=0.61, armor_water=0.2},
groups = {armor_torso=12.2, armor_heal=12, armor_use=0, armor_fire=0.61, armor_water=0.2, not_in_creative_inventory=1},
wear = 0,
wield_image = "3d_armor_inv_superlegendenchestplate.png",
on_use = function(itemstack, user, pointed_thing)
@ -410,7 +410,7 @@ minetest.register_tool("3d_armor:superlegendenchestplate", {
minetest.register_tool("3d_armor:superlegendenchestplate2", {
description = "Superlegendchestplate Mode 2 (speed and no jump)\nChestplate-lv.122",
inventory_image = "3d_armor_inv_superlegendenchestplate.png^technic_tool_mode2.png",
groups = {armor_torso=12.2, armor_heal=12, armor_use=0, armor_fire=0.61, physics_speed=0.25, armor_water=0.2},
groups = {armor_torso=12.2, armor_heal=12, armor_use=0, armor_fire=0.61, physics_speed=0.25, armor_water=0.2, not_in_creative_inventory=1},
wear = 0,
wield_image = "3d_armor_inv_superlegendenchestplate.png",
on_use = function(itemstack, user, pointed_thing)
@ -424,7 +424,7 @@ minetest.register_tool("3d_armor:superlegendenchestplate2", {
minetest.register_tool("3d_armor:superlegendenchestplate3", {
description = "Superlegendchestplate Mode 3 (no speed and jump)\nChestplate-lv.122",
inventory_image = "3d_armor_inv_superlegendenchestplate.png^technic_tool_mode3.png",
groups = {armor_torso=12.2, armor_heal=12, armor_use=0, armor_fire=0.61, physics_jump=0.25, armor_water=0.2},
groups = {armor_torso=12.2, armor_heal=12, armor_use=0, armor_fire=0.61, physics_jump=0.25, armor_water=0.2, not_in_creative_inventory=1},
wear = 0,
wield_image = "3d_armor_inv_superlegendenchestplate.png",
on_use = function(itemstack, user, pointed_thing)
@ -438,7 +438,7 @@ minetest.register_tool("3d_armor:superlegendenchestplate3", {
minetest.register_tool("3d_armor:superlegendenchestplate4", {
description = "Superlegendchestplate Mode 4 (speed and jump)\nChestplate-lv.122",
inventory_image = "3d_armor_inv_superlegendenchestplate.png^technic_tool_mode4.png",
groups = {armor_torso=12.2, armor_heal=12, armor_use=0, armor_fire=0.61, physics_jump=0.25, physics_speed=0.25, armor_water=0.2},
groups = {armor_torso=12.2, armor_heal=12, armor_use=0, armor_fire=0.61, physics_jump=0.25, physics_speed=0.25, armor_water=0.2, not_in_creative_inventory=1},
wear = 0,
wield_image = "3d_armor_inv_superlegendenchestplate.png",
on_use = function(itemstack, user, pointed_thing)
@ -453,7 +453,7 @@ minetest.register_tool("3d_armor:superlegendenchestplate4", {
minetest.register_tool("3d_armor:superlegendenhelmet", {
description = "Superlegendhelmet Mode 1 (no speed and no jump)\nHelmet-lv.122",
inventory_image = "3d_armor_inv_superlegendenhelmet.png^technic_tool_mode1.png",
groups = {armor_head=12.2, armor_heal=12, armor_use=0,armor_fire=0.61, armor_water=0.2},
groups = {armor_head=12.2, armor_heal=12, armor_use=0,armor_fire=0.61, armor_water=0.2, not_in_creative_inventory=1},
wear = 0,
wield_image = "3d_armor_inv_superlegendenhelmet.png",
on_use = function(itemstack, user, pointed_thing)
@ -467,7 +467,7 @@ minetest.register_tool("3d_armor:superlegendenhelmet", {
minetest.register_tool("3d_armor:superlegendenhelmet2", {
description = "Superlegendhelmet Mode 2 (speed and no jump)\nHelmet-lv.122",
inventory_image = "3d_armor_inv_superlegendenhelmet.png^technic_tool_mode2.png",
groups = {armor_head=12.2, armor_heal=12, armor_use=0,armor_fire=0.61, physics_speed=0.25, armor_water=0.2},
groups = {armor_head=12.2, armor_heal=12, armor_use=0,armor_fire=0.61, physics_speed=0.25, armor_water=0.2, not_in_creative_inventory=1},
wear = 0,
wield_image = "3d_armor_inv_superlegendenhelmet.png",
on_use = function(itemstack, user, pointed_thing)
@ -481,7 +481,7 @@ minetest.register_tool("3d_armor:superlegendenhelmet2", {
minetest.register_tool("3d_armor:superlegendenhelmet3", {
description = "Superlegendhelmet Mode 3 (no speed and jump)\nHelmet-lv.122",
inventory_image = "3d_armor_inv_superlegendenhelmet.png^technic_tool_mode3.png",
groups = {armor_head=12.2, armor_heal=12, armor_use=0,armor_fire=0.61, physics_jump=0.25, armor_water=0.2},
groups = {armor_head=12.2, armor_heal=12, armor_use=0,armor_fire=0.61, physics_jump=0.25, armor_water=0.2, not_in_creative_inventory=1},
wear = 0,
wield_image = "3d_armor_inv_superlegendenhelmet.png",
on_use = function(itemstack, user, pointed_thing)
@ -495,7 +495,7 @@ minetest.register_tool("3d_armor:superlegendenhelmet3", {
minetest.register_tool("3d_armor:superlegendenhelmet4", {
description = "Superlegendhelmet Mode 4 (speed and jump)\nHelmet-lv.122",
inventory_image = "3d_armor_inv_superlegendenhelmet.png^technic_tool_mode4.png",
groups = {armor_head=12.2, armor_heal=12, armor_use=0,armor_fire=0.61, physics_jump=0.25, physics_speed=0.25, armor_water=0.2},
groups = {armor_head=12.2, armor_heal=12, armor_use=0,armor_fire=0.61, physics_jump=0.25, physics_speed=0.25, armor_water=0.2, not_in_creative_inventory=1},
wear = 0,
wield_image = "3d_armor_inv_superlegendenhelmet.png",
on_use = function(itemstack, user, pointed_thing)
@ -510,7 +510,7 @@ minetest.register_tool("3d_armor:superlegendenhelmet4", {
minetest.register_tool("3d_armor:superlegendenleggings", {
description = "Superlegendleggings Mode 1 (no speed and no jump)\nLeggings-lv.122",
inventory_image = "3d_armor_inv_superlegendenleggings.png^technic_tool_mode1.png",
groups = {armor_legs=12.2, armor_heal=12, armor_use=0,armor_fire=0.61, armor_water=0.2},
groups = {armor_legs=12.2, armor_heal=12, armor_use=0,armor_fire=0.61, armor_water=0.2, not_in_creative_inventory=1},
wear = 0,
wield_image = "3d_armor_inv_superlegendenleggings.png",
on_use = function(itemstack, user, pointed_thing)
@ -524,7 +524,7 @@ minetest.register_tool("3d_armor:superlegendenleggings", {
minetest.register_tool("3d_armor:superlegendenleggings2", {
description = "Superlegendleggings Mode 2 (speed and no jump)\nLeggings-lv.122",
inventory_image = "3d_armor_inv_superlegendenleggings.png^technic_tool_mode2.png",
groups = {armor_legs=12.2, armor_heal=12, armor_use=0,armor_fire=0.61, physics_speed=0.25, armor_water=0.2},
groups = {armor_legs=12.2, armor_heal=12, armor_use=0,armor_fire=0.61, physics_speed=0.25, armor_water=0.2, not_in_creative_inventory=1},
wear = 0,
wield_image = "3d_armor_inv_superlegendenleggings.png",
on_use = function(itemstack, user, pointed_thing)
@ -538,7 +538,7 @@ minetest.register_tool("3d_armor:superlegendenleggings2", {
minetest.register_tool("3d_armor:superlegendenleggings3", {
description = "Superlegendleggings Mode 3 (no speed and jump)\nLeggings-lv.122",
inventory_image = "3d_armor_inv_superlegendenleggings.png^technic_tool_mode3.png",
groups = {armor_legs=12.2, armor_heal=12, armor_use=0,armor_fire=0.61, physics_jump=0.25, armor_water=0.2},
groups = {armor_legs=12.2, armor_heal=12, armor_use=0,armor_fire=0.61, physics_jump=0.25, armor_water=0.2, not_in_creative_inventory=1},
wear = 0,
wield_image = "3d_armor_inv_superlegendenleggings.png",
on_use = function(itemstack, user, pointed_thing)
@ -552,7 +552,7 @@ minetest.register_tool("3d_armor:superlegendenleggings3", {
minetest.register_tool("3d_armor:superlegendenleggings4", {
description = "Superlegendleggings Mode 4 (speed and jump)\nLeggings-lv.122",
inventory_image = "3d_armor_inv_superlegendenleggings.png^technic_tool_mode4.png",
groups = {armor_legs=12.2, armor_heal=12, armor_use=0,armor_fire=0.61, physics_jump=0.25, physics_speed=0.25, armor_water=0.2},
groups = {armor_legs=12.2, armor_heal=12, armor_use=0,armor_fire=0.61, physics_jump=0.25, physics_speed=0.25, armor_water=0.2, not_in_creative_inventory=1},
wear = 0,
wield_image = "3d_armor_inv_superlegendenleggings.png",
on_use = function(itemstack, user, pointed_thing)
@ -582,7 +582,7 @@ minetest.register_tool("3d_armor:regnumboots", {
minetest.register_tool("3d_armor:regnumboots2", {
description = "Regnumboots Mode 2 (speed and no jump)\nBoots-lv.MAX",
inventory_image = "3d_armor_inv_regnumboots.png^technic_tool_mode2.png",
groups = {armor_feet=15.0, armor_heal=13, armor_use=0,armor_fire=1, physics_speed=0.25, armor_water=0.2},
groups = {armor_feet=15.0, armor_heal=13, armor_use=0,armor_fire=1, physics_speed=0.25, armor_water=0.2, not_in_creative_inventory=1},
wear = 0,
wield_image = "3d_armor_inv_regnumboots.png",
on_use = function(itemstack, user, pointed_thing)
@ -596,7 +596,7 @@ minetest.register_tool("3d_armor:regnumboots2", {
minetest.register_tool("3d_armor:regnumboots3", {
description = "Regnumboots Mode 3 (no speed and jump)\nBoots-lv.MAX",
inventory_image = "3d_armor_inv_regnumboots.png^technic_tool_mode3.png",
groups = {armor_feet=15.0, armor_heal=13, armor_use=0,armor_fire=1, physics_jump=0.25, armor_water=0.2},
groups = {armor_feet=15.0, armor_heal=13, armor_use=0,armor_fire=1, physics_jump=0.25, armor_water=0.2, not_in_creative_inventory=1},
wear = 0,
wield_image = "3d_armor_inv_regnumboots.png",
on_use = function(itemstack, user, pointed_thing)
@ -610,7 +610,7 @@ minetest.register_tool("3d_armor:regnumboots3", {
minetest.register_tool("3d_armor:regnumboots4", {
description = "Regnumboots Mode 4 (speed and jump)\nBoots-lv.MAX",
inventory_image = "3d_armor_inv_regnumboots.png^technic_tool_mode4.png",
groups = {armor_feet=15.0, armor_heal=13, armor_use=0,armor_fire=1, physics_jump=0.25, physics_speed=0.25, armor_water=0.2},
groups = {armor_feet=15.0, armor_heal=13, armor_use=0,armor_fire=1, physics_jump=0.25, physics_speed=0.25, armor_water=0.2, not_in_creative_inventory=1},
wear = 0,
wield_image = "3d_armor_inv_regnumboots.png",
on_use = function(itemstack, user, pointed_thing)
@ -639,7 +639,7 @@ minetest.register_tool("3d_armor:regnumchestplate", {
minetest.register_tool("3d_armor:regnumchestplate2", {
description = "Regnumchestplate Mode 2 (speed and no jump)\nChestplate-lv.MAX",
inventory_image = "3d_armor_inv_regnumchestplate.png^technic_tool_mode2.png",
groups = {armor_torso=15.0, armor_heal=13, armor_use=0, armor_fire=1, physics_speed=0.25, armor_water=0.2},
groups = {armor_torso=15.0, armor_heal=13, armor_use=0, armor_fire=1, physics_speed=0.25, armor_water=0.2, not_in_creative_inventory=1},
wear = 0,
wield_image = "3d_armor_inv_regnumchestplate.png",
on_use = function(itemstack, user, pointed_thing)
@ -653,7 +653,7 @@ minetest.register_tool("3d_armor:regnumchestplate2", {
minetest.register_tool("3d_armor:regnumchestplate3", {
description = "Regnumchestplate Mode 3 (no speed and jump)\nChestplate-lv.MAX",
inventory_image = "3d_armor_inv_regnumchestplate.png^technic_tool_mode3.png",
groups = {armor_torso=15.0, armor_heal=13, armor_use=0, armor_fire=1, physics_jump=0.25, armor_water=0.2},
groups = {armor_torso=15.0, armor_heal=13, armor_use=0, armor_fire=1, physics_jump=0.25, armor_water=0.2, not_in_creative_inventory=1},
wear = 0,
wield_image = "3d_armor_inv_regnumchestplate.png",
on_use = function(itemstack, user, pointed_thing)
@ -667,7 +667,7 @@ minetest.register_tool("3d_armor:regnumchestplate3", {
minetest.register_tool("3d_armor:regnumchestplate4", {
description = "Regnumchestplate Mode 4 (speed and jump)\nChestplate-lv.MAX",
inventory_image = "3d_armor_inv_regnumchestplate.png^technic_tool_mode4.png",
groups = {armor_torso=15.0, armor_heal=13, armor_use=0, armor_fire=1, physics_jump=0.25, physics_speed=0.25, armor_water=0.2},
groups = {armor_torso=15.0, armor_heal=13, armor_use=0, armor_fire=1, physics_jump=0.25, physics_speed=0.25, armor_water=0.2, not_in_creative_inventory=1},
wear = 0,
wield_image = "3d_armor_inv_regnumchestplate.png",
on_use = function(itemstack, user, pointed_thing)
@ -696,7 +696,7 @@ minetest.register_tool("3d_armor:regnumhelmet", {
minetest.register_tool("3d_armor:regnumhelmet2", {
description = "Regnumhelmet Mode 2 (speed and no jump)\nHelmet-lv.MAX",
inventory_image = "3d_armor_inv_regnumhelmet.png^technic_tool_mode2.png",
groups = {armor_head=15.0, armor_heal=13, armor_use=0,armor_fire=1, physics_speed=0.25, armor_water=0.2},
groups = {armor_head=15.0, armor_heal=13, armor_use=0,armor_fire=1, physics_speed=0.25, armor_water=0.2, not_in_creative_inventory=1},
wear = 0,
wield_image = "3d_armor_inv_regnumhelmet.png",
on_use = function(itemstack, user, pointed_thing)
@ -710,7 +710,7 @@ minetest.register_tool("3d_armor:regnumhelmet2", {
minetest.register_tool("3d_armor:regnumhelmet3", {
description = "Regnumhelmet Mode 3 (no speed and jump)\nHelmet-lv.MAX",
inventory_image = "3d_armor_inv_regnumhelmet.png^technic_tool_mode3.png",
groups = {armor_head=15.0, armor_heal=13, armor_use=0,armor_fire=1, physics_jump=0.25, armor_water=0.2},
groups = {armor_head=15.0, armor_heal=13, armor_use=0,armor_fire=1, physics_jump=0.25, armor_water=0.2, not_in_creative_inventory=1},
wear = 0,
wield_image = "3d_armor_inv_regnumhelmet.png",
on_use = function(itemstack, user, pointed_thing)
@ -724,7 +724,7 @@ minetest.register_tool("3d_armor:regnumhelmet3", {
minetest.register_tool("3d_armor:regnumhelmet4", {
description = "Regnumhelmet Mode 4 (speed and jump)\nHelmet-lv.MAX",
inventory_image = "3d_armor_inv_regnumhelmet.png^technic_tool_mode4.png",
groups = {armor_head=15.0, armor_heal=13, armor_use=0,armor_fire=1, physics_jump=0.25, physics_speed=0.25, armor_water=0.2},
groups = {armor_head=15.0, armor_heal=13, armor_use=0,armor_fire=1, physics_jump=0.25, physics_speed=0.25, armor_water=0.2, not_in_creative_inventory=1},
wear = 0,
wield_image = "3d_armor_inv_regnumhelmet.png",
on_use = function(itemstack, user, pointed_thing)
@ -753,7 +753,7 @@ minetest.register_tool("3d_armor:regnumleggings", {
minetest.register_tool("3d_armor:regnumleggings2", {
description = "Regnumleggings Mode 2 (speed and no jump)\nLeggings-lv.MAX",
inventory_image = "3d_armor_inv_regnumleggings.png^technic_tool_mode2.png",
groups = {armor_legs=15.0, armor_heal=13, armor_use=0,armor_fire=1, physics_speed=0.25, armor_water=0.2},
groups = {armor_legs=15.0, armor_heal=13, armor_use=0,armor_fire=1, physics_speed=0.25, armor_water=0.2, not_in_creative_inventory=1},
wear = 0,
wield_image = "3d_armor_inv_regnumleggings.png",
on_use = function(itemstack, user, pointed_thing)
@ -767,7 +767,7 @@ minetest.register_tool("3d_armor:regnumleggings2", {
minetest.register_tool("3d_armor:regnumleggings3", {
description = "Regnumleggings Mode 3 (no speed and jump)\nLeggings-lv.MAX",
inventory_image = "3d_armor_inv_regnumleggings.png^technic_tool_mode3.png",
groups = {armor_legs=15.0, armor_heal=13, armor_use=0,armor_fire=1, physics_jump=0.25, armor_water=0.2},
groups = {armor_legs=15.0, armor_heal=13, armor_use=0,armor_fire=1, physics_jump=0.25, armor_water=0.2, not_in_creative_inventory=1},
wear = 0,
wield_image = "3d_armor_inv_regnumleggings.png",
on_use = function(itemstack, user, pointed_thing)
@ -781,7 +781,7 @@ minetest.register_tool("3d_armor:regnumleggings3", {
minetest.register_tool("3d_armor:regnumleggings4", {
description = "Regnumleggings Mode 4 (speed and jump)\nLeggings-lv.MAX",
inventory_image = "3d_armor_inv_regnumleggings.png^technic_tool_mode4.png",
groups = {armor_legs=15.0, armor_heal=13, armor_use=0,armor_fire=1, physics_jump=0.25, physics_speed=0.25, armor_water=0.2},
groups = {armor_legs=15.0, armor_heal=13, armor_use=0,armor_fire=1, physics_jump=0.25, physics_speed=0.25, armor_water=0.2, not_in_creative_inventory=1},
wear = 0,
wield_image = "3d_armor_inv_regnumleggings.png",
on_use = function(itemstack, user, pointed_thing)

View File

@ -44,7 +44,7 @@ minetest.register_tool("shields:shield_admin2", {
description = "Admin Shield Mode 2 (speed and no jump)",
inventory_image = "shields_inv_shield_admin.png^technic_tool_mode2.png",
wield_image = "shields_inv_shield_admin.png",
groups = {armor_shield=20, armor_heal=20, armor_use=0, armor_fire=1, physics_speed=0.25, armor_water=0.2},
groups = {armor_shield=20, armor_heal=20, armor_use=0, armor_fire=1, physics_speed=0.25, armor_water=0.2, not_in_creative_inventory=1},
wear = 0,
on_use = function(itemstack, user, pointed_thing)
local keys = user:get_player_control()
@ -59,7 +59,7 @@ minetest.register_tool("shields:shield_admin3", {
description = "Admin Shield Mode 3 (no speed and jump)",
inventory_image = "shields_inv_shield_admin.png^technic_tool_mode3.png",
wield_image = "shields_inv_shield_admin.png",
groups = {armor_shield=20, armor_heal=20, armor_use=0, armor_fire=1, physics_jump=0.25, armor_water=0.2},
groups = {armor_shield=20, armor_heal=20, armor_use=0, armor_fire=1, physics_jump=0.25, armor_water=0.2, not_in_creative_inventory=1},
wear = 0,
on_use = function(itemstack, user, pointed_thing)
local keys = user:get_player_control()
@ -74,7 +74,7 @@ minetest.register_tool("shields:shield_admin4", {
description = "Admin Shield Mode 4 (speed and jump)",
inventory_image = "shields_inv_shield_admin.png^technic_tool_mode4.png",
wield_image = "shields_inv_shield_admin.png",
groups = {armor_shield=20, armor_heal=20, armor_use=0, armor_fire=1, physics_jump=0.25, physics_speed=0.25, armor_water=0.2},
groups = {armor_shield=20, armor_heal=20, armor_use=0, armor_fire=1, physics_jump=0.25, physics_speed=0.25, armor_water=0.2, not_in_creative_inventory=1},
wear = 0,
on_use = function(itemstack, user, pointed_thing)
local keys = user:get_player_control()

View File

@ -1,14 +1,14 @@
minetest.register_tool("shields:shield", {
description = "Shield\nShield-lv.0",
inventory_image = "shields_inv_shield.png",
groups = {armor_shield=1, armor_heal=0, armor_use=0},
groups = {armor_shield=1, armor_heal=0, armor_use=0, not_in_creative_inventory=1},
wear = 0,
})
for i=1,20 do
minetest.register_tool("shields:shield_mega"..i, {
description = "Megashield lv."..i.."\nShield-lv."..i,
inventory_image = "shields_inv_shield_mega"..i..".png",
groups = {armor_shield=i*0.1, armor_heal=0, armor_use=0, armor_fire=0.005*i},
groups = {armor_shield=i*0.1, armor_heal=0, armor_use=0, armor_fire=0.005*i, not_in_creative_inventory=1},
wear = 0,
})
end
@ -16,7 +16,7 @@ for i=1,25 do
minetest.register_tool("shields:cloudshield_mega"..i, {
description = "Cloudshield lv."..i.."\nShield-lv."..(i+20),
inventory_image = "shields_inv_cloudshield_mega"..i..".png",
groups = {armor_shield=(20+i)*0.1, armor_heal=1, armor_use=0, armor_fire=0.005*(i+20)},
groups = {armor_shield=(20+i)*0.1, armor_heal=1, armor_use=0, armor_fire=0.005*(i+20), not_in_creative_inventory=1},
wear = 0,
})
end
@ -24,7 +24,7 @@ for i=1,4 do
minetest.register_tool("shields:supershield"..i, {
description = "Supershield lv."..i.."\nShield-lv."..(i+45),
inventory_image = "shields_inv_supershield"..i..".png",
groups = {armor_shield=(45+i)*0.1, armor_heal=2, armor_use=0, armor_fire=0.005*(i+45)},
groups = {armor_shield=(45+i)*0.1, armor_heal=2, armor_use=0, armor_fire=0.005*(i+45), not_in_creative_inventory=1},
wear = 0,
})
end
@ -32,7 +32,7 @@ for i=1,2 do
minetest.register_tool("shields:uraniumshield"..i, {
description = "Uraniumshield lv."..i.."\nShield-lv."..(i+49),
inventory_image = "shields_inv_uraniumshield"..i..".png",
groups = {armor_shield=(49+i)*0.1, armor_heal=3, armor_use=0, armor_fire=0.005*(i+49)},
groups = {armor_shield=(49+i)*0.1, armor_heal=3, armor_use=0, armor_fire=0.005*(i+49), not_in_creative_inventory=1},
wear = 0,
})
end
@ -40,7 +40,7 @@ for i=1,12 do
minetest.register_tool("shields:energyshield"..i, {
description = "Energyshield lv."..i.."\nShield-lv."..(i+51),
inventory_image = "shields_inv_energyshield"..i..".png",
groups = {armor_shield=(51+i)*0.1, armor_heal=4, armor_use=0, armor_fire=0.005*(i+51)},
groups = {armor_shield=(51+i)*0.1, armor_heal=4, armor_use=0, armor_fire=0.005*(i+51), not_in_creative_inventory=1},
wear = 0,
})
end
@ -48,7 +48,7 @@ for i=1,7 do
minetest.register_tool("shields:superenergyshield"..i, {
description = "Superenergyshield lv."..i.."\nShield-lv."..(i+63),
inventory_image = "shields_inv_superenergyshield"..i..".png",
groups = {armor_shield=(63+i)*0.1, armor_heal=5, armor_use=0, armor_fire=0.005*(i+63)},
groups = {armor_shield=(63+i)*0.1, armor_heal=5, armor_use=0, armor_fire=0.005*(i+63), not_in_creative_inventory=1},
wear = 0,
})
end
@ -56,7 +56,7 @@ for i=1,5 do
minetest.register_tool("shields:kristallshield"..i, {
description = "Crystalshield lv."..i.."\nShield-lv."..(i+70),
inventory_image = "shields_inv_kristallshield"..i..".png",
groups = {armor_shield=(70+i)*0.1, armor_heal=6, armor_use=0, armor_fire=0.005*(i+70)},
groups = {armor_shield=(70+i)*0.1, armor_heal=6, armor_use=0, armor_fire=0.005*(i+70), not_in_creative_inventory=1},
wear = 0,
})
end
@ -64,21 +64,21 @@ for i=1,25 do
minetest.register_tool("shields:ultrashield"..i, {
description = "Ultrashield lv."..i.."\nShield-lv."..(i+75),
inventory_image = "shields_inv_ultrashield"..i..".png",
groups = {armor_shield=(75+i)*0.1, armor_heal=7, armor_use=0, armor_fire=0.005*(i+75)},
groups = {armor_shield=(75+i)*0.1, armor_heal=7, armor_use=0, armor_fire=0.005*(i+75), not_in_creative_inventory=1},
wear = 0,
})
end
minetest.register_tool("shields:superultrashield", {
description = "Superultrashield\nShield-lv.101",
inventory_image = "shields_inv_superultrashield.png",
groups = {armor_shield=10.1, armor_heal=8, armor_use=0,armor_fire=0.505},
groups = {armor_shield=10.1, armor_heal=8, armor_use=0,armor_fire=0.505, not_in_creative_inventory=1},
wear = 0,
})
for i=1,4 do
minetest.register_tool("shields:arenashield"..i, {
description = "Arenashield lv."..i.."\nShield-lv."..(i+101),
inventory_image = "shields_inv_arenashield"..i..".png",
groups = {armor_shield=(101+i)*0.1, armor_heal=9, armor_use=0, armor_fire=0.005*(i+101)},
groups = {armor_shield=(101+i)*0.1, armor_heal=9, armor_use=0, armor_fire=0.005*(i+101), not_in_creative_inventory=1},
wear = 0,
})
end
@ -86,7 +86,7 @@ for i=1,10 do
minetest.register_tool("shields:titanshield"..i, {
description = "Titanshield lv."..i.."\nShield-lv."..(i+105),
inventory_image = "shields_inv_titanshield"..i..".png",
groups = {armor_shield=(105+i)*0.1, armor_heal=10, armor_use=0, armor_fire=0.005*(i+105)},
groups = {armor_shield=(105+i)*0.1, armor_heal=10, armor_use=0, armor_fire=0.005*(i+105), not_in_creative_inventory=1},
wear = 0,
})
end
@ -94,14 +94,14 @@ for i=1,6 do
minetest.register_tool("shields:legendenshield"..i, {
description = "Legendshield lv."..i.."\nShield-lv."..(i+115),
inventory_image = "shields_inv_legendenshield"..i..".png",
groups = {armor_shield=(115+i)*0.1, armor_heal=11, armor_use=0, armor_fire=0.005*(i+115)},
groups = {armor_shield=(115+i)*0.1, armor_heal=11, armor_use=0, armor_fire=0.005*(i+115), not_in_creative_inventory=1},
wear = 0,
})
end
minetest.register_tool("shields:superlegendenshield", {
description = "Superlegendshield Mode 1 (no speed and no jump)\nShield-lv.122",
inventory_image = "shields_inv_superlegendenshield.png^technic_tool_mode1.png",
groups = {armor_shield=12.2, armor_heal=12, armor_use=0,armor_fire=0.61, armor_water=0.2},
groups = {armor_shield=12.2, armor_heal=12, armor_use=0,armor_fire=0.61, armor_water=0.2, not_in_creative_inventory=1},
wear = 0,
wield_image = "shields_inv_superlegendenshield.png",
on_use = function(itemstack, user, pointed_thing)
@ -115,7 +115,7 @@ minetest.register_tool("shields:superlegendenshield", {
minetest.register_tool("shields:superlegendenshield2", {
description = "Superlegendshield Mode 2 (speed and no jump)\nShield-lv.122",
inventory_image = "shields_inv_superlegendenshield.png^technic_tool_mode2.png",
groups = {armor_shield=12.2, armor_heal=12, armor_use=0,armor_fire=0.61, physics_speed=0.25, armor_water=0.2},
groups = {armor_shield=12.2, armor_heal=12, armor_use=0,armor_fire=0.61, physics_speed=0.25, armor_water=0.2, not_in_creative_inventory=1},
wear = 0,
wield_image = "shields_inv_superlegendenshield.png",
on_use = function(itemstack, user, pointed_thing)
@ -129,7 +129,7 @@ minetest.register_tool("shields:superlegendenshield2", {
minetest.register_tool("shields:superlegendenshield3", {
description = "Superlegendshield Mode 3 (no speed and jump)\nShield-lv.122",
inventory_image = "shields_inv_superlegendenshield.png^technic_tool_mode3.png",
groups = {armor_shield=12.2, armor_heal=12, armor_use=0,armor_fire=0.61, physics_jump=0.25, armor_water=0.2},
groups = {armor_shield=12.2, armor_heal=12, armor_use=0,armor_fire=0.61, physics_jump=0.25, armor_water=0.2, not_in_creative_inventory=1},
wear = 0,
wield_image = "shields_inv_superlegendenshield.png",
on_use = function(itemstack, user, pointed_thing)
@ -143,7 +143,7 @@ minetest.register_tool("shields:superlegendenshield3", {
minetest.register_tool("shields:superlegendenshield4", {
description = "Superlegendshield Mode 4 (speed and jump)\nShield-lv.122",
inventory_image = "shields_inv_superlegendenshield.png^technic_tool_mode4.png",
groups = {armor_shield=12.2, armor_heal=12, armor_use=0,armor_fire=0.61, physics_jump=0.25, physics_speed=0.25, armor_water=0.2},
groups = {armor_shield=12.2, armor_heal=12, armor_use=0,armor_fire=0.61, physics_jump=0.25, physics_speed=0.25, armor_water=0.2, not_in_creative_inventory=1},
wear = 0,
wield_image = "shields_inv_superlegendenshield.png",
on_use = function(itemstack, user, pointed_thing)
@ -172,7 +172,7 @@ minetest.register_tool("shields:regnumshield", {
minetest.register_tool("shields:regnumshield2", {
description = "Regnumshield Mode 2 (speed and no jump)\nShield-lv.MAX",
inventory_image = "shields_inv_regnumshield.png^technic_tool_mode2.png",
groups = {armor_shield=15.0, armor_heal=13, armor_use=0,armor_fire=1, physics_speed=0.25, armor_water=0.2},
groups = {armor_shield=15.0, armor_heal=13, armor_use=0,armor_fire=1, physics_speed=0.25, armor_water=0.2, not_in_creative_inventory=1},
wear = 0,
wield_image = "shields_inv_regnumshield.png",
on_use = function(itemstack, user, pointed_thing)
@ -186,7 +186,7 @@ minetest.register_tool("shields:regnumshield2", {
minetest.register_tool("shields:regnumshield3", {
description = "Regnumshield Mode 3 (no speed and jump)\nShield-lv.MAX",
inventory_image = "shields_inv_regnumshield.png^technic_tool_mode3.png",
groups = {armor_shield=15.0, armor_heal=13, armor_use=0,armor_fire=1, physics_jump=0.25, armor_water=0.2},
groups = {armor_shield=15.0, armor_heal=13, armor_use=0,armor_fire=1, physics_jump=0.25, armor_water=0.2, not_in_creative_inventory=1},
wear = 0,
wield_image = "shields_inv_regnumshield.png",
on_use = function(itemstack, user, pointed_thing)
@ -200,7 +200,7 @@ minetest.register_tool("shields:regnumshield3", {
minetest.register_tool("shields:regnumshield4", {
description = "Regnumshield Mode 4 (speed and jump)\nShield-lv.MAX",
inventory_image = "shields_inv_regnumshield.png^technic_tool_mode4.png",
groups = {armor_shield=15.0, armor_heal=13, armor_use=0,armor_fire=1, physics_jump=0.25, physics_speed=0.25, armor_water=0.2},
groups = {armor_shield=15.0, armor_heal=13, armor_use=0,armor_fire=1, physics_jump=0.25, physics_speed=0.25, armor_water=0.2, not_in_creative_inventory=1},
wear = 0,
wield_image = "shields_inv_regnumshield.png",
on_use = function(itemstack, user, pointed_thing)

View File

@ -76,7 +76,7 @@ minetest.register_globalstep(function(dtime)
elseif i < 91 then
g = 7650+(i-85)*18*10
elseif i < 96 then
g = 8500+(i-90)*19*10
g = 8550+(i-90)*19*10
elseif i < 101 then
g = 9500+(i-95)*20*10
end
@ -124,7 +124,7 @@ minetest.register_globalstep(function(dtime)
if (new_xp >= g) then
vv = i
end
if (new_xp >= 11949) then
if (new_xp >= 11950) then
vv = 101
end
if i == 100 then
@ -241,7 +241,6 @@ minetest.register_globalstep(function(dtime)
to_player = player:get_player_name(),
})
end
end
if new_xp == 2750 then
player_inv:set_size("xpi01", 15)

View File

@ -80,7 +80,7 @@ minetest.register_globalstep(function(dtime)
elseif i < 101 then
c = 10
end
if i == (10 or 20 or 30 or 40 or 50 or 60 or 70 or 80 or 90) then
if i == 10 or i == 20 or i == 30 or i == 40 or i == 50 or i == 60 or i == 70 or i == 80 or i == 90 then
h = 1
else
h = 0

339
mods/helicopter/LICENSE Normal file
View File

@ -0,0 +1,339 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc., <http://fsf.org/>
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
{description}
Copyright (C) {year} {fullname}
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
{signature of Ty Coon}, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.

18
mods/helicopter/README.md Normal file
View File

@ -0,0 +1,18 @@
Minetest 5.1-dev+ mod: Simple helicopter
=======================
originally by Pavel_S
reworked by DS-minetest
License of source code:
-----------------------
original code by Pavel_S: GPL_v2
changes by DS-minetest: TODO
`matrix.lua` file: CC0
License of media (textures and sounds):
---------------------------------------
helicopter_motor.ogg by Robinhood76 | License: Attribution Noncommercial
textures and model are probably by Pavel_S, TODO

View File

@ -0,0 +1,3 @@
player_api
default?
creative?

273
mods/helicopter/init.lua Normal file
View File

@ -0,0 +1,273 @@
--
-- constants
--
local tilting_speed = 1
local tilting_max = 0.5
local power_max = 20
local power_min = 0.2 -- if negative, the helicopter can actively fly downwards
local wanted_vert_speed = 10
local friction_air_quadratic = 0.01
local friction_air_constant = 0.2
local friction_land_quadratic = 1
local friction_land_constant = 2
local friction_water_quadratic = 0.1
local friction_water_constant = 1
--
-- helpers and co.
--
if not minetest.global_exists("matrix3") then
dofile(minetest.get_modpath("helicopter") .. DIR_DELIM .. "matrix.lua")
end
local creative_exists = minetest.global_exists("creative")
local gravity = tonumber(minetest.settings:get("movement_gravity")) or 9.8
local vector_up = vector.new(0, 1, 0)
local vector_forward = vector.new(0, 0, 1)
local function vector_length_sq(v)
return v.x * v.x + v.y * v.y + v.z * v.z
end
local function check_node_below(obj)
local pos_below = obj:get_pos()
pos_below.y = pos_below.y - 0.1
local node_below = minetest.get_node(pos_below).name
local nodedef = minetest.registered_nodes[node_below]
local touching_ground = not nodedef or -- unknown nodes are solid
nodedef.walkable or false
local liquid_below = not touching_ground and nodedef.liquidtype ~= "none"
return touching_ground, liquid_below
end
local function heli_control(self, dtime, touching_ground, liquid_below, vel_before)
local driver = minetest.get_player_by_name(self.driver_name)
if not driver then
-- there is no driver (eg. because driver left)
self.driver_name = nil
if self.sound_handle then
minetest.sound_stop(self.sound_handle)
self.sound_handle = nil
end
self.object:set_animation_frame_speed(0)
-- gravity
self.object:set_acceleration(vector.multiply(vector_up, -gravity))
return
end
local ctrl = driver:get_player_control()
local rot = self.object:get_rotation()
local vert_vel_goal = 0
if not liquid_below then
if ctrl.jump then
vert_vel_goal = vert_vel_goal + wanted_vert_speed
end
if ctrl.sneak then
vert_vel_goal = vert_vel_goal - wanted_vert_speed
end
else
vert_vel_goal = wanted_vert_speed
end
-- rotation
if not touching_ground then
local tilting_goal = vector.new()
if ctrl.up then
tilting_goal.z = tilting_goal.z + 1
end
if ctrl.down then
tilting_goal.z = tilting_goal.z - 1
end
if ctrl.right then
tilting_goal.x = tilting_goal.x + 1
end
if ctrl.left then
tilting_goal.x = tilting_goal.x - 1
end
tilting_goal = vector.multiply(vector.normalize(tilting_goal), tilting_max)
-- tilting
if vector_length_sq(vector.subtract(tilting_goal, self.tilting)) > (dtime * tilting_speed)^2 then
self.tilting = vector.add(self.tilting,
vector.multiply(vector.direction(self.tilting, tilting_goal), dtime * tilting_speed))
else
self.tilting = tilting_goal
end
if vector_length_sq(self.tilting) > tilting_max^2 then
self.tilting = vector.multiply(vector.normalize(self.tilting), tilting_max)
end
local new_up = vector.new(self.tilting)
new_up.y = 1
new_up = vector.normalize(new_up) -- this is what vector_up should be after the rotation
local new_right = vector.cross(new_up, vector_forward)
local new_forward = vector.cross(new_right, new_up)
local rot_mat = matrix3.new(
new_right.x, new_up.x, new_forward.x,
new_right.y, new_up.y, new_forward.y,
new_right.z, new_up.z, new_forward.z
)
rot = matrix3.to_pitch_yaw_roll(rot_mat)
rot.y = driver:get_look_horizontal()
else
rot.x = 0
rot.z = 0
self.tilting.x = 0
self.tilting.z = 0
end
self.object:set_rotation(rot)
-- calculate how strong the heli should accelerate towards rotated up
local power = vert_vel_goal - vel_before.y + gravity * dtime
power = math.min(math.max(power, power_min * dtime), power_max * dtime)
local rotated_up = matrix3.multiply(matrix3.from_pitch_yaw_roll(rot), vector_up)
local added_vel = vector.multiply(rotated_up, power)
added_vel = vector.add(added_vel, vector.multiply(vector_up, -gravity * dtime))
return vector.add(vel_before, added_vel)
end
--
-- entity
--
minetest.register_entity("helicopter:heli", {
initial_properties = {
physical = true,
collide_with_objects = true,
collisionbox = {-1,0,-1, 1,0.3,1},
selectionbox = {-1,0,-1, 1,0.3,1},
visual = "mesh",
mesh = "helicopter_heli.x",
textures = {"helicopter_blades.png", "helicopter_blades.png",
"helicopter_heli.png", "helicopter_glass.png"},
},
driver_name = nil,
sound_handle = nil,
tilting = vector.new(),
on_activate = function(self)
-- set the animation once and later only change the speed
self.object:set_animation({x = 0, y = 11}, 0, 0, true)
self.object:set_armor_groups({immortal=1})
self.object:set_acceleration(vector.multiply(vector_up, -gravity))
end,
on_step = function(self, dtime)
local touching_ground, liquid_below
local vel = self.object:get_velocity()
if self.driver_name then
touching_ground, liquid_below = check_node_below(self.object)
vel = heli_control(self, dtime, touching_ground, liquid_below, vel) or vel
end
if vel.x == 0 and vel.y == 0 and vel.z == 0 then
return
end
if touching_ground == nil then
touching_ground, liquid_below = check_node_below(self.object)
end
-- quadratic and constant deceleration
local speedsq = vector_length_sq(vel)
local fq, fc
if touching_ground then
fq, fc = friction_land_quadratic, friction_land_constant
elseif liquid_below then
fq, fc = friction_water_quadratic, friction_water_constant
else
fq, fc = friction_air_quadratic, friction_air_constant
end
vel = vector.apply(vel, function(a)
local s = math.sign(a)
a = math.abs(a)
a = math.max(0, a - fq * dtime * speedsq - fc * dtime)
return a * s
end)
self.object:set_velocity(vel)
end,
on_punch = function(self, puncher)
if not puncher or not puncher:is_player() then
return
end
local name = puncher:get_player_name()
if self.driver_name and self.driver_name ~= name then
-- do not allow other players to remove the object while there is a driver
return
end
if self.sound_handle then
minetest.sound_stop(self.sound_handle)
self.sound_handle = nil
end
if self.driver_name then
-- detach the driver first (puncher must be driver)
puncher:set_detach()
player_api.player_attached[name] = nil
-- player should stand again
player_api.set_animation(puncher, "stand")
self.driver_name = nil
end
self.object:remove()
minetest.handle_node_drops(self.object:get_pos(), {"tutorial:heli"}, puncher)
end,
on_rightclick = function(self, clicker)
if not clicker or not clicker:is_player() then
return
end
local name = clicker:get_player_name()
if name == self.driver_name then
-- driver clicked the object => driver gets off the vehicle
self.driver_name = nil
-- sound and animation
minetest.sound_stop(self.sound_handle)
self.sound_handle = nil
self.object:set_animation_frame_speed(0)
-- detach the player
clicker:set_detach()
player_api.player_attached[name] = nil
-- player should stand again
player_api.set_animation(clicker, "stand")
-- gravity
self.object:set_acceleration(vector.multiply(vector_up, -gravity))
elseif not self.driver_name then
-- no driver => clicker is new driver
self.driver_name = name
-- sound and animation
self.sound_handle = minetest.sound_play({name = "helicopter_motor"},
{object = self.object, gain = 2.0, max_hear_distance = 32, loop = true,})
self.object:set_animation_frame_speed(30)
-- attach the driver
clicker:set_attach(self.object, "", {x = 0, y = 6.7, z = -4}, {x = 0, y = 0, z = 0})
player_api.player_attached[name] = true
-- make the driver sit
minetest.after(0.2, function()
local player = minetest.get_player_by_name(name)
if player then
player_api.set_animation(player, "sit")
end
end)
-- disable gravity
self.object:set_acceleration(vector.new())
end
end,
})

199
mods/helicopter/matrix.lua Normal file
View File

@ -0,0 +1,199 @@
-- everything in this file is licensed under CC0
-- see also minetest PR #8515
matrix3 = {}
function matrix3.new(a, ...)
if not a then
return {0, 0, 0, 0, 0, 0, 0, 0, 0}
elseif type(a) ~= "table" then
return {a, ...}
else
return {a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9]}
end
end
matrix3.identity = {1, 0, 0, 0, 1, 0, 0, 0, 1}
function matrix3.apply(m, func)
local mr = {}
for i = 1, 9 do
mr[i] = func(m[i])
end
return mr
end
function matrix3.equals(m1, m2)
for i = 1, 9 do
if m1[i] ~= m2[i] then
return false
end
end
return true
end
function matrix3.index(m, l, c)
return m[(l - 1) * 3 + c]
end
function matrix3.add(m1, m2)
local m3 = {}
for i = 1, 9 do
m3[i] = m1[i] + m2[i]
end
return m3
end
local function multiply_matrix3_scalar(m, a)
local mr = {}
for i = 1, 9 do
mr[i] = m[i] * a
end
return mr
end
local function multiply_matrix3_vector(m1, v)
return {
x = m1[1] * v.x + m1[2] * v.y + m1[3] * v.z,
y = m1[4] * v.x + m1[5] * v.y + m1[6] * v.z,
z = m1[7] * v.x + m1[8] * v.y + m1[9] * v.z,
}
end
function matrix3.multiply(m1, m2)
if type(m2) ~= "table" then
return multiply_matrix3_scalar(m1, m2)
elseif m2.x then
return multiply_matrix3_vector(m1, m2)
end
local m3 = {}
for l = 1, 3 do
for c = 1, 3 do
local i = (l - 1) * 3 + c
m3[i] = 0
for k = 1, 3 do
m3[i] = m3[i] + m1[(l - 1) * 3 + k] * m2[(k - 1) * 3 + c]
end
end
end
return m3
end
function matrix3.tensor_multiply(a, b)
local m1 = matrix3.new()
m1[1] = a.x
m1[4] = a.y
m1[7] = a.z
local m2 = matrix3.new()
m2[1] = a.x
m2[2] = a.y
m2[3] = a.z
return matrix3.multiply(m1, m2)
end
function matrix3.transpose(m)
return {m[1], m[4], m[7],
m[2], m[5], m[8],
m[3], m[6], m[9]}
end
function matrix3.determinant(m)
return m[1] * (m[5] * m[9] - m[6] * m[8])
+ m[2] * (m[6] * m[7] - m[4] * m[9])
+ m[3] * (m[4] * m[8] - m[5] * m[7])
end
function matrix3.invert(a)
local t11 = a[5] * a[9] - a[6] * a[8]
local t12 = a[6] * a[7] - a[4] * a[9]
local t13 = a[4] * a[8] - a[5] * a[7]
local det = a[1] * t11 + a[2] * t12 + a[3] * t13
if det == 0 then
return false -- there is no inverted
end
local b = {
t11 / det, (a[3]*a[8] - a[2]*a[9]) / det, (a[2]*a[6] - a[3]*a[5]) / det,
t12 / det, (a[1]*a[9] - a[3]*a[7]) / det, (a[3]*a[4] - a[1]*a[6]) / det,
t13 / det, (a[2]*a[7] - a[1]*a[8]) / det, (a[1]*a[5] - a[2]*a[4]) / det
}
return b
end
local function sin(x)
if x % math.pi == 0 then
return 0
else
return math.sin(x)
end
end
local function cos(x)
if x % math.pi == math.pi / 2 then
return 0
else
return math.cos(x)
end
end
function matrix3.rotation_around_x(angle)
local s = sin(angle)
local c = cos(angle)
return {1, 0, 0,
0, c, -s,
0, s, c}
end
function matrix3.rotation_around_y(angle)
local s = sin(angle)
local c = cos(angle)
return { c, 0, s,
0, 1, 0,
-s, 0, c}
end
function matrix3.rotation_around_z(angle)
local s = sin(angle)
local c = cos(angle)
return {c, -s, 0,
s, c, 0,
0, 0, 1}
end
function matrix3.rotation_around_vector(v, angle)
local length_v = vector.length(v)
v = vector.divide(v, length_v)
angle = angle or length_v
local s = sin(angle)
local c = cos(angle)
local omc = 1 - c
return {
v.x * v.x * omc + c, v.x * v.y * omc - v.z * s, v.x * v.z * omc + v.y * s,
v.y * v.x * omc + v.z * s, v.y * v.y * omc + c, v.y * v.z * omc - v.x * s,
v.z * v.x * omc - v.y * s, v.z * v.y * omc + v.x * s, v.z * v.z * omc + c
}
end
function matrix3.to_pitch_yaw_roll(m)
local r = vector.new()
r.y = math.atan2(-m[3], m[9])
local c2 = math.sqrt(m[4]^2 + m[5]^2)
r.x = math.atan2(m[6], c2)
local s1 = sin(r.y)
local c1 = cos(r.y)
r.z = math.atan2(s1 * m[8] + c1 * m[2], s1 * m[7] + c1 * m[1])
return r
end
function matrix3.from_pitch_yaw_roll(v)
local sx, cx = sin(v.x), cos(v.x)
local sy, cy = sin(v.y), cos(v.y)
local sz, cz = sin(v.z), cos(v.z)
return {
-sy * sx * sz + cy * cz, cz * sy * sx + cy * sz, -cx * sy,
-cx * sz, cx * cz, sx,
cy * sx * sz + cz * sy, -cy * cz * sx + sy * sz, cy * cx
}
end

3
mods/helicopter/mod.conf Normal file
View File

@ -0,0 +1,3 @@
name = helicopter
depends = player_api
optional_depends = default, creative

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 179 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 239 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 461 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 248 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 327 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 205 B

View File

@ -70,6 +70,8 @@ for more information.
* `format_string_config`: Required if `format_string` is set. This allows to change which parameters to use in the format string. It's a table with these fields:
* `textdomain`: Text domain of the format string, used by `minetest.translate`
* `order`: Table that contains the order of the placeholders. It's also possible to remove placeholders. Default order: `{ "label", "value", "max_value" }`
* `format_value`: Format string to apply when displaying `value`. Syntax is same as in `string.format`. Default: `"%d"`
* `format_max_value`: Same as `format_value` but is applied to `max_value`
#### Example
Example (mostly) from `hbarmor` mod:

View File

@ -11,7 +11,7 @@ this mod will place them accordingly.
position should be displayed correctly on every screen size.
## Current version
The current version is 2.0.0.
The current version is 2.1.0.
This software uses [semantic versioning](http://semver.org), as defined by version 2.0.0 of the SemVer
standard.

View File

@ -58,9 +58,17 @@ local function make_label(format_string, format_string_config, label, start_valu
if order[o] == "label" then
table.insert(params, label)
elseif order[o] == "value" then
table.insert(params, start_value)
if format_string_config.format_value then
table.insert(params, string.format(format_string_config.format_value, start_value))
else
table.insert(params, start_value)
end
elseif order[o] == "max_value" then
table.insert(params, max_value)
if format_string_config.format_max_value then
table.insert(params, string.format(format_string_config.format_max_value, max_value))
else
table.insert(params, max_value)
end
end
end
local ret
@ -148,7 +156,16 @@ function hb.register_hudbar(identifier, text_color, label, textures, default_sta
format_string = N("@1: @2/@3")
end
if format_string_config == nil then
format_string_config = { order = { "label", "value", "max_value" } }
format_string_config = {}
end
if format_string_config.order == nil then
format_string_config.order = { "label", "value", "max_value" }
end
if format_string_config.format_value == nil then
format_string_config.format_value = "%d"
end
if format_string_config.format_max_value == nil then
format_string_config.format_max_value = "%d"
end
hudtable.add_all = function(player, hudtable, start_value, start_max, start_hidden)
@ -196,7 +213,6 @@ function hb.register_hudbar(identifier, text_color, label, textures, default_sta
end
elseif hb.settings.bar_type == "statbar_modern" then
if textures.bgicon ~= nil then
ids.bg = player:hud_add({
hud_elem_type = "statbar",
position = pos,
@ -212,23 +228,24 @@ function hb.register_hudbar(identifier, text_color, label, textures, default_sta
local bar_image, bar_size
if hb.settings.bar_type == "progress_bar" then
bar_image = textures.bar
bar_size = {x=3, y=22}
-- NOTE: Intentionally set to nil. For some reason, on some systems,
-- the progress bar is displaced when the bar_size is set explicitly here.
-- On the other hand, setting this to nil is deprecated in MT 5.0.0 due to
-- a debug log warning, but nothing is explained in lua_api.txt.
-- This section is a potential bug magnet, please watch with care!
-- The size of the bar image is expected to be exactly 2×16 pixels.
bar_size = nil
elseif hb.settings.bar_type == "statbar_classic" or hb.settings.bar_type == "statbar_modern" then
bar_image = textures.icon
bar_size = {x=24, y=24}
end
if offset.x == 15 then
offset2 = { x = offset.x+5, y = offset.y-29 }
else
offset2 = { x = offset.x-59, y = offset.y-29 }
end
ids.bar = player:hud_add({
hud_elem_type = "statbar",
position = pos,
text = bar_image,
number = barnumber,
alignment = {x=-1,y=-1},
offset = offset2,
offset = offset,
direction = 0,
size = bar_size,
})
@ -240,7 +257,7 @@ function hb.register_hudbar(identifier, text_color, label, textures, default_sta
alignment = {x=1,y=1},
number = text_color,
direction = 0,
offset = { x = offset.x + 2, y = offset.y + 1},
offset = { x = offset.x + 2, y = offset.y - 1},
})
end
-- Do not forget to update hb.get_hudbar_state if you add new fields to the state table

View File

@ -1,12 +1,12 @@
local sound_time = 0
local sound_play_on = 0
local sound_play_regnum = nil
local sound_play_regnum = {}
local inst_list = {}
minetest.register_globalstep(function(dtime)
if sound_play_on == 0 then
sound_play_on = 1
inst_list = {}
for _,player in ipairs(minetest.get_connected_players()) do
inst_list = {}
local player_inv = player:get_inventory()
local inst1 = player_inv:get_stack("inst", 1):get_count()
local inst2 = player_inv:get_stack("inst", 2):get_count()
@ -20,8 +20,8 @@ minetest.register_globalstep(function(dtime)
local inst = inst_list[ math.random(#inst_list)]
local music = player_inv:get_stack("music", 1):get_count()
if music == 1 then
sound_play_regnum = minetest.sound_play(inst, {
to_player = player,
sound_play_regnum[player:get_player_name()] = minetest.sound_play(inst, {
to_player = player:get_player_name(),
})
end
end
@ -93,6 +93,9 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
local inst2 = player_inv:get_stack("inst", 2):get_count()
if inst1 == 0 and inst2 == 0 then
player_inv:set_stack("music", 1, nil)
if sound_play_regnum[player:get_player_name()] ~= nil then
minetest.sound_stop(sound_play_regnum[player:get_player_name()])
end
end
inventory_plus.set_inventory_formspec(player, set.get_formspec(player))
end
@ -107,6 +110,9 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
local inst2 = player_inv:get_stack("inst", 2):get_count()
if inst1 == 0 and inst2 == 0 then
player_inv:set_stack("music", 1, nil)
if sound_play_regnum[player:get_player_name()] ~= nil then
minetest.sound_stop(sound_play_regnum[player:get_player_name()])
end
end
inventory_plus.set_inventory_formspec(player, set.get_formspec(player))
end
@ -118,8 +124,8 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
player_inv:set_stack("inst", 2, nil)
else
player_inv:set_stack("music", 1, nil)
if sound_play_regnum ~= nil then
minetest.sound_stop(sound_play_regnum)
if sound_play_regnum[player:get_player_name()] ~= nil then
minetest.sound_stop(sound_play_regnum[player:get_player_name()])
end
end
inventory_plus.set_inventory_formspec(player, set.get_formspec(player))

View File

@ -145,14 +145,14 @@ inventory_plus.get_formspec = function(player,page)
return formspec
end
-- craft page
if page=="main" then
if page=="main" or page==""then
if minetest.setting_getbool("creative_mode") then
sfinv.set_player_inventory_formspec(player)
return player:get_inventory_formspec()
--.. get_buttons(6,0,2)
else
return inventory_plus.inventory[player:get_player_name()]
.. get_buttons(0,0,3)
--.. get_buttons(0,0,3)
end
end
end

View File

@ -743,9 +743,10 @@ function mob_class:check_for_death(cmi_cause)
if use_cmi then
cmi.notify_die(self.object, cmi_cause)
end
self.object:remove()
if self.name == "mobs:dog" or self.name == "mobs:cat" or self.name == "mobs:sheep" or self.name == "mobs:dragon" or self.name == "mobs:knight_1248" or self.name == "mobs:fox" or self.name == "mobs:tortoise" then
else
self.object:remove()
end
return true
end
@ -772,16 +773,20 @@ function mob_class:check_for_death(cmi_cause)
if use_cmi and self.object:get_luaentity() then
cmi.notify_die(self.object, cmi_cause)
end
self.object:remove()
if self.name == "mobs:dog" or self.name == "mobs:cat" or self.name == "mobs:sheep" or self.name == "mobs:dragon" or self.name == "mobs:knight_1248" or self.name == "mobs:fox" or self.name == "mobs:tortoise" then
else
self.object:remove()
end
end, self)
else
if use_cmi then
cmi.notify_die(self.object, cmi_cause)
end
self.object:remove()
if self.name == "mobs:dog" or self.name == "mobs:cat" or self.name == "mobs:sheep" or self.name == "mobs:dragon" or self.name == "mobs:knight_1248" or self.name == "mobs:fox" or self.name == "mobs:tortoise" then
else
self.object:remove()
end
end
effect(pos, 20, "tnt_smoke.png")
@ -853,23 +858,26 @@ function mob_class:do_env_damage()
-- remove mob if standing inside ignore node
if self.standing_in == "ignore" then
self.object:remove()
if self.name == "mobs:dog" or self.name == "mobs:cat" or self.name == "mobs:sheep" or self.name == "mobs:dragon" or self.name == "mobs:knight_1248" or self.name == "mobs:fox" or self.name == "mobs:tortoise" then
else
self.object:remove()
end
return
end
-- is mob light sensative, or scared of the dark :P
if self.light_damage ~= 0 then
local light = minetest.get_node_light(pos) or 0
if light >= self.light_damage_min
and light <= self.light_damage_max then
self.health = self.health - self.light_damage
effect(pos, 5, "tnt_smoke.png")
if self:check_for_death({type = "light"}) then return end
if self.name == "mobs:dog" or self.name == "mobs:cat" or self.name == "mobs:sheep" or self.name == "mobs:dragon" or self.name == "mobs:knight_1248" or self.name == "mobs:fox" or self.name == "mobs:tortoise" then
else
self.health = self.health - self.light_damage
effect(pos, 5, "tnt_smoke.png")
if self:check_for_death({type = "light"}) then
return
end
end
end
end
@ -880,43 +888,45 @@ function mob_class:do_env_damage()
-- water
if self.water_damage
and nodef.groups.water then
if self.water_damage ~= 0 then
if self.name == "mobs:dog" or self.name == "mobs:cat" or self.name == "mobs:sheep" or self.name == "mobs:dragon" or self.name == "mobs:knight_1248" or self.name == "mobs:fox" or self.name == "mobs:tortoise" then
else
self.health = self.health - self.water_damage
effect(pos, 5, "bubble.png", nil, nil, 1, nil)
if self:check_for_death({type = "environment",pos = pos, node = self.standing_in}) then
return
end
end
self.health = self.health - self.water_damage
effect(pos, 5, "bubble.png", nil, nil, 1, nil)
if self:check_for_death({type = "environment",
pos = pos, node = self.standing_in}) then return end
end
-- lava or fire or ignition source
elseif self.lava_damage
and nodef.groups.igniter then
-- and (nodef.groups.lava
-- or self.standing_in == node_fire
-- or self.standing_in == node_permanent_flame) then
if self.lava_damage ~= 0 then
self.health = self.health - self.lava_damage
effect(pos, 5, "fire_basic_flame.png", nil, nil, 1, nil)
if self:check_for_death({type = "environment",
pos = pos, node = self.standing_in, hot = true}) then return end
if self.name == "mobs:dog" or self.name == "mobs:cat" or self.name == "mobs:sheep" or self.name == "mobs:dragon" or self.name == "mobs:knight_1248" or self.name == "mobs:fox" or self.name == "mobs:tortoise" then
else
self.health = self.health - self.lava_damage
effect(pos, 5, "fire_basic_flame.png", nil, nil, 1, nil)
if self:check_for_death({type = "environment",pos = pos, node = self.standing_in, hot = true}) then
return
end
end
end
-- damage_per_second node check
elseif nodef.damage_per_second ~= 0 then
self.health = self.health - nodef.damage_per_second
effect(pos, 5, "tnt_smoke.png")
if self:check_for_death({type = "environment",
pos = pos, node = self.standing_in}) then return end
if self.name == "mobs:dog" or self.name == "mobs:cat" or self.name == "mobs:sheep" or self.name == "mobs:dragon" or self.name == "mobs:knight_1248" or self.name == "mobs:fox" or self.name == "mobs:tortoise" then
else
self.health = self.health - nodef.damage_per_second
effect(pos, 5, "tnt_smoke.png")
if self:check_for_death({type = "environment",pos = pos, node = self.standing_in}) then
return
end
end
end
--[[
--- suffocation inside solid node
@ -2218,9 +2228,10 @@ function mob_class:do_states(dtime)
node_break_radius = 1
end
self.object:remove()
if self.name == "mobs:dog" or self.name == "mobs:cat" or self.name == "mobs:sheep" or self.name == "mobs:dragon" or self.name == "mobs:knight_1248" or self.name == "mobs:fox" or self.name == "mobs:tortoise" then
else
self.object:remove()
end
if minetest.get_modpath("tnt") and tnt and tnt.boom
and not minetest.is_protected(pos, "") then
@ -2532,16 +2543,16 @@ function mob_class:falling(pos)
local d = (self.old_y or 0) - self.object:get_pos().y
if d > 5 then
self.health = self.health - floor(d - 5)
effect(pos, 5, "tnt_smoke.png", 1, 2, 2, nil)
if self:check_for_death({type = "fall"}) then
return
if self.name == "mobs:dog" or self.name == "mobs:cat" or self.name == "mobs:sheep" or self.name == "mobs:dragon" or self.name == "mobs:knight_1248" or self.name == "mobs:fox" or self.name == "mobs:tortoise" then
else
self.health = self.health - floor(d - 5)
effect(pos, 5, "tnt_smoke.png", 1, 2, 2, nil)
if self:check_for_death({type = "fall"}) then
return
end
end
end
self.old_y = self.object:get_pos().y
end
end
@ -2837,8 +2848,10 @@ function mob_class:get_staticdata()
and self.lifetimer < 20000 then
--print ("REMOVED " .. self.name)
self.object:remove()
if self.name == "mobs:dog" or self.name == "mobs:cat" or self.name == "mobs:sheep" or self.name == "mobs:dragon" or self.name == "mobs:knight_1248" or self.name == "mobs:fox" or self.name == "mobs:tortoise" then
else
self.object:remove()
end
return ""-- nil
end
@ -2883,8 +2896,10 @@ function mob_class:mob_activate(staticdata, def, dtime)
-- remove monsters in peaceful mode
if self.type == "monster"
and peaceful_only then
self.object:remove()
if self.name == "mobs:dog" or self.name == "mobs:cat" or self.name == "mobs:sheep" or self.name == "mobs:dragon" or self.name == "mobs:knight_1248" or self.name == "mobs:fox" or self.name == "mobs:tortoise" then
else
self.object:remove()
end
return
end
@ -3187,8 +3202,10 @@ function mob_class:mob_expire(pos, dtime)
-- S("lifetimer expired, removed @1", self.name))
effect(pos, 15, "tnt_smoke.png", 2, 4, 2, 0)
self.object:remove()
if self.name == "mobs:dog" or self.name == "mobs:cat" or self.name == "mobs:sheep" or self.name == "mobs:dragon" or self.name == "mobs:knight_1248" or self.name == "mobs:fox" or self.name == "mobs:tortoise" then
else
self.object:remove()
end
return
end
@ -3198,15 +3215,10 @@ end
-- main mob function
function mob_class:on_step(dtime)
self.metadata3 = self.metadata3 + dtime
self.metadata3 = self.metadata3 + dtime
if self.metadata3 > 1 then
self.metadata3 = 0
if self.name == "mobs:dog" then
if self.owner and minetest.get_player_by_name(self.owner) then
minetest.get_player_by_name(self.owner):set_attribute("dogx", ""..math.floor(self.object:getpos().x+0.5))
minetest.get_player_by_name(self.owner):set_attribute("dogy", ""..math.floor(self.object:getpos().y+0.5))
minetest.get_player_by_name(self.owner):set_attribute("dogz", ""..math.floor(self.object:getpos().z+0.5))
end
local pos = self.object:getpos()
if minetest.get_player_by_name(self.owner) then
local inv = minetest.get_player_by_name(self.owner):get_inventory()
@ -3224,11 +3236,6 @@ self.metadata3 = self.metadata3 + dtime
end
end
if self.name == "mobs:cat" then
if self.owner and minetest.get_player_by_name(self.owner) then
minetest.get_player_by_name(self.owner):set_attribute("catx", ""..math.floor(self.object:getpos().x+0.5))
minetest.get_player_by_name(self.owner):set_attribute("caty", ""..math.floor(self.object:getpos().y+0.5))
minetest.get_player_by_name(self.owner):set_attribute("catz", ""..math.floor(self.object:getpos().z+0.5))
end
local pos = self.object:getpos()
if minetest.get_player_by_name(self.owner) then
local inv = minetest.get_player_by_name(self.owner):get_inventory()
@ -3245,304 +3252,316 @@ self.metadata3 = self.metadata3 + dtime
end
end
end
if self.name == "mobs:dragon" then
if self.owner and minetest.get_player_by_name(self.owner) then
minetest.get_player_by_name(self.owner):set_attribute("dragonx", ""..math.floor(self.object:getpos().x+0.5))
minetest.get_player_by_name(self.owner):set_attribute("dragony", ""..math.floor(self.object:getpos().y+0.5))
minetest.get_player_by_name(self.owner):set_attribute("dragonz", ""..math.floor(self.object:getpos().z+0.5))
end
end
if self.name == "mobs:sheep" then
if self.owner and minetest.get_player_by_name(self.owner) then
minetest.get_player_by_name(self.owner):set_attribute("sheepx", ""..math.floor(self.object:getpos().x+0.5))
minetest.get_player_by_name(self.owner):set_attribute("sheepy", ""..math.floor(self.object:getpos().y+0.5))
minetest.get_player_by_name(self.owner):set_attribute("sheepz", ""..math.floor(self.object:getpos().z+0.5))
end
end
if self.name == "mobs:fox" then
if self.owner and minetest.get_player_by_name(self.owner) then
minetest.get_player_by_name(self.owner):set_attribute("foxx", ""..math.floor(self.object:getpos().x+0.5))
minetest.get_player_by_name(self.owner):set_attribute("foxy", ""..math.floor(self.object:getpos().y+0.5))
minetest.get_player_by_name(self.owner):set_attribute("foxz", ""..math.floor(self.object:getpos().z+0.5))
end
end
if self.name == "mobs:tortoise" then
if self.owner and minetest.get_player_by_name(self.owner) then
minetest.get_player_by_name(self.owner):set_attribute("tortoisex", ""..math.floor(self.object:getpos().x+0.5))
minetest.get_player_by_name(self.owner):set_attribute("tortoisey", ""..math.floor(self.object:getpos().y+0.5))
minetest.get_player_by_name(self.owner):set_attribute("tortoisez", ""..math.floor(self.object:getpos().z+0.5))
end
end
if self.name == "mobs:knight_1248" then
if self.owner and minetest.get_player_by_name(self.owner) then
minetest.get_player_by_name(self.owner):set_attribute("knightx", ""..math.floor(self.object:getpos().x+0.5))
minetest.get_player_by_name(self.owner):set_attribute("knighty", ""..math.floor(self.object:getpos().y+0.5))
minetest.get_player_by_name(self.owner):set_attribute("knightz", ""..math.floor(self.object:getpos().z+0.5))
end
end
if self.name == "mobs:dog" and self.metadata2 == 1 then
local pos = self.object:getpos()
local all_objects = minetest.get_objects_inside_radius(pos, 15)
local players = {}
local k = 0
local _,obj
for _,obj in ipairs(all_objects) do
if obj:is_player() then
if self.owner == obj:get_player_name() then
k = 1
end
end
end
if k == 0 then
if minetest.get_player_by_name(self.owner) then
self.object:setpos({x = minetest.get_player_by_name(self.owner):getpos().x, y = minetest.get_player_by_name(self.owner):getpos().y+1, z = minetest.get_player_by_name(self.owner):getpos().z+1})
end
end
end
if self.name == "mobs:cat" and self.metadata2 == 1 then
local pos = self.object:getpos()
local all_objects = minetest.get_objects_inside_radius(pos, 15)
local players = {}
local k = 0
local _,obj
for _,obj in ipairs(all_objects) do
if obj:is_player() then
if self.owner == obj:get_player_name() then
k = 1
end
end
end
if k == 0 then
if minetest.get_player_by_name(self.owner) then
self.object:setpos({x = minetest.get_player_by_name(self.owner):getpos().x, y = minetest.get_player_by_name(self.owner):getpos().y+1, z = minetest.get_player_by_name(self.owner):getpos().z+1})
end
end
end
if self.name == "mobs:dragon" and self.metadata2 == 1 then
local pos = self.object:getpos()
local all_objects = minetest.get_objects_inside_radius(pos, 15)
local players = {}
local k = 0
local _,obj
for _,obj in ipairs(all_objects) do
if obj:is_player() then
if self.owner == obj:get_player_name() then
k = 1
end
end
end
if k == 0 then
if self.owner then
if minetest.get_player_by_name(self.owner) then
minetest.get_player_by_name(self.owner):get_inventory():set_size("dragon2",1)
self.object:setpos({x = minetest.get_player_by_name(self.owner):getpos().x, y = minetest.get_player_by_name(self.owner):getpos().y+1, z = minetest.get_player_by_name(self.owner):getpos().z+1})
local numd = minetest.get_player_by_name(self.owner):get_inventory():get_stack("dragon2", 1):get_count()
if numd > 50 then
if minetest.get_player_by_name(self.owner):get_inventory():get_stack("dragon", 1):get_name() == "tutorial:dragon_crystal" then
minetest.get_player_by_name(self.owner):get_inventory():add_item("main", "tutorial:geschenk_gem")
else
minetest.get_player_by_name(self.owner):get_inventory():add_item("main", "tutorial:geschenk_dragon")
end
minetest.get_player_by_name(self.owner):get_inventory():set_stack("dragon2", 1, "")
else
minetest.get_player_by_name(self.owner):get_inventory():set_stack("dragon2", 1, "default:dirt "..1+numd)
end
end
end
end
end
if self.name == "mobs:sheep" and self.metadata2 == 1 then
local pos = self.object:getpos()
local all_objects = minetest.get_objects_inside_radius(pos, 15)
local players = {}
local k = 0
local _,obj
for _,obj in ipairs(all_objects) do
if obj:is_player() then
if self.owner == obj:get_player_name() then
k = 1
end
end
end
if k == 0 then
if self.owner then
if minetest.get_player_by_name(self.owner) then
minetest.get_player_by_name(self.owner):get_inventory():set_size("sheep2",1)
minetest.get_player_by_name(self.owner):get_inventory():set_size("sheep3",1)
self.object:setpos({x = minetest.get_player_by_name(self.owner):getpos().x, y = minetest.get_player_by_name(self.owner):getpos().y+1, z = minetest.get_player_by_name(self.owner):getpos().z+1})
local numd = minetest.get_player_by_name(self.owner):get_inventory():get_stack("sheep2", 1):get_count()
if numd > 50 then
minetest.get_player_by_name(self.owner):get_inventory():add_item("main", minetest.get_player_by_name(self.owner):get_inventory():get_stack("sheep3", 1))
minetest.get_player_by_name(self.owner):get_inventory():set_stack("sheep2", 1, "")
else
minetest.get_player_by_name(self.owner):get_inventory():set_stack("sheep2", 1, "default:dirt "..1+numd)
end
end
end
end
end
if self.name == "mobs:knight_1248" and self.metadata2 == 1 then
local pos = self.object:getpos()
local all_objects = minetest.get_objects_inside_radius(pos, 15)
local players = {}
local k = 0
local _,obj
for _,obj in ipairs(all_objects) do
if obj:is_player() then
if self.owner == obj:get_player_name() then
k = 1
end
end
end
if k == 0 then
if minetest.get_player_by_name(self.owner) then
self.object:setpos({x = minetest.get_player_by_name(self.owner):getpos().x, y = minetest.get_player_by_name(self.owner):getpos().y+1, z = minetest.get_player_by_name(self.owner):getpos().z+1})
end
end
end
if self.name == "mobs:fox" and self.metadata2 == 1 then
local pos = self.object:getpos()
local all_objects = minetest.get_objects_inside_radius(pos, 15)
local players = {}
local k = 0
local _,obj
for _,obj in ipairs(all_objects) do
if obj:is_player() then
if self.owner == obj:get_player_name() then
k = 1
end
end
end
if k == 0 then
if self.owner then
if minetest.get_player_by_name(self.owner) then
minetest.get_player_by_name(self.owner):get_inventory():set_size("fox",1)
minetest.get_player_by_name(self.owner):get_inventory():set_size("foxfox",1)
minetest.get_player_by_name(self.owner):get_inventory():set_size("r1248",6)
self.object:setpos({x = minetest.get_player_by_name(self.owner):getpos().x, y = minetest.get_player_by_name(self.owner):getpos().y+1, z = minetest.get_player_by_name(self.owner):getpos().z+1})
local numd = minetest.get_player_by_name(self.owner):get_inventory():get_stack("fox", 1):get_count()
if numd == 50 then
minetest.get_player_by_name(self.owner):get_inventory():add_item("main", "tutorial:fox_schluessel")
minetest.get_player_by_name(self.owner):get_inventory():set_stack("fox", 1, "default:dirt 80")
elseif numd == 80 then
else
minetest.get_player_by_name(self.owner):get_inventory():set_stack("fox", 1, "default:dirt "..1+numd)
end
local numdd = minetest.get_player_by_name(self.owner):get_inventory():get_stack("foxfox", 1):get_count()
if numdd == 256 then
local ra = math.random(6)
if ra == 1 then
minetest.get_player_by_name(self.owner):get_inventory():set_stack("r1248", 1, "default:dirt")
elseif ra == 2 then
minetest.get_player_by_name(self.owner):get_inventory():set_stack("r1248", 2, "default:dirt")
elseif ra == 3 then
minetest.get_player_by_name(self.owner):get_inventory():set_stack("r1248", 3, "default:dirt")
elseif ra == 4 then
minetest.get_player_by_name(self.owner):get_inventory():set_stack("r1248", 4, "default:dirt")
elseif ra == 5 then
minetest.get_player_by_name(self.owner):get_inventory():set_stack("r1248", 5, "default:dirt")
elseif ra == 6 then
minetest.get_player_by_name(self.owner):get_inventory():set_stack("r1248", 6, "default:dirt")
end
minetest.get_player_by_name(self.owner):get_inventory():set_stack("foxfox", 1, "")
else
minetest.get_player_by_name(self.owner):get_inventory():set_stack("foxfox", 1, "default:dirt "..1+numdd)
end
end
end
end
end
if self.name == "mobs:tortoise" and self.metadata2 == 1 then
local pos = self.object:getpos()
local all_objects = minetest.get_objects_inside_radius(pos, 15)
local players = {}
local k = 0
local _,obj
for _,obj in ipairs(all_objects) do
if obj:is_player() then
if self.owner == obj:get_player_name() then
k = 1
end
end
end
if k == 0 then
if minetest.get_player_by_name(self.owner) then
self.object:setpos({x = minetest.get_player_by_name(self.owner):getpos().x, y = minetest.get_player_by_name(self.owner):getpos().y+1, z = minetest.get_player_by_name(self.owner):getpos().z+1})
minetest.get_player_by_name(self.owner):get_inventory():set_size("tortoise2",1)
local numd = minetest.get_player_by_name(self.owner):get_inventory():get_stack("tortoise2", 1):get_count()
if numd > 50 then
if minetest.get_player_by_name(self.owner):get_inventory():get_stack("tortoise", 1):get_name() == "tutorial:dragon_crystal" then
minetest.get_player_by_name(self.owner):get_inventory():add_item("main", "tutorial:geschenk_gem2")
else
minetest.get_player_by_name(self.owner):get_inventory():add_item("main", "tutorial:geschenk_tortoise")
end
minetest.get_player_by_name(self.owner):get_inventory():set_stack("tortoise2", 1, "")
else
minetest.get_player_by_name(self.owner):get_inventory():set_stack("tortoise2", 1, "default:dirt "..1+numd)
end
end
end
end
if self.name == "mobs:sheep" then
if self.owner then
self.object:set_properties({infotext=self.owner.."'s Sheep"})
if minetest.get_player_by_name(self.owner) then
local col = minetest.get_player_by_name(self.owner):get_inventory():get_stack("sheep", 1):get_name()
if col == "dye:white" then
minetest.get_player_by_name(self.owner):get_inventory():set_stack("sheep3", 1,"wool:white")
self.object:set_properties({textures={"mobs_sheep_white.png"}})
elseif col == "dye:grey" then
minetest.get_player_by_name(self.owner):get_inventory():set_stack("sheep3", 1,"wool:grey")
self.object:set_properties({textures={"mobs_sheep_grey.png"}})
elseif col == "dye:dark_grey" then
minetest.get_player_by_name(self.owner):get_inventory():set_stack("sheep3", 1,"wool:dark_grey")
self.object:set_properties({textures={"mobs_sheep_dark_grey.png"}})
elseif col == "dye:black" then
minetest.get_player_by_name(self.owner):get_inventory():set_stack("sheep3", 1,"wool:black")
self.object:set_properties({textures={"mobs_sheep_black.png"}})
elseif col == "dye:violet" then
minetest.get_player_by_name(self.owner):get_inventory():set_stack("sheep3", 1,"wool:violet")
self.object:set_properties({textures={"mobs_sheep_violet.png"}})
elseif col == "dye:blue" then
minetest.get_player_by_name(self.owner):get_inventory():set_stack("sheep3", 1,"wool:blue")
self.object:set_properties({textures={"mobs_sheep_blue.png"}})
elseif col == "dye:cyan" then
minetest.get_player_by_name(self.owner):get_inventory():set_stack("sheep3", 1,"wool:cyan")
self.object:set_properties({textures={"mobs_sheep_cyan.png"}})
elseif col == "dye:dark_green" then
minetest.get_player_by_name(self.owner):get_inventory():set_stack("sheep3", 1,"wool:dark_green")
self.object:set_properties({textures={"mobs_sheep_dark_green.png"}})
elseif col == "dye:green" then
minetest.get_player_by_name(self.owner):get_inventory():set_stack("sheep3", 1,"wool:green")
self.object:set_properties({textures={"mobs_sheep_green.png"}})
elseif col == "dye:yellow" then
minetest.get_player_by_name(self.owner):get_inventory():set_stack("sheep3", 1,"wool:yellow")
self.object:set_properties({textures={"mobs_sheep_yellow.png"}})
elseif col == "dye:brown" then
minetest.get_player_by_name(self.owner):get_inventory():set_stack("sheep3", 1,"wool:brown")
self.object:set_properties({textures={"mobs_sheep_brown.png"}})
elseif col == "dye:orange" then
minetest.get_player_by_name(self.owner):get_inventory():set_stack("sheep3", 1,"wool:orange")
self.object:set_properties({textures={"mobs_sheep_orange.png"}})
elseif col == "dye:red" then
minetest.get_player_by_name(self.owner):get_inventory():set_stack("sheep3", 1,"wool:red")
self.object:set_properties({textures={"mobs_sheep_red.png"}})
elseif col == "dye:magenta" then
minetest.get_player_by_name(self.owner):get_inventory():set_stack("sheep3", 1,"wool:magenta")
self.object:set_properties({textures={"mobs_sheep_magenta.png"}})
elseif col == "dye:pink" then
minetest.get_player_by_name(self.owner):get_inventory():set_stack("sheep3", 1,"wool:pink")
self.object:set_properties({textures={"mobs_sheep_pink.png"}})
else
minetest.get_player_by_name(self.owner):get_inventory():set_stack("sheep3", 1,"")
self.object:set_properties({textures={"mobs_sheep.png"}})
end
end
end
end
end
if self.name == "mobs:dragon" then
if self.owner and minetest.get_player_by_name(self.owner) then
minetest.get_player_by_name(self.owner):set_attribute("dragonx", ""..math.floor(self.object:getpos().x+0.5))
minetest.get_player_by_name(self.owner):set_attribute("dragony", ""..math.floor(self.object:getpos().y+0.5))
minetest.get_player_by_name(self.owner):set_attribute("dragonz", ""..math.floor(self.object:getpos().z+0.5))
end
end
if self.name == "mobs:sheep" then
if self.owner and minetest.get_player_by_name(self.owner) then
minetest.get_player_by_name(self.owner):set_attribute("sheepx", ""..math.floor(self.object:getpos().x+0.5))
minetest.get_player_by_name(self.owner):set_attribute("sheepy", ""..math.floor(self.object:getpos().y+0.5))
minetest.get_player_by_name(self.owner):set_attribute("sheepz", ""..math.floor(self.object:getpos().z+0.5))
end
end
if self.name == "mobs:fox" then
if self.owner and minetest.get_player_by_name(self.owner) then
minetest.get_player_by_name(self.owner):set_attribute("foxx", ""..math.floor(self.object:getpos().x+0.5))
minetest.get_player_by_name(self.owner):set_attribute("foxy", ""..math.floor(self.object:getpos().y+0.5))
minetest.get_player_by_name(self.owner):set_attribute("foxz", ""..math.floor(self.object:getpos().z+0.5))
end
end
if self.name == "mobs:tortoise" then
if self.owner and minetest.get_player_by_name(self.owner) then
minetest.get_player_by_name(self.owner):set_attribute("tortoisex", ""..math.floor(self.object:getpos().x+0.5))
minetest.get_player_by_name(self.owner):set_attribute("tortoisey", ""..math.floor(self.object:getpos().y+0.5))
minetest.get_player_by_name(self.owner):set_attribute("tortoisez", ""..math.floor(self.object:getpos().z+0.5))
end
end
if self.name == "mobs:knight_1248" then
if self.owner and minetest.get_player_by_name(self.owner) then
minetest.get_player_by_name(self.owner):set_attribute("knightx", ""..math.floor(self.object:getpos().x+0.5))
minetest.get_player_by_name(self.owner):set_attribute("knighty", ""..math.floor(self.object:getpos().y+0.5))
minetest.get_player_by_name(self.owner):set_attribute("knightz", ""..math.floor(self.object:getpos().z+0.5))
end
end
if self.name == "mobs:dog" and self.metadata2 == 1 then
if self.owner and minetest.get_player_by_name(self.owner) then
minetest.get_player_by_name(self.owner):set_attribute("dogx", ""..math.floor(self.object:getpos().x+0.5))
minetest.get_player_by_name(self.owner):set_attribute("dogy", ""..math.floor(self.object:getpos().y+0.5))
minetest.get_player_by_name(self.owner):set_attribute("dogz", ""..math.floor(self.object:getpos().z+0.5))
end
local pos = self.object:getpos()
local all_objects = minetest.get_objects_inside_radius(pos, 15)
local players = {}
local k = 0
local _,obj
for _,obj in ipairs(all_objects) do
if obj:is_player() then
if self.owner == obj:get_player_name() then
k = 1
end
end
end
if k == 0 then
if minetest.get_player_by_name(self.owner) then
self.object:setpos({x = minetest.get_player_by_name(self.owner):getpos().x, y = minetest.get_player_by_name(self.owner):getpos().y+1, z = minetest.get_player_by_name(self.owner):getpos().z+1})
end
end
end
if self.name == "mobs:cat" and self.metadata2 == 1 then
if self.owner and minetest.get_player_by_name(self.owner) then
minetest.get_player_by_name(self.owner):set_attribute("catx", ""..math.floor(self.object:getpos().x+0.5))
minetest.get_player_by_name(self.owner):set_attribute("caty", ""..math.floor(self.object:getpos().y+0.5))
minetest.get_player_by_name(self.owner):set_attribute("catz", ""..math.floor(self.object:getpos().z+0.5))
end
local pos = self.object:getpos()
local all_objects = minetest.get_objects_inside_radius(pos, 15)
local players = {}
local k = 0
local _,obj
for _,obj in ipairs(all_objects) do
if obj:is_player() then
if self.owner == obj:get_player_name() then
k = 1
end
end
end
if k == 0 then
if minetest.get_player_by_name(self.owner) then
self.object:setpos({x = minetest.get_player_by_name(self.owner):getpos().x, y = minetest.get_player_by_name(self.owner):getpos().y+1, z = minetest.get_player_by_name(self.owner):getpos().z+1})
end
end
end
if self.name == "mobs:dragon" and self.metadata2 == 1 then
local pos = self.object:getpos()
local all_objects = minetest.get_objects_inside_radius(pos, 15)
local players = {}
local k = 0
local _,obj
for _,obj in ipairs(all_objects) do
if obj:is_player() then
if self.owner == obj:get_player_name() then
k = 1
end
end
end
if k == 0 then
if self.owner then
if minetest.get_player_by_name(self.owner) then
minetest.get_player_by_name(self.owner):get_inventory():set_size("dragon2",1)
self.object:setpos({x = minetest.get_player_by_name(self.owner):getpos().x, y = minetest.get_player_by_name(self.owner):getpos().y+1, z = minetest.get_player_by_name(self.owner):getpos().z+1})
local numd = minetest.get_player_by_name(self.owner):get_inventory():get_stack("dragon2", 1):get_count()
if numd > 50 then
if minetest.get_player_by_name(self.owner):get_inventory():get_stack("dragon", 1):get_name() == "tutorial:dragon_crystal" then
minetest.get_player_by_name(self.owner):get_inventory():add_item("main", "tutorial:geschenk_gem")
else
minetest.get_player_by_name(self.owner):get_inventory():add_item("main", "tutorial:geschenk_dragon")
end
minetest.get_player_by_name(self.owner):get_inventory():set_stack("dragon2", 1, "")
else
minetest.get_player_by_name(self.owner):get_inventory():set_stack("dragon2", 1, "default:dirt "..1+numd)
end
end
end
end
end
if self.name == "mobs:sheep" and self.metadata2 == 1 then
local pos = self.object:getpos()
local all_objects = minetest.get_objects_inside_radius(pos, 15)
local players = {}
local k = 0
local _,obj
for _,obj in ipairs(all_objects) do
if obj:is_player() then
if self.owner == obj:get_player_name() then
k = 1
end
end
end
if k == 0 then
if self.owner then
if minetest.get_player_by_name(self.owner) then
minetest.get_player_by_name(self.owner):get_inventory():set_size("sheep2",1)
minetest.get_player_by_name(self.owner):get_inventory():set_size("sheep3",1)
self.object:setpos({x = minetest.get_player_by_name(self.owner):getpos().x, y = minetest.get_player_by_name(self.owner):getpos().y+1, z = minetest.get_player_by_name(self.owner):getpos().z+1})
local numd = minetest.get_player_by_name(self.owner):get_inventory():get_stack("sheep2", 1):get_count()
if numd > 50 then
minetest.get_player_by_name(self.owner):get_inventory():add_item("main", minetest.get_player_by_name(self.owner):get_inventory():get_stack("sheep3", 1))
minetest.get_player_by_name(self.owner):get_inventory():set_stack("sheep2", 1, "")
else
minetest.get_player_by_name(self.owner):get_inventory():set_stack("sheep2", 1, "default:dirt "..1+numd)
end
end
end
end
end
if self.name == "mobs:knight_1248" and self.metadata2 == 1 then
local pos = self.object:getpos()
local all_objects = minetest.get_objects_inside_radius(pos, 15)
local players = {}
local k = 0
local _,obj
for _,obj in ipairs(all_objects) do
if obj:is_player() then
if self.owner == obj:get_player_name() then
k = 1
end
end
end
if k == 0 then
if minetest.get_player_by_name(self.owner) then
self.object:setpos({x = minetest.get_player_by_name(self.owner):getpos().x, y = minetest.get_player_by_name(self.owner):getpos().y+1, z = minetest.get_player_by_name(self.owner):getpos().z+1})
end
end
end
if self.name == "mobs:fox" and self.metadata2 == 1 then
local pos = self.object:getpos()
local all_objects = minetest.get_objects_inside_radius(pos, 15)
local players = {}
local k = 0
local _,obj
for _,obj in ipairs(all_objects) do
if obj:is_player() then
if self.owner == obj:get_player_name() then
k = 1
end
end
end
if k == 0 then
if self.owner then
if minetest.get_player_by_name(self.owner) then
minetest.get_player_by_name(self.owner):get_inventory():set_size("fox",1)
minetest.get_player_by_name(self.owner):get_inventory():set_size("foxfox",1)
minetest.get_player_by_name(self.owner):get_inventory():set_size("r1248",6)
self.object:setpos({x = minetest.get_player_by_name(self.owner):getpos().x, y = minetest.get_player_by_name(self.owner):getpos().y+1, z = minetest.get_player_by_name(self.owner):getpos().z+1})
local numd = minetest.get_player_by_name(self.owner):get_inventory():get_stack("fox", 1):get_count()
if numd == 50 then
minetest.get_player_by_name(self.owner):get_inventory():add_item("main", "tutorial:fox_schluessel")
minetest.get_player_by_name(self.owner):get_inventory():set_stack("fox", 1, "default:dirt 80")
elseif numd == 80 then
else
minetest.get_player_by_name(self.owner):get_inventory():set_stack("fox", 1, "default:dirt "..1+numd)
end
local numdd = minetest.get_player_by_name(self.owner):get_inventory():get_stack("foxfox", 1):get_count()
if numdd == 256 then
local ra = math.random(6)
if ra == 1 then
minetest.get_player_by_name(self.owner):get_inventory():set_stack("r1248", 1, "default:dirt")
elseif ra == 2 then
minetest.get_player_by_name(self.owner):get_inventory():set_stack("r1248", 2, "default:dirt")
elseif ra == 3 then
minetest.get_player_by_name(self.owner):get_inventory():set_stack("r1248", 3, "default:dirt")
elseif ra == 4 then
minetest.get_player_by_name(self.owner):get_inventory():set_stack("r1248", 4, "default:dirt")
elseif ra == 5 then
minetest.get_player_by_name(self.owner):get_inventory():set_stack("r1248", 5, "default:dirt")
elseif ra == 6 then
minetest.get_player_by_name(self.owner):get_inventory():set_stack("r1248", 6, "default:dirt")
end
minetest.get_player_by_name(self.owner):get_inventory():set_stack("foxfox", 1, "")
else
minetest.get_player_by_name(self.owner):get_inventory():set_stack("foxfox", 1, "default:dirt "..1+numdd)
end
end
end
end
end
if self.name == "mobs:tortoise" and self.metadata2 == 1 then
local pos = self.object:getpos()
local all_objects = minetest.get_objects_inside_radius(pos, 15)
local players = {}
local k = 0
local _,obj
for _,obj in ipairs(all_objects) do
if obj:is_player() then
if self.owner == obj:get_player_name() then
k = 1
end
end
end
if k == 0 then
if minetest.get_player_by_name(self.owner) then
self.object:setpos({x = minetest.get_player_by_name(self.owner):getpos().x, y = minetest.get_player_by_name(self.owner):getpos().y+1, z = minetest.get_player_by_name(self.owner):getpos().z+1})
minetest.get_player_by_name(self.owner):get_inventory():set_size("tortoise2",1)
local numd = minetest.get_player_by_name(self.owner):get_inventory():get_stack("tortoise2", 1):get_count()
if numd > 50 then
if minetest.get_player_by_name(self.owner):get_inventory():get_stack("tortoise", 1):get_name() == "tutorial:dragon_crystal" then
minetest.get_player_by_name(self.owner):get_inventory():add_item("main", "tutorial:geschenk_gem2")
else
minetest.get_player_by_name(self.owner):get_inventory():add_item("main", "tutorial:geschenk_tortoise")
end
minetest.get_player_by_name(self.owner):get_inventory():set_stack("tortoise2", 1, "")
else
minetest.get_player_by_name(self.owner):get_inventory():set_stack("tortoise2", 1, "default:dirt "..1+numd)
end
end
end
end
if self.name == "mobs:sheep" then
if self.owner then
self.object:set_properties({infotext=self.owner.."'s Sheep"})
if minetest.get_player_by_name(self.owner) then
local col = minetest.get_player_by_name(self.owner):get_inventory():get_stack("sheep", 1):get_name()
if col == "dye:white" then
minetest.get_player_by_name(self.owner):get_inventory():set_stack("sheep3", 1,"wool:white")
self.object:set_properties({textures={"mobs_sheep_white.png"}})
elseif col == "dye:grey" then
minetest.get_player_by_name(self.owner):get_inventory():set_stack("sheep3", 1,"wool:grey")
self.object:set_properties({textures={"mobs_sheep_grey.png"}})
elseif col == "dye:dark_grey" then
minetest.get_player_by_name(self.owner):get_inventory():set_stack("sheep3", 1,"wool:dark_grey")
self.object:set_properties({textures={"mobs_sheep_dark_grey.png"}})
elseif col == "dye:black" then
minetest.get_player_by_name(self.owner):get_inventory():set_stack("sheep3", 1,"wool:black")
self.object:set_properties({textures={"mobs_sheep_black.png"}})
elseif col == "dye:violet" then
minetest.get_player_by_name(self.owner):get_inventory():set_stack("sheep3", 1,"wool:violet")
self.object:set_properties({textures={"mobs_sheep_violet.png"}})
elseif col == "dye:blue" then
minetest.get_player_by_name(self.owner):get_inventory():set_stack("sheep3", 1,"wool:blue")
self.object:set_properties({textures={"mobs_sheep_blue.png"}})
elseif col == "dye:cyan" then
minetest.get_player_by_name(self.owner):get_inventory():set_stack("sheep3", 1,"wool:cyan")
self.object:set_properties({textures={"mobs_sheep_cyan.png"}})
elseif col == "dye:dark_green" then
minetest.get_player_by_name(self.owner):get_inventory():set_stack("sheep3", 1,"wool:dark_green")
self.object:set_properties({textures={"mobs_sheep_dark_green.png"}})
elseif col == "dye:green" then
minetest.get_player_by_name(self.owner):get_inventory():set_stack("sheep3", 1,"wool:green")
self.object:set_properties({textures={"mobs_sheep_green.png"}})
elseif col == "dye:yellow" then
minetest.get_player_by_name(self.owner):get_inventory():set_stack("sheep3", 1,"wool:yellow")
self.object:set_properties({textures={"mobs_sheep_yellow.png"}})
elseif col == "dye:brown" then
minetest.get_player_by_name(self.owner):get_inventory():set_stack("sheep3", 1,"wool:brown")
self.object:set_properties({textures={"mobs_sheep_brown.png"}})
elseif col == "dye:orange" then
minetest.get_player_by_name(self.owner):get_inventory():set_stack("sheep3", 1,"wool:orange")
self.object:set_properties({textures={"mobs_sheep_orange.png"}})
elseif col == "dye:red" then
minetest.get_player_by_name(self.owner):get_inventory():set_stack("sheep3", 1,"wool:red")
self.object:set_properties({textures={"mobs_sheep_red.png"}})
elseif col == "dye:magenta" then
minetest.get_player_by_name(self.owner):get_inventory():set_stack("sheep3", 1,"wool:magenta")
self.object:set_properties({textures={"mobs_sheep_magenta.png"}})
elseif col == "dye:pink" then
minetest.get_player_by_name(self.owner):get_inventory():set_stack("sheep3", 1,"wool:pink")
self.object:set_properties({textures={"mobs_sheep_pink.png"}})
else
minetest.get_player_by_name(self.owner):get_inventory():set_stack("sheep3", 1,"")
self.object:set_properties({textures={"mobs_sheep.png"}})
end
end
end
end
end
if use_cmi then
cmi.notify_step(self.object, dtime)
end
@ -4415,8 +4434,10 @@ function mobs:register_arrow(name, def)
if self.switch == 0
or self.timer > 150 then
self.object:remove() ; -- print ("removed arrow")
if self.name == "mobs:dog" or self.name == "mobs:cat" or self.name == "mobs:sheep" or self.name == "mobs:dragon" or self.name == "mobs:knight_1248" or self.name == "mobs:fox" or self.name == "mobs:tortoise" then
else
self.object:remove() ; -- print ("removed arrow")
end
return
end
@ -4454,8 +4475,10 @@ function mobs:register_arrow(name, def)
minetest.add_item(self.lastpos, self.object:get_luaentity().name)
end
self.object:remove() ; -- print ("hit node")
if self.name == "mobs:dog" or self.name == "mobs:cat" or self.name == "mobs:sheep" or self.name == "mobs:dragon" or self.name == "mobs:knight_1248" or self.name == "mobs:fox" or self.name == "mobs:tortoise" then
else
self.object:remove() ; -- print ("hit node")
end
return
end
@ -4469,7 +4492,10 @@ function mobs:register_arrow(name, def)
and player:is_player() then
self:hit_player(player)
self.object:remove() ; -- print ("hit player")
if self.name == "mobs:dog" or self.name == "mobs:cat" or self.name == "mobs:sheep" or self.name == "mobs:dragon" or self.name == "mobs:knight_1248" or self.name == "mobs:fox" or self.name == "mobs:tortoise" then
else
self.object:remove() ; -- print ("hit player")
end
return
end
@ -4482,8 +4508,10 @@ function mobs:register_arrow(name, def)
and entity.name ~= self.object:get_luaentity().name then
self:hit_mob(player)
self.object:remove() ; --print ("hit mob")
if self.name == "mobs:dog" or self.name == "mobs:cat" or self.name == "mobs:sheep" or self.name == "mobs:dragon" or self.name == "mobs:knight_1248" or self.name == "mobs:fox" or self.name == "mobs:tortoise" then
else
self.object:remove() ; --print ("hit mob")
end
return
end
@ -4685,8 +4713,10 @@ function mobs:force_capture(self, clicker)
else
minetest.add_item(clicker:get_pos(), new_stack)
end
self.object:remove()
if self.name == "mobs:dog" or self.name == "mobs:cat" or self.name == "mobs:sheep" or self.name == "mobs:dragon" or self.name == "mobs:knight_1248" or self.name == "mobs:fox" or self.name == "mobs:tortoise" then
else
self.object:remove()
end
self:mob_sound("default_place_node_hard")
end
@ -4799,8 +4829,10 @@ function mobs:capture_mob(self, clicker, chance_hand, chance_net, chance_lasso,
else
minetest.add_item(clicker:get_pos(), new_stack)
end
self.object:remove()
if self.name == "mobs:dog" or self.name == "mobs:cat" or self.name == "mobs:sheep" or self.name == "mobs:dragon" or self.name == "mobs:knight_1248" or self.name == "mobs:fox" or self.name == "mobs:tortoise" then
else
self.object:remove()
end
self:mob_sound("default_place_node_hard")
@ -5033,8 +5065,10 @@ function mobs:alias_mob(old_name, new_name)
if minetest.registered_entities[new_name] then
minetest.add_entity(self.object:get_pos(), new_name)
end
self.object:remove()
if self.name == "mobs:dog" or self.name == "mobs:cat" or self.name == "mobs:sheep" or self.name == "mobs:dragon" or self.name == "mobs:knight_1248" or self.name == "mobs:fox" or self.name == "mobs:tortoise" then
else
self.object:remove()
end
end
})
end

File diff suppressed because it is too large Load Diff

View File

@ -12,6 +12,7 @@ mobs:register_mob("mobs:cat", {
visual = "mesh",
mesh = "mobs_kitten.b3d",
attacks_monsters = true,
attack_npcs = false,
textures = {
{"mobs_kitten.png"},
},

View File

@ -12,6 +12,7 @@ mobs:register_mob("mobs:dog", {
visual = "mesh",
mesh = "mobs_dog.b3d",
attacks_monsters = true,
attack_npcs = false,
textures = {
{"mobs_dog.png"},
},

View File

@ -12,6 +12,7 @@ mobs:register_mob("mobs:dragon", {
visual = "mesh",
mesh = "mobs_dragon.b3d",
attacks_monsters = true,
attack_npcs = false,
textures = {
{"mobs_dragon_red.png"},
},

View File

@ -12,6 +12,7 @@ mobs:register_mob("mobs:fox", {
visual = "mesh",
mesh = "mobs_fox.b3d",
attacks_monsters = false,
attack_npcs = false,
textures = {
{"mobs_fox1.png"},
},

View File

@ -8,4 +8,5 @@ dofile(path.."/dragon.lua")
dofile(path.."/fox.lua")
dofile(path.."/tortoise.lua")
dofile(path.."/knight.lua")
dofile(path.."/monsterx1.lua")
dofile(path.."/monsterx1.lua")
dofile(path.."/mummy.lua")

View File

@ -12,6 +12,7 @@ mobs:register_mob("mobs:knight_1248", {
visual = "mesh",
mesh = "mobs_1248_knight.b3d",
attacks_monsters = true,
attack_npcs = false,
textures = {
{"mobs_1248_knight.png"},
},

File diff suppressed because it is too large Load Diff

View File

@ -2,6 +2,7 @@ mobs:register_mob("mobs:red_monster", {
type = "monster",
passive = false,
attack_type = "dogfight",
attack_npcs = false,
damage = 1,
hp_min = 4,
hp_max = 8,
@ -48,6 +49,7 @@ mobs:register_mob("mobs:blue_monster", {
type = "monster",
passive = false,
attack_type = "dogfight",
attack_npcs = false,
damage = 1,
hp_min = 4,
hp_max = 8,
@ -94,6 +96,7 @@ mobs:register_mob("mobs:cyan_monster", {
type = "monster",
passive = false,
attack_type = "dogfight",
attack_npcs = false,
damage = 1,
hp_min = 4,
hp_max = 8,
@ -140,6 +143,7 @@ mobs:register_mob("mobs:green2_monster", {
type = "monster",
passive = false,
attack_type = "dogfight",
attack_npcs = false,
damage = 1,
hp_min = 4,
hp_max = 8,
@ -186,6 +190,7 @@ mobs:register_mob("mobs:yellow_monster", {
type = "monster",
passive = false,
attack_type = "dogfight",
attack_npcs = false,
damage = 1,
hp_min = 4,
hp_max = 8,
@ -232,6 +237,7 @@ mobs:register_mob("mobs:purple_monster", {
type = "monster",
passive = false,
attack_type = "dogfight",
attack_npcs = false,
damage = 1,
hp_min = 4,
hp_max = 8,
@ -277,6 +283,7 @@ mobs:register_mob("mobs:stone_monster", {
type = "monster",
passive = false,
attack_type = "dogfight",
attack_npcs = false,
damage = 1,
hp_min = 4,
hp_max = 8,
@ -331,6 +338,7 @@ mobs:register_mob("mobs:dirt_monster", {
type = "monster",
passive = false,
attack_type = "dogfight",
attack_npcs = false,
damage = 1,
hp_min = 4,
hp_max = 8,
@ -385,6 +393,7 @@ mobs:register_mob("mobs:sand_monster", {
type = "monster",
passive = false,
attack_type = "dogfight",
attack_npcs = false,
damage = 1,
hp_min = 4,
hp_max = 8,
@ -439,6 +448,7 @@ mobs:register_mob("mobs:silver_sand_monster", {
type = "monster",
passive = false,
attack_type = "dogfight",
attack_npcs = false,
damage = 1,
hp_min = 4,
hp_max = 8,
@ -493,6 +503,7 @@ mobs:register_mob("mobs:desert_sand_monster", {
type = "monster",
passive = false,
attack_type = "dogfight",
attack_npcs = false,
damage = 1,
hp_min = 4,
hp_max = 8,
@ -547,6 +558,7 @@ mobs:register_mob("mobs:desert_stone_monster", {
type = "monster",
passive = false,
attack_type = "dogfight",
attack_npcs = false,
damage = 1,
hp_min = 4,
hp_max = 8,
@ -601,6 +613,7 @@ mobs:register_mob("mobs:snow_monster", {
type = "monster",
passive = false,
attack_type = "dogfight",
attack_npcs = false,
damage = 1,
hp_min = 4,
hp_max = 8,
@ -655,6 +668,7 @@ mobs:register_mob("mobs:ice_monster", {
type = "monster",
passive = false,
attack_type = "dogfight",
attack_npcs = false,
damage = 1,
hp_min = 4,
hp_max = 8,
@ -709,6 +723,7 @@ mobs:register_mob("mobs:green_monster", {
type = "monster",
passive = false,
attack_type = "dogfight",
attack_npcs = false,
damage = 1,
hp_min = 4,
hp_max = 8,
@ -763,6 +778,7 @@ mobs:register_mob("mobs:dry_grass_monster", {
type = "monster",
passive = false,
attack_type = "dogfight",
attack_npcs = false,
damage = 1,
hp_min = 4,
hp_max = 8,
@ -817,6 +833,7 @@ mobs:register_mob("mobs:rainforest_litter_monster", {
type = "monster",
passive = false,
attack_type = "dogfight",
attack_npcs = false,
damage = 1,
hp_min = 4,
hp_max = 8,

51
mods/mobs/mummy.lua Normal file
View File

@ -0,0 +1,51 @@
mobs:register_mob("mobs:mummy", {
type = "monster",
passive = false,
attack_type = "dogfight",
attack_npcs = false,
damage = 10,
hp_min = 500,
hp_max = 500,
armor = 100,
visual_size = {x=8, y=8},
collisionbox = {-0.4, -0.01, -0.4, 0.4, 1.9, 0.4},
visual = "mesh",
mesh = "mobs_mummy.x",
textures = {
{"mobs_mummy.png"},
},
makes_footstep_sound = true,
sounds = {
random = "mobs_mummy",
death = "mobs_mummy_death",
},
view_range = 15,
walk_velocity = 1,
run_velocity = 5,
jump = true,
drops = {
{name = "tutorial:geschenkpapier 50",
chance = 1,
min = 1,
max = 1},
},
water_damage = 1,
lava_damage = 5,
light_damage = 0,
animation = {
speed_normal = 74,
speed_run = 15,
stand_start = 74,
stand_end = 74,
walk_start = 74,
walk_end = 105,
run_start = 74,
run_end = 105,
punch_start = 74,
punch_end = 105,
},
})

View File

@ -12,6 +12,7 @@ mobs:register_mob("mobs:sheep", {
visual = "mesh",
mesh = "mobs_sheep.x",
attacks_monsters = false,
attack_npcs = false,
textures = {
{"mobs_sheep.png"},
},

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

Before

Width:  |  Height:  |  Size: 323 B

After

Width:  |  Height:  |  Size: 323 B

View File

@ -12,6 +12,7 @@ mobs:register_mob("mobs:tortoise", {
visual = "mesh",
mesh = "mobs_tortoise.b3d",
attacks_monsters = false,
attack_npcs = false,
textures = {
{"mobs_tortoise.png"},
},

View File

@ -13,9 +13,9 @@ minetest.register_craft( {
minetest.register_craft( {
output = "pipeworks:tube_1 64",
recipe = {
{ "gems:ruby_gem", "gems:ruby_gem", "gems:ruby_gem" },
{ "", "", "" },
{ "", "", "" },
{ "gems:pearl_gem", "gems:pearl_gem", "gems:pearl_gem" }
{ "gems:ruby_gem", "gems:ruby_gem", "gems:ruby_gem" }
},
})
@ -27,8 +27,8 @@ minetest.register_craft( {
output = "pipeworks:mese_sand_tube_1 2",
recipe = {
{ "gems:pearl_gem", "gems:pearl_gem", "gems:pearl_gem" },
{ "gems:pearl_gem", "gems:pearl_gem", "gems:pearl_gem" },
{ "", "", "" }
{ "", "", "" },
{ "gems:pearl_gem", "gems:pearl_gem", "gems:pearl_gem" }
},
})

View File

@ -38,12 +38,3 @@ minetest.register_node("pipeworks:trashcan", {
minetest.get_meta(pos):get_inventory():set_stack(listname, index, ItemStack(""))
end,
})
minetest.register_craft({
output = "pipeworks:trashcan",
recipe = {
{ "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
{ "default:steel_ingot", "", "default:steel_ingot" },
{ "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" },
},
})

View File

@ -320,8 +320,17 @@ if pipeworks.enable_node_breaker then
virtplayer:set_wielded_item(on_use(wieldstack, virtplayer, pointed_thing) or wieldstack)
else
local under_node = minetest.get_node(pointed_thing.under)
local on_dig = (minetest.registered_nodes[under_node.name] or {on_dig=minetest.node_dig}).on_dig
on_dig(pointed_thing.under, under_node, virtplayer)
local array = {"tutorial:stone_with_titan","tutorial:stone_with_regnum","tutorial:stone_with_blau","tutorial:stone_with_rot","tutorial:stone_with_titan","tutorial:arena_glass","tutorial:arena_block","tutorial:stone_with_admin","tutorial:stone_with_uranium","tutorial:stone_with_white","tutorial:stone_with_black","tutorial:","tutorial:","tutorial:"}
local d = 0
for index, value in ipairs(array) do
if value == under_node.name then
d = 1
end
end
if d == 0 then
local on_dig = (minetest.registered_nodes[under_node.name] or {on_dig=minetest.node_dig}).on_dig
on_dig(pointed_thing.under, under_node, virtplayer)
end
end
wieldstack = virtplayer:get_wielded_item()
local wieldname = wieldstack:get_name()

View File

@ -16,6 +16,8 @@ sfinv.register_page("sfinv:crafting", {
listring[current_player;craft]
image_button[0,0;1.6,1.6;inventory_plus_inven.png;inven;]
label[0.3,1.5;selection]
button[6.6,1.4;1.5,0.5;craft10;Craft (10)]
button[6.6,2.2;1.5,0.5;craft99;Craft (99)]
]], true)
end
})

View File

@ -138,7 +138,7 @@ skins.formspec.main = function(name)
else
formspec = formspec .. "button[0,4.7;1,.5;skins_page_"..page..";<<]"
end
formspec = formspec .. "button[.75,4.7;6.5,.5;skins_page_"..page..";Page "..(page+1).."/"..math.floor(#skins.list/8+1).."]" -- a button is used so text is centered
formspec = formspec .. "button[.75,4.7;6.5,.5;skins_page_"..page..";Page "..(page+1).."/"..math.floor(#skins.list/8).."]" -- a button is used so text is centered
if index > 8 then
formspec = formspec .. "button[7,4.7;1,.5;skins_page_"..(page+1)..";>>]"
else

View File

@ -1,20 +1,5 @@
-- tubes crafting recipes
minetest.register_craft({
output = 'pipeworks:accelerator_tube_1',
recipe = {
{'technic:copper_coil', 'pipeworks:tube_1', 'technic:copper_coil'},
}
})
minetest.register_craft({
output = 'pipeworks:teleport_tube_1',
recipe = {
{'default:mese_crystal', 'technic:copper_coil', 'default:mese_crystal'},
{'pipeworks:tube_1', 'technic:control_logic_unit', 'pipeworks:tube_1'},
{'default:mese_crystal', 'technic:copper_coil', 'default:mese_crystal'},
}
})
-- Remove some recipes
-- Bronze
minetest.register_craft({
@ -23,23 +8,5 @@ minetest.register_craft({
recipe = {"default:copper_ingot", "default:steel_ingot"}
})
-- Accelerator tube
minetest.register_craft({
output = "pipeworks:accelerator_tube_1 0",
recipe = {
{ "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
{ "default:mese_crystal_fragment", "default:steel_ingot", "default:mese_crystal_fragment" },
{ "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }
},
})
-- Teleport tube
minetest.register_craft({
output = "pipeworks:teleport_tube_1 0",
recipe = {
{ "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
{ "default:desert_stone", "default:mese_block", "default:desert_stone" },
{ "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }
},
})

View File

@ -62,7 +62,7 @@ minetest.register_node("technic:supply_converter", {
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("infotext", S("Supply Converter"))
meta:set_float("active", false)
meta:set_float("active", 0)
end,
technic_run = run,
})

View File

@ -21,6 +21,8 @@ local function drill_dig_it0 (pos,player)
if node.name == "default:lava_source" then return end
if node.name == "default:lava_flowing" then return end
if node.name == "tutorial:stone_with_titan" then return end
if node.name == "tutorial:stone_with_rot" then return end
if node.name == "tutorial:stone_with_blau" then return end
if node.name == "default:water_source" then minetest.remove_node(pos) return end
if node.name == "default:water_flowing" then minetest.remove_node(pos) return end
minetest.node_dig(pos,node,player)
@ -302,6 +304,7 @@ minetest.register_tool("technic:mining_drill", {
description = S("Mining Drill Mk%d"):format(1),
inventory_image = "technic_mining_drill.png",
wear_represents = "technic_RE_charge",
groups = {not_in_creative_inventory=1},
on_refill = technic.refill_RE_charge,
on_use = function(itemstack, user, pointed_thing)
mining_drill_mk1_handler(itemstack, user, pointed_thing)
@ -330,6 +333,7 @@ minetest.register_tool("technic:mining_drill_mk2", {
description = S("Mining Drill Mk%d"):format(2),
inventory_image = "technic_mining_drill_mk2.png",
wear_represents = "technic_RE_charge",
groups = {not_in_creative_inventory=1},
on_refill = technic.refill_RE_charge,
on_use = function(itemstack, user, pointed_thing)
mining_drill_mk_handler(itemstack, user, pointed_thing)
@ -359,6 +363,7 @@ minetest.register_tool("technic:mining_drill_mk3", {
description = S("Mining Drill Mk%d"):format(3),
inventory_image = "technic_mining_drill_mk3.png",
wear_represents = "technic_RE_charge",
groups = {not_in_creative_inventory=1},
on_refill = technic.refill_RE_charge,
on_use = function(itemstack, user, pointed_thing)
mining_drill_mk_handler(itemstack,user,pointed_thing)
@ -592,72 +597,125 @@ local mining_drill_list = {
{"150", 2000000, 1},
}
for _, m in pairs(mining_drill_list) do
technic.register_power_tool("technic:drill_mkS"..m[1], m[2])
minetest.register_tool("technic:drill_mkS"..m[1], {
description = "Spezial Mining drill lv."..m[1],
inventory_image = "technic_mining_drill_mkS"..m[1]..".png",
wear_represents = "technic_RE_charge",
on_refill = technic.refill_RE_charge,
on_use = function(itemstack, user, pointed_thing)
local keys = user:get_player_control()
local player_name = user:get_player_name()
local meta = minetest.deserialize(itemstack:get_metadata())
if not meta or not meta.mode or keys.sneak then
return mining_drill_setmode(user, itemstack)
end
if pointed_thing.type ~= "node" or not pos_is_pointable(pointed_thing.under) or not meta.charge then
return
end
local items = user:get_wielded_item():get_name()
local charge_to_take = m[3]
if meta.charge >= charge_to_take then
local pos = minetest.get_pointed_thing_position(pointed_thing, above)
drill_dig_it(pos, user, meta.mode)
meta.charge = meta.charge - charge_to_take
itemstack:set_metadata(minetest.serialize(meta))
technic.set_RE_wear(itemstack, meta.charge, m[2])
print(m[2])
print(m[3])
print(meta.charge)
end
return itemstack
end,
})
for i=1,5,1 do
technic.register_power_tool("technic:drill_mkS"..m[1].."_"..i, m[2])
minetest.register_tool("technic:drill_mkS"..m[1].."_"..i, {
description = "Spezial Mining drill lv."..m[1].." Mode "..i,
inventory_image = "technic_mining_drill_mkS"..m[1]..".png^technic_tool_mode"..i..".png",
wield_image = "technic_mining_drill_mkS"..m[1]..".png",
wear_represents = "technic_RE_charge",
on_refill = technic.refill_RE_charge,
groups = {not_in_creative_inventory=1},
on_use = function(itemstack, user, pointed_thing)
local keys = user:get_player_control()
local player_name = user:get_player_name()
local meta = minetest.deserialize(itemstack:get_metadata())
if not meta or not meta.mode or keys.sneak then
return mining_drill_setmode(user, itemstack)
end
if pointed_thing.type ~= "node" or not pos_is_pointable(pointed_thing.under) or not meta.charge then
return
end
local items = user:get_wielded_item():get_name()
local charge_to_take = m[3]
if meta.charge >= charge_to_take then
local pos = minetest.get_pointed_thing_position(pointed_thing, above)
drill_dig_it(pos, user, meta.mode)
meta.charge = meta.charge - charge_to_take
itemstack:set_metadata(minetest.serialize(meta))
technic.set_RE_wear(itemstack, meta.charge, m[2])
print(m[2])
print(m[3])
print(meta.charge)
end
return itemstack
end,
})
end
if tonumber(m[1]) < 150 then
technic.register_power_tool("technic:drill_mkS"..m[1], m[2])
minetest.register_tool("technic:drill_mkS"..m[1], {
description = "Spezial Mining drill lv."..m[1],
inventory_image = "technic_mining_drill_mkS"..m[1]..".png",
wear_represents = "technic_RE_charge",
on_refill = technic.refill_RE_charge,
groups = {not_in_creative_inventory=1},
on_use = function(itemstack, user, pointed_thing)
local keys = user:get_player_control()
local player_name = user:get_player_name()
local meta = minetest.deserialize(itemstack:get_metadata())
if not meta or not meta.mode or keys.sneak then
return mining_drill_setmode(user, itemstack)
end
if pointed_thing.type ~= "node" or not pos_is_pointable(pointed_thing.under) or not meta.charge then
return
end
local items = user:get_wielded_item():get_name()
local charge_to_take = m[3]
if meta.charge >= charge_to_take then
local pos = minetest.get_pointed_thing_position(pointed_thing, above)
drill_dig_it(pos, user, meta.mode)
meta.charge = meta.charge - charge_to_take
itemstack:set_metadata(minetest.serialize(meta))
technic.set_RE_wear(itemstack, meta.charge, m[2])
print(m[2])
print(m[3])
print(meta.charge)
end
return itemstack
end,
})
for i=1,5,1 do
technic.register_power_tool("technic:drill_mkS"..m[1].."_"..i, m[2])
minetest.register_tool("technic:drill_mkS"..m[1].."_"..i, {
description = "Spezial Mining drill lv."..m[1].." Mode "..i,
inventory_image = "technic_mining_drill_mkS"..m[1]..".png^technic_tool_mode"..i..".png",
wield_image = "technic_mining_drill_mkS"..m[1]..".png",
wear_represents = "technic_RE_charge",
on_refill = technic.refill_RE_charge,
groups = {not_in_creative_inventory=1},
on_use = function(itemstack, user, pointed_thing)
local keys = user:get_player_control()
local player_name = user:get_player_name()
local meta = minetest.deserialize(itemstack:get_metadata())
if not meta or not meta.mode or keys.sneak then
return mining_drill_setmode(user, itemstack)
end
if pointed_thing.type ~= "node" or not pos_is_pointable(pointed_thing.under) or not meta.charge then
return
end
local items = user:get_wielded_item():get_name()
local charge_to_take = m[3]
if meta.charge >= charge_to_take then
local pos = minetest.get_pointed_thing_position(pointed_thing, above)
drill_dig_it(pos, user, meta.mode)
meta.charge = meta.charge - charge_to_take
itemstack:set_metadata(minetest.serialize(meta))
technic.set_RE_wear(itemstack, meta.charge, m[2])
print(m[2])
print(m[3])
print(meta.charge)
end
return itemstack
end,
})
end
else
technic.register_power_tool("technic:drill_mkS"..m[1], m[2])
minetest.register_tool("technic:drill_mkS"..m[1], {
description = "Spezial Mining drill lv.MAX",
inventory_image = "technic_mining_drill_mkS"..m[1]..".png",
wear_represents = "technic_RE_charge",
on_refill = technic.refill_RE_charge,
on_use = function(itemstack, user, pointed_thing)
local keys = user:get_player_control()
local player_name = user:get_player_name()
local meta = minetest.deserialize(itemstack:get_metadata())
if not meta or not meta.mode or keys.sneak then
return mining_drill_setmode(user, itemstack)
end
if pointed_thing.type ~= "node" or not pos_is_pointable(pointed_thing.under) then
return
end
local items = user:get_wielded_item():get_name()
local pos = minetest.get_pointed_thing_position(pointed_thing, above)
drill_dig_it(pos, user, meta.mode)
return itemstack
end,
})
for i=1,5,1 do
technic.register_power_tool("technic:drill_mkS"..m[1].."_"..i, m[2])
minetest.register_tool("technic:drill_mkS"..m[1].."_"..i, {
description = "Spezial Mining drill lv.MAX Mode "..i,
inventory_image = "technic_mining_drill_mkS"..m[1]..".png^technic_tool_mode"..i..".png",
wield_image = "technic_mining_drill_mkS"..m[1]..".png",
wear_represents = "technic_RE_charge",
on_refill = technic.refill_RE_charge,
groups = {not_in_creative_inventory=1},
on_use = function(itemstack, user, pointed_thing)
local keys = user:get_player_control()
local player_name = user:get_player_name()
local meta = minetest.deserialize(itemstack:get_metadata())
if not meta or not meta.mode or keys.sneak then
return mining_drill_setmode(user, itemstack)
end
if pointed_thing.type ~= "node" or not pos_is_pointable(pointed_thing.under) then
return
end
local items = user:get_wielded_item():get_name()
local pos = minetest.get_pointed_thing_position(pointed_thing, above)
drill_dig_it(pos, user, meta.mode)
return itemstack
end,
})
end
end
end
minetest.register_craft({

View File

@ -90,6 +90,9 @@ local no_destroy = {
["air"] = true,
["default:lava_source"] = true,
["default:lava_flowing"] = true,
["tutorial:stone_with_rot"] = true,
["tutorial:stone_with_blau"] = true,
["tutorial:stone_with_titan"] = true,
}
local function laser_shoot(player, range, particle_texture, sound)
local player_pos = player:getpos()
@ -129,6 +132,7 @@ for _, m in pairs(mining_lasers_list) do
minetest.register_tool("technic:laser_mk"..m[1], {
description = S("Mining Laser Mk%d"):format(m[1]),
inventory_image = "technic_mining_laser_mk"..m[1]..".png",
groups = {not_in_creative_inventory=1},
stack_max = 1,
wear_represents = "technic_RE_charge",
on_refill = technic.refill_RE_charge,
@ -306,29 +310,45 @@ local mining_lasers_list2 = {
for _, m in pairs(mining_lasers_list2) do
technic.register_power_tool("technic:laser_mkS"..m[1], m[3])
minetest.register_tool("technic:laser_mkS"..m[1], {
description = S("Spezial Mining Laser lv.%d"):format(m[1]),
inventory_image = "technic_mining_laser_mkS"..m[1]..".png",
stack_max = 1,
wear_represents = "technic_RE_charge",
on_refill = technic.refill_RE_charge,
on_use = function(itemstack, user)
local meta = minetest.deserialize(itemstack:get_metadata())
if not meta or not meta.charge then
return
end
if tonumber(m[1]) < 150 then
technic.register_power_tool("technic:laser_mkS"..m[1], m[3])
minetest.register_tool("technic:laser_mkS"..m[1], {
description = S("Spezial Mining Laser lv.%d"):format(m[1]),
inventory_image = "technic_mining_laser_mkS"..m[1]..".png",
stack_max = 1,
wear_represents = "technic_RE_charge",
on_refill = technic.refill_RE_charge,
groups = {not_in_creative_inventory=1},
on_use = function(itemstack, user)
local meta = minetest.deserialize(itemstack:get_metadata())
if not meta or not meta.charge then
return
end
-- If there's enough charge left, fire the laser
if meta.charge >= m[4] then
meta.charge = meta.charge - m[4]
laser_shoot(user, m[2], "technic_laser_beam_mk"..m[1]..".png", "technic_laser_mk"..m[1])
technic.set_RE_wear(itemstack, meta.charge, m[3])
itemstack:set_metadata(minetest.serialize(meta))
end
return itemstack
end,
})
-- If there's enough charge left, fire the laser
if meta.charge >= m[4] then
meta.charge = meta.charge - m[4]
laser_shoot(user, m[2], "technic_laser_beam_mk"..m[1]..".png", "technic_laser_mk"..m[1])
technic.set_RE_wear(itemstack, meta.charge, m[3])
itemstack:set_metadata(minetest.serialize(meta))
end
return itemstack
end,
})
else
technic.register_power_tool("technic:laser_mkS"..m[1], m[3])
minetest.register_tool("technic:laser_mkS"..m[1], {
description = S("Spezial Mining Laser lv.MAX"),
inventory_image = "technic_mining_laser_mkS"..m[1]..".png",
stack_max = 1,
wear_represents = "technic_RE_charge",
on_refill = technic.refill_RE_charge,
on_use = function(itemstack, user)
laser_shoot(user, 30, "technic_laser_beam_mk1.png", "technic_laser_mk1")
return itemstack
end,
})
end
end
minetest.register_craft({

103
mods/tutorial/abm.lua Normal file
View File

@ -0,0 +1,103 @@
--v.2.0.0
--v.1.13.0
--v.1.12.0
--v.1.11.1
--v.1.11.0
--v.1.10.0
--v.1.9.2
--v.1.9.1
--v.1.9.0
--v.1.8.0
--v.1.7.5
--v.1.7.4
--v.1.7.3
--v.1.7.2
--v.1.7.1
--v.1.7.0
--v.1.6.0
--v.1.5.0
--v.1.4.4
--v.1.4.3
--v.1.4.2
--v.1.4.1
--v.1.4.0
--v.1.3.3
--v.1.3.2
--v.1.3.1
--v.1.3.0
--v.1.2.4
--v.1.2.3
--v.1.2.2
--v.1.2.1
--v.1.2.0
--v.1.1.5
--v.1.1.4
--v.1.1.3
--v.1.1.2
--v.1.1.1
--v.1.1.0
--v.1.0.10
--v.1.0.9
--v.1.0.8
--v.1.0.7
--v.1.0.6
--v.1.0.5
--v.1.0.4
--v.1.0.3
--v.1.0.2
--v.1.0.1
--v.1.0.0
--v.0.23.3
--v.0.23.2
--v.0.23.1
--v.0.23.0
--v.0.22.1
--v.0.22.0
--v.0.21.0
--v.0.20.0
--v.0.19.1
--v.0.18.0
--v.0.17.0
--v.0.16.0
--v.0.15.0
--v.0.14.0
--v.0.13.0
--v.0.12.0
--v.0.11.0
--v.0.10.1
--v.0.10.0
--v.0.9.0
--v.0.8.0
--v.0.7.2
--v.0.7.1
--v.0.7.0
--v.0.6.6
--v.0.6.5
--v.0.6.4
--v.0.6.3
--v.0.6.2
minetest.register_abm({
nodenames = {"tutorial:thunder"},
interval = 3.0,
chance = 2,
action = function(pos, node, active_object_count, active_object_count_wider)
minetest.env:remove_node(pos)
end,
})
--v.0.6.1
--v.0.6.0
--v.0.5.2
--v.0.5.1
--v.0.5.0
--v.0.4.0
--v.0.3.0
--v.0.2.0
--v.0.1.0
minetest.register_abm({
nodenames = {"tutorial:stampfi_ei"},
interval = 2,
chance = 4,
action = function(pos)
minetest.env:add_node(pos, {name="tutorial:stampfi"})
end,
})

View File

@ -1,271 +0,0 @@
--v.2.0.0
--v.1.13.0
--v.1.12.0
--v.1.11.1
--v.1.11.0
--v.1.10.0
--v.1.9.2
--v.1.9.1
--v.1.9.0
--v.1.8.0
--v.1.7.5
--v.1.7.4
--v.1.7.3
--v.1.7.2
--v.1.7.1
--v.1.7.0
--v.1.6.0
--v.1.5.0
--v.1.4.4
--v.1.4.3
--v.1.4.2
--v.1.4.1
--v.1.4.0
--v.1.3.3
--v.1.3.2
--v.1.3.1
--v.1.3.0
--v.1.2.4
--v.1.2.3
--v.1.2.2
--v.1.2.1
--v.1.2.0
--v.1.1.5
--v.1.1.4
--v.1.1.3
--v.1.1.2
--v.1.1.1
--v.1.1.0
--v.1.0.10
--v.1.0.9
--v.1.0.8
--v.1.0.7
--v.1.0.6
--v.1.0.5
--v.1.0.4
--v.1.0.3
--v.1.0.2
--v.1.0.1
--v.1.0.0
--v.0.23.3
--v.0.23.2
--v.0.23.1
--v.0.23.0
--v.0.22.1
--v.0.22.0
minetest.register_abm({
nodenames = {"tutorial:geschenk_wool1"},
interval = 5,
chance = 6,
action = function(pos)
minetest.env:add_node(pos, {name="tutorial:blue_wool_titan30"})
end,
})
minetest.register_abm({
nodenames = {"tutorial:geschenk_wool1"},
interval = 5,
chance = 6,
action = function(pos)
minetest.env:add_node(pos, {name="tutorial:orange_wool_titan30"})
end,
})
minetest.register_abm({
nodenames = {"tutorial:geschenk_wool1"},
interval = 5,
chance = 6,
action = function(pos)
minetest.env:add_node(pos, {name="tutorial:red_wool_titan30"})
end,
})
minetest.register_abm({
nodenames = {"tutorial:geschenk_wool1"},
interval = 5,
chance = 6,
action = function(pos)
minetest.env:add_node(pos, {name="tutorial:violet_wool_titan30"})
end,
})
minetest.register_abm({
nodenames = {"tutorial:geschenk_wool1"},
interval = 5,
chance = 6,
action = function(pos)
minetest.env:add_node(pos, {name="tutorial:white_wool_titan30"})
end,
})
minetest.register_abm({
nodenames = {"tutorial:geschenk_wool1"},
interval = 5,
chance = 6,
action = function(pos)
minetest.env:add_node(pos, {name="tutorial:yellow_wool_titan30"})
end,
})
minetest.register_abm({
nodenames = {"tutorial:geschenk_wool2"},
interval = 5,
chance = 15,
action = function(pos)
minetest.env:add_node(pos, {name="tutorial:yellow_wool_titan50"})
end,
})
minetest.register_abm({
nodenames = {"tutorial:geschenk_wool2"},
interval = 5,
chance = 15,
action = function(pos)
minetest.env:add_node(pos, {name="tutorial:white_wool_titan50"})
end,
})
minetest.register_abm({
nodenames = {"tutorial:geschenk_wool2"},
interval = 5,
chance = 15,
action = function(pos)
minetest.env:add_node(pos, {name="tutorial:violet_wool_titan50"})
end,
})
minetest.register_abm({
nodenames = {"tutorial:geschenk_wool2"},
interval = 5,
chance = 15,
action = function(pos)
minetest.env:add_node(pos, {name="tutorial:red_wool_titan50"})
end,
})
minetest.register_abm({
nodenames = {"tutorial:geschenk_wool2"},
interval = 5,
chance = 15,
action = function(pos)
minetest.env:add_node(pos, {name="tutorial:pink_wool_titan50"})
end,
})
minetest.register_abm({
nodenames = {"tutorial:geschenk_wool2"},
interval = 5,
chance = 15,
action = function(pos)
minetest.env:add_node(pos, {name="tutorial:orange_wool_titan50"})
end,
})
minetest.register_abm({
nodenames = {"tutorial:geschenk_wool2"},
interval = 5,
chance = 15,
action = function(pos)
minetest.env:add_node(pos, {name="tutorial:magenta_wool_titan50"})
end,
})
minetest.register_abm({
nodenames = {"tutorial:geschenk_wool2"},
interval = 5,
chance = 15,
action = function(pos)
minetest.env:add_node(pos, {name="tutorial:grey_wool_titan50"})
end,
})
minetest.register_abm({
nodenames = {"tutorial:geschenk_wool2"},
interval = 5,
chance = 15,
action = function(pos)
minetest.env:add_node(pos, {name="tutorial:green_wool_titan50"})
end,
})
minetest.register_abm({
nodenames = {"tutorial:geschenk_wool2"},
interval = 5,
chance = 15,
action = function(pos)
minetest.env:add_node(pos, {name="tutorial:dark_grey_wool_titan50"})
end,
})
minetest.register_abm({
nodenames = {"tutorial:geschenk_wool2"},
interval = 5,
chance = 15,
action = function(pos)
minetest.env:add_node(pos, {name="tutorial:dark_green_wool_titan50"})
end,
})
minetest.register_abm({
nodenames = {"tutorial:geschenk_wool2"},
interval = 5,
chance = 15,
action = function(pos)
minetest.env:add_node(pos, {name="tutorial:cyan_wool_titan50"})
end,
})
minetest.register_abm({
nodenames = {"tutorial:geschenk_wool2"},
interval = 5,
chance = 15,
action = function(pos)
minetest.env:add_node(pos, {name="tutorial:brown_wool_titan50"})
end,
})
minetest.register_abm({
nodenames = {"tutorial:geschenk_wool2"},
interval = 5,
chance = 15,
action = function(pos)
minetest.env:add_node(pos, {name="tutorial:blue_wool_titan50"})
end,
})
minetest.register_abm({
nodenames = {"tutorial:geschenk_wool2"},
interval = 5,
chance = 15,
action = function(pos)
minetest.env:add_node(pos, {name="tutorial:black_wool_titan50"})
end,
})
--v.0.21.0
--v.0.20.0
--v.0.19.1
--v.0.18.0
--v.0.17.0
--v.0.16.0
--v.0.15.0
--v.0.14.0
--v.0.13.0
--v.0.12.0
--v.0.11.0
--v.0.10.1
--v.0.10.0
--v.0.9.0
--v.0.8.0
--v.0.7.2
--v.0.7.1
--v.0.7.0
--v.0.6.6
--v.0.6.5
--v.0.6.4
--v.0.6.3
--v.0.6.2
minetest.register_abm({
nodenames = {"tutorial:thunder"},
interval = 3.0,
chance = 2,
action = function(pos, node, active_object_count, active_object_count_wider)
minetest.env:remove_node(pos)
end,
})
--v.0.6.1
--v.0.6.0
--v.0.5.2
--v.0.5.1
--v.0.5.0
--v.0.4.0
--v.0.3.0
--v.0.2.0
--v.0.1.0
minetest.register_abm({
nodenames = {"tutorial:stampfi_ei"},
interval = 2,
chance = 4,
action = function(pos)
minetest.env:add_node(pos, {name="tutorial:stampfi"})
end,
})

View File

@ -2097,13 +2097,6 @@ minetest.register_craft({
{'default:cactus', 'default:cactus', 'default:cactus'},
}
})
minetest.register_craft({
output = 'nyancat:nyancat',
recipe = {
{'nyancat:nyancat_rainbow', 'nyancat:nyancat_rainbow'},
{'nyancat:nyancat_rainbow', 'nyancat:nyancat_rainbow'},
}
})
minetest.register_craft({
output = 'tutorial:battleaxe_mega13',
recipe = {

View File

@ -33,12 +33,11 @@ minetest.register_craftitem("tutorial:dragon_schluessel", {
minetest.register_craftitem("tutorial:coin2", {
description = "Coin green (drill edition, very rare)",
inventory_image = "tutorial_coin.png",
stack_max = 1500,
stack_max = 9999,
})
minetest.register_craftitem("tutorial:monster_remover", {
description = "Admin tool 7: Monster Remover",
inventory_image = "tutorial_monster_entverner.png",
groups = {not_in_creative_inventory=1},
stack_max = 1,
on_use = function(itemstack, user, pointed_thing)
local pos = user:getpos()
@ -188,13 +187,15 @@ minetest.register_craftitem("tutorial:lavabattleaxe", {
minetest.register_craftitem("tutorial:lila_erz1", {
description = "Purple Lv.1",
inventory_image = "tutorial_lila_erz1.png",
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem("tutorial:lila_erz2", {
description = "Purple Lv.2",
inventory_image = "tutorial_lila_erz2.png",
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem("tutorial:lila_erz3", {
description = "Purple Lv.3",
description = "Purple Lv.MAX",
inventory_image = "tutorial_lila_erz3.png",
})
minetest.register_craftitem("tutorial:legenden_schluessel", {
@ -208,14 +209,17 @@ minetest.register_craftitem("tutorial:bag_schluessel4", {
minetest.register_craftitem("tutorial:bag_schluessel3", {
description = "Bagkey Lv.3",
inventory_image = "tutorial_bag_schluessel3.png",
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem("tutorial:bag_schluessel2", {
description = "Bagkey Lv.2",
inventory_image = "tutorial_bag_schluessel2.png",
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem("tutorial:bag_schluessel1", {
description = "Bagkey Lv.1",
inventory_image = "tutorial_bag_schluessel1.png",
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem("tutorial:craft_schluessel7", {
description = "Craftkey Lv.MAX",
@ -224,30 +228,32 @@ minetest.register_craftitem("tutorial:craft_schluessel7", {
minetest.register_craftitem("tutorial:craft_schluessel6", {
description = "Craftkey Lv.6",
inventory_image = "tutorial_craft_schluessel6.png",
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem("tutorial:craft_schluessel5", {
description = "Craftkey Lv.5",
inventory_image = "tutorial_craft_schluessel5.png",
})
minetest.register_craftitem("tutorial:craft_schluessel5", {
description = "Craftkey Lv.5",
inventory_image = "tutorial_craft_schluessel5.png",
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem("tutorial:craft_schluessel4", {
description = "Craftkey Lv.4",
inventory_image = "tutorial_craft_schluessel4.png",
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem("tutorial:craft_schluessel3", {
description = "Craftkey Lv.3",
inventory_image = "tutorial_craft_schluessel3.png",
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem("tutorial:craft_schluessel2", {
description = "Craftkey Lv.2",
inventory_image = "tutorial_craft_schluessel2.png",
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem("tutorial:craft_schluessel1", {
description = "Craftkey Lv.1",
inventory_image = "tutorial_craft_schluessel1.png",
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem("tutorial:xp_blau", {
description = "Blue xp block",
@ -276,103 +282,126 @@ minetest.register_craftitem("tutorial:titan", {
minetest.register_craftitem("tutorial:coin_lila", {
description = "Coin purple (very rare)",
inventory_image = "tutorial_coin_lila.png",
stack_max = 9999,
})
minetest.register_craftitem("tutorial:coin_rot", {
description = "Coin red (very rare)",
inventory_image = "tutorial_coin_rot.png",
stack_max = 9999,
})
minetest.register_craftitem("tutorial:coin_blau", {
description = "Coin blue (very rare)",
inventory_image = "tutorial_coin_blau.png",
stack_max = 9999,
})
minetest.register_craftitem("tutorial:coin_grau", {
description = "Coin gray (very rare)",
inventory_image = "tutorial_coin_grau.png",
stack_max = 9999,
})
minetest.register_craftitem("tutorial:coin_grau1", {
description = "Spezial gray coin lv.1",
inventory_image = "tutorial_coin_grau1.png",
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem("tutorial:coin_grau2", {
description = "Spezial gray coin lv.2",
inventory_image = "tutorial_coin_grau2.png",
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem("tutorial:coin_grau3", {
description = "Spezial gray coin lv.3",
inventory_image = "tutorial_coin_grau3.png",
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem("tutorial:coin_grau4", {
description = "Spezial gray coin lv.4",
inventory_image = "tutorial_coin_grau4.png",
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem("tutorial:coin_grau5", {
description = "Spezial gray coin lv.5",
inventory_image = "tutorial_coin_grau5.png",
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem("tutorial:coin_grau6", {
description = "Spezial gray coin lv.6",
inventory_image = "tutorial_coin_grau6.png",
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem("tutorial:coin_grau7", {
description = "Spezial gray coin lv.7",
inventory_image = "tutorial_coin_grau7.png",
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem("tutorial:coin_grau8", {
description = "Spezial gray coin lv.8",
inventory_image = "tutorial_coin_grau8.png",
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem("tutorial:coin_grau9", {
description = "Spezial gray coin lv.9",
inventory_image = "tutorial_coin_grau9.png",
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem("tutorial:coin_grau10", {
description = "Spezial gray coin lv.10",
inventory_image = "tutorial_coin_grau10.png",
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem("tutorial:coin_grau11", {
description = "Spezial gray coin lv.11",
inventory_image = "tutorial_coin_grau11.png",
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem("tutorial:coin_grau12", {
description = "Spezial gray coin lv.12",
inventory_image = "tutorial_coin_grau12.png",
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem("tutorial:coin_grau13", {
description = "Spezial gray coin lv.13",
inventory_image = "tutorial_coin_grau13.png",
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem("tutorial:coin_grau14", {
description = "Spezial gray coin lv.14",
inventory_image = "tutorial_coin_grau14.png",
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem("tutorial:coin_grau15", {
description = "Spezial gray coin lv.15",
inventory_image = "tutorial_coin_grau15.png",
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem("tutorial:coin_grau16", {
description = "Spezial gray coin lv.16",
inventory_image = "tutorial_coin_grau16.png",
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem("tutorial:coin_grau17", {
description = "Spezial gray coin lv.17",
inventory_image = "tutorial_coin_grau17.png",
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem("tutorial:coin_grau18", {
description = "Spezial gray coin lv.18",
inventory_image = "tutorial_coin_grau18.png",
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem("tutorial:coin_grau19", {
description = "Spezial gray coin lv.19",
inventory_image = "tutorial_coin_grau19.png",
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem("tutorial:coin_grau20", {
description = "Spezial gray coin lv.20",
description = "Spezial gray coin lv.MAX",
inventory_image = "tutorial_coin_grau20.png",
})
minetest.register_craftitem("tutorial:coin", {
description = "Coin green (laser edition, very rare)",
inventory_image = "tutorial_coin.png",
stack_max = 1500,
stack_max = 9999,
})
minetest.register_craftitem("tutorial:admin", {
description = "Admin",
@ -384,6 +413,7 @@ minetest.register_craftitem("tutorial:geschenkpapier", {
})
minetest.register_craftitem("tutorial:geld", {
inventory_image = "tutorial_geld.png",
description = "Super material",
})
minetest.register_craftitem("tutorial:XP", {
inventory_image = "tutorial_XP.png",
@ -395,66 +425,79 @@ minetest.register_craftitem("tutorial:stone_coal_lump", {
minetest.register_craftitem("tutorial:uranium1", {
description = "Uranium lv.1",
inventory_image = "tutorial_uranium1.png",
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem("tutorial:uranium2", {
description = "Uranium lv.2",
inventory_image = "tutorial_uranium2.png",
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem("tutorial:uranium3", {
description = "Uranium lv.3",
inventory_image = "tutorial_uranium3.png",
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem("tutorial:uranium4", {
description = "Uranium lv.4",
inventory_image = "tutorial_uranium4.png",
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem("tutorial:uranium5", {
description = "Uranium lv.5",
inventory_image = "tutorial_uranium5.png",
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem("tutorial:uranium6", {
description = "Uranium lv.6",
inventory_image = "tutorial_uranium6.png",
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem("tutorial:uranium7", {
description = "Uranium lv.7",
inventory_image = "tutorial_uranium7.png",
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem("tutorial:uranium8", {
description = "Uranium lv.8",
inventory_image = "tutorial_uranium8.png",
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem("tutorial:uranium9", {
description = "Uranium lv.9",
description = "Uranium lv.MAX",
inventory_image = "tutorial_uranium9.png",
})
minetest.register_craftitem( "tutorial:blackblock1", {
description = "Black item lv.1",
inventory_image = "tutorial_blackblock1.png",
on_place_on_ground = minetest.craftitem_place_item,
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem( "tutorial:blackblock2", {
description = "Black item lv.2",
inventory_image = "tutorial_blackblock2.png",
on_place_on_ground = minetest.craftitem_place_item,
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem( "tutorial:blackblock3", {
description = "Black item lv.3",
inventory_image = "tutorial_blackblock3.png",
on_place_on_ground = minetest.craftitem_place_item,
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem( "tutorial:blackblock4", {
description = "Black item lv.4",
inventory_image = "tutorial_blackblock4.png",
on_place_on_ground = minetest.craftitem_place_item,
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem( "tutorial:blackblock5", {
description = "Black item lv.5",
inventory_image = "tutorial_blackblock5.png",
on_place_on_ground = minetest.craftitem_place_item,
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem( "tutorial:blackblock6", {
description = "Black item lv.6",
description = "Black item lv.MAX",
inventory_image = "tutorial_blackblock6.png",
on_place_on_ground = minetest.craftitem_place_item,
})
@ -462,29 +505,34 @@ minetest.register_craftitem( "tutorial:whiteblock1", {
description = "White item lv.1",
inventory_image = "tutorial_whiteblock1.png",
on_place_on_ground = minetest.craftitem_place_item,
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem( "tutorial:whiteblock2", {
description = "White item lv.2",
inventory_image = "tutorial_whiteblock2.png",
on_place_on_ground = minetest.craftitem_place_item,
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem( "tutorial:whiteblock3", {
description = "White item lv.3",
inventory_image = "tutorial_whiteblock3.png",
on_place_on_ground = minetest.craftitem_place_item,
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem( "tutorial:whiteblock4", {
description = "White item lv.4",
inventory_image = "tutorial_whiteblock4.png",
on_place_on_ground = minetest.craftitem_place_item,
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem( "tutorial:whiteblock5", {
description = "White item lv.5",
inventory_image = "tutorial_whiteblock5.png",
on_place_on_ground = minetest.craftitem_place_item,
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem( "tutorial:whiteblock6", {
description = "White item lv.6",
description = "White item lv.MAX",
inventory_image = "tutorial_whiteblock6.png",
on_place_on_ground = minetest.craftitem_place_item,
})
@ -500,71 +548,81 @@ minetest.register_craftitem( "tutorial:superblock1", {
description = "Super item lv.1",
inventory_image = "tutorial_superblock1.png",
on_place_on_ground = minetest.craftitem_place_item,
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem( "tutorial:superblock2", {
description = "Super item lv.2",
inventory_image = "tutorial_superblock2.png",
on_place_on_ground = minetest.craftitem_place_item,
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem( "tutorial:superblock3", {
description = "Super item lv.3",
inventory_image = "tutorial_superblock3.png",
on_place_on_ground = minetest.craftitem_place_item,
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem( "tutorial:superblock4", {
description = "Super item lv.4",
inventory_image = "tutorial_superblock4.png",
on_place_on_ground = minetest.craftitem_place_item,
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem( "tutorial:superblock5", {
description = "Super item lv.5",
inventory_image = "tutorial_superblock5.png",
on_place_on_ground = minetest.craftitem_place_item,
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem( "tutorial:superblock6", {
description = "Super item lv.6",
inventory_image = "tutorial_superblock6.png",
on_place_on_ground = minetest.craftitem_place_item,
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem( "tutorial:superblock7", {
description = "Super item lv.7",
inventory_image = "tutorial_superblock7.png",
on_place_on_ground = minetest.craftitem_place_item,
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem( "tutorial:superblock8", {
description = "Super item lv.8",
inventory_image = "tutorial_superblock8.png",
on_place_on_ground = minetest.craftitem_place_item,
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem( "tutorial:superblock9", {
description = "Super item lv.9",
description = "Super item lv.MAX",
inventory_image = "tutorial_superblock9.png",
on_place_on_ground = minetest.craftitem_place_item,
})
minetest.register_craftitem("tutorial:blades",{
description = "Blades",
inventory_image = "blades_invt.png",
wield_image = "blades_inv.png",
description = "Helicopter Blades",
inventory_image = "helicopter_blades_inv.png",
})
-- cabin
minetest.register_craftitem("tutorial:cabin",{
description = "Cabin for heli",
inventory_image = "cabin_invt.png",
wield_image = "cabin_inv.png",
description = "Cabin for Helicopter",
inventory_image = "helicopter_cabin_inv.png",
})
-- heli
minetest.register_craftitem("tutorial:heli", {
description = "Helicopter",
inventory_image = "heli_invt.png",
wield_image = "heli_inv.png",
wield_scale = {x=1, y=1, z=1},
liquids_pointable = false,
inventory_image = "helicopter_heli_inv.png",
on_place = function(itemstack, placer, pointed_thing)
if pointed_thing.type ~= "node" then
return
end
pointed_thing.under.y = pointed_thing.under.y+1
minetest.env:add_entity(pointed_thing.under, "tutorial:heli")
itemstack:take_item()
if minetest.get_node(pointed_thing.above).name ~= "air" then
return
end
minetest.add_entity(pointed_thing.above, "helicopter:heli")
if not (creative_exists and placer and
creative.is_enabled_for(placer:get_player_name())) then
itemstack:take_item()
end
return itemstack
end,
})
})

View File

@ -6,7 +6,7 @@ minetest.register_on_joinplayer(function(player)
offset = {x=0, y=10},
alignment = {x=1, y=0},
number = 0xFFFFFF ,
text = "For Minetest : 5.1.0",
text = "For Minetest : 5.1.x",
})
player:hud_add({
hud_elem_type = "text",
@ -14,24 +14,43 @@ minetest.register_on_joinplayer(function(player)
offset = {x=0, y=30},
alignment = {x=1, y=0},
number = 0xFFFFFF ,
text = "Game Version : 3.3.7",
text = "Game Version : 3.4.0",
})
end)
dofile(minetest.get_modpath("tutorial").."/basic/craft.lua")
dofile(minetest.get_modpath("tutorial").."/basic/node.lua")
dofile(minetest.get_modpath("tutorial").."/basic/tool.lua")
dofile(minetest.get_modpath("tutorial").."/basic/craftitem.lua")
dofile(minetest.get_modpath("tutorial").."/basic/ore.lua")
dofile(minetest.get_modpath("tutorial").."/basic/abm.lua")
dofile(minetest.get_modpath("tutorial").."/basic/entity.lua")
dofile(minetest.get_modpath("tutorial").."/basic/chatcommand.lua")
dofile(minetest.get_modpath("tutorial").."/basic/other.lua")
dofile(minetest.get_modpath("tutorial").."/other/mummy.lua")
dofile(minetest.get_modpath("tutorial").."/other/regnum.lua")
dofile(minetest.get_modpath("tutorial").."/craft.lua")
dofile(minetest.get_modpath("tutorial").."/node.lua")
dofile(minetest.get_modpath("tutorial").."/tool.lua")
dofile(minetest.get_modpath("tutorial").."/craftitem.lua")
dofile(minetest.get_modpath("tutorial").."/ore.lua")
dofile(minetest.get_modpath("tutorial").."/abm.lua")
dofile(minetest.get_modpath("tutorial").."/entity.lua")
dofile(minetest.get_modpath("tutorial").."/chatcommand.lua")
dofile(minetest.get_modpath("tutorial").."/other.lua")
dofile(minetest.get_modpath("tutorial").."/alias.lua")
--v.2.0.0+
minetest.register_craft({
output = "tutorial:spawn_egg",
recipe = {
{'default:obsidian', 'default:obsidian', 'default:obsidian'},
{'default:obsidian', 'default:ice', 'default:obsidian'},
{'default:obsidian', 'default:obsidian', 'default:obsidian'},
}
})
minetest.register_craftitem("tutorial:spawn_egg", {
description = "Mummy spawn-egg",
inventory_image = "tutorial_mummy_egg.png",
liquids_pointable = false,
stack_max = 99,
on_place = function(itemstack, placer, pointed_thing)
if pointed_thing.type == "node" then
minetest.env:add_entity(pointed_thing.above,"mobs:mummy")
if not minetest.setting_getbool("creative_mode") then itemstack:take_item() end
return itemstack
end
end,
})
local rg25 = {}
rg25.get_formspec = function(player, pos)
if player == nil then
@ -45,11 +64,11 @@ rg25.get_formspec = function(player, pos)
.."bgcolor[#080808BB;true]"
.."label[0,1;I. 17. Music]"
.."label[0,1.3;Enable Background Music.]"
.."label[0,1.6;Choose an instrument to be randomly selected]"
.."label[0,1.9;and listen to the Regnum Theme.]"
.."label[0,1.6;Choose one Theme or two to be randomly selected]"
.."label[0,1.9;and listen to the Regnum Themes.]"
.."label[0,2.2;How to use Music:]"
.."label[0,2.5;1. Enable Background Music.]"
.."label[0,2.8;2. Choose instruments]"
.."label[0,2.8;2. Choose Themes]"
.."button[2,10; 2,0.5;rg24;<]"
.."button[4,10; 2,0.5;rg15;>]"
return formspec
@ -268,7 +287,7 @@ minetest.register_entity("tutorial:legendballadmin", {
light_source = 12,
on_step = function(self, dtime)
local pos = self.object:getpos()
if minetest.env:get_node(self.object:getpos()).name ~= "air"then
if minetest.env:get_node(self.object:getpos()).name ~= "air" then
self.hit_node(self, pos, node)
self.object:remove()
return
@ -341,7 +360,7 @@ minetest.register_node("tutorial:legend_thunderadmin", {
light_source = 12,
walkable = false,
buildable_to = true,
damage_per_second = 20,
damage_per_second = 100,
drop = {},
groups = {dig_immediate=3},
})
@ -384,6 +403,7 @@ minetest.register_tool("tutorial:legendstick9", {
minetest.register_tool("tutorial:legendstick8", {
description = "Legendstick lv.8",
inventory_image = "tutorial_legendzauberstab8.png",
groups = {not_in_creative_inventory=1},
on_use = function(itemstack, placer, pointed_thing)
local dir = placer:get_look_dir();
local inv = placer:get_inventory()
@ -398,6 +418,7 @@ minetest.register_tool("tutorial:legendstick8", {
minetest.register_tool("tutorial:legendstick7", {
description = "Legendstick lv.7",
inventory_image = "tutorial_legendzauberstab7.png",
groups = {not_in_creative_inventory=1},
on_use = function(itemstack, placer, pointed_thing)
local dir = placer:get_look_dir();
local inv = placer:get_inventory()
@ -412,6 +433,7 @@ minetest.register_tool("tutorial:legendstick7", {
minetest.register_tool("tutorial:legendstick6", {
description = "Legendstick lv.6",
inventory_image = "tutorial_legendzauberstab6.png",
groups = {not_in_creative_inventory=1},
on_use = function(itemstack, placer, pointed_thing)
local dir = placer:get_look_dir();
local inv = placer:get_inventory()
@ -426,6 +448,7 @@ minetest.register_tool("tutorial:legendstick6", {
minetest.register_tool("tutorial:legendstick5", {
description = "Legendstick lv.5",
inventory_image = "tutorial_legendzauberstab5.png",
groups = {not_in_creative_inventory=1},
on_use = function(itemstack, placer, pointed_thing)
local dir = placer:get_look_dir();
local inv = placer:get_inventory()
@ -440,6 +463,7 @@ minetest.register_tool("tutorial:legendstick5", {
minetest.register_tool("tutorial:legendstick4", {
description = "Legendstick lv.4",
inventory_image = "tutorial_legendzauberstab4.png",
groups = {not_in_creative_inventory=1},
on_use = function(itemstack, placer, pointed_thing)
local dir = placer:get_look_dir();
local inv = placer:get_inventory()
@ -454,6 +478,7 @@ minetest.register_tool("tutorial:legendstick4", {
minetest.register_tool("tutorial:legendstick3", {
description = "Legendstick lv.3",
inventory_image = "tutorial_legendzauberstab3.png",
groups = {not_in_creative_inventory=1},
on_use = function(itemstack, placer, pointed_thing)
local dir = placer:get_look_dir();
local inv = placer:get_inventory()
@ -468,6 +493,7 @@ minetest.register_tool("tutorial:legendstick3", {
minetest.register_tool("tutorial:legendstick2", {
description = "Legendstick lv.2",
inventory_image = "tutorial_legendzauberstab2.png",
groups = {not_in_creative_inventory=1},
on_use = function(itemstack, placer, pointed_thing)
local dir = placer:get_look_dir();
local inv = placer:get_inventory()
@ -482,6 +508,7 @@ minetest.register_tool("tutorial:legendstick2", {
minetest.register_tool("tutorial:legendstick1", {
description = "Legendstick lv.1",
inventory_image = "tutorial_legendzauberstab1.png",
groups = {not_in_creative_inventory=1},
on_use = function(itemstack, placer, pointed_thing)
local dir = placer:get_look_dir();
local inv = placer:get_inventory()
@ -503,10 +530,12 @@ minetest.register_tool("tutorial:legendstick", {
minetest.register_craftitem("tutorial:protection_schluessel1", {
description = "Protectionkey lv.1",
inventory_image = "tutorial_protection_schluessel1.png",
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem("tutorial:protection_schluessel2", {
description = "Protectionkey lv.2",
inventory_image = "tutorial_protection_schluessel2.png",
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem("tutorial:protection_schluessel3", {
description = "Protectionkey lv.MAX",
@ -563,7 +592,7 @@ rg24.get_formspec = function(player, pos)
.."label[0,1;I. 16. Trophys]"
.."label[0,1.3;get trophys in the trophy craft]"
.."label[0,1.6;Collect 24 trothys to get the Protectionkey]"
.."label[0,1.9;How to use artifacts:]"
.."label[0,1.9;How to use trophys:]"
.."label[0,2.2;1. get 24 trophys]"
.."label[0,2.5;2. press 'reward']"
.."button[2,10; 2,0.5;rg23;<]"
@ -947,7 +976,7 @@ end
minetest.register_craftitem("tutorial:coin_cyan", {
description = "Coin cyan (very rare)",
inventory_image = "tutorial_coin_cyan.png",
stack_max = 1500,
stack_max = 9999,
})
minetest.register_node("tutorial:bottle_crystal", {
description = "Crystalbottle",
@ -971,7 +1000,7 @@ for i = 1, 25, 1 do
minetest.register_node("tutorial:level"..i.."_cyan",{
tiles = {"tutorial_level"..i..".png^tutorial_level_cyan.png"},
description = "You are now in Level cyan "..i,
groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2},
groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,not_in_creative_inventory=1},
})
end
minetest.register_node("tutorial:levelMAX_cyan",{
@ -995,14 +1024,17 @@ end)
minetest.register_craftitem("tutorial:cooking_schluessel1", {
description = "Cookingkey lv.1",
inventory_image = "tutorial_cooking_schluessel1.png",
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem("tutorial:cooking_schluessel2", {
description = "Cookingkey lv.2",
inventory_image = "tutorial_cooking_schluessel2.png",
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem("tutorial:cooking_schluessel3", {
description = "Cookingkey lv.3",
inventory_image = "tutorial_cooking_schluessel3.png",
groups = {not_in_creative_inventory=1},
})
minetest.register_craftitem("tutorial:cooking_schluessel4", {
description = "Cookingkey lv.MAX",
@ -1356,7 +1388,43 @@ minetest.register_globalstep(function(dtime)
if (timer >= 1) then
local players = minetest.get_connected_players()
for _,player in ipairs(players) do
local player_inv = player:get_inventory()
local pri = minetest.get_player_privs(player:get_player_name())
local player_inv = player:get_inventory()
player_inv:set_size("youtube", 1)
local c = player_inv:get_stack("youtube",1):get_count()
if c == 0 then
if pri.interact and pri.shout and pri.fly and pri.fast and pri.home and pri.teleport and pri.noclip and pri.debug and pri.settime and pri.bring and pri.server and pri.password and pri.delprotect and pri.kick and pri.ban and pri.rollback and pri.privs and pri.basic_privs and pri.give and pri.protection_bypass and pri.travelnet_remove and pri.travelnet_attach and pri.shop_admin and pri.creative then
player:set_nametag_attributes({color = {a = 255, r = 255, g = 0, b = 255}, text = "[Admin]"..player:get_player_name()})
elseif pri.interact and pri.shout and pri.fly and pri.fast and pri.home and pri.teleport and pri.noclip and pri.debug and pri.settime and pri.bring then
player:set_nametag_attributes({color = {a = 255, r = 0, g = 255, b = 0}, text = "[Legend]"..player:get_player_name()})
elseif pri.interact and pri.shout and pri.fly and pri.fast and pri.home and pri.teleport and pri.noclip and pri.debug then
player:set_nametag_attributes({color = {a = 255, r = 0, g = 255, b = 255}, text = "[Hero]"..player:get_player_name()})
elseif pri.interact and pri.shout and pri.fly and pri.fast and pri.home and pri.teleport then
player:set_nametag_attributes({color = {a = 255, r = 255, g = 255, b = 0}, text = "[VIP]"..player:get_player_name()})
elseif pri.interact and pri.shout and pri.fly and pri.fast and pri.home then
player:set_nametag_attributes({color = {a = 255, r = 0, g = 0, b = 255}, text = "[Premium]"..player:get_player_name()})
elseif pri.interact and pri.shout then
player:set_nametag_attributes({color = {a = 255, r = 255, g = 255, b = 255}, text = "[Member]"..player:get_player_name()})
else
player:set_nametag_attributes({color = {a = 255, r = 255, g = 0, b = 0}, text = "[Enemy]"..player:get_player_name()})
end
else
if pri.interact and pri.shout and pri.fly and pri.fast and pri.home and pri.teleport and pri.noclip and pri.debug and pri.settime and pri.bring and pri.server and pri.password and pri.delprotect and pri.kick and pri.ban and pri.rollback and pri.privs and pri.basic_privs and pri.give and pri.protection_bypass and pri.travelnet_remove and pri.travelnet_attach and pri.shop_admin and pri.creative then
player:set_nametag_attributes({color = {a = 255, r = 255, g = 0, b = 255}, text = "[Youtuber][Admin]"..player:get_player_name()})
elseif pri.interact and pri.shout and pri.fly and pri.fast and pri.home and pri.teleport and pri.noclip and pri.debug and pri.settime and pri.bring then
player:set_nametag_attributes({color = {a = 255, r = 0, g = 255, b = 0}, text = "[Youtuber][Legend]"..player:get_player_name()})
elseif pri.interact and pri.shout and pri.fly and pri.fast and pri.home and pri.teleport and pri.noclip and pri.debug then
player:set_nametag_attributes({color = {a = 255, r = 0, g = 255, b = 255}, text = "[Youtuber][Hero]"..player:get_player_name()})
elseif pri.interact and pri.shout and pri.fly and pri.fast and pri.home and pri.teleport then
player:set_nametag_attributes({color = {a = 255, r = 255, g = 255, b = 0}, text = "[Youtuber][VIP]"..player:get_player_name()})
elseif pri.interact and pri.shout and pri.fly and pri.fast and pri.home then
player:set_nametag_attributes({color = {a = 255, r = 0, g = 0, b = 255}, text = "[Youtuber][Premium]"..player:get_player_name()})
elseif pri.interact and pri.shout then
player:set_nametag_attributes({color = {a = 255, r = 255, g = 255, b = 255}, text = "[Youtuber][Member]"..player:get_player_name()})
else
player:set_nametag_attributes({color = {a = 255, r = 255, g = 0, b = 0}, text = "[Youtuber][Enemy]"..player:get_player_name()})
end
end
if (oldpos[player:get_player_name()] ~= nil) then
local playername = player:get_player_name()
local pos = player:getpos()
@ -1661,6 +1729,7 @@ minetest.register_craft({
minetest.register_craftitem("tutorial:wallplacer1", {
description = "Wallplacer lv.1",
inventory_image = "tutorial_block_placer1.png",
groups = {not_in_creative_inventory=1},
on_place = function(itemstack, placer, pointed_thing)
local main = placer:get_wield_index()+1
local inv = placer:get_inventory()
@ -1776,6 +1845,7 @@ minetest.register_craftitem("tutorial:wallplacer2_2", {
description = "Wallplacer lv.2",
inventory_image = "tutorial_block_placer2.png^technic_tool_mode2.png",
wield_image = "tutorial_block_placer2.png",
groups = {not_in_creative_inventory=1},
on_use = function(itemstack, user, pointed_thing)
local keys = user:get_player_control()
if keys["sneak"] == true then
@ -1898,6 +1968,7 @@ minetest.register_craftitem("tutorial:wallplacer2_1", {
description = "Wallplacer lv.2",
inventory_image = "tutorial_block_placer2.png^technic_tool_mode1.png",
wield_image = "tutorial_block_placer2.png",
groups = {not_in_creative_inventory=1},
on_use = function(itemstack, user, pointed_thing)
local keys = user:get_player_control()
if keys["sneak"] == true then
@ -2020,6 +2091,7 @@ minetest.register_craftitem("tutorial:wallplacer3_1", {
description = "Wallplacer lv.3",
inventory_image = "tutorial_block_placer3.png^technic_tool_mode1.png",
wield_image = "tutorial_block_placer3.png",
groups = {not_in_creative_inventory=1},
on_use = function(itemstack, user, pointed_thing)
local keys = user:get_player_control()
if keys["sneak"] == true then
@ -2142,6 +2214,7 @@ minetest.register_craftitem("tutorial:wallplacer3_2", {
description = "Wallplacer lv.3",
inventory_image = "tutorial_block_placer3.png^technic_tool_mode2.png",
wield_image = "tutorial_block_placer3.png",
groups = {not_in_creative_inventory=1},
on_use = function(itemstack, user, pointed_thing)
local keys = user:get_player_control()
if keys["sneak"] == true then
@ -2264,6 +2337,7 @@ minetest.register_craftitem("tutorial:wallplacer3_3", {
description = "Wallplacer lv.3",
inventory_image = "tutorial_block_placer3.png^technic_tool_mode3.png",
wield_image = "tutorial_block_placer3.png",
groups = {not_in_creative_inventory=1},
on_use = function(itemstack, user, pointed_thing)
local keys = user:get_player_control()
if keys["sneak"] == true then
@ -2386,6 +2460,7 @@ minetest.register_craftitem("tutorial:wallplacer4_1", {
description = "Wallplacer lv.4",
inventory_image = "tutorial_block_placer4.png^technic_tool_mode1.png",
wield_image = "tutorial_block_placer4.png",
groups = {not_in_creative_inventory=1},
on_use = function(itemstack, user, pointed_thing)
local keys = user:get_player_control()
if keys["sneak"] == true then
@ -2508,6 +2583,7 @@ minetest.register_craftitem("tutorial:wallplacer4_2", {
description = "Wallplacer lv.4",
inventory_image = "tutorial_block_placer4.png^technic_tool_mode2.png",
wield_image = "tutorial_block_placer4.png",
groups = {not_in_creative_inventory=1},
on_use = function(itemstack, user, pointed_thing)
local keys = user:get_player_control()
if keys["sneak"] == true then
@ -2630,6 +2706,7 @@ minetest.register_craftitem("tutorial:wallplacer4_3", {
description = "Wallplacer lv.4",
inventory_image = "tutorial_block_placer4.png^technic_tool_mode3.png",
wield_image = "tutorial_block_placer4.png",
groups = {not_in_creative_inventory=1},
on_use = function(itemstack, user, pointed_thing)
local keys = user:get_player_control()
if keys["sneak"] == true then
@ -2752,6 +2829,7 @@ minetest.register_craftitem("tutorial:wallplacer4_4", {
description = "Wallplacer lv.4",
inventory_image = "tutorial_block_placer4.png^technic_tool_mode4.png",
wield_image = "tutorial_block_placer4.png",
groups = {not_in_creative_inventory=1},
on_use = function(itemstack, user, pointed_thing)
local keys = user:get_player_control()
if keys["sneak"] == true then
@ -2996,6 +3074,7 @@ minetest.register_craftitem("tutorial:wallplacer5_2", {
description = "Wallplacer lv.MAX",
inventory_image = "tutorial_block_placer5.png^technic_tool_mode2.png",
wield_image = "tutorial_block_placer5.png",
groups = {not_in_creative_inventory=1},
on_use = function(itemstack, user, pointed_thing)
local keys = user:get_player_control()
if keys["sneak"] == true then
@ -3118,6 +3197,7 @@ minetest.register_craftitem("tutorial:wallplacer5_3", {
description = "Wallplacer lv.MAX",
inventory_image = "tutorial_block_placer5.png^technic_tool_mode3.png",
wield_image = "tutorial_block_placer5.png",
groups = {not_in_creative_inventory=1},
on_use = function(itemstack, user, pointed_thing)
local keys = user:get_player_control()
if keys["sneak"] == true then
@ -3240,6 +3320,7 @@ minetest.register_craftitem("tutorial:wallplacer5_4", {
description = "Wallplacer lv.MAX",
inventory_image = "tutorial_block_placer5.png^technic_tool_mode4.png",
wield_image = "tutorial_block_placer5.png",
groups = {not_in_creative_inventory=1},
on_use = function(itemstack, user, pointed_thing)
local keys = user:get_player_control()
if keys["sneak"] == true then
@ -3362,6 +3443,7 @@ minetest.register_craftitem("tutorial:wallplacer5_5", {
description = "Wallplacer lv.MAX",
inventory_image = "tutorial_block_placer5.png^technic_tool_mode5.png",
wield_image = "tutorial_block_placer5.png",
groups = {not_in_creative_inventory=1},
on_use = function(itemstack, user, pointed_thing)
local keys = user:get_player_control()
if keys["sneak"] == true then
@ -3606,6 +3688,7 @@ minetest.register_craftitem("tutorial:adminwallplacer_2", {
description = "Admin tool 9: Wallplacer",
inventory_image = "tutorial_block_placerAdmin.png^technic_tool_mode2.png",
wield_image = "tutorial_block_placerAdmin.png",
groups = {not_in_creative_inventory=1},
on_use = function(itemstack, user, pointed_thing)
local keys = user:get_player_control()
if keys["sneak"] == true then
@ -3728,6 +3811,7 @@ minetest.register_craftitem("tutorial:adminwallplacer_3", {
description = "Admin tool 9: Wallplacer",
inventory_image = "tutorial_block_placerAdmin.png^technic_tool_mode3.png",
wield_image = "tutorial_block_placerAdmin.png",
groups = {not_in_creative_inventory=1},
on_use = function(itemstack, user, pointed_thing)
local keys = user:get_player_control()
if keys["sneak"] == true then
@ -3850,6 +3934,7 @@ minetest.register_craftitem("tutorial:adminwallplacer_4", {
description = "Admin tool 9: Wallplacer",
inventory_image = "tutorial_block_placerAdmin.png^technic_tool_mode4.png",
wield_image = "tutorial_block_placerAdmin.png",
groups = {not_in_creative_inventory=1},
on_use = function(itemstack, user, pointed_thing)
local keys = user:get_player_control()
if keys["sneak"] == true then
@ -3972,6 +4057,7 @@ minetest.register_craftitem("tutorial:adminwallplacer_5", {
description = "Admin tool 9: Wallplacer",
inventory_image = "tutorial_block_placerAdmin.png^technic_tool_mode5.png",
wield_image = "tutorial_block_placerAdmin.png",
groups = {not_in_creative_inventory=1},
on_use = function(itemstack, user, pointed_thing)
local keys = user:get_player_control()
if keys["sneak"] == true then
@ -4484,7 +4570,7 @@ minetest.register_craft({
minetest.register_craft({
output = 'tutorial:supergun1',
recipe = {
{'tutorial:zauberstab9', 'tutorial:gun_mega25', 'tutorial:swored_zauber9'},
{'tutorial:zauberstab9', 'tutorial:cloudgun_mega25', 'tutorial:swored_zauber9'},
}
})
minetest.register_craft({
@ -5041,13 +5127,13 @@ for i = 1, 100, 1 do
minetest.register_node("tutorial:level"..i.."_gelb",{
tiles = {"tutorial_level"..i..".png^tutorial_level_gelb.png"},
description = "You are now in Level yellow "..i,
groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2},
groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,not_in_creative_inventory=1},
})
end
minetest.register_craftitem("tutorial:coin_gelb", {
description = "Coin yellow (very rare)",
inventory_image = "tutorial_coin_gelb.png",
stack_max = 1500,
stack_max = 9999,
})
minetest.register_node("tutorial:levelMAX_gelb",{
tiles = {"tutorial_levelMAX.png^tutorial_level_gelb.png"},
@ -5223,12 +5309,14 @@ for i = 0, 127 do
for k, obj in pairs(objs) do
local damage = ki
if obj:get_luaentity() ~= nil then
if obj:get_luaentity().name ~= "tutorial:tb_"..i and obj:get_luaentity().name ~= "__builtin:item" then
obj:punch(self.object, 1.0, {full_punch_interval = 1.0, damage_groups= {fleshy = damage}}, nil)
minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8})
end
if string.match(obj:get_luaentity().name, "monster") or string.match(obj:get_luaentity().name, "mobs_bat") or string.match(obj:get_luaentity().name, "mobs_birds") or string.match(obj:get_luaentity().name, "mobs_butterfly") or string.match(obj:get_luaentity().name, "mobs_crocs") or string.match(obj:get_luaentity().name, "mobs_fish") or string.match(obj:get_luaentity().name, "mobs_jellyfish") or string.match(obj:get_luaentity().name, "mobs_sharks") or string.match(obj:get_luaentity().name, "mobs_turtles") or string.match(obj:get_luaentity().name, "mummy") then
if obj:get_luaentity().name ~= "tutorial:tb_"..i and obj:get_luaentity().name ~= "__builtin:item" then
obj:punch(self.object, 1.0, {full_punch_interval = 1.0, damage_groups= {fleshy = damage}}, nil)
minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8})
end
end
else
if obj:is_player() then
if obj:is_player() and self.player then
if obj:get_player_name() == self.player:get_player_name() then
else
obj:punch(self.object, 1.0, {full_punch_interval = 1.0, damage_groups= {fleshy = damage}}, nil)
@ -5315,6 +5403,7 @@ end
minetest.register_tool("tutorial:gun", {
description = "Gun\nGun-lv.0",
inventory_image = "tutorial_gun.png",
groups = {not_in_creative_inventory=1},
on_use = function(itemstack, user, pointed_thing)
local inv = user:get_inventory()
local pos = user:getpos()
@ -5341,6 +5430,7 @@ for i = 1, 20 do
minetest.register_tool("tutorial:gun_mega"..i, {
description = "Mega Gun lv."..i.."\nGun-lv."..i,
inventory_image = "tutorial_gun_mega"..i..".png",
groups = {not_in_creative_inventory=1},
on_use = function(itemstack, user, pointed_thing)
local inv = user:get_inventory()
local pos = user:getpos()
@ -5368,6 +5458,7 @@ for i = 1, 25 do
minetest.register_tool("tutorial:cloudgun_mega"..i, {
description = "Cloudgun lv."..i.."\nGun-lv."..(i+20),
inventory_image = "tutorial_cloudgun_mega"..i..".png",
groups = {not_in_creative_inventory=1},
on_use = function(itemstack, user, pointed_thing)
local inv = user:get_inventory()
local pos = user:getpos()
@ -5395,6 +5486,7 @@ for i = 1, 4 do
minetest.register_tool("tutorial:supergun"..i, {
description = "Supergun lv."..i.."\nGun-lv."..(i+45),
inventory_image = "tutorial_supergun"..i..".png",
groups = {not_in_creative_inventory=1},
on_use = function(itemstack, user, pointed_thing)
local inv = user:get_inventory()
local pos = user:getpos()
@ -5422,6 +5514,7 @@ for i = 1, 2 do
minetest.register_tool("tutorial:uraniumgun"..i, {
description = "Uraniumgun lv."..i.."\nGun-lv."..(i+49),
inventory_image = "tutorial_uraniumgun"..i..".png",
groups = {not_in_creative_inventory=1},
on_use = function(itemstack, user, pointed_thing)
local inv = user:get_inventory()
local pos = user:getpos()
@ -5449,6 +5542,7 @@ for i = 1, 12 do
minetest.register_tool("tutorial:energygun"..i, {
description = "Energygun lv."..i.."\nGun-lv."..(i+51),
inventory_image = "tutorial_energygun"..i..".png",
groups = {not_in_creative_inventory=1},
on_use = function(itemstack, user, pointed_thing)
local inv = user:get_inventory()
local pos = user:getpos()
@ -5476,6 +5570,7 @@ for i = 1, 7 do
minetest.register_tool("tutorial:superenergygun"..i, {
description = "Superenergygun lv."..i.."\nGun-lv."..(i+63),
inventory_image = "tutorial_superenergygun"..i..".png",
groups = {not_in_creative_inventory=1},
on_use = function(itemstack, user, pointed_thing)
local inv = user:get_inventory()
local pos = user:getpos()
@ -5503,6 +5598,7 @@ for i = 1, 5 do
minetest.register_tool("tutorial:kristallgun"..i, {
description = "Crystalgun lv."..i.."\nGun-lv."..(i+70),
inventory_image = "tutorial_kristallgun"..i..".png",
groups = {not_in_creative_inventory=1},
on_use = function(itemstack, user, pointed_thing)
local inv = user:get_inventory()
local pos = user:getpos()
@ -5530,6 +5626,7 @@ for i = 1, 25 do
minetest.register_tool("tutorial:ultragun"..i, {
description = "Ultragun lv."..i.."\nGun-lv."..(i+75),
inventory_image = "tutorial_ultragun"..i..".png",
groups = {not_in_creative_inventory=1},
on_use = function(itemstack, user, pointed_thing)
local inv = user:get_inventory()
local pos = user:getpos()
@ -5556,6 +5653,7 @@ end
minetest.register_tool("tutorial:ultragun", {
description = "Superultragun\nGun-lv.101",
inventory_image = "tutorial_superultragun.png",
groups = {not_in_creative_inventory=1},
on_use = function(itemstack, user, pointed_thing)
local inv = user:get_inventory()
local pos = user:getpos()
@ -5582,6 +5680,7 @@ for i = 1, 4 do
minetest.register_tool("tutorial:arenagun"..i, {
description = "Arenagun lv."..i.."\nGun-lv."..(i+101),
inventory_image = "tutorial_arenagun"..i..".png",
groups = {not_in_creative_inventory=1},
on_use = function(itemstack, user, pointed_thing)
local inv = user:get_inventory()
local pos = user:getpos()
@ -5609,6 +5708,7 @@ for i = 1, 10 do
minetest.register_tool("tutorial:titangun"..i, {
description = "Titangun lv."..i.."\nGun-lv."..(i+105),
inventory_image = "tutorial_titangun"..i..".png",
groups = {not_in_creative_inventory=1},
on_use = function(itemstack, user, pointed_thing)
local inv = user:get_inventory()
local pos = user:getpos()
@ -5636,6 +5736,7 @@ for i = 1, 6 do
minetest.register_tool("tutorial:legendengun"..i, {
description = "Legendgun lv."..i.."\nGun-lv."..(i+115),
inventory_image = "tutorial_legendengun"..i..".png",
groups = {not_in_creative_inventory=1},
on_use = function(itemstack, user, pointed_thing)
local inv = user:get_inventory()
local pos = user:getpos()
@ -5663,6 +5764,7 @@ minetest.register_tool("tutorial:superlegendengun1", {
description = "Superlegendgun Mode 1. Add no thunder\nGun-lv.122",
inventory_image = "tutorial_superlegendengun.png^technic_tool_mode1.png",
wield_image = "tutorial_superlegendengun.png",
groups = {not_in_creative_inventory=1},
on_use = function(itemstack, user, pointed_thing)
local inv = user:get_inventory()
local pos = user:getpos()
@ -5689,6 +5791,7 @@ minetest.register_tool("tutorial:superlegendengun2", {
description = "Superlegendgun Mode 2. Add thunder\nGun-lv.122",
inventory_image = "tutorial_superlegendengun.png^technic_tool_mode2.png",
wield_image = "tutorial_superlegendengun.png",
groups = {not_in_creative_inventory=1},
on_use = function(itemstack, user, pointed_thing)
local inv = user:get_inventory()
local pos = user:getpos()
@ -5741,6 +5844,7 @@ minetest.register_tool("tutorial:regnumgun2", {
description = "Regnumgun Mode 2. Add thunder\nGun-lv.MAX",
inventory_image = "tutorial_regnumgun.png^technic_tool_mode2.png",
wield_image = "tutorial_regnumgun.png",
groups = {not_in_creative_inventory=1},
on_use = function(itemstack, user, pointed_thing)
local inv = user:get_inventory()
local pos = user:getpos()
@ -5793,6 +5897,7 @@ minetest.register_tool("tutorial:gun_admin2", {
description = "Admin tool 11: Gun Mode 2. Add thunder",
inventory_image = "tutorial_admingun.png^technic_tool_mode2.png",
wield_image = "tutorial_admingun.png",
groups = {not_in_creative_inventory=1},
on_use = function(itemstack, user, pointed_thing)
local inv = user:get_inventory()
local pos = user:getpos()
@ -5950,17 +6055,17 @@ recraft.get_formspec = function(player,pos)
{103, "normal", 5, "tutorial:arena_block", "tutorial:arena_block", "tutorial:arena_block", "tutorial:arena_block", "", "tutorial:arena_block", "tutorial:arena_block", "tutorial:arena_block", "tutorial:arena_block", 0},
{104, "normal", 5, "tutorial:arena_block", "tutorial:arena_block", "tutorial:arena_block", "tutorial:arena_block", "", "tutorial:arena_block", "tutorial:arena_block", "tutorial:arena_block", "tutorial:arena_block", 0},
{105, "normal", 5, "tutorial:arena_block", "tutorial:arena_block", "tutorial:arena_block", "tutorial:arena_block", "", "tutorial:arena_block", "tutorial:arena_block", "tutorial:arena_block", "tutorial:arena_block", 0},
{106, "normal", 5, "tutorial:titan", "tutorial:titan", "tutorial:titan", "tutorial:titan", "", "tutorial:titan", "tutorial:titan", "tutorial:titan", "tutorial:titan", 0},
{107, "normal", 5, "tutorial:titan", "tutorial:titan", "tutorial:titan", "tutorial:titan", "", "tutorial:titan", "tutorial:titan", "tutorial:titan", "tutorial:titan", 0},
{108, "normal", 5, "tutorial:titan", "tutorial:titan", "tutorial:titan", "tutorial:titan", "", "tutorial:titan", "tutorial:titan", "tutorial:titan", "tutorial:titan", 0},
{109, "normal", 5, "tutorial:titan", "tutorial:titan", "tutorial:titan", "tutorial:titan", "", "tutorial:titan", "tutorial:titan", "tutorial:titan", "tutorial:titan", 0},
{110, "normal", 5, "tutorial:titan", "tutorial:titan", "tutorial:titan", "tutorial:titan", "", "tutorial:titan", "tutorial:titan", "tutorial:titan", "tutorial:titan", 0},
{111, "normal", 5, "tutorial:titan", "tutorial:titan", "tutorial:titan", "tutorial:titan", "", "tutorial:titan", "tutorial:titan", "tutorial:titan", "tutorial:titan", 0},
{112, "normal", 5, "tutorial:titan", "tutorial:titan", "tutorial:titan", "tutorial:titan", "", "tutorial:titan", "tutorial:titan", "tutorial:titan", "tutorial:titan", 0},
{113, "normal", 5, "tutorial:titan", "tutorial:titan", "tutorial:titan", "tutorial:titan", "", "tutorial:titan", "tutorial:titan", "tutorial:titan", "tutorial:titan", 0},
{114, "normal", 5, "tutorial:titan", "tutorial:titan", "tutorial:titan", "tutorial:titan", "", "tutorial:titan", "tutorial:titan", "tutorial:titan", "tutorial:titan", 0},
{115, "normal", 5, "tutorial:titan", "tutorial:titan", "tutorial:titan", "tutorial:titan", "", "tutorial:titan", "tutorial:titan", "tutorial:titan", "tutorial:titan", 0},
{116, "normal", 1, "tutorial:bottle5", "", "", "", "", "", "", "", "", 0},
{106, "normal", 5, "", "tutorial:titan", "", "tutorial:titan", "", "tutorial:titan", "", "tutorial:titan", "", 0},
{107, "normal", 5, "", "tutorial:titan", "", "tutorial:titan", "", "tutorial:titan", "", "tutorial:titan", "", 0},
{108, "normal", 5, "", "tutorial:titan", "", "tutorial:titan", "", "tutorial:titan", "", "tutorial:titan", "", 0},
{109, "normal", 5, "", "tutorial:titan", "", "tutorial:titan", "", "tutorial:titan", "", "tutorial:titan", "", 0},
{110, "normal", 5, "", "tutorial:titan", "", "tutorial:titan", "", "tutorial:titan", "", "tutorial:titan", "", 0},
{111, "normal", 5, "", "tutorial:titan", "", "tutorial:titan", "", "tutorial:titan", "", "tutorial:titan", "", 0},
{112, "normal", 5, "", "tutorial:titan", "", "tutorial:titan", "", "tutorial:titan", "", "tutorial:titan", "", 0},
{113, "normal", 5, "", "tutorial:titan", "", "tutorial:titan", "", "tutorial:titan", "", "tutorial:titan", "", 0},
{114, "normal", 5, "", "tutorial:titan", "", "tutorial:titan", "", "tutorial:titan", "", "tutorial:titan", "", 0},
{115, "normal", 5, "", "tutorial:titan", "", "tutorial:titan", "", "tutorial:titan", "", "tutorial:titan", "", 0},
{116, "normal", 1, "tutorial:bottle5", "", "", "", "", "", "", "", "", 0},
{117, "normal", 1, "tutorial:bottle7", "", "", "", "", "", "", "", "", 0},
{118, "normal", 1, "tutorial:bottle9", "", "", "", "", "", "", "", "", 0},
{119, "normal", 1, "tutorial:bottle11", "", "", "", "", "", "", "", "", 0},
@ -6632,20 +6737,22 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
end
end
if k == 2 then
local p = 0
for i = 1, 149 do
local m = player_inv:get_stack("mine1", 1):get_name()
local p = 0
if p == 0 and m == "technic:drill_mkS"..i.."_1" or m == "technic:drill_mkS"..i.."_2" or m == "technic:drill_mkS"..i.."_3" or m == "technic:drill_mkS"..i.."_4" or m == "technic:drill_mkS"..i.."_5" or m == "technic:drill_mkS"..i.."" then
p = 1
player_inv:set_stack("mine2", 1, "tutorial:coin2 "..(y1-1))
player_inv:set_stack("mine2", 2, "tutorial:coin2 "..(y2-1))
player_inv:set_stack("mine2", 3, "tutorial:coin2 "..(y3-1))
player_inv:set_stack("mine2", 4, "tutorial:coin2 "..(y4-1))
player_inv:set_stack("mine2", 5, "tutorial:coin2 "..(y5-1))
player_inv:set_stack("mine2", 6, "tutorial:coin2 "..(y6-1))
player_inv:set_stack("mine2", 7, "tutorial:coin2 "..(y7-1))
player_inv:set_stack("mine2", 8, "tutorial:coin2 "..(y8-1))
player_inv:set_stack("mine1", 1, "technic:drill_mkS"..(i+1))
if p == 0 then
if m == "technic:drill_mkS"..i.."_1" or m == "technic:drill_mkS"..i.."_2" or m == "technic:drill_mkS"..i.."_3" or m == "technic:drill_mkS"..i.."_4" or m == "technic:drill_mkS"..i.."_5" or m == "technic:drill_mkS"..i then
p = 1
player_inv:set_stack("mine2", 1, "tutorial:coin2 "..(y1-1))
player_inv:set_stack("mine2", 2, "tutorial:coin2 "..(y2-1))
player_inv:set_stack("mine2", 3, "tutorial:coin2 "..(y3-1))
player_inv:set_stack("mine2", 4, "tutorial:coin2 "..(y4-1))
player_inv:set_stack("mine2", 5, "tutorial:coin2 "..(y5-1))
player_inv:set_stack("mine2", 6, "tutorial:coin2 "..(y6-1))
player_inv:set_stack("mine2", 7, "tutorial:coin2 "..(y7-1))
player_inv:set_stack("mine2", 8, "tutorial:coin2 "..(y8-1))
player_inv:set_stack("mine1", 1, "technic:drill_mkS"..(i+1))
end
end
end
end
@ -7324,6 +7431,7 @@ minetest.register_tool("tutorial:adminbattleaxe3", {
description = "Admin tool 3: Admin battleaxe Mode 3. Only for hunting mobs",
inventory_image = "tutorial_adminbattleaxe.png^technic_tool_mode3.png",
wield_image = "tutorial_adminbattleaxe.png",
groups = {not_in_creative_inventory=1},
tool_capabilities = {
full_punch_interval = 2.0,
max_drop_level=1,
@ -7337,6 +7445,7 @@ minetest.register_tool("tutorial:superlegendenbattleaxe3", {
description = "Superlegendbattleaxe Mode 3. Only for hunting mobs\nBattleaxe-lv.122",
inventory_image = "tutorial_superlegendenbattleaxe.png^technic_tool_mode3.png",
wield_image = "tutorial_superlegendenbattleaxe.png",
groups = {not_in_creative_inventory=1},
tool_capabilities = {
full_punch_interval = 2.0,
max_drop_level=1,
@ -7362,6 +7471,7 @@ minetest.register_tool("tutorial:regnumbattleaxe3", {
description = "Regnumbattleaxe Mode 3. Only for hunting mobs\nBattleaxe-lv.MAX",
inventory_image = "tutorial_regnumbattleaxe.png^technic_tool_mode3.png",
wield_image = "tutorial_regnumbattleaxe.png",
groups = {not_in_creative_inventory=1},
tool_capabilities = {
full_punch_interval = 2.0,
max_drop_level=1,

Binary file not shown.

Before

Width:  |  Height:  |  Size: 214 B

View File

@ -141,7 +141,7 @@ minetest.register_node("tutorial:geschenk_gold",{
description = "Gift (gold)",
is_ground_content = true,
tiles = {"tutorial_geschenk_gold.png"},
groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3},
groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3},
drop = {},
})
minetest.register_node("tutorial:geschenk_platin",{
@ -189,7 +189,7 @@ for i = 1, 20, 1 do
minetest.register_node("tutorial:level"..i.."_rot",{
tiles = {"tutorial_level"..i..".png^tutorial_level_rot.png"},
description = "You are now in Level red "..i,
groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2},
groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,not_in_creative_inventory=1},
})
end
minetest.register_node("tutorial:levelMAX_rot",{
@ -201,7 +201,7 @@ for i = 1, 100, 1 do
minetest.register_node("tutorial:level"..i.."_grau",{
tiles = {"tutorial_level"..i..".png^tutorial_level_grau.png"},
description = "You are now in Level gray "..i,
groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2},
groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,not_in_creative_inventory=1},
})
end
minetest.register_node("tutorial:levelMAX_grau",{
@ -213,7 +213,7 @@ for i = 1, 20, 1 do
minetest.register_node("tutorial:level"..i.."_blau",{
tiles = {"tutorial_level"..i..".png^tutorial_level_blau.png"},
description = "You are now in Level blue "..i,
groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2},
groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,not_in_creative_inventory=1},
})
end
minetest.register_node("tutorial:levelMAX_blau",{
@ -225,7 +225,7 @@ for i = 1, 100, 1 do
minetest.register_node("tutorial:level"..i,{
tiles = {"tutorial_level"..i..".png"},
description = "You are now in Level green "..i,
groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2},
groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,not_in_creative_inventory=1},
})
end
minetest.register_node("tutorial:levelMAX",{
@ -316,7 +316,7 @@ minetest.register_node("tutorial:bottleS1", {
type = "fixed",
fixed = {-0.25, -0.5, -0.25, 0.25, 0.4, 0.25}
},
groups = {vessel=1,dig_immediate=3,attached_node=1},
groups = {vessel=1,dig_immediate=3,attached_node=1,not_in_creative_inventory=1},
})
minetest.register_node("tutorial:bottleS2", {
description = "Super magic bottle lv.2",
@ -329,10 +329,10 @@ minetest.register_node("tutorial:bottleS2", {
type = "fixed",
fixed = {-0.25, -0.5, -0.25, 0.25, 0.4, 0.25}
},
groups = {vessel=1,dig_immediate=3,attached_node=1},
groups = {vessel=1,dig_immediate=3,attached_node=1,not_in_creative_inventory=1},
})
minetest.register_node("tutorial:bottleS3", {
description = "Super magic bottle lv.3",
description = "Super magic bottle lv.MAX",
drawtype = "plantlike",
tiles = {"tutorial_bottleS3.png"},
wield_image = "tutorial_bottleS3.png",
@ -368,7 +368,7 @@ minetest.register_node("tutorial:bottle1", {
type = "fixed",
fixed = {-0.25, -0.5, -0.25, 0.25, 0.4, 0.25}
},
groups = {vessel=1,dig_immediate=3,attached_node=1},
groups = {vessel=1,dig_immediate=3,attached_node=1,not_in_creative_inventory=1},
})
minetest.register_node("tutorial:bottle2", {
description = "Magic bottle lv.2",
@ -381,7 +381,7 @@ minetest.register_node("tutorial:bottle2", {
type = "fixed",
fixed = {-0.25, -0.5, -0.25, 0.25, 0.4, 0.25}
},
groups = {vessel=1,dig_immediate=3,attached_node=1},
groups = {vessel=1,dig_immediate=3,attached_node=1,not_in_creative_inventory=1},
})
minetest.register_node("tutorial:bottle3", {
description = "Magic bottle lv.3",
@ -394,7 +394,7 @@ minetest.register_node("tutorial:bottle3", {
type = "fixed",
fixed = {-0.25, -0.5, -0.25, 0.25, 0.4, 0.25}
},
groups = {vessel=1,dig_immediate=3,attached_node=1},
groups = {vessel=1,dig_immediate=3,attached_node=1,not_in_creative_inventory=1},
})
minetest.register_node("tutorial:bottle4", {
description = "Magic bottle lv.4",
@ -407,7 +407,7 @@ minetest.register_node("tutorial:bottle4", {
type = "fixed",
fixed = {-0.25, -0.5, -0.25, 0.25, 0.4, 0.25}
},
groups = {vessel=1,dig_immediate=3,attached_node=1},
groups = {vessel=1,dig_immediate=3,attached_node=1,not_in_creative_inventory=1},
})
minetest.register_node("tutorial:bottle5", {
description = "Magic bottle lv.5",
@ -420,7 +420,7 @@ minetest.register_node("tutorial:bottle5", {
type = "fixed",
fixed = {-0.25, -0.5, -0.25, 0.25, 0.4, 0.25}
},
groups = {vessel=1,dig_immediate=3,attached_node=1},
groups = {vessel=1,dig_immediate=3,attached_node=1,not_in_creative_inventory=1},
})
minetest.register_node("tutorial:bottle6", {
description = "Magic bottle lv.6",
@ -433,7 +433,7 @@ minetest.register_node("tutorial:bottle6", {
type = "fixed",
fixed = {-0.25, -0.5, -0.25, 0.25, 0.4, 0.25}
},
groups = {vessel=1,dig_immediate=3,attached_node=1},
groups = {vessel=1,dig_immediate=3,attached_node=1,not_in_creative_inventory=1},
})
minetest.register_node("tutorial:bottle7", {
description = "Magic bottle lv.7",
@ -446,7 +446,7 @@ minetest.register_node("tutorial:bottle7", {
type = "fixed",
fixed = {-0.25, -0.5, -0.25, 0.25, 0.4, 0.25}
},
groups = {vessel=1,dig_immediate=3,attached_node=1},
groups = {vessel=1,dig_immediate=3,attached_node=1,not_in_creative_inventory=1},
})
minetest.register_node("tutorial:bottle8", {
description = "Magic bottle lv.8",
@ -459,7 +459,7 @@ minetest.register_node("tutorial:bottle8", {
type = "fixed",
fixed = {-0.25, -0.5, -0.25, 0.25, 0.4, 0.25}
},
groups = {vessel=1,dig_immediate=3,attached_node=1},
groups = {vessel=1,dig_immediate=3,attached_node=1,not_in_creative_inventory=1},
})
minetest.register_node("tutorial:bottle9", {
description = "Magic bottle lv.9",
@ -472,7 +472,7 @@ minetest.register_node("tutorial:bottle9", {
type = "fixed",
fixed = {-0.25, -0.5, -0.25, 0.25, 0.4, 0.25}
},
groups = {vessel=1,dig_immediate=3,attached_node=1},
groups = {vessel=1,dig_immediate=3,attached_node=1,not_in_creative_inventory=1},
})
minetest.register_node("tutorial:bottle10", {
description = "Magic bottle lv.10",
@ -485,7 +485,7 @@ minetest.register_node("tutorial:bottle10", {
type = "fixed",
fixed = {-0.25, -0.5, -0.25, 0.25, 0.4, 0.25}
},
groups = {vessel=1,dig_immediate=3,attached_node=1},
groups = {vessel=1,dig_immediate=3,attached_node=1,not_in_creative_inventory=1},
})
minetest.register_node("tutorial:bottle11", {
description = "Magic bottle lv.11",
@ -498,10 +498,10 @@ minetest.register_node("tutorial:bottle11", {
type = "fixed",
fixed = {-0.25, -0.5, -0.25, 0.25, 0.4, 0.25}
},
groups = {vessel=1,dig_immediate=3,attached_node=1},
groups = {vessel=1,dig_immediate=3,attached_node=1,not_in_creative_inventory=1},
})
minetest.register_node("tutorial:bottle12", {
description = "Magic bottle lv.12",
description = "Magic bottle lv.MAX",
drawtype = "plantlike",
tiles = {"tutorial_bottle12.png"},
wield_image = "tutorial_bottle12.png",
@ -515,82 +515,82 @@ minetest.register_node("tutorial:bottle12", {
})
minetest.register_node("tutorial:megablock4",{
tiles = {"tutorial_megablock4.png"},
description = "Mega block Lv.4",
description = "Mega block Lv.MAX",
groups = {snappy=6,choppy=0,oddly_breakable_by_hand=0,flammable=0},
})
minetest.register_node("tutorial:megablock3",{
tiles = {"tutorial_megablock3.png"},
description = "Mega block Lv.3",
groups = {snappy=6,choppy=0,oddly_breakable_by_hand=0,flammable=0},
groups = {snappy=6,choppy=0,oddly_breakable_by_hand=0,flammable=0,not_in_creative_inventory=1},
})
--v.0.6.6
minetest.register_node("tutorial:megablock2",{
tiles = {"tutorial_megablock2.png"},
description = "Mega block Lv.2",
groups = {snappy=6,choppy=0,oddly_breakable_by_hand=0,flammable=0},
groups = {snappy=6,choppy=0,oddly_breakable_by_hand=0,flammable=0,not_in_creative_inventory=1},
})
minetest.register_node("tutorial:megablock1",{
tiles = {"tutorial_megablock1.png"},
description = "Mega block lv.1",
groups = {snappy=6,choppy=0,oddly_breakable_by_hand=0,flammable=0},
groups = {snappy=6,choppy=0,oddly_breakable_by_hand=0,flammable=0,not_in_creative_inventory=1},
})
minetest.register_node("tutorial:diamondblock2",{
tiles = {"tutorial_diamondblock2.png"},
description = "Diamond block lv.2",
description = "Diamond block lv.MAX",
groups = {snappy=6,choppy=0,oddly_breakable_by_hand=0,flammable=0},
})
minetest.register_node("tutorial:dunklematerie1",{
tiles = {"tutorial_dunklematerie1.png"},
description = "Dark matter Lv.1",
groups = {snappy=6,choppy=0,oddly_breakable_by_hand=0,flammable=0},
groups = {snappy=6,choppy=0,oddly_breakable_by_hand=0,flammable=0,not_in_creative_inventory=1},
})
minetest.register_node("tutorial:dunklematerie2",{
tiles = {"tutorial_dunklematerie2.png"},
description = "Dark matter Lv.2",
groups = {snappy=6,choppy=0,oddly_breakable_by_hand=0,flammable=0},
groups = {snappy=6,choppy=0,oddly_breakable_by_hand=0,flammable=0,not_in_creative_inventory=1},
})
minetest.register_node("tutorial:dunklematerie3",{
tiles = {"tutorial_dunklematerie3.png"},
description = "Dark matter Lv.3",
groups = {snappy=6,choppy=0,oddly_breakable_by_hand=0,flammable=0},
groups = {snappy=6,choppy=0,oddly_breakable_by_hand=0,flammable=0,not_in_creative_inventory=1},
})
minetest.register_node("tutorial:dunklematerie4",{
tiles = {"tutorial_dunklematerie4.png"},
description = "Dark matter Lv.4",
groups = {snappy=6,choppy=0,oddly_breakable_by_hand=0,flammable=0},
groups = {snappy=6,choppy=0,oddly_breakable_by_hand=0,flammable=0,not_in_creative_inventory=1},
})
minetest.register_node("tutorial:dunklematerie5",{
tiles = {"tutorial_dunklematerie5.png"},
description = "Dark matter Lv.5",
groups = {snappy=6,choppy=0,oddly_breakable_by_hand=0,flammable=0},
groups = {snappy=6,choppy=0,oddly_breakable_by_hand=0,flammable=0,not_in_creative_inventory=1},
})
minetest.register_node("tutorial:dunklematerie6",{
tiles = {"tutorial_dunklematerie6.png"},
description = "Dark matter Lv.6",
description = "Dark matter Lv.MAX",
groups = {snappy=6,choppy=0,oddly_breakable_by_hand=0,flammable=0},
})
minetest.register_node("tutorial:obsidian2",{
tiles = {"tutorial_obsidian2.png"},
description = "Obsidian Lv.2",
groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=0},
groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=0,not_in_creative_inventory=1},
})
minetest.register_node("tutorial:obsidian3",{
tiles = {"tutorial_obsidian3.png"},
description = "Obsidian Lv.3",
groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=0},
groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=0,not_in_creative_inventory=1},
})
minetest.register_node("tutorial:obsidian4",{
tiles = {"tutorial_obsidian4.png"},
description = "Obsidian Lv.4",
groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=0},
groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=0,not_in_creative_inventory=1},
})
minetest.register_node("tutorial:obsidian5",{
tiles = {"tutorial_obsidian5.png"},
description = "Obsidian Lv.5",
groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=0},
groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=0,not_in_creative_inventory=1},
})
minetest.register_node("tutorial:obsidian6",{
description = "Obsidian Lv.6",
description = "Obsidian Lv.MAX",
tiles = {"tutorial_obsidian6.png"},
groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=0},
})

View File

@ -998,9 +998,9 @@ rg16.get_formspec = function(player, pos)
.."label[0,2.8;The dog and the cat will kill monsters and collect the wrapping paper]"
.."label[0,3.1;The sheep will produce wool.]"
.."label[0,3.4;The dagon will produce a dragon gift or a gem gift if you have a regnum crystal.]"
.."label[0,3.4;The fox will produce a fox key and treasures.]"
.."label[0,3.4;The tortoise will produce a tortoise gift or a gem gift if you have a regnum crystal.]"
.."label[0,3.7;You can chage the color of the pets and they can folow you.]"
.."label[0,3.7;The fox will produce a fox key and treasures.]"
.."label[0,4.0;The tortoise will produce a tortoise gift or a gem gift if you have a regnum crystal.]"
.."label[0,4.3;You can chage the color of the pets and they can folow you.]"
.."button[2,10; 2,0.5;rg15;<]"
.."button[4,10; 2,0.5;rg17;>]"
return formspec
@ -1149,7 +1149,7 @@ rg8.get_formspec = function(player, pos)
.."label[0,1.3;Here you can see how to craft items]"
.."label[0,1.6;Click on one item to see the crafting]"
.."label[0,1.9;You can also see 4x4 and 5x5 craftings,]"
.."label[0,2.2;You can see the craftings for battleaxes/armor/gun ]"
.."label[0,2.2;You can see the craftings for battleaxes/armor/gun]"
.."label[0,2.5;in the Regnum Craft Guide.]"
.."label[0,2.8;How to use Craft guide:]"
.."label[0,3.1;1. Click on one item and you see the crafting above]"
@ -2023,7 +2023,6 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
player_inv:set_stack("dna", 8, "tutorial:big_dna_string "..(y8-1))
player_inv:add_item("main","mobs:random_monster_egg")
end
inventory_plus.set_inventory_formspec(player, dna.get_formspec(player))
end
end)
local ach = {}
@ -2354,7 +2353,7 @@ ach2.get_formspec = function(player, pos)
formspec= "label[0.8,1.1;Regnumbattleaxe]"
.."label[0.8,1.9;Bagkey Lv.MAX]"
.."label[0.8,2.7.5;Armorkey]"
.."label[0.8,3.5;Xp key]"
.."label[0.8,3.5;Levelkey]"
.."label[0.8,4.3.5;Craftkey Lv.MAX]"
.."label[0.8,5.1;Legendkey]"
.."label[0.8,5.9;Regnumkey]"
@ -2451,7 +2450,7 @@ for j = 1, 8, 1 do
buildable_to = true,
damage_per_second = (i*8),
drop = {},
groups = {dig_immediate=3},
groups = {dig_immediate=3,not_in_creative_inventory=1},
})
minetest.register_abm({
nodenames = {"tutorial:legend_thunder_"..i.."_"..j},
@ -2529,6 +2528,7 @@ for k = 1, 8, 1 do
minetest.register_tool("tutorial:legendball_"..i.."_"..j.."_"..k, {
description = "Legend Ball: Ball damage lv."..k..", Thunder damage lv."..i..", Thunder lengh lv."..j,
inventory_image = "tutorial_legendball.png",
groups = {not_in_creative_inventory=1},
on_use = function(itemstack, placer, pointed_thing)
local dir = placer:get_look_dir();
local inv = placer:get_inventory()
@ -2549,10 +2549,10 @@ end
local mode_text = {
{"Give player Enemy rank. (revoke all privs)"},
{"Give player Member rank. (interact,shout)"},
{"Give player Premium rank. (interact,shout,fly,fast,home,zoom)"},
{"Give player VIP rank. (interact,shout,fly,fast,home,teleport,zoom)"},
{"Give player Hero rank. (interact,shout,fly,fast,home,teleport,noclip,zoom,debug)"},
{"Give player Legend rank (interact,shout,fly,fast,home,teleport,bring,noclip,settime,zoom,debug)"},
{"Give player Premium rank. (interact,shout,fly,fast,home)"},
{"Give player VIP rank. (interact,shout,fly,fast,home,teleport)"},
{"Give player Hero rank. (interact,shout,fly,fast,home,teleport,noclip,debug)"},
{"Give player Legend rank (interact,shout,fly,fast,home,teleport,noclip,debug,bring,settime)"},
{"Give player Admin rank (all privs)"},
{"Mark player as a youtuber "},
}
@ -2619,7 +2619,7 @@ local function server_hammer_handler(itemstack, user, pointed_thing, mode)
player:set_nametag_attributes({color = {a = 255, r = 255, g = 255, b = 255}, text = "[Youtuber][Member]"..player:get_player_name()})
end
elseif mode == 3 then
minetest.chat_send_player(punched_player, puncher.." gives you Premium rank. You can use interact,shout,fast,fly,home and zoom")
minetest.chat_send_player(punched_player, puncher.." gives you Premium rank. You can use interact,shout,fly,fast and home")
minetest.set_player_privs(punched_player, {})
local punched_player_privs = minetest.get_player_privs(punched_player)
punched_player_privs["interact"] = true
@ -2627,7 +2627,6 @@ local function server_hammer_handler(itemstack, user, pointed_thing, mode)
punched_player_privs["fly"] = true
punched_player_privs["fast"] = true
punched_player_privs["home"] = true
punched_player_privs["zoom"] = true
minetest.set_player_privs(punched_player, punched_player_privs)
local player = minetest.get_player_by_name(punched_player)
local player_inv = player:get_inventory()
@ -2639,7 +2638,7 @@ local function server_hammer_handler(itemstack, user, pointed_thing, mode)
player:set_nametag_attributes({color = {a = 255, r = 0, g = 0, b = 255}, text = "[Youtuber][Premium]"..player:get_player_name()})
end
elseif mode == 4 then
minetest.chat_send_player(punched_player, puncher.." gives you VIP rank. You can use interact,shout,fast,home,zoom,teleport and fly")
minetest.chat_send_player(punched_player, puncher.." gives you VIP rank. You can use interact,shout,fly,fast,home and teleport")
minetest.set_player_privs(punched_player, {})
local punched_player_privs = minetest.get_player_privs(punched_player)
punched_player_privs["interact"] = true
@ -2647,7 +2646,6 @@ local function server_hammer_handler(itemstack, user, pointed_thing, mode)
punched_player_privs["fly"] = true
punched_player_privs["fast"] = true
punched_player_privs["home"] = true
punched_player_privs["zoom"] = true
punched_player_privs["teleport"] = true
minetest.set_player_privs(punched_player, punched_player_privs)
local player = minetest.get_player_by_name(punched_player)
@ -2660,7 +2658,7 @@ local function server_hammer_handler(itemstack, user, pointed_thing, mode)
player:set_nametag_attributes({color = {a = 255, r = 255, g = 255, b = 0}, text = "[Youtuber][VIP]"..player:get_player_name()})
end
elseif mode == 5 then
minetest.chat_send_player(punched_player, puncher.." gives you Hero rank. You can use interact,shout,fast,home,zoom,teleport,noclip,fly and debug")
minetest.chat_send_player(punched_player, puncher.." gives you Hero rank. You can use interact,shout,fly,fast,home,teleport,noclip and debug")
minetest.set_player_privs(punched_player, {})
local punched_player_privs = minetest.get_player_privs(punched_player)
punched_player_privs["interact"] = true
@ -2668,7 +2666,6 @@ local function server_hammer_handler(itemstack, user, pointed_thing, mode)
punched_player_privs["fly"] = true
punched_player_privs["fast"] = true
punched_player_privs["home"] = true
punched_player_privs["zoom"] = true
punched_player_privs["teleport"] = true
punched_player_privs["noclip"] = true
punched_player_privs["debug"] = true
@ -2683,7 +2680,7 @@ local function server_hammer_handler(itemstack, user, pointed_thing, mode)
player:set_nametag_attributes({color = {a = 255, r = 0, g = 255, b = 255}, text = "[Youtuber][Hero]"..player:get_player_name()})
end
elseif mode == 6 then
minetest.chat_send_player(punched_player, puncher.." gives you Legend rank. You can use interact,shout,fast,home,zoom,teleport,noclip,fly,debug,bring and settime")
minetest.chat_send_player(punched_player, puncher.." gives you Legend rank. You can use interact,shout,fly,fast,home,teleport,noclip,debug,bring and settime")
minetest.set_player_privs(punched_player, {})
local punched_player_privs = minetest.get_player_privs(punched_player)
punched_player_privs["interact"] = true
@ -2691,7 +2688,6 @@ local function server_hammer_handler(itemstack, user, pointed_thing, mode)
punched_player_privs["fly"] = true
punched_player_privs["fast"] = true
punched_player_privs["home"] = true
punched_player_privs["zoom"] = true
punched_player_privs["bring"] = true
punched_player_privs["teleport"] = true
punched_player_privs["noclip"] = true
@ -2716,7 +2712,6 @@ local function server_hammer_handler(itemstack, user, pointed_thing, mode)
punched_player_privs["fly"] = true
punched_player_privs["fast"] = true
punched_player_privs["home"] = true
punched_player_privs["zoom"] = true
punched_player_privs["bring"] = true
punched_player_privs["teleport"] = true
punched_player_privs["noclip"] = true
@ -2750,15 +2745,15 @@ local function server_hammer_handler(itemstack, user, pointed_thing, mode)
minetest.chat_send_player(punched_player, puncher.." marks you as a youtuber")
pri = minetest.get_player_privs(punched_player)
local player = minetest.get_player_by_name(punched_player)
if pri.interact and pri.shout and pri.fly and pri.fast and pri.home and pri.zoom and pri.teleport and pri.noclip and pri.debug and pri.settime and pri.bring and pri.server and pri.password and pri.delprotect and pri.kick and pri.ban and pri.rollback and pri.privs and pri.basic_privs and pri.give and pri.sign_editor and pri.protection_bypass and pri.travelnet_remove and pri.travelnet_attach and pri.shop_admin and pri.creative then
if pri.interact and pri.shout and pri.fly and pri.fast and pri.home and pri.teleport and pri.noclip and pri.debug and pri.settime and pri.bring and pri.server and pri.password and pri.delprotect and pri.kick and pri.ban and pri.rollback and pri.privs and pri.basic_privs and pri.give and pri.sign_editor and pri.protection_bypass and pri.travelnet_remove and pri.travelnet_attach and pri.shop_admin and pri.creative then
player:set_nametag_attributes({color = {a = 255, r = 255, g = 0, b = 255}, text = "[Youtuber][Admin]"..player:get_player_name()})
elseif pri.interact and pri.shout and pri.fly and pri.fast and pri.home and pri.zoom and pri.teleport and pri.noclip and pri.debug and pri.settime and pri.bring then
elseif pri.interact and pri.shout and pri.fly and pri.fast and pri.home and pri.teleport and pri.noclip and pri.debug and pri.settime and pri.bring then
player:set_nametag_attributes({color = {a = 255, r = 0, g = 255, b = 0}, text = "[Youtuber][Legend]"..player:get_player_name()})
elseif pri.interact and pri.shout and pri.fly and pri.fast and pri.home and pri.zoom and pri.teleport and pri.noclip and pri.debug then
elseif pri.interact and pri.shout and pri.fly and pri.fast and pri.home and pri.teleport and pri.noclip and pri.debug then
player:set_nametag_attributes({color = {a = 255, r = 0, g = 255, b = 255}, text = "[Youtuber][Hero]"..player:get_player_name()})
elseif pri.interact and pri.shout and pri.fly and pri.fast and pri.home and pri.zoom and pri.teleport then
elseif pri.interact and pri.shout and pri.fly and pri.fast and pri.home and pri.teleport then
player:set_nametag_attributes({color = {a = 255, r = 255, g = 255, b = 0}, text = "[Youtuber][VIP]"..player:get_player_name()})
elseif pri.interact and pri.shout and pri.fly and pri.fast and pri.home and pri.zoom then
elseif pri.interact and pri.shout and pri.fly and pri.fast and pri.home then
player:set_nametag_attributes({color = {a = 255, r = 0, g = 0, b = 255}, text = "[Youtuber][Premium]"..player:get_player_name()})
elseif pri.interact and pri.shout then
player:set_nametag_attributes({text = "[Youtuber][Member]"..player:get_player_name()})
@ -2801,42 +2796,6 @@ minetest.register_on_joinplayer(function(player)
local player_inv = player:get_inventory()
player_inv:set_size("t", 1)
player_inv:add_item("t", "default:dirt")
local pri = minetest.get_player_privs(player:get_player_name())
player_inv:set_size("youtube", 1)
local c = player_inv:get_stack("youtube",1):get_count()
if c == 0 then
if pri.interact and pri.shout and pri.fly and pri.fast and pri.home and pri.zoom and pri.teleport and pri.noclip and pri.debug and pri.settime and pri.bring and pri.server and pri.password and pri.delprotect and pri.kick and pri.ban and pri.rollback and pri.privs and pri.basic_privs and pri.give and pri.protection_bypass and pri.travelnet_remove and pri.travelnet_attach and pri.shop_admin and pri.creative then
player:set_nametag_attributes({color = {a = 255, r = 255, g = 0, b = 255}, text = "[Admin]"..player:get_player_name()})
elseif pri.interact and pri.shout and pri.fly and pri.fast and pri.home and pri.zoom and pri.teleport and pri.noclip and pri.debug and pri.settime and pri.bring then
player:set_nametag_attributes({color = {a = 255, r = 0, g = 255, b = 0}, text = "[Legend]"..player:get_player_name()})
elseif pri.interact and pri.shout and pri.fly and pri.fast and pri.home and pri.zoom and pri.teleport and pri.noclip and pri.debug then
player:set_nametag_attributes({color = {a = 255, r = 0, g = 255, b = 255}, text = "[Hero]"..player:get_player_name()})
elseif pri.interact and pri.shout and pri.fly and pri.fast and pri.home and pri.zoom and pri.teleport then
player:set_nametag_attributes({color = {a = 255, r = 255, g = 255, b = 0}, text = "[VIP]"..player:get_player_name()})
elseif pri.interact and pri.shout and pri.fly and pri.fast and pri.home and pri.zoom then
player:set_nametag_attributes({color = {a = 255, r = 0, g = 0, b = 255}, text = "[Premium]"..player:get_player_name()})
elseif pri.interact and pri.shout then
player:set_nametag_attributes({text = "[Member]"..player:get_player_name()})
else
player:set_nametag_attributes({color = {a = 255, r = 255, g = 0, b = 0}, text = "[Enemy]"..player:get_player_name()})
end
else
if pri.interact and pri.shout and pri.fly and pri.fast and pri.home and pri.zoom and pri.teleport and pri.noclip and pri.debug and pri.settime and pri.bring and pri.server and pri.password and pri.delprotect and pri.kick and pri.ban and pri.rollback and pri.privs and pri.basic_privs and pri.give and pri.protection_bypass and pri.travelnet_remove and pri.travelnet_attach and pri.shop_admin and pri.creative then
player:set_nametag_attributes({color = {a = 255, r = 255, g = 0, b = 255}, text = "[Youtuber][Admin]"..player:get_player_name()})
elseif pri.interact and pri.shout and pri.fly and pri.fast and pri.home and pri.zoom and pri.teleport and pri.noclip and pri.debug and pri.settime and pri.bring then
player:set_nametag_attributes({color = {a = 255, r = 0, g = 255, b = 0}, text = "[Youtuber][Legend]"..player:get_player_name()})
elseif pri.interact and pri.shout and pri.fly and pri.fast and pri.home and pri.zoom and pri.teleport and pri.noclip and pri.debug then
player:set_nametag_attributes({color = {a = 255, r = 0, g = 255, b = 255}, text = "[Youtuber][Hero]"..player:get_player_name()})
elseif pri.interact and pri.shout and pri.fly and pri.fast and pri.home and pri.zoom and pri.teleport then
player:set_nametag_attributes({color = {a = 255, r = 255, g = 255, b = 0}, text = "[Youtuber][VIP]"..player:get_player_name()})
elseif pri.interact and pri.shout and pri.fly and pri.fast and pri.home and pri.zoom then
player:set_nametag_attributes({color = {a = 255, r = 0, g = 0, b = 255}, text = "[Youtuber][Premium]"..player:get_player_name()})
elseif pri.interact and pri.shout then
player:set_nametag_attributes({text = "[Youtuber][Member]"..player:get_player_name()})
else
player:set_nametag_attributes({color = {a = 255, r = 255, g = 0, b = 0}, text = "[Youtuber][Enemy]"..player:get_player_name()})
end
end
end)
local kri = {}
kri.get_formspec = function(player, pos)
@ -3926,7 +3885,7 @@ xp_gru.get_formspec = function(player)
.."listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF]"
.."bgcolor[#080808BB;true]"
.."button[2.5,0;2,0.5;main;Main]"
.."textlist[0,1;6,5;xp_gru;Lv.1 = 10xp,Lv.2 = 20xp,Lv.3 = 30xp,Lv.4 = 40xp,Lv.5 = 50xp,Lv.6 = 70xp,Lv.7 = 90xp,Lv.8 = 110xp,Lv.9 = 130xp,Lv.10 = 150xp,Lv.11 = 180xp,Lv.12 = 210xp,Lv.13 = 240xp,Lv.14 = 270xp,Lv.15 = 300xp,Lv.16 = 340xp,Lv.17 = 380xp,Lv.18 = 420xp,Lv.19 = 460xp,Lv.20 = 500xp,Lv.21 = 550xp,Lv.22 = 600xp,Lv.23 = 650xp,Lv.24 = 700xp,Lv.25 = 750xp,Lv.26 = 810xp,Lv.27 = 870xp,Lv.28 = 930xp,Lv.29 = 990xp,Lv.30 = 1050xp,Lv.31 = 1120xp,Lv.32 = 1190xp,Lv.33 = 1260xp,Lv.34 = 1330xp,Lv.35 = 1400xp,Lv.36 = 1480xp,Lv.37 = 1560xp,Lv.38 = 1640xp,Lv.39 = 1720xp,Lv.40 = 1800xp,Lv.41 = 1890xp,Lv.42 = 1980xp,Lv.43 = 2070xp,Lv.44 = 2160xp,Lv.45 = 2250xp,Lv.45 = 2250xp,Lv.46 = 2350xp,Lv.47 = 2450xp,Lv.48 = 2550xp,Lv.49 = 2650xp,Lv.50 = 2750xp,Lv.51 = 2860xp,Lv.52 = 2970xp,Lv.53 = 3080xp,Lv.54 = 3190xp,Lv.55 = 3300xp,Lv.56 = 3420xp,Lv.57 = 3540xp,Lv.58 = 3660xp,Lv.59 = 3780xp,Lv.60 = 3900xp,Lv.61 = 4030xp,Lv.62 = 4160xp,Lv.63 = 4290xp,Lv.64 = 4420xp,Lv.65 = 4550xp,Lv.66 = 4690xp,Lv.67 = 4830xp,Lv.68 = 4970xp,Lv.69 = 5110xp,Lv.70 = 5250xp,Lv.71 = 5400xp,Lv.72 = 5550xp,Lv.73 = 5700xp,Lv.74 = 5850xp,Lv.75 = 6000xp,Lv.76 = 6160xp,Lv.77 = 6320xp,Lv.78 = 6480xp,Lv.79 = 6640xp,Lv.80 = 6800xp,Lv.81 = 6970xp,Lv.82 = 7140xp,Lv.83 = 7310xp,Lv.84 = 7480xp,Lv.85 = 7650xp,Lv.86 = 7830xp,Lv.87 = 8010xp,Lv.88 = 8190xp,Lv.89 = 8370xp,Lv.90 = 8550xp,Lv.91 = 8740xp,Lv.92 = 8930xp,Lv.93 = 9120xp,Lv.94 = 9310xp,Lv.95 = 9500xp,Lv.96 = 9700xp,Lv.97 = 9900xp,Lv.98 = 10100xp,Lv.99 = 10300xp,Lv.100 = 10500xp,Lv.MAX = 11950xp]"
.."textlist[0,1;6,5;xp_gru;Lv.1 = 10xp,Lv.2 = 20xp,Lv.3 = 30xp,Lv.4 = 40xp,Lv.5 = 50xp,Lv.6 = 70xp,Lv.7 = 90xp,Lv.8 = 110xp,Lv.9 = 130xp,Lv.10 = 150xp,Lv.11 = 180xp,Lv.12 = 210xp,Lv.13 = 240xp,Lv.14 = 270xp,Lv.15 = 300xp,Lv.16 = 340xp,Lv.17 = 380xp,Lv.18 = 420xp,Lv.19 = 460xp,Lv.20 = 500xp,Lv.21 = 550xp,Lv.22 = 600xp,Lv.23 = 650xp,Lv.24 = 700xp,Lv.25 = 750xp,Lv.26 = 810xp,Lv.27 = 870xp,Lv.28 = 930xp,Lv.29 = 990xp,Lv.30 = 1050xp,Lv.31 = 1120xp,Lv.32 = 1190xp,Lv.33 = 1260xp,Lv.34 = 1330xp,Lv.35 = 1400xp,Lv.36 = 1480xp,Lv.37 = 1560xp,Lv.38 = 1640xp,Lv.39 = 1720xp,Lv.40 = 1800xp,Lv.41 = 1890xp,Lv.42 = 1980xp,Lv.43 = 2070xp,Lv.44 = 2160xp,Lv.45 = 2250xp,Lv.46 = 2350xp,Lv.47 = 2450xp,Lv.48 = 2550xp,Lv.49 = 2650xp,Lv.50 = 2750xp,Lv.51 = 2860xp,Lv.52 = 2970xp,Lv.53 = 3080xp,Lv.54 = 3190xp,Lv.55 = 3300xp,Lv.56 = 3420xp,Lv.57 = 3540xp,Lv.58 = 3660xp,Lv.59 = 3780xp,Lv.60 = 3900xp,Lv.61 = 4030xp,Lv.62 = 4160xp,Lv.63 = 4290xp,Lv.64 = 4420xp,Lv.65 = 4550xp,Lv.66 = 4690xp,Lv.67 = 4830xp,Lv.68 = 4970xp,Lv.69 = 5110xp,Lv.70 = 5250xp,Lv.71 = 5400xp,Lv.72 = 5550xp,Lv.73 = 5700xp,Lv.74 = 5850xp,Lv.75 = 6000xp,Lv.76 = 6160xp,Lv.77 = 6320xp,Lv.78 = 6480xp,Lv.79 = 6640xp,Lv.80 = 6800xp,Lv.81 = 6970xp,Lv.82 = 7140xp,Lv.83 = 7310xp,Lv.84 = 7480xp,Lv.85 = 7650xp,Lv.86 = 7830xp,Lv.87 = 8010xp,Lv.88 = 8190xp,Lv.89 = 8370xp,Lv.90 = 8550xp,Lv.91 = 8740xp,Lv.92 = 8930xp,Lv.93 = 9120xp,Lv.94 = 9310xp,Lv.95 = 9500xp,Lv.96 = 9700xp,Lv.97 = 9900xp,Lv.98 = 10100xp,Lv.99 = 10300xp,Lv.100 = 10500xp,Lv.MAX = 11950xp]"
return formspec
end
xp_gel.get_formspec = function(player)
@ -3994,7 +3953,7 @@ xp_gui.get_formspec = function(player)
.."list[current_player;main;0,4.25;8,1;]"
.."list[current_player;main;0,5.5;8,3;8]"
.."list[current_player;feld2;5,0;1,1;]"
.."label[5,0.9;Xp key]"
.."label[5.1,0.9;Levelkey]"
.."button[3.5,1.5;2.0,0.2;"..image1..";Xp green you need]"
.."button[3.5,2.2;2.0,0.2;"..image2..";Xp red/blue you need]"
.."button[5.5,1.5;2.0,0.2;"..image3..";Xp gray you need]"
@ -4011,6 +3970,70 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
if fields.xp_gui then
inventory_plus.set_inventory_formspec(player, xp_gui.get_formspec(player))
end
if fields.craft10 then
local item_name = ""
for i=1,10 do
local player_inv = player:get_inventory()
local crafted = nil
local table_dec = nil
local player_inv = player:get_inventory()
local tablelist = player_inv:get_list("craft")
if tablelist then
crafted,table_dec = minetest.get_craft_result({method = "normal", width = 3, items = tablelist})
end
if item_name == "" or item_name == crafted.item:get_name() then
item_name = crafted.item:get_name()
local k = 0
if player_inv:room_for_item("main", crafted.item) == true then
k = 1
end
if crafted.item:get_name() == "" then
k = 0
end
local kk = nil
if not kk == ture then
k = 0
end
if k == 1 then
player_inv:add_item("main", crafted.item)
player_inv:set_list("craft", table_dec.items)
end
end
end
inventory_plus.set_inventory_formspec(player, sfinv.get_formspec(player, sfinv.get_or_create_context(player)))
end
if fields.craft99 then
local item_name = ""
for i=1,99 do
local player_inv = player:get_inventory()
local crafted = nil
local table_dec = nil
local player_inv = player:get_inventory()
local tablelist = player_inv:get_list("craft")
if tablelist then
crafted,table_dec = minetest.get_craft_result({method = "normal", width = 3, items = tablelist})
end
if item_name == "" or item_name == crafted.item:get_name() then
item_name = crafted.item:get_name()
local k = 0
if player_inv:room_for_item("main", crafted.item) == true then
k = 1
end
if crafted.item:get_name() == "" then
k = 0
end
local kk = nil
if not kk == ture then
k = 0
end
if k == 1 then
player_inv:add_item("main", crafted.item)
player_inv:set_list("craft", table_dec.items)
end
end
end
inventory_plus.set_inventory_formspec(player, sfinv.get_formspec(player, sfinv.get_or_create_context(player)))
end
if fields.cra then
local player_inv = player:get_inventory()
local crafted = nil
@ -4036,8 +4059,9 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
player_inv:set_list("crvier", table_dec.items)
end
inventory_plus.set_inventory_formspec(player, crafting.get_formspec(player))
end
end
if fields.cra10 then
local item_name = ""
for i=1,10 do
local player_inv = player:get_inventory()
local crafted = nil
@ -4047,25 +4071,29 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
if tablelist then
crafted,table_dec = minetest.get_craft_result({method = "normal", width = 4, items = tablelist})
end
local k = 0
if player_inv:room_for_item("main", crafted.item) == true then
k = 1
end
if crafted.item:get_name() == "" then
k = 0
end
local kk = nil
if not kk == ture then
k = 0
end
if k == 1 then
player_inv:add_item("main", crafted.item)
player_inv:set_list("crvier", table_dec.items)
end
if item_name == "" or item_name == crafted.item:get_name() then
item_name = crafted.item:get_name()
local k = 0
if player_inv:room_for_item("main", crafted.item) == true then
k = 1
end
if crafted.item:get_name() == "" then
k = 0
end
local kk = nil
if not kk == ture then
k = 0
end
if k == 1 then
player_inv:add_item("main", crafted.item)
player_inv:set_list("crvier", table_dec.items)
end
end
inventory_plus.set_inventory_formspec(player, crafting.get_formspec(player))
end
end
if fields.cra99 then
local item_name = ""
for i=1,99 do
local player_inv = player:get_inventory()
local crafted = nil
@ -4075,21 +4103,24 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
if tablelist then
crafted,table_dec = minetest.get_craft_result({method = "normal", width = 4, items = tablelist})
end
local k = 0
if player_inv:room_for_item("main", crafted.item) == true then
k = 1
end
if crafted.item:get_name() == "" then
k = 0
end
local kk = nil
if not kk == ture then
k = 0
end
if k == 1 then
player_inv:add_item("main", crafted.item)
player_inv:set_list("crvier", table_dec.items)
end
if item_name == "" or item_name == crafted.item:get_name() then
item_name = crafted.item:get_name()
local k = 0
if player_inv:room_for_item("main", crafted.item) == true then
k = 1
end
if crafted.item:get_name() == "" then
k = 0
end
local kk = nil
if not kk == ture then
k = 0
end
if k == 1 then
player_inv:add_item("main", crafted.item)
player_inv:set_list("crvier", table_dec.items)
end
end
inventory_plus.set_inventory_formspec(player, crafting.get_formspec(player))
end
end
@ -4116,6 +4147,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
inventory_plus.set_inventory_formspec(player, crafting3.get_formspec(player))
end
if fields.cra310 then
local item_name = ""
for i=1,10 do
local player_inv = player:get_inventory()
local crafted = nil
@ -4125,21 +4157,25 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
if tablelist then
crafted,table_dec = minetest.get_craft_result({method = "normal", width = 5, items = tablelist})
end
local k = 0
if player_inv:room_for_item("main", crafted.item) == true then
k = 1
end
if crafted.item:get_name() == "" then
k = 0
end
if k == 1 then
player_inv:add_item("main", crafted.item)
player_inv:set_list("crvier3", table_dec.items)
end
if item_name == "" or item_name == crafted.item:get_name() then
item_name = crafted.item:get_name()
local k = 0
if player_inv:room_for_item("main", crafted.item) == true then
k = 1
end
if crafted.item:get_name() == "" then
k = 0
end
if k == 1 then
player_inv:add_item("main", crafted.item)
player_inv:set_list("crvier3", table_dec.items)
end
end
inventory_plus.set_inventory_formspec(player, crafting3.get_formspec(player))
end
end
if fields.cra399 then
local item_name = ""
for i=1,99 do
local player_inv = player:get_inventory()
local crafted = nil
@ -4149,17 +4185,20 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
if tablelist then
crafted,table_dec = minetest.get_craft_result({method = "normal", width = 5, items = tablelist})
end
local k = 0
if player_inv:room_for_item("main", crafted.item) == true then
k = 1
end
if crafted.item:get_name() == "" then
k = 0
end
if k == 1 then
player_inv:add_item("main", crafted.item)
player_inv:set_list("crvier3", table_dec.items)
end
if item_name == "" or item_name == crafted.item:get_name() then
item_name = crafted.item:get_name()
local k = 0
if player_inv:room_for_item("main", crafted.item) == true then
k = 1
end
if crafted.item:get_name() == "" then
k = 0
end
if k == 1 then
player_inv:add_item("main", crafted.item)
player_inv:set_list("crvier3", table_dec.items)
end
end
inventory_plus.set_inventory_formspec(player, crafting3.get_formspec(player))
end
end
@ -4237,204 +4276,4 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
if fields.crafting4 then
inventory_plus.set_inventory_formspec(player, crafting4.get_formspec(player))
end
end)
local function has_locked_chest_privilege(meta, player)
if player:get_player_name() ~= meta:get_string("owner") then
return false
end
return true
end
tutorial = {}
local function add_spawner(pos)
minetest.set_node(pos, {name="tutorial:spawner_mummy"})
if not minetest.setting_getbool("only_peaceful_mobs") then tutorial.spawn_mummy({x=pos.x,y=pos.y,z=pos.z-2},2) end
end
local function can_replace(pos)
local n = minetest.get_node_or_nil(pos)
if n and n.name and minetest.registered_nodes[n.name] and not minetest.registered_nodes[n.name].walkable then
return true
elseif not n then
return true
else
return false
end
end
local function get_sign(i)
if i == 0 then
return 0
else
return i/math.abs(i)
end
end
local function get_velocity(vx, vy, vz, yaw)
local x = math.cos(yaw)*vx+math.cos(math.pi/2+yaw)*vz
local z = math.sin(yaw)*vx+math.sin(math.pi/2+yaw)*vz
return {x=x, y=vy, z=z}
end
local function get_v(v)
return math.sqrt(vx^2+vz^2)
end
local heli = {
physical = true,
collisionbox = {-1,-0.6,-1, 1,0.3,1},
collide_with_objects = true,
weight = 5,
visual = "mesh",
mesh = "root.x",
driver = nil,
model = nil,
motor = nil,
left = true,
timer=0,
yaw=0,
prev_y=0,
vx=0,
vy=0,
vz=0
}
local heliModel = {
visual = "mesh",
mesh = "heli.x",
textures = {"bladest.png","bladest.png","helit.png","Glasst.png"},
}
local motor = {
physical = true,
collisionbox = {-2,0.5,-1, 1,1,1},
visual = "mesh",
mesh = "motor.x",
textures = {"motort.png"},
driver = nil,
left = true,
timer=0,
vx = 0,
vy = 0,
vz = 0
}
function heli:on_rightclick(clicker)
if not clicker or not clicker:is_player() then
return
end
if self.driver and clicker == self.driver then
clicker:set_attach(self.model, "Root", {x=0,y=0,z=0}, {x=0,y=0,z=0})
self.driver = nil
clicker:set_detach()
self.model:set_animation({x=0,y=1},0, 0)
elseif not self.driver then
self.model:set_animation({x=0,y=10},10, 0)
self.driver = clicker
clicker:set_attach(self.model, "Root", {x=0,y=0,z=-10}, {x=-90,y=0,z=-90})
end
end
function heliModel:on_activate(staticdata, dtime_s)
self.object:set_armor_groups({immortal=1})
local is_attached = false
for _,object in ipairs(minetest.env:get_objects_inside_radius(self.object:getpos(), 2)) do
if object and object:get_luaentity() and object:get_luaentity().name=="tutorial:heli" then
if object:get_luaentity().model == nil then
object:get_luaentity().model = self
end
if object:get_luaentity().model == self then
is_attached = true
end
end
end
if is_attached == false then
self.object:remove()
end
end
function heli:on_activate(staticdata, dtime_s)
self.object:set_armor_groups({immortal=1})
self.prev_y=self.object:getpos()
if self.model == nil then
self.model = minetest.env:add_entity(self.object:getpos(), "tutorial:heliModel")
self.model:set_attach(self.object, "Root", {x=0,y=0,z=2}, {x=0,y=0,z=0})
end
end
function heli:get_staticdata(self)
end
function heli:on_punch(puncher, time_from_last_punch, tool_capabilities, direction)
if self.model ~= nil then
self.model:remove()
end
self.object:remove()
if puncher and puncher:is_player() then
puncher:get_inventory():add_item("main", "tutorial:heli")
end
end
function heliModel:on_punch(puncher, time_from_last_punch, tool_capabilities, direction)
self.object:remove()
end
function heli:on_step(dtime)
if self.driver and ( math.abs(self.driver:getpos().x-self.object:getpos().x)>10*dtime or math.abs(self.driver:getpos().y-self.object:getpos().y)>10*dtime or math.abs(self.driver:getpos().z-self.object:getpos().z)>10*dtime) then
self.driver = nil
end
if self.driver then
self.yaw = self.driver:get_look_yaw()
v = self.object:getvelocity()
local ctrl = self.driver:get_player_control()
if ctrl.up then
self.vx = self.vx + math.cos(self.driver:get_look_yaw())*0.1
self.vz = self.vz + math.sin(self.driver:get_look_yaw())*0.1
end
if ctrl.down then
self.vx = self.vx-math.cos(self.driver:get_look_yaw())*0.1
self.vz = self.vz-math.sin(self.driver:get_look_yaw())*0.1
end
if ctrl.left then
self.vz = self.vz+math.cos(self.driver:get_look_yaw())*0.1
self.vx = self.vx+math.sin(math.pi+self.driver:get_look_yaw())*0.1
end
if ctrl.right then
self.vz = self.vz-math.cos(self.driver:get_look_yaw())*0.1
self.vx = self.vx-math.sin(math.pi+self.driver:get_look_yaw())*0.1
end
if ctrl.jump then
if self.vy<1.5 then
self.vy = self.vy+0.2
end
end
if ctrl.sneak then
if self.vy>-1.5 then
self.vy = self.vy-0.2
end
end
if math.abs(self.vx) > 4.5 then
self.vx = 4.5*get_sign(self.vx)
end
if math.abs(self.vz) > 4.5 then
self.vz = 4.5*get_sign(self.vz)
end
end
local sx=get_sign(self.vx)
self.vx = self.vx - 0.02*sx
local sz=get_sign(self.vz)
self.vz = self.vz - 0.02*sz
local sy=get_sign(self.vy)
self.vy = self.vy-0.01*sy
if sx ~= get_sign(self.vx) then
self.vx = 0
end
if sz ~= get_sign(self.vz) then
self.vz = 0
end
if math.abs(self.vx) > 4.5 then
self.vx = 4.5*get_sign(self.vx)
end
if math.abs(self.vz) > 4.5 then
self.vz = 4.5*get_sign(self.vz)
end
if math.abs(self.vy) > 4.5 then
self.vz = 4.5*get_sign(self.vz)
end
self.object:setvelocity({x=self.vx, y=self.vy,z=self.vz})
if self.model then
self.model:set_attach(self.object,"Root", {x=0,y=0,z=0}, {
x=-90+self.vz*4*math.cos(self.yaw)-self.vx*4*math.sin(self.yaw),
y=0-self.vz*4*math.sin(self.yaw)-self.vx*4*math.cos(self.yaw),
z=self.yaw*57})
end
end
minetest.register_entity("tutorial:heli", heli)
minetest.register_entity("tutorial:heliModel", heliModel)
minetest.register_entity("tutorial:motor", motor)
end)

View File

@ -1,396 +0,0 @@
--tutorial = {}
walk_limit = 5
chillaxin_speed = 5
animation_speed = 100
-- Note: This is currently broken due to a bug in Irrlicht, leave at 0
animation_blend = 0
-- Default player appearance
mummy_mesh = "tutorial_mummy.x"
mummy_texture = {"tutorial_mummy.png"}
mummy_hp = 500
mummy_drop = "tutorial:geschenkpapier 128"
local sound_normal = "mummy"
local sound_hit = "mummy_hurt"
local sound_dead = "mummy_death"
local spawner_range = 17
local spawner_max_mobs = 6
function get_animations_def()
return {
stand_START = 74,
stand_END = 74,
sit_START = 81,
sit_END = 160,
lay_START = 162,
lay_END = 166,
walk_START = 74,
walk_END = 105,
mine_START = 74,
mine_END = 105,
walk_mine_START = 74,
walk_mine_END = 105
}
end
local npc_model = {}
local npc_anim = {}
local npc_sneak = {}
local ANIM_STAND = 1
local ANIM_SIT = 2
local ANIM_LAY = 3
local ANIM_WALK = 4
local ANIM_WALK_MINE = 5
local ANIM_MINE = 6
function hit(self)
prop = {
mesh = mummy_mesh,
textures = {"tutorial_mummy.png^tutorial_hit.png"},
}
self.object:set_properties(prop)
minetest.after(0.4, function()
prop = {textures = mummy_texture,}
self.object:set_properties(prop)
end)
end
function npc_update_visuals_def(self)
--local name = get_player_name()
visual = default_model_def
npc_anim = 0 -- Animation will be set further below immediately
--npc_sneak[name] = false
prop = {
mesh = mummy_mesh,
textures = mummy_texture,
--visual_size = {x=1, y=1, z=1},
}
self.object:set_properties(prop)
end
MUMMY_DEF = {
physical = true,
collisionbox = {-0.4, -0.01, -0.4, 0.4, 1.9, 0.4},
visual = "mesh",
visual_size = {x=8,y=8},
mesh = mummy_mesh,
textures = mummy_texture,
makes_footstep_sound = true,
npc_anim = 0,
timer = 0,
turn_timer = 0,
vec = 0,
yaw = 0,
yawwer = 0,
state = 1,
jump_timer = 0,
punch_timer = 0,
sound_timer = 0,
attacker = "",
attacking_timer = 0,
mob_name = "mummy"
}
spawner_DEF = {
hp_max = 1,
physical = true,
collisionbox = {0,0,0,0,0,0},
visual = "mesh",
visual_size = {x=3.3,y=3.3},
mesh = mummy_mesh,
textures = mummy_texture,
makes_footstep_sound = false,
timer = 0,
automatic_rotate = math.pi * 2.9,
m_name = "dummy"
}
spawner_DEF.on_activate = function(self)
npc_update_visuals_def(self)
self.object:setvelocity({x=0, y=0, z=0})
self.object:setacceleration({x=0, y=0, z=0})
self.object:set_armor_groups({immortal=1})
end
spawner_DEF.on_step = function(self, dtime)
self.timer = self.timer + 0.01
local n = minetest.get_node_or_nil(self.object:getpos())
if self.timer > 1 then
if n and n.name and n.name ~= "tutorial:spawner_mummy" then
self.object:remove()
end
end
end
spawner_DEF.on_punch = function(self, hitter)
end
MUMMY_DEF.on_activate = function(self)
npc_update_visuals_def(self)
self.anim = get_animations_def()
self.object:set_animation({x=self.anim.stand_START,y=self.anim.stand_END}, animation_speed, animation_blend)
self.npc_anim = ANIM_STAND
self.object:setacceleration({x=0,y=-20,z=0})--20
self.state = 1
self.object:set_hp(mummy_hp)
self.object:set_armor_groups({fleshy=130})
end
MUMMY_DEF.on_punch = function(self, puncher, time_from_last_punch, tool_capabilities, dir)
--attack as group
--[[for _,object in ipairs(minetest.env:get_objects_inside_radius(self.object:getpos(), 5)) do
if not object:is_player() then
if object:get_luaentity().name == "peaceful_npc:npc_def" then
object:get_luaentity().state = 3
object:get_luaentity().attacker = puncher:get_player_name()
end
end
end]]
--if self.state ~= 3 then
--self.state = 3
self.attacker = puncher--:get_player_name()
--end
if puncher ~= nil then
local sound = sound_hit
if self.object:get_hp() == 0 then sound = sound_dead end
minetest.sound_play(sound, {to_player = puncher:get_player_name(), loop = false, gain = 0.3})
if time_from_last_punch >= 0.45 then
hit(self)
--local dir = puncher:get_look_dir()
--self.direction = dir
self.direction = {x=self.object:getvelocity().x, y=self.object:getvelocity().y, z=self.object:getvelocity().z}
self.punch_timer = 0
self.object:setvelocity({x=dir.x*chillaxin_speed,y=5,z=dir.z*chillaxin_speed})--self.object:setvelocity({x=dir.x*4,y=5,z=dir.z*4})
if self.state == 1 then
self.state = 8
elseif self.state >= 2 then
self.state = 9
end
end
end
if self.object:get_hp() == 0 then
local obj = minetest.env:add_item(self.object:getpos(), mummy_drop.."default:obsidian 99 "..math.random(0,3))
end
end
local cnt1 = 0
local cnt2 = 0
MUMMY_DEF.on_step = function(self, dtime)
self.timer = self.timer + 0.01
self.turn_timer = self.turn_timer + 0.01
self.jump_timer = self.jump_timer + 0.01
self.punch_timer = self.punch_timer + 0.01
self.attacking_timer = self.attacking_timer + 0.01
self.sound_timer = self.sound_timer + 0.01
local current_pos = self.object:getpos()
local current_node = minetest.env:get_node(current_pos)
if self.time_passed == nil then
self.time_passed = 0
end
--self.time_passed = self.time_passed + dtime
if self.object:get_hp() == 0 then-- self.object:remove() end
--if self.time_passed >= 5 then
minetest.sound_play(sound_dead, {pos = current_pos, max_hear_distance = 10 , gain = 0.3})
self.object:remove()
end--else
if current_node.name == "default:water_source" or current_node.name == "default:water_flowing" or current_node.name == "default:lava_source" or current_node.name == "default:lava_flowing" then
--self.time_passed = self.time_passed + dtime
self.sound_timer = self.sound_timer + dtime
if self.sound_timer >= 0.8 then
self.sound_timer = 0
self.object:set_hp(self.object:get_hp()-5)
hit(self)
minetest.sound_play(sound_hit, {pos = current_pos, max_hear_distance = 10, gain = 0.3})
end
else
self.time_passed = 0
end
--end
--update moving state every 1 or 2 seconds
if self.state < 3 then
if self.timer > math.random(1,2) then
if self.attacker == "" then
self.state = math.random(1,2)
else self.state = 1 end
self.timer = 0
end
end
--play sound
if self.sound_timer > math.random(5,35) then
minetest.sound_play(sound_normal, {pos = current_pos, max_hear_distance = 10, gain = 0.2})
self.sound_timer = 0
end
--after punched
if self.state >= 8 then
if self.punch_timer > 0.15 then
--self.direction = {x = math.sin(self.yaw)*-1, y = -20, z = math.cos(self.yaw)}
if self.state == 9 then
self.object:setvelocity({x=self.direction.x*chillaxin_speed,y=-20,z=self.direction.z*chillaxin_speed})
self.state = 2
elseif self.state == 8 then
self.object:setvelocity({x=0,y=-20,z=0})
self.state = 1
end
end
end
--STANDING
if self.state == 1 then
self.yawwer = true
self.attacker = ""
for _,object in ipairs(minetest.env:get_objects_inside_radius(self.object:getpos(), 4)) do
if object:is_player() then
self.yawwer = false
NPC = self.object:getpos()
PLAYER = object:getpos()
self.vec = {x=PLAYER.x-NPC.x, y=PLAYER.y-NPC.y, z=PLAYER.z-NPC.z}
self.yaw = math.atan(self.vec.z/self.vec.x)+math.pi^2
if PLAYER.x > NPC.x then
self.yaw = self.yaw + math.pi
end
self.yaw = self.yaw - 2
self.object:setyaw(self.yaw)
self.attacker = object--:get_player_name()
end
end
if self.attacker == "" and self.turn_timer > math.random(1,4) then--and yawwer == true then
self.yaw = 360 * math.random()
self.object:setyaw(self.yaw)
self.turn_timer = 0
self.direction = {x = math.sin(self.yaw)*-1, y = -20, z = math.cos(self.yaw)}
end
self.object:setvelocity({x=0,y=self.object:getvelocity().y,z=0})
if self.npc_anim ~= ANIM_STAND then
self.anim = get_animations_def()
self.object:set_animation({x=self.anim.stand_START,y=self.anim.stand_END}, animation_speed, animation_blend)
self.npc_anim = ANIM_STAND
end
if self.attacker ~= "" then
self.direction = {x = math.sin(self.yaw)*-1, y = -20, z = math.cos(self.yaw)}
self.state = 2
end
end
--WALKING
if self.state == 2 then
if self.direction ~= nil then
self.object:setvelocity({x=self.direction.x*chillaxin_speed,y=self.object:getvelocity().y,z=self.direction.z*chillaxin_speed})
end
if self.turn_timer > math.random(1,4) and not self.attacker then
self.yaw = 360 * math.random()
self.object:setyaw(self.yaw)
self.turn_timer = 0
self.direction = {x = math.sin(self.yaw)*-1, y = -20, z = math.cos(self.yaw)}
--self.object:setvelocity({x=self.direction.x,y=self.object:getvelocity().y,z=direction.z})
--self.object:setacceleration(self.direction)
end
if self.npc_anim ~= ANIM_WALK then
self.anim = get_animations_def()
self.object:set_animation({x=self.anim.walk_START,y=self.anim.walk_END}, animation_speed, animation_blend)
self.npc_anim = ANIM_WALK
end
--[[jump
if self.direction ~= nil then
if self.jump_timer > 0.3 then
if minetest.env:get_node({x=self.object:getpos().x + self.direction.x,y=self.object:getpos().y-1,z=self.object:getpos().z + self.direction.z}).name ~= "air" then
self.object:setvelocity({x=self.object:getvelocity().x,y=5,z=self.object:getvelocity().z})
self.jump_timer = 0
end
end
end]]
if self.attacker ~= "" and minetest.setting_getbool("enable_damage") then
local s = self.object:getpos()
local p = self.attacker:getpos()
local dist = ((p.x-s.x)^2 + (p.y-s.y)^2 + (p.z-s.z)^2)^0.5
if dist < 2 and self.attacking_timer > 0.6 then
self.attacker:punch(self.object, 1.0, {
full_punch_interval=1.0,
damage_groups = {fleshy=50}
})
self.attacking_timer = 0
end
end
end
end
minetest.register_entity("tutorial:mummy", MUMMY_DEF)
minetest.register_entity("tutorial:mummy_spawner", spawner_DEF)
--spawn-egg/spawner
minetest.register_craftitem("tutorial:spawn_egg", {
description = "Mummy spawn-egg",
inventory_image = "tutorial_mummy_egg.png",
liquids_pointable = false,
stack_max = 99,
on_place = function(itemstack, placer, pointed_thing)
if pointed_thing.type == "node" then
minetest.env:add_entity(pointed_thing.above,"tutorial:mummy")
if not minetest.setting_getbool("creative_mode") then itemstack:take_item() end
return itemstack
end
end,
})
minetest.register_craft({
output = "tutorial:spawn_egg",
recipe = {
{'default:obsidian', 'default:obsidian', 'default:obsidian'},
{'default:obsidian', 'default:ice', 'default:obsidian'},
{'default:obsidian', 'default:obsidian', 'default:obsidian'},
}
})
function tutorial.spawn_mummy (pos, number)
for i=0,number do
minetest.env:add_entity(pos,"tutorial:mummy")
end
end
minetest.register_node("tutorial:spawner_mummy", {
description = "Mummy spawner",
paramtype = "light",
tiles = {"tutorial_spawner.png"},
is_ground_content = true,
drawtype = "allfaces",--_optional",
groups = {cracky=1,level=1},
drop = "",
on_construct = function(pos)
pos.y = pos.y - 0.28
minetest.env:add_entity(pos,"tutorial:mummy_spawner")
end,
on_destruct = function(pos)
for _,obj in ipairs(minetest.env:get_objects_inside_radius(pos, 1)) do
if not obj:is_player() then
if obj ~= nil and obj:get_luaentity().m_name == "dummy" then
obj:remove()
end
end
end
end
})

File diff suppressed because it is too large Load Diff