diff --git a/menu/Thumbs.db b/menu/Thumbs.db index f673c86..b1b4a51 100644 Binary files a/menu/Thumbs.db and b/menu/Thumbs.db differ diff --git a/mods/3d_armor/3d_armor/armor.lua b/mods/3d_armor/3d_armor/armor.lua index 441681a..7245424 100644 --- a/mods/3d_armor/3d_armor/armor.lua +++ b/mods/3d_armor/3d_armor/armor.lua @@ -7,7 +7,7 @@ minetest.register_tool("3d_armor:helmet_admin", { wield_image = "3d_armor_inv_helmet_admin.png", groups = {armor_head=20, armor_heal=20, armor_use=0, armor_fire=1, armor_water=0.2}, wear = 0, - on_use = function(itemstack, user, pointed_thing) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("3d_armor:helmet_admin2") @@ -22,7 +22,7 @@ minetest.register_tool("3d_armor:helmet_admin2", { 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, not_in_creative_inventory=1}, wear = 0, - on_use = function(itemstack, user, pointed_thing) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("3d_armor:helmet_admin3") @@ -37,7 +37,7 @@ minetest.register_tool("3d_armor:helmet_admin3", { 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, not_in_creative_inventory=1}, wear = 0, - on_use = function(itemstack, user, pointed_thing) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("3d_armor:helmet_admin4") @@ -52,7 +52,7 @@ minetest.register_tool("3d_armor:helmet_admin4", { 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, not_in_creative_inventory=1}, wear = 0, - on_use = function(itemstack, user, pointed_thing) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("3d_armor:helmet_admin") @@ -67,7 +67,7 @@ minetest.register_tool("3d_armor:chestplate_admin", { wield_image = "3d_armor_inv_chestplate_admin.png", groups = {armor_torso=20, armor_heal=20, armor_use=0, armor_fire=1, armor_water=0.2}, wear = 0, - on_use = function(itemstack, user, pointed_thing) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("3d_armor:chestplate_admin2") @@ -82,7 +82,7 @@ minetest.register_tool("3d_armor:chestplate_admin2", { 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, not_in_creative_inventory=1}, wear = 0, - on_use = function(itemstack, user, pointed_thing) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("3d_armor:chestplate_admin3") @@ -96,7 +96,7 @@ minetest.register_tool("3d_armor:chestplate_admin3", { 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, not_in_creative_inventory=1}, wear = 0, - on_use = function(itemstack, user, pointed_thing) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("3d_armor:chestplate_admin4") @@ -110,7 +110,7 @@ minetest.register_tool("3d_armor:chestplate_admin4", { 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, not_in_creative_inventory=1}, wear = 0, - on_use = function(itemstack, user, pointed_thing) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("3d_armor:chestplate_admin") @@ -124,7 +124,7 @@ minetest.register_tool("3d_armor:leggings_admin", { inventory_image = "3d_armor_inv_leggings_admin.png^technic_tool_mode1.png", groups = {armor_legs=20, armor_heal=20, armor_use=0, armor_fire=1, armor_water=0.2}, wear = 0, - on_use = function(itemstack, user, pointed_thing) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("3d_armor:leggings_admin2") @@ -139,7 +139,7 @@ minetest.register_tool("3d_armor:leggings_admin2", { 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, not_in_creative_inventory=1}, wear = 0, - on_use = function(itemstack, user, pointed_thing) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("3d_armor:leggings_admin3") @@ -154,7 +154,7 @@ minetest.register_tool("3d_armor:leggings_admin3", { 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, not_in_creative_inventory=1}, wear = 0, - on_use = function(itemstack, user, pointed_thing) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("3d_armor:leggings_admin4") @@ -169,7 +169,7 @@ minetest.register_tool("3d_armor:leggings_admin4", { 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, not_in_creative_inventory=1}, wear = 0, - on_use = function(itemstack, user, pointed_thing) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("3d_armor:leggings_admin") @@ -186,7 +186,7 @@ minetest.register_tool("3d_armor:boots_admin", { wield_image = "3d_armor_inv_boots_admin.png", groups = {armor_feet=20, armor_heal=20, armor_use=0, armor_fire=1, armor_water=0.2}, wear = 0, - on_use = function(itemstack, user, pointed_thing) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("3d_armor:boots_admin2") @@ -201,7 +201,7 @@ minetest.register_tool("3d_armor:boots_admin2", { 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, not_in_creative_inventory=1}, wear = 0, - on_use = function(itemstack, user, pointed_thing) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("3d_armor:boots_admin3") @@ -216,7 +216,7 @@ minetest.register_tool("3d_armor:boots_admin3", { 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, not_in_creative_inventory=1}, wear = 0, - on_use = function(itemstack, user, pointed_thing) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("3d_armor:boots_admin4") @@ -231,7 +231,7 @@ minetest.register_tool("3d_armor:boots_admin4", { 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, not_in_creative_inventory=1}, wear = 0, - on_use = function(itemstack, user, pointed_thing) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("3d_armor:boots_admin") diff --git a/mods/3d_armor/3d_armor/tutorial.lua b/mods/3d_armor/3d_armor/tutorial.lua index b67336e..d4f3df4 100644 --- a/mods/3d_armor/3d_armor/tutorial.lua +++ b/mods/3d_armor/3d_armor/tutorial.lua @@ -342,7 +342,7 @@ minetest.register_tool("3d_armor:superlegendenboots", { 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) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("3d_armor:superlegendenboots2") @@ -356,7 +356,7 @@ minetest.register_tool("3d_armor:superlegendenboots2", { 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) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("3d_armor:superlegendenboots3") @@ -370,7 +370,7 @@ minetest.register_tool("3d_armor:superlegendenboots3", { 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) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("3d_armor:superlegendenboots4") @@ -384,7 +384,7 @@ minetest.register_tool("3d_armor:superlegendenboots4", { 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) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("3d_armor:superlegendenboots") @@ -399,7 +399,7 @@ minetest.register_tool("3d_armor:superlegendenchestplate", { 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) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("3d_armor:superlegendenchestplate2") @@ -413,7 +413,7 @@ minetest.register_tool("3d_armor:superlegendenchestplate2", { 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) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("3d_armor:superlegendenchestplate3") @@ -427,7 +427,7 @@ minetest.register_tool("3d_armor:superlegendenchestplate3", { 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) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("3d_armor:superlegendenchestplate4") @@ -441,7 +441,7 @@ minetest.register_tool("3d_armor:superlegendenchestplate4", { 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) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("3d_armor:superlegendenchestplate") @@ -456,7 +456,7 @@ minetest.register_tool("3d_armor:superlegendenhelmet", { 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) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("3d_armor:superlegendenhelmet2") @@ -470,7 +470,7 @@ minetest.register_tool("3d_armor:superlegendenhelmet2", { 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) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("3d_armor:superlegendenhelmet3") @@ -484,7 +484,7 @@ minetest.register_tool("3d_armor:superlegendenhelmet3", { 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) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("3d_armor:superlegendenhelmet4") @@ -498,7 +498,7 @@ minetest.register_tool("3d_armor:superlegendenhelmet4", { 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) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("3d_armor:superlegendenhelmet") @@ -513,7 +513,7 @@ minetest.register_tool("3d_armor:superlegendenleggings", { 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) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("3d_armor:superlegendenleggings2") @@ -527,7 +527,7 @@ minetest.register_tool("3d_armor:superlegendenleggings2", { 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) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("3d_armor:superlegendenleggings3") @@ -541,7 +541,7 @@ minetest.register_tool("3d_armor:superlegendenleggings3", { 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) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("3d_armor:superlegendenleggings4") @@ -555,7 +555,7 @@ minetest.register_tool("3d_armor:superlegendenleggings4", { 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) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("3d_armor:superlegendenleggings") @@ -571,7 +571,7 @@ minetest.register_tool("3d_armor:regnumboots", { groups = {armor_feet=15.0, armor_heal=13, armor_use=0,armor_fire=1, armor_water=0.2}, wear = 0, wield_image = "3d_armor_inv_regnumboots.png", - on_use = function(itemstack, user, pointed_thing) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("3d_armor:regnumboots2") @@ -585,7 +585,7 @@ minetest.register_tool("3d_armor:regnumboots2", { 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) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("3d_armor:regnumboots3") @@ -599,7 +599,7 @@ minetest.register_tool("3d_armor:regnumboots3", { 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) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("3d_armor:regnumboots4") @@ -613,7 +613,7 @@ minetest.register_tool("3d_armor:regnumboots4", { 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) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("3d_armor:regnumboots") @@ -628,7 +628,7 @@ minetest.register_tool("3d_armor:regnumchestplate", { groups = {armor_torso=15.0, armor_heal=13, armor_use=0, armor_fire=1, armor_water=0.2}, wear = 0, wield_image = "3d_armor_inv_regnumchestplate.png", - on_use = function(itemstack, user, pointed_thing) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("3d_armor:regnumchestplate2") @@ -642,7 +642,7 @@ minetest.register_tool("3d_armor:regnumchestplate2", { 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) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("3d_armor:regnumchestplate3") @@ -656,7 +656,7 @@ minetest.register_tool("3d_armor:regnumchestplate3", { 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) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("3d_armor:regnumchestplate4") @@ -670,7 +670,7 @@ minetest.register_tool("3d_armor:regnumchestplate4", { 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) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("3d_armor:regnumchestplate") @@ -685,7 +685,7 @@ minetest.register_tool("3d_armor:regnumhelmet", { groups = {armor_head=15.0, armor_heal=13, armor_use=0,armor_fire=1, armor_water=0.2}, wear = 0, wield_image = "3d_armor_inv_regnumhelmet.png", - on_use = function(itemstack, user, pointed_thing) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("3d_armor:regnumhelmet2") @@ -699,7 +699,7 @@ minetest.register_tool("3d_armor:regnumhelmet2", { 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) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("3d_armor:regnumhelmet3") @@ -713,7 +713,7 @@ minetest.register_tool("3d_armor:regnumhelmet3", { 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) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("3d_armor:regnumhelmet4") @@ -727,7 +727,7 @@ minetest.register_tool("3d_armor:regnumhelmet4", { 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) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("3d_armor:regnumhelmet") @@ -742,7 +742,7 @@ minetest.register_tool("3d_armor:regnumleggings", { groups = {armor_legs=15.0, armor_heal=13, armor_use=0,armor_fire=1, armor_water=0.2}, wear = 0, wield_image = "3d_armor_inv_regnumleggings.png", - on_use = function(itemstack, user, pointed_thing) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("3d_armor:regnumleggings2") @@ -756,7 +756,7 @@ minetest.register_tool("3d_armor:regnumleggings2", { 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) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("3d_armor:regnumleggings3") @@ -770,7 +770,7 @@ minetest.register_tool("3d_armor:regnumleggings3", { 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) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("3d_armor:regnumleggings4") @@ -784,7 +784,7 @@ minetest.register_tool("3d_armor:regnumleggings4", { 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) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("3d_armor:regnumleggings") diff --git a/mods/3d_armor/3d_armor/tutorial_craft.lua b/mods/3d_armor/3d_armor/tutorial_craft.lua index 63e90af..7172276 100644 --- a/mods/3d_armor/3d_armor/tutorial_craft.lua +++ b/mods/3d_armor/3d_armor/tutorial_craft.lua @@ -3625,3 +3625,126 @@ minetest.register_craft({ {'', '', 'tutorial:regnum', '', ''}, } }) + +minetest.register_craft({ + output = '3d_armor:regnumboots2', + recipe = { + {'', '', 'tutorial:regnum', '', ''}, + {'', '', 'tutorial:bottleSS', '', ''}, + {'tutorial:regnum', 'tutorial:bottleSS', '3d_armor:superlegendenboots2', 'tutorial:bottleSS', 'tutorial:regnum'}, + {'', '', 'tutorial:bottleSS', '', ''}, + {'', '', 'tutorial:regnum', '', ''}, + } +}) +minetest.register_craft({ + output = '3d_armor:regnumchestplate2', + recipe = { + {'', '', 'tutorial:regnum', '', ''}, + {'', '', 'tutorial:bottleSS', '', ''}, + {'tutorial:regnum', 'tutorial:bottleSS', '3d_armor:superlegendenchestplate2', 'tutorial:bottleSS', 'tutorial:regnum'}, + {'', '', 'tutorial:bottleSS', '', ''}, + {'', '', 'tutorial:regnum', '', ''}, + } +}) +minetest.register_craft({ + output = '3d_armor:regnumhelmet2', + recipe = { + {'', '', 'tutorial:regnum', '', ''}, + {'', '', 'tutorial:bottleSS', '', ''}, + {'tutorial:regnum', 'tutorial:bottleSS', '3d_armor:superlegendenhelmet2', 'tutorial:bottleSS', 'tutorial:regnum'}, + {'', '', 'tutorial:bottleSS', '', ''}, + {'', '', 'tutorial:regnum', '', ''}, + } +}) +minetest.register_craft({ + output = '3d_armor:regnumleggings2', + recipe = { + {'', '', 'tutorial:regnum', '', ''}, + {'', '', 'tutorial:bottleSS', '', ''}, + {'tutorial:regnum', 'tutorial:bottleSS', '3d_armor:superlegendenleggings2', 'tutorial:bottleSS', 'tutorial:regnum'}, + {'', '', 'tutorial:bottleSS', '', ''}, + {'', '', 'tutorial:regnum', '', ''}, + } +}) + +minetest.register_craft({ + output = '3d_armor:regnumboots3', + recipe = { + {'', '', 'tutorial:regnum', '', ''}, + {'', '', 'tutorial:bottleSS', '', ''}, + {'tutorial:regnum', 'tutorial:bottleSS', '3d_armor:superlegendenboots3', 'tutorial:bottleSS', 'tutorial:regnum'}, + {'', '', 'tutorial:bottleSS', '', ''}, + {'', '', 'tutorial:regnum', '', ''}, + } +}) +minetest.register_craft({ + output = '3d_armor:regnumchestplate3', + recipe = { + {'', '', 'tutorial:regnum', '', ''}, + {'', '', 'tutorial:bottleSS', '', ''}, + {'tutorial:regnum', 'tutorial:bottleSS', '3d_armor:superlegendenchestplate3', 'tutorial:bottleSS', 'tutorial:regnum'}, + {'', '', 'tutorial:bottleSS', '', ''}, + {'', '', 'tutorial:regnum', '', ''}, + } +}) +minetest.register_craft({ + output = '3d_armor:regnumhelmet3', + recipe = { + {'', '', 'tutorial:regnum', '', ''}, + {'', '', 'tutorial:bottleSS', '', ''}, + {'tutorial:regnum', 'tutorial:bottleSS', '3d_armor:superlegendenhelmet3', 'tutorial:bottleSS', 'tutorial:regnum'}, + {'', '', 'tutorial:bottleSS', '', ''}, + {'', '', 'tutorial:regnum', '', ''}, + } +}) +minetest.register_craft({ + output = '3d_armor:regnumleggings3', + recipe = { + {'', '', 'tutorial:regnum', '', ''}, + {'', '', 'tutorial:bottleSS', '', ''}, + {'tutorial:regnum', 'tutorial:bottleSS', '3d_armor:superlegendenleggings3', 'tutorial:bottleSS', 'tutorial:regnum'}, + {'', '', 'tutorial:bottleSS', '', ''}, + {'', '', 'tutorial:regnum', '', ''}, + } +}) + +minetest.register_craft({ + output = '3d_armor:regnumboots4', + recipe = { + {'', '', 'tutorial:regnum', '', ''}, + {'', '', 'tutorial:bottleSS', '', ''}, + {'tutorial:regnum', 'tutorial:bottleSS', '3d_armor:superlegendenboots4', 'tutorial:bottleSS', 'tutorial:regnum'}, + {'', '', 'tutorial:bottleSS', '', ''}, + {'', '', 'tutorial:regnum', '', ''}, + } +}) +minetest.register_craft({ + output = '3d_armor:regnumchestplate4', + recipe = { + {'', '', 'tutorial:regnum', '', ''}, + {'', '', 'tutorial:bottleSS', '', ''}, + {'tutorial:regnum', 'tutorial:bottleSS', '3d_armor:superlegendenchestplate4', 'tutorial:bottleSS', 'tutorial:regnum'}, + {'', '', 'tutorial:bottleSS', '', ''}, + {'', '', 'tutorial:regnum', '', ''}, + } +}) +minetest.register_craft({ + output = '3d_armor:regnumhelmet4', + recipe = { + {'', '', 'tutorial:regnum', '', ''}, + {'', '', 'tutorial:bottleSS', '', ''}, + {'tutorial:regnum', 'tutorial:bottleSS', '3d_armor:superlegendenhelmet4', 'tutorial:bottleSS', 'tutorial:regnum'}, + {'', '', 'tutorial:bottleSS', '', ''}, + {'', '', 'tutorial:regnum', '', ''}, + } +}) +minetest.register_craft({ + output = '3d_armor:regnumleggings4', + recipe = { + {'', '', 'tutorial:regnum', '', ''}, + {'', '', 'tutorial:bottleSS', '', ''}, + {'tutorial:regnum', 'tutorial:bottleSS', '3d_armor:superlegendenleggings4', 'tutorial:bottleSS', 'tutorial:regnum'}, + {'', '', 'tutorial:bottleSS', '', ''}, + {'', '', 'tutorial:regnum', '', ''}, + } +}) diff --git a/mods/3d_armor/shields/init.lua b/mods/3d_armor/shields/init.lua index dc0d627..49e0612 100644 --- a/mods/3d_armor/shields/init.lua +++ b/mods/3d_armor/shields/init.lua @@ -31,7 +31,7 @@ minetest.register_tool("shields:shield_admin", { wield_image = "shields_inv_shield_admin.png", groups = {armor_shield=20, armor_heal=20, armor_use=0, armor_fire=1, armor_water=0.2}, wear = 0, - on_use = function(itemstack, user, pointed_thing) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("shields:shield_admin2") @@ -46,7 +46,7 @@ minetest.register_tool("shields:shield_admin2", { 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, not_in_creative_inventory=1}, wear = 0, - on_use = function(itemstack, user, pointed_thing) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("shields:shield_admin3") @@ -61,7 +61,7 @@ minetest.register_tool("shields:shield_admin3", { 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, not_in_creative_inventory=1}, wear = 0, - on_use = function(itemstack, user, pointed_thing) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("shields:shield_admin4") @@ -76,7 +76,7 @@ minetest.register_tool("shields:shield_admin4", { 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, not_in_creative_inventory=1}, wear = 0, - on_use = function(itemstack, user, pointed_thing) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("shields:shield_admin") diff --git a/mods/3d_armor/shields/tutorial.lua b/mods/3d_armor/shields/tutorial.lua index 74ddbfc..5434da2 100644 --- a/mods/3d_armor/shields/tutorial.lua +++ b/mods/3d_armor/shields/tutorial.lua @@ -104,7 +104,7 @@ minetest.register_tool("shields:superlegendenshield", { 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) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("shields:superlegendenshield2") @@ -118,7 +118,7 @@ minetest.register_tool("shields:superlegendenshield2", { 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) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("shields:superlegendenshield3") @@ -132,7 +132,7 @@ minetest.register_tool("shields:superlegendenshield3", { 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) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("shields:superlegendenshield4") @@ -146,7 +146,7 @@ minetest.register_tool("shields:superlegendenshield4", { 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) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("shields:superlegendenshield") @@ -161,7 +161,7 @@ minetest.register_tool("shields:regnumshield", { groups = {armor_shield=15.0, armor_heal=13, armor_use=0,armor_fire=1, armor_water=0.2}, wear = 0, wield_image = "shields_inv_regnumshield.png", - on_use = function(itemstack, user, pointed_thing) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("shields:regnumshield2") @@ -175,7 +175,7 @@ minetest.register_tool("shields:regnumshield2", { 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) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("shields:regnumshield3") @@ -189,7 +189,7 @@ minetest.register_tool("shields:regnumshield3", { 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) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("shields:regnumshield4") @@ -203,7 +203,7 @@ minetest.register_tool("shields:regnumshield4", { 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) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("shields:regnumshield") @@ -212,13 +212,4 @@ minetest.register_tool("shields:regnumshield4", { end, }) -minetest.register_craft({ - output = 'shields:regnumshield', - recipe = { - {'', '', 'tutorial:regnum', '', ''}, - {'', '', 'tutorial:bottleSS', '', ''}, - {'tutorial:regnum', 'tutorial:bottleSS', 'shields:superlegendenshield', 'tutorial:bottleSS', 'tutorial:regnum'}, - {'', '', 'tutorial:bottleSS', '', ''}, - {'', '', 'tutorial:regnum', '', ''}, - } -}) + diff --git a/mods/3d_armor/shields/tutorial_craft.lua b/mods/3d_armor/shields/tutorial_craft.lua index 9104a30..2474bf2 100644 --- a/mods/3d_armor/shields/tutorial_craft.lua +++ b/mods/3d_armor/shields/tutorial_craft.lua @@ -891,4 +891,48 @@ minetest.register_craft({ recipe = { {'tutorial:lilabattleaxe2', 'shields:legendenshield6'}, } +}) + +minetest.register_craft({ + output = 'shields:regnumshield', + recipe = { + {'', '', 'tutorial:regnum', '', ''}, + {'', '', 'tutorial:bottleSS', '', ''}, + {'tutorial:regnum', 'tutorial:bottleSS', 'shields:superlegendenshield', 'tutorial:bottleSS', 'tutorial:regnum'}, + {'', '', 'tutorial:bottleSS', '', ''}, + {'', '', 'tutorial:regnum', '', ''}, + } +}) + +minetest.register_craft({ + output = 'shields:regnumshield2', + recipe = { + {'', '', 'tutorial:regnum', '', ''}, + {'', '', 'tutorial:bottleSS', '', ''}, + {'tutorial:regnum', 'tutorial:bottleSS', 'shields:superlegendenshield2', 'tutorial:bottleSS', 'tutorial:regnum'}, + {'', '', 'tutorial:bottleSS', '', ''}, + {'', '', 'tutorial:regnum', '', ''}, + } +}) + +minetest.register_craft({ + output = 'shields:regnumshield3', + recipe = { + {'', '', 'tutorial:regnum', '', ''}, + {'', '', 'tutorial:bottleSS', '', ''}, + {'tutorial:regnum', 'tutorial:bottleSS', 'shields:superlegendenshield3', 'tutorial:bottleSS', 'tutorial:regnum'}, + {'', '', 'tutorial:bottleSS', '', ''}, + {'', '', 'tutorial:regnum', '', ''}, + } +}) + +minetest.register_craft({ + output = 'shields:regnumshield4', + recipe = { + {'', '', 'tutorial:regnum', '', ''}, + {'', '', 'tutorial:bottleSS', '', ''}, + {'tutorial:regnum', 'tutorial:bottleSS', 'shields:superlegendenshield4', 'tutorial:bottleSS', 'tutorial:regnum'}, + {'', '', 'tutorial:bottleSS', '', ''}, + {'', '', 'tutorial:regnum', '', ''}, + } }) \ No newline at end of file diff --git a/mods/ban_hammer/init.lua b/mods/ban_hammer/init.lua index 29070e9..562a96c 100644 --- a/mods/ban_hammer/init.lua +++ b/mods/ban_hammer/init.lua @@ -7,17 +7,16 @@ dofile(minetest.get_modpath("ban_hammer").."/settings.txt") ----------------------------------------------------------------------------------------------- local mode_text = { - {"Ban punched player."}, - {"Kick punched player."}, - {"Remove shout privilege of punched player."}, - {"Remove fly privilege of punched player."}, - {"Remove noclip privilege of punched player."}, + {"ban punched player"}, + {"kick punched player"}, + {"remove shout privilege of punched player"}, + {"remove fly privilege of punched player"}, + {"remove noclip privilege of punched player"}, } local function ban_hammer_setmode(user, itemstack, mode, keys) local puncher = user:get_player_name() if keys["sneak"] == false and mode == 0 then - minetest.chat_send_player(puncher, "Hold shift and use to change ban hammer modes.") return end if keys["sneak"] == true then @@ -25,7 +24,6 @@ local function ban_hammer_setmode(user, itemstack, mode, keys) if mode == 6 then mode = 1 end - minetest.chat_send_player(puncher, "Ban hammer mode : "..mode.." - "..mode_text[mode][1] ) end itemstack:set_name("ban_hammer:hammer"..mode) itemstack:set_metadata(mode) @@ -92,7 +90,12 @@ end minetest.register_craftitem("ban_hammer:hammer", { description = "Admin tool 1: Ban Hammer", inventory_image = "ban_hammer.png", - + groups = {not_in_creative_inventory=1}, + on_secondary_use = function(itemstack, user, pointed_thing) + local mode = 0 + ban_hammer_handler(itemstack, user, pointed_thing, mode) + return itemstack + end, on_use = function(itemstack, user, pointed_thing) local mode = 0 ban_hammer_handler(itemstack, user, pointed_thing, mode) @@ -100,20 +103,31 @@ minetest.register_craftitem("ban_hammer:hammer", { end, }) -for i = 1, 5 do +for i = 2, 5 do minetest.register_craftitem("ban_hammer:hammer"..i, { - description = "Admin tool 1: Ban Hammer in Mode "..i, + description = "Admin tool 1: Ban Hammer Mode "..i.." ("..mode_text[i][1]..")", inventory_image = "ban_hammer.png^technic_tool_mode"..i..".png", wield_image = "ban_hammer.png", groups = {not_in_creative_inventory=1}, - stack_max = 1, - on_use = function(itemstack, user, pointed_thing) + stack_max = 1, + on_secondary_use = function(itemstack, user, pointed_thing) local mode = i ban_hammer_handler(itemstack, user, pointed_thing, mode) return itemstack end, - }) + }) end + +minetest.register_craftitem("ban_hammer:hammer1", { + description = "Admin tool 1: Ban Hammer Mode 1 ("..mode_text[1][1]..")", + inventory_image = "ban_hammer.png^technic_tool_mode1.png", + wield_image = "ban_hammer.png", + stack_max = 1, + on_secondary_use = function(itemstack, user, pointed_thing) + ban_hammer_handler(itemstack, user, pointed_thing, 1) + return itemstack + end, +}) ----------------------------------------------------------------------------------------------- print("[Mod] "..title.." ["..version.."] ["..mname.."] Loaded...") ----------------------------------------------------------------------------------------------- diff --git a/mods/beds/api.lua b/mods/beds/api.lua index c545a20..cab2def 100644 --- a/mods/beds/api.lua +++ b/mods/beds/api.lua @@ -17,6 +17,8 @@ local function destruct_bed(pos, n) reverse = not reverse minetest.remove_node(other) minetest.check_for_falling(other) + beds.remove_spawns_at(pos) + beds.remove_spawns_at(other) else reverse = not reverse end diff --git a/mods/beds/beds.lua b/mods/beds/beds.lua index 276c05e..dc044a3 100644 --- a/mods/beds/beds.lua +++ b/mods/beds/beds.lua @@ -79,10 +79,10 @@ beds.register_bed("beds:bed", { } }, nodebox = { - bottom = {-0.5, -0.5, -0.5, 0.5, 0.06, 0.5}, - top = {-0.5, -0.5, -0.5, 0.5, 0.06, 0.5}, + bottom = {-0.5, -0.5, -0.5, 0.5, 0.0625, 0.5}, + top = {-0.5, -0.5, -0.5, 0.5, 0.0625, 0.5}, }, - selectionbox = {-0.5, -0.5, -0.5, 0.5, 0.06, 1.5}, + selectionbox = {-0.5, -0.5, -0.5, 0.5, 0.0625, 1.5}, recipe = { {"wool:white", "wool:white", "wool:white"}, {"group:wood", "group:wood", "group:wood"} diff --git a/mods/beds/functions.lua b/mods/beds/functions.lua index 0b79bfb..6ee0474 100644 --- a/mods/beds/functions.lua +++ b/mods/beds/functions.lua @@ -90,7 +90,13 @@ local function lay_down(player, pos, bed_pos, state, skip) local yaw, param2 = get_look_yaw(bed_pos) player:set_look_horizontal(yaw) local dir = minetest.facedir_to_dir(param2) - local p = {x = bed_pos.x + dir.x / 2, y = bed_pos.y, z = bed_pos.z + dir.z / 2} + -- p.y is just above the nodebox height of the 'Simple Bed' (the highest bed), + -- to avoid sinking down through the bed. + local p = { + x = bed_pos.x + dir.x / 2, + y = bed_pos.y + 0.07, + z = bed_pos.z + dir.z / 2 + } player:set_physics_override(0, 0, 0) player:set_pos(p) default.player_attached[name] = true diff --git a/mods/beds/init.lua b/mods/beds/init.lua index 869ff0f..a1a46ce 100644 --- a/mods/beds/init.lua +++ b/mods/beds/init.lua @@ -2,7 +2,7 @@ -- Load support for MT game translation. local S = minetest.get_translator("beds") - +local esc = minetest.formspec_escape beds = {} beds.player = {} @@ -14,7 +14,7 @@ beds.get_translator = S beds.formspec = "size[8,11;true]" .. "no_prepend[]" .. "bgcolor[#080808BB;true]" .. - "button_exit[2,10;4,0.75;leave;" .. S("Leave Bed") .. "]" + "button_exit[2,10;4,0.75;leave;" .. esc(S("Leave Bed")) .. "]" local modpath = minetest.get_modpath("beds") diff --git a/mods/beds/locale/beds.ms.tr b/mods/beds/locale/beds.ms.tr new file mode 100644 index 0000000..797e3a6 --- /dev/null +++ b/mods/beds/locale/beds.ms.tr @@ -0,0 +1,8 @@ +# textdomain: beds +Fancy Bed=Katil Beragam +Simple Bed=Katil Biasa +Leave Bed=Bangun +Good morning.=Selamat pagi. +@1 of @2 players are in bed=@1 daripada @2 pemain sedang tidur +Force night skip=Paksa langkau malam +You can only sleep at night.=Anda hanya boleh tidur pada waktu malam. diff --git a/mods/beds/locale/beds.ru.tr b/mods/beds/locale/beds.ru.tr new file mode 100644 index 0000000..1974b3d --- /dev/null +++ b/mods/beds/locale/beds.ru.tr @@ -0,0 +1,8 @@ +# textdomain: beds +Fancy Bed=Детализированная Кровать +Simple Bed=Обычная Кровать +Leave Bed=Встать с кровати +Good morning.=Доброе утро. +@1 of @2 players are in bed=@1 из @2 игроков в кровати +Force night skip=Пропустить ночь +You can only sleep at night.=Вы можете спать только ночью. diff --git a/mods/beds/locale/beds.se.tr b/mods/beds/locale/beds.se.tr new file mode 100644 index 0000000..53f4f2d --- /dev/null +++ b/mods/beds/locale/beds.se.tr @@ -0,0 +1,8 @@ +# textdomain: beds +Fancy Bed=Fin säng +Simple Bed=Enkel Säng +Leave Bed=Lämna Säng +Good morning.= God morgon. +@1 of @2 players are in bed=@1 av @2 spelar försöker sover. +Force night skip=Tvinga över natten +You can only sleep at night.=Du kan bara sova på natten. diff --git a/mods/beds/locale/beds.zh_CN.tr b/mods/beds/locale/beds.zh_CN.tr new file mode 100644 index 0000000..609524d --- /dev/null +++ b/mods/beds/locale/beds.zh_CN.tr @@ -0,0 +1,8 @@ +# textdomain: beds +Fancy Bed=花式床 +Simple Bed=简易床 +Leave Bed=离开床 +Good morning.=早安! +@1 of @2 players are in bed=@2位玩家中的@1位在床上 +Force night skip=强制跳过夜晚 +You can only sleep at night.=你只能在晚上睡觉。 diff --git a/mods/beds/locale/beds.zh_TW.tr b/mods/beds/locale/beds.zh_TW.tr new file mode 100644 index 0000000..4e7d687 --- /dev/null +++ b/mods/beds/locale/beds.zh_TW.tr @@ -0,0 +1,9 @@ +# textdomain: beds +Fancy Bed=花式床 +Simple Bed=簡易床 +Leave Bed=離開床 +Good morning.=早安! +@1 of @2 players are in bed=@2位玩家中的@1位在床上 +Force night skip=強制跳過夜晚 +You can only sleep at night.=你只能在晚上睡覺。 + diff --git a/mods/beds/spawns.lua b/mods/beds/spawns.lua index baee364..1a2ce81 100644 --- a/mods/beds/spawns.lua +++ b/mods/beds/spawns.lua @@ -61,3 +61,12 @@ function beds.set_spawns() end beds.save_spawns() end + +function beds.remove_spawns_at(pos) + for name, p in pairs(beds.spawn) do + if vector.equals(vector.round(p), pos) then + beds.spawn[name] = nil + end + end + beds.save_spawns() +end diff --git a/mods/binoculars/locale/binoculars.ms.tr b/mods/binoculars/locale/binoculars.ms.tr new file mode 100644 index 0000000..d38e64f --- /dev/null +++ b/mods/binoculars/locale/binoculars.ms.tr @@ -0,0 +1,3 @@ +# textdomain: binoculars +Binoculars=Binokular +Use with 'Zoom' key=Guna dengan kekunci 'Zum' diff --git a/mods/binoculars/locale/binoculars.ru.tr b/mods/binoculars/locale/binoculars.ru.tr new file mode 100644 index 0000000..6b3aa9e --- /dev/null +++ b/mods/binoculars/locale/binoculars.ru.tr @@ -0,0 +1,3 @@ +# textdomain: binoculars +Binoculars=Бинокль +Use with 'Zoom' key=Используется с привилегией 'Zoom' diff --git a/mods/binoculars/locale/binoculars.se.tr b/mods/binoculars/locale/binoculars.se.tr new file mode 100644 index 0000000..291afd5 --- /dev/null +++ b/mods/binoculars/locale/binoculars.se.tr @@ -0,0 +1,3 @@ +# textdomain: binoculars +Binoculars=Kikare +Use with 'Zoom' key=Används med 'Zoom' knappen \ No newline at end of file diff --git a/mods/binoculars/locale/binoculars.zh_CN.tr b/mods/binoculars/locale/binoculars.zh_CN.tr new file mode 100644 index 0000000..ec46cf8 --- /dev/null +++ b/mods/binoculars/locale/binoculars.zh_CN.tr @@ -0,0 +1,3 @@ +# textdomain: binoculars +Binoculars=望远镜 +Use with 'Zoom' key=与“缩放”键一起使用 diff --git a/mods/binoculars/locale/binoculars.zh_TW.tr b/mods/binoculars/locale/binoculars.zh_TW.tr new file mode 100644 index 0000000..bbe3b39 --- /dev/null +++ b/mods/binoculars/locale/binoculars.zh_TW.tr @@ -0,0 +1,3 @@ +# textdomain: binoculars +Binoculars=望遠鏡 +Use with 'Zoom' key=與“縮放”鍵一起使用 diff --git a/mods/boats/init.lua b/mods/boats/init.lua index a785bdc..f9ae8e0 100644 --- a/mods/boats/init.lua +++ b/mods/boats/init.lua @@ -13,15 +13,6 @@ local function is_water(pos) end -local function get_sign(i) - if i == 0 then - return 0 - else - return i / math.abs(i) - end -end - - local function get_velocity(v, yaw, y) local x = -math.sin(yaw) * v local z = math.cos(yaw) * v @@ -146,7 +137,7 @@ end function boat.on_step(self, dtime) - self.v = get_v(self.object:get_velocity()) * get_sign(self.v) + self.v = get_v(self.object:get_velocity()) * math.sign(self.v) if self.driver then local driver_objref = minetest.get_player_by_name(self.driver) if driver_objref then @@ -157,13 +148,13 @@ function boat.on_step(self, dtime) minetest.chat_send_player(self.driver, S("Boat cruise mode on")) end elseif ctrl.down then - self.v = self.v - dtime * 1.8 + self.v = self.v - dtime * 2.0 if self.auto then self.auto = false minetest.chat_send_player(self.driver, S("Boat cruise mode off")) end elseif ctrl.up or self.auto then - self.v = self.v + dtime * 1.8 + self.v = self.v + dtime * 2.0 end if ctrl.left then if self.v < -0.001 then @@ -185,15 +176,14 @@ function boat.on_step(self, dtime) self.object:set_pos(self.object:get_pos()) return end - local s = get_sign(self.v) - self.v = self.v - dtime * 0.6 * s - if s ~= get_sign(self.v) then - self.object:set_velocity({x = 0, y = 0, z = 0}) + -- We need to preserve velocity sign to properly apply drag force + -- while moving backward + local drag = dtime * math.sign(self.v) * (0.01 + 0.0796 * self.v * self.v) + -- If drag is larger than velocity, then stop horizontal movement + if math.abs(self.v) <= math.abs(drag) then self.v = 0 - return - end - if math.abs(self.v) > 5 then - self.v = 5 * get_sign(self.v) + else + self.v = self.v - drag end local p = self.object:get_pos() diff --git a/mods/boats/locale/boats.ms.tr b/mods/boats/locale/boats.ms.tr new file mode 100644 index 0000000..d11a68b --- /dev/null +++ b/mods/boats/locale/boats.ms.tr @@ -0,0 +1,4 @@ +# textdomain: boats +Boat cruise mode on=Mod bot layar makan angin dibolehkan +Boat cruise mode off=Mod bot layar makan angin dilumpuhkan +Boat=Bot diff --git a/mods/boats/locale/boats.ru.tr b/mods/boats/locale/boats.ru.tr new file mode 100644 index 0000000..4327098 --- /dev/null +++ b/mods/boats/locale/boats.ru.tr @@ -0,0 +1,4 @@ +# textdomain: boats +Boat cruise mode on=Режим путешествия на лодке включен +Boat cruise mode off=Режим путешествия на лодке выключен +Boat=Лодка diff --git a/mods/boats/locale/boats.se.tr b/mods/boats/locale/boats.se.tr new file mode 100644 index 0000000..4ca7c80 --- /dev/null +++ b/mods/boats/locale/boats.se.tr @@ -0,0 +1,4 @@ +# textdomain: boats +Boat cruise mode on=Båtkryssningsläge på +Boat cruise mode off=Båtkryssningsläge av +Boat=Båt \ No newline at end of file diff --git a/mods/boats/locale/boats.zh_CN.tr b/mods/boats/locale/boats.zh_CN.tr new file mode 100644 index 0000000..254f2df --- /dev/null +++ b/mods/boats/locale/boats.zh_CN.tr @@ -0,0 +1,4 @@ +# textdomain: boats +Boat cruise mode on=巡航模式开启 +Boat cruise mode off=巡航模式关闭 +Boat=船 diff --git a/mods/boats/locale/boats.zh_TW.tr b/mods/boats/locale/boats.zh_TW.tr new file mode 100644 index 0000000..97b3471 --- /dev/null +++ b/mods/boats/locale/boats.zh_TW.tr @@ -0,0 +1,4 @@ +# textdomain: boats +Boat cruise mode on=巡航模式開啟 +Boat cruise mode off=巡航模式關閉 +Boat=船 diff --git a/mods/bones/locale/bones.ms.tr b/mods/bones/locale/bones.ms.tr new file mode 100644 index 0000000..e4b8712 --- /dev/null +++ b/mods/bones/locale/bones.ms.tr @@ -0,0 +1,8 @@ +# textdomain: bones +Bones=Tulang +@1's old bones=Tulang lama @1 +@1 died at @2.=@1 mati di @2. +@1 died at @2, and dropped their inventory.=@1 mati di @2, dan menjatuhkan inventorinya. +@1 died at @2, and bones were placed.=@1 mati di @2, dan tulang diletakkan. +@1's fresh bones=Tulang segar @1 +@1's bones=Tulang @1 diff --git a/mods/bones/locale/bones.ru.tr b/mods/bones/locale/bones.ru.tr new file mode 100644 index 0000000..98691c5 --- /dev/null +++ b/mods/bones/locale/bones.ru.tr @@ -0,0 +1,8 @@ +# textdomain: bones +Bones=Кости +@1's old bones=Старые кости @1 +@1 died at @2.=@1 умер в @2. +@1 died at @2, and dropped their inventory.=@1 умер в @2 и потерял содержимое своего инвентаря. +@1 died at @2, and bones were placed.=@1 умер в @2, помещены кости. +@1's fresh bones=новые кости @1 +@1's bones=кости @1 diff --git a/mods/bones/locale/bones.se.tr b/mods/bones/locale/bones.se.tr new file mode 100644 index 0000000..1323c59 --- /dev/null +++ b/mods/bones/locale/bones.se.tr @@ -0,0 +1,8 @@ +# textdomain: bones +Bones=Ben +@1's old bones=@1s Gamla ben +@1 died at @2.=@1 dog på @a. +@1 died at @2, and dropped their inventory.=@1 dog på @a, och tappade deras saker. +@1 died at @2, and bones were placed.=@1 dog på @2, och deras ben var placerade. +@1's fresh bones=@1s färska ben +@1's bones=@1s ben diff --git a/mods/bones/locale/bones.zh_CN.tr b/mods/bones/locale/bones.zh_CN.tr new file mode 100644 index 0000000..dadf55e --- /dev/null +++ b/mods/bones/locale/bones.zh_CN.tr @@ -0,0 +1,8 @@ +# textdomain: bones +Bones=骨骸 +@1's old bones=@1的旧骨骸 +@1 died at @2.=@1在@2死亡。 +@1 died at @2, and dropped their inventory.=@1在@2死亡,丢掉了物品栏。 +@1 died at @2, and bones were placed.=@1在@2死亡,骨骸被放置。 +@1's fresh bones=@1的新鲜骨骸 +@1's bones=@1的骨骸 diff --git a/mods/bones/locale/bones.zh_TW.tr b/mods/bones/locale/bones.zh_TW.tr new file mode 100644 index 0000000..1a94d2f --- /dev/null +++ b/mods/bones/locale/bones.zh_TW.tr @@ -0,0 +1,8 @@ +# textdomain: bones +Bones=骨骸 +@1's old bones=@1的舊骨骸 +@1 died at @2.=@1在@2死亡。 +@1 died at @2, and dropped their inventory.=@1在@2死亡,丟掉了物品欄。 +@1 died at @2, and bones were placed.=@1在@2死亡,骨骸被放置。 +@1's fresh bones=@1的新鮮骨骸 +@1's bones=@1的骨骸 diff --git a/mods/bucket/init.lua b/mods/bucket/init.lua index 2cf431c..ebdf2e7 100644 --- a/mods/bucket/init.lua +++ b/mods/bucket/init.lua @@ -225,3 +225,16 @@ minetest.register_craft({ replacements = {{"bucket:bucket_lava", "bucket:bucket_empty"}}, }) +-- Register buckets as dungeon loot +if minetest.global_exists("dungeon_loot") then + dungeon_loot.register({ + {name = "bucket:bucket_empty", chance = 0.55}, + -- water in deserts/ice or above ground, lava otherwise + {name = "bucket:bucket_water", chance = 0.45, + types = {"sandstone", "desert", "ice"}}, + {name = "bucket:bucket_water", chance = 0.45, y = {0, 32768}, + types = {"normal"}}, + {name = "bucket:bucket_lava", chance = 0.45, y = {-32768, -1}, + types = {"normal"}}, + }) +end diff --git a/mods/bucket/locale/bucket.ms.tr b/mods/bucket/locale/bucket.ms.tr new file mode 100644 index 0000000..02ba38a --- /dev/null +++ b/mods/bucket/locale/bucket.ms.tr @@ -0,0 +1,5 @@ +# textdomain: bucket +Empty Bucket=Baldi Kosong +Water Bucket=Baldi Air +River Water Bucket=Baldi Air Sungai +Lava Bucket=Baldi Lava diff --git a/mods/bucket/locale/bucket.ru.tr b/mods/bucket/locale/bucket.ru.tr new file mode 100644 index 0000000..8ede280 --- /dev/null +++ b/mods/bucket/locale/bucket.ru.tr @@ -0,0 +1,5 @@ +# textdomain: bucket +Empty Bucket=Пустое Ведро +Water Bucket=Ведро с Водой +River Water Bucket=Ведро с Речной Водой +Lava Bucket=Ведро с Лавой diff --git a/mods/bucket/locale/bucket.se.tr b/mods/bucket/locale/bucket.se.tr new file mode 100644 index 0000000..06e9ea3 --- /dev/null +++ b/mods/bucket/locale/bucket.se.tr @@ -0,0 +1,5 @@ +# textdomain: bucket +Empty Bucket=Tom hink +Water Bucket=Vatten hink +River Water Bucket=Flodvatten hink +Lava Bucket=Lava hink \ No newline at end of file diff --git a/mods/bucket/locale/bucket.zh_CN.tr b/mods/bucket/locale/bucket.zh_CN.tr new file mode 100644 index 0000000..fda5bfc --- /dev/null +++ b/mods/bucket/locale/bucket.zh_CN.tr @@ -0,0 +1,5 @@ +# textdomain: bucket +Empty Bucket=空桶 +Water Bucket=水桶 +River Water Bucket=河水桶 +Lava Bucket=岩浆桶 diff --git a/mods/bucket/locale/bucket.zh_TW.tr b/mods/bucket/locale/bucket.zh_TW.tr new file mode 100644 index 0000000..965d657 --- /dev/null +++ b/mods/bucket/locale/bucket.zh_TW.tr @@ -0,0 +1,5 @@ +# textdomain: bucket +Empty Bucket=空桶 +Water Bucket=水桶 +River Water Bucket=河水桶 +Lava Bucket=岩漿桶 diff --git a/mods/bucket/mod.conf b/mods/bucket/mod.conf index 1c60a09..fef4687 100644 --- a/mods/bucket/mod.conf +++ b/mods/bucket/mod.conf @@ -1,3 +1,4 @@ name = bucket description = Minetest Game mod: bucket depends = default +optional_depends = dungeon_loot diff --git a/mods/butterflies/init.lua b/mods/butterflies/init.lua index 6fd839f..650e7da 100644 --- a/mods/butterflies/init.lua +++ b/mods/butterflies/init.lua @@ -102,7 +102,7 @@ minetest.register_decoration({ place_offset_y = 2, sidelen = 80, fill_ratio = 0.005, - biomes = {"grassland", "deciduous_forest", "floatland_grassland"}, + biomes = {"grassland", "deciduous_forest"}, y_max = 31000, y_min = 1, decoration = { diff --git a/mods/butterflies/locale/butterflies.ms.tr b/mods/butterflies/locale/butterflies.ms.tr new file mode 100644 index 0000000..b8bde85 --- /dev/null +++ b/mods/butterflies/locale/butterflies.ms.tr @@ -0,0 +1,4 @@ +# textdomain: butterflies +White Butterfly=Rama-Rama Putih +Red Butterfly=Rama-Rama Merah +Violet Butterfly=Rama-Rama Ungu diff --git a/mods/butterflies/locale/butterflies.ru.tr b/mods/butterflies/locale/butterflies.ru.tr new file mode 100644 index 0000000..7a79ed8 --- /dev/null +++ b/mods/butterflies/locale/butterflies.ru.tr @@ -0,0 +1,4 @@ +# textdomain: butterflies +White Butterfly=Белая Бабочка +Red Butterfly=Красная Бабочка +Violet Butterfly=Фиолетовая Бабочка diff --git a/mods/butterflies/locale/butterflies.se.tr b/mods/butterflies/locale/butterflies.se.tr new file mode 100644 index 0000000..08cb94c --- /dev/null +++ b/mods/butterflies/locale/butterflies.se.tr @@ -0,0 +1,4 @@ +# textdomain: butterflies +White Butterfly=Vit fjäril +Red Butterfly=Röd fjäril +Violet Butterfly=Violett fjäril \ No newline at end of file diff --git a/mods/butterflies/locale/butterflies.zh_CN.tr b/mods/butterflies/locale/butterflies.zh_CN.tr new file mode 100644 index 0000000..24e0bd1 --- /dev/null +++ b/mods/butterflies/locale/butterflies.zh_CN.tr @@ -0,0 +1,4 @@ +# textdomain: butterflies +White Butterfly=白蝴蝶 +Red Butterfly=红蝴蝶 +Violet Butterfly=紫蝴蝶 diff --git a/mods/butterflies/locale/butterflies.zh_TW.tr b/mods/butterflies/locale/butterflies.zh_TW.tr new file mode 100644 index 0000000..8d927c1 --- /dev/null +++ b/mods/butterflies/locale/butterflies.zh_TW.tr @@ -0,0 +1,4 @@ +# textdomain: butterflies +White Butterfly=白蝴蝶 +Red Butterfly=紅蝴蝶 +Violet Butterfly=紫蝴蝶 diff --git a/mods/carts/cart_entity.lua b/mods/carts/cart_entity.lua index 3c131a6..02ff6cd 100644 --- a/mods/carts/cart_entity.lua +++ b/mods/carts/cart_entity.lua @@ -414,7 +414,7 @@ minetest.register_craftitem("carts:cart", { end minetest.sound_play({name = "default_place_node_metal", gain = 0.5}, - {pos = pointed_thing.above}) + {pos = pointed_thing.above}, true) if not (creative and creative.is_enabled_for and creative.is_enabled_for(placer:get_player_name())) then diff --git a/mods/carts/init.lua b/mods/carts/init.lua index a5aa9cb..69d59d9 100644 --- a/mods/carts/init.lua +++ b/mods/carts/init.lua @@ -19,3 +19,10 @@ carts.path_distance_max = 3 dofile(carts.modpath.."/functions.lua") dofile(carts.modpath.."/rails.lua") dofile(carts.modpath.."/cart_entity.lua") + +-- Register rails as dungeon loot +if minetest.global_exists("dungeon_loot") then + dungeon_loot.register({ + name = "carts:rail", chance = 0.35, count = {1, 6} + }) +end diff --git a/mods/carts/locale/carts.ms.tr b/mods/carts/locale/carts.ms.tr new file mode 100644 index 0000000..e8944e9 --- /dev/null +++ b/mods/carts/locale/carts.ms.tr @@ -0,0 +1,6 @@ +# textdomain: carts +Cart=Pedati +(Sneak+Click to pick up)=(Selinap+Klik untuk ambil balik) +Rail=Landasan +Powered Rail=Landasan Berkuasa +Brake Rail=Landasan Brek diff --git a/mods/carts/locale/carts.ru.tr b/mods/carts/locale/carts.ru.tr new file mode 100644 index 0000000..6ff5be6 --- /dev/null +++ b/mods/carts/locale/carts.ru.tr @@ -0,0 +1,6 @@ +# textdomain: carts +Cart=Вагонетка +(Sneak+Click to pick up)=(Пригнитесь и кликните по вагонетке, чтобы забрать) +Rail=Рельса +Powered Rail=Механизированная Рельса +Brake Rail=Рельса с тормозом diff --git a/mods/carts/locale/carts.se.tr b/mods/carts/locale/carts.se.tr new file mode 100644 index 0000000..e40f8ca --- /dev/null +++ b/mods/carts/locale/carts.se.tr @@ -0,0 +1,6 @@ +# textdomain: carts +Cart=Vagn +(Sneak+Click to pick up)=(Shift+Klicka för att plocka upp) +Rail=Räls +Powered Rail=Aktiverad räls +Brake Rail=Broms räls \ No newline at end of file diff --git a/mods/carts/locale/carts.zh_CN.tr b/mods/carts/locale/carts.zh_CN.tr new file mode 100644 index 0000000..953cdef --- /dev/null +++ b/mods/carts/locale/carts.zh_CN.tr @@ -0,0 +1,6 @@ +# textdomain: carts +Cart=矿车 +(Sneak+Click to pick up)=(潜行+单击以捡起) +Rail=铁轨 +Powered Rail=动力铁轨 +Brake Rail=制动铁轨 diff --git a/mods/carts/locale/carts.zh_TW.tr b/mods/carts/locale/carts.zh_TW.tr new file mode 100644 index 0000000..f6300d4 --- /dev/null +++ b/mods/carts/locale/carts.zh_TW.tr @@ -0,0 +1,6 @@ +# textdomain: carts +Cart=礦車 +(Sneak+Click to pick up)=(潛行+單擊以撿起) +Rail=鐵軌 +Powered Rail=動力鐵軌 +Brake Rail=制動鐵軌 diff --git a/mods/carts/mod.conf b/mods/carts/mod.conf index 20357e3..0eab35c 100644 --- a/mods/carts/mod.conf +++ b/mods/carts/mod.conf @@ -1,3 +1,4 @@ name = carts description = Carts (formerly boost_cart) depends = default, player_api +optional_depends = dungeon_loot diff --git a/mods/creative/inventory.lua b/mods/creative/inventory.lua index 27dee78..2e93e5f 100644 --- a/mods/creative/inventory.lua +++ b/mods/creative/inventory.lua @@ -25,7 +25,9 @@ function creative.init_creative_inventory(player) player_inventory[player_name] = { size = 0, filter = "", - start_i = 0 + start_i = 0, + old_filter = nil, -- use only for caching in update_creative_inventory + old_content = nil } minetest.create_detached_inventory("creative_" .. player_name, { @@ -59,22 +61,42 @@ function creative.init_creative_inventory(player) return player_inventory[player_name] end +local function match(s, filter) + if filter == "" then + return 0 + end + if s:lower():find(filter, 1, true) then + return #s - #filter + end + return nil +end + function creative.update_creative_inventory(player_name, tab_content) - local creative_list = {} local inv = player_inventory[player_name] or creative.init_creative_inventory(minetest.get_player_by_name(player_name)) local player_inv = minetest.get_inventory({type = "detached", name = "creative_" .. player_name}) + if inv.filter == inv.old_filter and tab_content == inv.old_content then + return + end + inv.old_filter = inv.filter + inv.old_content = tab_content + local items = inventory_cache[tab_content] or init_creative_cache(tab_content) + local creative_list = {} + local order = {} for name, def in pairs(items) do - if def.name:find(inv.filter, 1, true) or - def.description:lower():find(inv.filter, 1, true) then + local m = match(def.description, inv.filter) or match(def.name, inv.filter) + if m then creative_list[#creative_list+1] = name + -- Sort by description length first so closer matches appear earlier + order[name] = string.format("%02d", m) .. name end end - table.sort(creative_list) + table.sort(creative_list, function(a, b) return order[a] < order[b] end) + player_inv:set_size("main", #creative_list) player_inv:set_list("main", creative_list) inv.size = #creative_list @@ -105,21 +127,20 @@ function creative.register_tab(name, title, items) local player_name = player:get_player_name() creative.update_creative_inventory(player_name, items) local inv = player_inventory[player_name] - local start_i = inv.start_i or 0 - local pagenum = math.floor(start_i / (3*8) + 1) - local pagemax = math.ceil(inv.size / (3*8)) + local pagenum = math.floor(inv.start_i / (4*8) + 1) + local pagemax = math.ceil(inv.size / (4*8)) local esc = minetest.formspec_escape return sfinv.make_formspec(player, context, - "label[6.2,3.35;" .. minetest.colorize("#FFFF00", tostring(pagenum)) .. " / " .. tostring(pagemax) .. "]" .. + "label[5.8,4.15;" .. minetest.colorize("#FFFF00", tostring(pagenum)) .. " / " .. tostring(pagemax) .. "]" .. [[ - image[4.06,3.4;0.8,0.8;creative_trash_icon.png] + image[4.08,4.2;0.8,0.8;creative_trash_icon.png] listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF] - list[detached:creative_trash;main;4,3.3;1,1;] + list[detached:creative_trash;main;4.02,4.1;1,1;] listring[] - image_button[5.4,3.25;0.8,0.8;creative_prev_icon.png;creative_prev;] - image_button[7.2,3.25;0.8,0.8;creative_next_icon.png;creative_next;] - image_button[2.1,3.25;0.8,0.8;creative_search_icon.png;creative_search;] - image_button[2.75,3.25;0.8,0.8;creative_clear_icon.png;creative_clear;] + image_button[5,4.05;0.8,0.8;creative_prev_icon.png;creative_prev;] + image_button[7.2,4.05;0.8,0.8;creative_next_icon.png;creative_next;] + image_button[2.63,4.05;0.8,0.8;creative_search_icon.png;creative_search;] + image_button[3.25,4.05;0.8,0.8;creative_clear_icon.png;creative_clear;] ]] .. "tooltip[creative_search;" .. esc(S("Search")) .. "]" .. "tooltip[creative_clear;" .. esc(S("Reset")) .. "]" .. @@ -127,9 +148,9 @@ function creative.register_tab(name, title, items) "tooltip[creative_next;" .. esc(S("Next page")) .. "]" .. "listring[current_player;main]" .. "field_close_on_enter[creative_filter;false]" .. - "field[0.3,3.5;2.2,1;creative_filter;;" .. esc(inv.filter) .. "]" .. + "field[0.3,4.2;2.8,1.2;creative_filter;;" .. esc(inv.filter) .. "]" .. "listring[detached:creative_" .. player_name .. ";main]" .. - "list[detached:creative_" .. player_name .. ";main;0,0;8,3;" .. tostring(start_i) .. "]" .. + "list[detached:creative_" .. player_name .. ";main;0,0;8,4;" .. tostring(inv.start_i) .. "]" .. creative.formspec_add, true) end, on_enter = function(self, player, context) @@ -147,27 +168,25 @@ function creative.register_tab(name, title, items) if fields.creative_clear then inv.start_i = 0 inv.filter = "" - creative.update_creative_inventory(player_name, items) sfinv.set_player_inventory_formspec(player, context) elseif fields.creative_search or fields.key_enter_field == "creative_filter" then inv.start_i = 0 inv.filter = fields.creative_filter:lower() - creative.update_creative_inventory(player_name, items) sfinv.set_player_inventory_formspec(player, context) elseif not fields.quit then local start_i = inv.start_i or 0 if fields.creative_prev then - start_i = start_i - 3*8 + start_i = start_i - 4*8 if start_i < 0 then - start_i = inv.size - (inv.size % (3*8)) + start_i = inv.size - (inv.size % (4*8)) if inv.size == start_i then - start_i = math.max(0, inv.size - (3*8)) + start_i = math.max(0, inv.size - (4*8)) end end elseif fields.creative_next then - start_i = start_i + 3*8 + start_i = start_i + 4*8 if start_i >= inv.size then start_i = 0 end diff --git a/mods/creative/locale/creative.ms.tr b/mods/creative/locale/creative.ms.tr new file mode 100644 index 0000000..a2aef80 --- /dev/null +++ b/mods/creative/locale/creative.ms.tr @@ -0,0 +1,10 @@ +# textdomain: creative +Allow player to use creative inventory=Benarkan pemain menggunakan inventori kreatif +Search=Cari +Reset=Set semula +Previous page=Halaman sebelumnya +Next page=Halaman seterusnya +All=Semua +Nodes=Nod +Tools=Alatan +Items=Item diff --git a/mods/creative/locale/creative.ru.tr b/mods/creative/locale/creative.ru.tr new file mode 100644 index 0000000..f649dbc --- /dev/null +++ b/mods/creative/locale/creative.ru.tr @@ -0,0 +1,10 @@ +# textdomain: creative +Allow player to use creative inventory=Разрешить игроку использовать творческий инвентарь +Search=Поиск +Reset=Сброс +Previous page=Предыдущая страница +Next page=Следующая страница +All=Всё +Nodes=Ноды +Tools=Инструменты +Items=Предметы diff --git a/mods/creative/locale/creative.se.tr b/mods/creative/locale/creative.se.tr new file mode 100644 index 0000000..e78bc2c --- /dev/null +++ b/mods/creative/locale/creative.se.tr @@ -0,0 +1,10 @@ +# textdomain: creative +Allow player to use creative inventory=Tilllåt spelare att används kreativa saker +Search=Sök +Reset=Återställ +Previous page=Förra sidan +Next page=Nästa sidan +All=Alla +Nodes=Noder +Tools=Verktyg +Items=Saker \ No newline at end of file diff --git a/mods/creative/locale/creative.zh_CN.tr b/mods/creative/locale/creative.zh_CN.tr new file mode 100644 index 0000000..1ca424e --- /dev/null +++ b/mods/creative/locale/creative.zh_CN.tr @@ -0,0 +1,10 @@ +# textdomain: creative +Allow player to use creative inventory=允许玩家使用创造模式物品栏 +Search=搜索 +Reset=重置 +Previous page=上一页 +Next page=下一页 +All=所有 +Nodes=节点 +Tools=工具 +Items=物品 diff --git a/mods/creative/locale/creative.zh_TW.tr b/mods/creative/locale/creative.zh_TW.tr new file mode 100644 index 0000000..c5746d4 --- /dev/null +++ b/mods/creative/locale/creative.zh_TW.tr @@ -0,0 +1,10 @@ +# textdomain: creative +Allow player to use creative inventory=允許玩家使用創造模式物品欄 +Search=搜索 +Reset=重置 +Previous page=上一頁 +Next page=下一頁 +All=所有 +Nodes=節點 +Tools=工具 +Items=物品 diff --git a/mods/default/README.txt b/mods/default/README.txt index 1bc899b..5f89f74 100644 --- a/mods/default/README.txt +++ b/mods/default/README.txt @@ -123,6 +123,8 @@ paramat (CC BY-SA 3.0): default_fence_rail_junglewood default_fence_rail_pine_wood default_fence_rail_wood -- Derived from a texture by BlockMen (CC BY-SA 3.0) + gui_hotbar.png + gui_hotbar_selected.png TumeniNodes (CC BY-SA 3.0): default_desert_cobble.png -- Derived from a texture by brunob.santos (CC BY-SA 3.0) @@ -150,7 +152,10 @@ BlockMen (CC BY-SA 3.0): default_mineral_mese.png default_meselamp.png bubble.png - gui_*.png + gui_formbg.png + gui_furnace_arrow_bg.png + gui_furnace_arrow_fg.png + gui_hb_bg.png sofar (CC BY-SA 3.0): default_aspen_sapling @@ -330,6 +335,10 @@ http://freesound.org/people/Ryding/sounds/94337/ Ferk (CC0 1.0): default_item_smoke.ogg, based on a sound by http://opengameart.org/users/bart +sonictechtonic (CC BY 3.0): +https://www.freesound.org/people/sonictechtonic/sounds/241872/ + player_damage.ogg + Models ------ diff --git a/mods/default/chests.lua b/mods/default/chests.lua index 8dbf9d8..3fe9c1a 100644 --- a/mods/default/chests.lua +++ b/mods/default/chests.lua @@ -46,7 +46,8 @@ function default.chest.chest_lid_close(pn) local node = minetest.get_node(pos) minetest.after(0.2, minetest.swap_node, pos, { name = "default:" .. swap, param2 = node.param2 }) - minetest.sound_play(sound, {gain = 0.3, pos = pos, max_hear_distance = 10}) + minetest.sound_play(sound, {gain = 0.3, pos = pos, + max_hear_distance = 10}, true) end default.chest.open_chests = {} @@ -128,7 +129,7 @@ function default.chest.register_chest(name, d) end minetest.sound_play(def.sound_open, {gain = 0.3, - pos = pos, max_hear_distance = 10}) + pos = pos, max_hear_distance = 10}, true) if not default.chest.chest_lid_obstructed(pos) then minetest.swap_node(pos, { name = "default:" .. name .. "_open", @@ -199,7 +200,7 @@ function default.chest.register_chest(name, d) end def.on_rightclick = function(pos, node, clicker) minetest.sound_play(def.sound_open, {gain = 0.3, pos = pos, - max_hear_distance = 10}) + max_hear_distance = 10}, true) if not default.chest.chest_lid_obstructed(pos) then minetest.swap_node(pos, { name = "default:" .. name .. "_open", @@ -318,3 +319,39 @@ default.chest.register_chest("chest_locked", { groups = {choppy = 2, oddly_breakable_by_hand = 2}, protected = true, }) + +minetest.register_craft({ + output = "default:chest", + recipe = { + {"group:wood", "group:wood", "group:wood"}, + {"group:wood", "", "group:wood"}, + {"group:wood", "group:wood", "group:wood"}, + } +}) + +minetest.register_craft({ + output = "default:chest_locked", + recipe = { + {"group:wood", "group:wood", "group:wood"}, + {"group:wood", "default:steel_ingot", "group:wood"}, + {"group:wood", "group:wood", "group:wood"}, + } +}) + +minetest.register_craft( { + type = "shapeless", + output = "default:chest_locked", + recipe = {"default:chest", "default:steel_ingot"}, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:chest", + burntime = 30, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:chest_locked", + burntime = 30, +}) diff --git a/mods/default/crafting.lua b/mods/default/crafting.lua index 9481133..bc436fc 100644 --- a/mods/default/crafting.lua +++ b/mods/default/crafting.lua @@ -56,13 +56,6 @@ minetest.register_craft({ } }) -minetest.register_craft({ - output = "default:stick 4", - recipe = { - {"group:wood"}, - } -}) - minetest.register_craft({ output = "default:sign_wall_steel 3", recipe = { @@ -81,273 +74,6 @@ minetest.register_craft({ } }) -minetest.register_craft({ - output = "default:torch 4", - recipe = { - {"default:coal_lump"}, - {"group:stick"}, - } -}) - -minetest.register_craft({ - output = "default:pick_wood", - recipe = { - {"group:wood", "group:wood", "group:wood"}, - {"", "group:stick", ""}, - {"", "group:stick", ""}, - } -}) - -minetest.register_craft({ - output = "default:pick_stone", - recipe = { - {"group:stone", "group:stone", "group:stone"}, - {"", "group:stick", ""}, - {"", "group:stick", ""}, - } -}) - -minetest.register_craft({ - output = "default:pick_steel", - recipe = { - {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"}, - {"", "group:stick", ""}, - {"", "group:stick", ""}, - } -}) - -minetest.register_craft({ - output = "default:pick_bronze", - recipe = { - {"default:bronze_ingot", "default:bronze_ingot", "default:bronze_ingot"}, - {"", "group:stick", ""}, - {"", "group:stick", ""}, - } -}) - -minetest.register_craft({ - output = "default:pick_mese", - recipe = { - {"default:mese_crystal", "default:mese_crystal", "default:mese_crystal"}, - {"", "group:stick", ""}, - {"", "group:stick", ""}, - } -}) - -minetest.register_craft({ - output = "default:pick_diamond", - recipe = { - {"default:diamond", "default:diamond", "default:diamond"}, - {"", "group:stick", ""}, - {"", "group:stick", ""}, - } -}) - -minetest.register_craft({ - output = "default:shovel_wood", - recipe = { - {"group:wood"}, - {"group:stick"}, - {"group:stick"}, - } -}) - -minetest.register_craft({ - output = "default:shovel_stone", - recipe = { - {"group:stone"}, - {"group:stick"}, - {"group:stick"}, - } -}) - -minetest.register_craft({ - output = "default:shovel_steel", - recipe = { - {"default:steel_ingot"}, - {"group:stick"}, - {"group:stick"}, - } -}) - -minetest.register_craft({ - output = "default:shovel_bronze", - recipe = { - {"default:bronze_ingot"}, - {"group:stick"}, - {"group:stick"}, - } -}) - -minetest.register_craft({ - output = "default:shovel_mese", - recipe = { - {"default:mese_crystal"}, - {"group:stick"}, - {"group:stick"}, - } -}) - -minetest.register_craft({ - output = "default:shovel_diamond", - recipe = { - {"default:diamond"}, - {"group:stick"}, - {"group:stick"}, - } -}) - --- Axes --- Recipes face left to match appearence in textures and inventory - -minetest.register_craft({ - output = "default:axe_wood", - recipe = { - {"group:wood", "group:wood"}, - {"group:wood", "group:stick"}, - {"", "group:stick"}, - } -}) - -minetest.register_craft({ - output = "default:axe_stone", - recipe = { - {"group:stone", "group:stone"}, - {"group:stone", "group:stick"}, - {"", "group:stick"}, - } -}) - -minetest.register_craft({ - output = "default:axe_steel", - recipe = { - {"default:steel_ingot", "default:steel_ingot"}, - {"default:steel_ingot", "group:stick"}, - {"", "group:stick"}, - } -}) - -minetest.register_craft({ - output = "default:axe_bronze", - recipe = { - {"default:bronze_ingot", "default:bronze_ingot"}, - {"default:bronze_ingot", "group:stick"}, - {"", "group:stick"}, - } -}) - -minetest.register_craft({ - output = "default:axe_mese", - recipe = { - {"default:mese_crystal", "default:mese_crystal"}, - {"default:mese_crystal", "group:stick"}, - {"", "group:stick"}, - } -}) - -minetest.register_craft({ - output = "default:axe_diamond", - recipe = { - {"default:diamond", "default:diamond"}, - {"default:diamond", "group:stick"}, - {"", "group:stick"}, - } -}) - -minetest.register_craft({ - output = "default:sword_wood", - recipe = { - {"group:wood"}, - {"group:wood"}, - {"group:stick"}, - } -}) - -minetest.register_craft({ - output = "default:sword_stone", - recipe = { - {"group:stone"}, - {"group:stone"}, - {"group:stick"}, - } -}) - -minetest.register_craft({ - output = "default:sword_steel", - recipe = { - {"default:steel_ingot"}, - {"default:steel_ingot"}, - {"group:stick"}, - } -}) - -minetest.register_craft({ - output = "default:sword_bronze", - recipe = { - {"default:bronze_ingot"}, - {"default:bronze_ingot"}, - {"group:stick"}, - } -}) - -minetest.register_craft({ - output = "default:sword_mese", - recipe = { - {"default:mese_crystal"}, - {"default:mese_crystal"}, - {"group:stick"}, - } -}) - -minetest.register_craft({ - output = "default:sword_diamond", - recipe = { - {"default:diamond"}, - {"default:diamond"}, - {"group:stick"}, - } -}) - -minetest.register_craft({ - output = "default:skeleton_key", - recipe = { - {"default:gold_ingot"}, - } -}) - -minetest.register_craft({ - output = "default:chest", - recipe = { - {"group:wood", "group:wood", "group:wood"}, - {"group:wood", "", "group:wood"}, - {"group:wood", "group:wood", "group:wood"}, - } -}) - -minetest.register_craft({ - output = "default:chest_locked", - recipe = { - {"group:wood", "group:wood", "group:wood"}, - {"group:wood", "default:steel_ingot", "group:wood"}, - {"group:wood", "group:wood", "group:wood"}, - } -}) - -minetest.register_craft( { - type = "shapeless", - output = "default:chest_locked", - recipe = {"default:chest", "default:steel_ingot"}, -}) - -minetest.register_craft({ - output = "default:furnace", - recipe = { - {"group:stone", "group:stone", "group:stone"}, - {"group:stone", "", "group:stone"}, - {"group:stone", "group:stone", "group:stone"}, - } -}) - minetest.register_craft({ output = "default:coalblock", recipe = { @@ -357,13 +83,6 @@ minetest.register_craft({ } }) -minetest.register_craft({ - output = "default:coal_lump 9", - recipe = { - {"default:coalblock"}, - } -}) - minetest.register_craft({ output = "default:steelblock", recipe = { @@ -373,13 +92,6 @@ minetest.register_craft({ } }) -minetest.register_craft({ - output = "default:steel_ingot 9", - recipe = { - {"default:steelblock"}, - } -}) - minetest.register_craft({ output = "default:copperblock", recipe = { @@ -389,13 +101,6 @@ minetest.register_craft({ } }) -minetest.register_craft({ - output = "default:copper_ingot 9", - recipe = { - {"default:copperblock"}, - } -}) - minetest.register_craft({ output = "default:tinblock", recipe = { @@ -405,22 +110,6 @@ minetest.register_craft({ } }) -minetest.register_craft({ - output = "default:tin_ingot 9", - recipe = { - {"default:tinblock"}, - } -}) - -minetest.register_craft({ - output = "default:bronze_ingot 9", - recipe = { - {"default:copper_ingot", "default:copper_ingot", "default:copper_ingot"}, - {"default:copper_ingot", "default:tin_ingot", "default:copper_ingot"}, - {"default:copper_ingot", "default:copper_ingot", "default:copper_ingot"}, - } -}) - minetest.register_craft({ output = "default:bronzeblock", recipe = { @@ -446,13 +135,6 @@ minetest.register_craft({ } }) -minetest.register_craft({ - output = "default:gold_ingot 9", - recipe = { - {"default:goldblock"}, - } -}) - minetest.register_craft({ output = "default:diamondblock", recipe = { @@ -462,13 +144,6 @@ minetest.register_craft({ } }) -minetest.register_craft({ - output = "default:diamond 9", - recipe = { - {"default:diamondblock"}, - } -}) - minetest.register_craft({ output = "default:sandstone", recipe = { @@ -573,13 +248,6 @@ minetest.register_craft({ } }) -minetest.register_craft({ - output = "default:clay_lump 4", - recipe = { - {"default:clay"}, - } -}) - minetest.register_craft({ output = "default:brick", recipe = { @@ -588,29 +256,6 @@ minetest.register_craft({ } }) -minetest.register_craft({ - output = "default:clay_brick 4", - recipe = { - {"default:brick"}, - } -}) - -minetest.register_craft({ - output = "default:paper", - recipe = { - {"default:papyrus", "default:papyrus", "default:papyrus"}, - } -}) - -minetest.register_craft({ - output = "default:book", - recipe = { - {"default:paper"}, - {"default:paper"}, - {"default:paper"}, - } -}) - minetest.register_craft({ output = "default:bookshelf", recipe = { @@ -647,29 +292,6 @@ minetest.register_craft({ } }) -minetest.register_craft({ - output = "default:mese_crystal 9", - recipe = { - {"default:mese"}, - } -}) - -minetest.register_craft({ - output = "default:mese_crystal_fragment 9", - recipe = { - {"default:mese_crystal"}, - } -}) - -minetest.register_craft({ - output = "default:mese_crystal", - recipe = { - {"default:mese_crystal_fragment", "default:mese_crystal_fragment", "default:mese_crystal_fragment"}, - {"default:mese_crystal_fragment", "default:mese_crystal_fragment", "default:mese_crystal_fragment"}, - {"default:mese_crystal_fragment", "default:mese_crystal_fragment", "default:mese_crystal_fragment"}, - } -}) - minetest.register_craft({ output = "default:meselamp", recipe = { @@ -687,13 +309,6 @@ minetest.register_craft({ } }) -minetest.register_craft({ - output = "default:obsidian_shard 9", - recipe = { - {"default:obsidian"} - } -}) - minetest.register_craft({ output = "default:obsidian", recipe = { @@ -833,50 +448,6 @@ minetest.register_craft({ recipe = "default:desert_cobble", }) -minetest.register_craft({ - type = "cooking", - output = "default:steel_ingot", - recipe = "default:iron_lump", -}) - -minetest.register_craft({ - type = "cooking", - output = "default:copper_ingot", - recipe = "default:copper_lump", -}) - -minetest.register_craft({ - type = "cooking", - output = "default:tin_ingot", - recipe = "default:tin_lump", -}) - -minetest.register_craft({ - type = "cooking", - output = "default:gold_ingot", - recipe = "default:gold_lump", -}) - -minetest.register_craft({ - type = "cooking", - output = "default:clay_brick", - recipe = "default:clay_lump", -}) - -minetest.register_craft({ - type = "cooking", - output = "default:gold_ingot", - recipe = "default:skeleton_key", - cooktime = 5, -}) - -minetest.register_craft({ - type = "cooking", - output = "default:gold_ingot", - recipe = "default:key", - cooktime = 5, -}) - -- -- Fuels @@ -1005,7 +576,6 @@ minetest.register_craft({ burntime = 7, }) - minetest.register_craft({ type = "fuel", recipe = "default:fence_aspen_wood", @@ -1067,7 +637,6 @@ minetest.register_craft({ burntime = 7, }) - minetest.register_craft({ type = "fuel", recipe = "default:bush_stem", @@ -1134,36 +703,12 @@ minetest.register_craft({ burntime = 60, }) -minetest.register_craft({ - type = "fuel", - recipe = "default:torch", - burntime = 4, -}) - minetest.register_craft({ type = "fuel", recipe = "default:sign_wall_wood", burntime = 10, }) -minetest.register_craft({ - type = "fuel", - recipe = "default:chest", - burntime = 30, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:chest_locked", - burntime = 30, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:coal_lump", - burntime = 40, -}) - minetest.register_craft({ type = "fuel", recipe = "default:coalblock", @@ -1194,57 +739,8 @@ minetest.register_craft({ burntime = 2, }) -minetest.register_craft({ - type = "fuel", - recipe = "default:paper", - burntime = 1, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:book", - burntime = 3, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:book_written", - burntime = 3, -}) - minetest.register_craft({ type = "fuel", recipe = "default:dry_shrub", burntime = 2, }) - -minetest.register_craft({ - type = "fuel", - recipe = "group:stick", - burntime = 1, -}) - - -minetest.register_craft({ - type = "fuel", - recipe = "default:pick_wood", - burntime = 6, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:shovel_wood", - burntime = 4, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:axe_wood", - burntime = 6, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:sword_wood", - burntime = 5, -}) diff --git a/mods/default/craftitems.lua b/mods/default/craftitems.lua index e2e92bf..923d754 100644 --- a/mods/default/craftitems.lua +++ b/mods/default/craftitems.lua @@ -3,19 +3,6 @@ -- support for MT game translation. local S = default.get_translator -minetest.register_craftitem("default:stick", { - description = S("Stick"), - inventory_image = "default_stick.png", - groups = {stick = 1, flammable = 2}, -}) - -minetest.register_craftitem("default:paper", { - description = S("Paper"), - inventory_image = "default_paper.png", - groups = {flammable = 3}, -}) - - local lpp = 14 -- Lines per book's page local function book_on_use(itemstack, user) local player_name = user:get_player_name() @@ -158,54 +145,9 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) player:set_wielded_item(stack) end) -minetest.register_craftitem("default:book", { - description = S("Book"), - inventory_image = "default_book.png", - groups = {book = 1, flammable = 3}, - on_use = book_on_use, -}) - -minetest.register_craftitem("default:book_written", { - description = S("Book with Text"), - inventory_image = "default_book_written.png", - groups = {book = 1, not_in_creative_inventory = 1, flammable = 3}, - stack_max = 1, - on_use = book_on_use, -}) - -minetest.register_craft({ - type = "shapeless", - output = "default:book_written", - recipe = {"default:book", "default:book_written"} -}) - -minetest.register_on_craft(function(itemstack, player, old_craft_grid, craft_inv) - if itemstack:get_name() ~= "default:book_written" then - return - end - - local original - local index - for i = 1, player:get_inventory():get_size("craft") do - if old_craft_grid[i]:get_name() == "default:book_written" then - original = old_craft_grid[i] - index = i - end - end - if not original then - return - end - local copymeta = original:get_meta():to_table() - -- copy of the book held by player's mouse cursor - itemstack:get_meta():from_table(copymeta) - -- put the book with metadata back in the craft grid - craft_inv:set_stack("craft", index, original) -end) - minetest.register_craftitem("default:skeleton_key", { description = S("Skeleton Key"), inventory_image = "default_key_skeleton.png", - groups = {key = 1}, on_use = function(itemstack, user, pointed_thing) if pointed_thing.type ~= "node" then return itemstack @@ -258,91 +200,9 @@ minetest.register_craftitem("default:skeleton_key", { end }) -minetest.register_craftitem("default:coal_lump", { - description = S("Coal Lump"), - inventory_image = "default_coal_lump.png", - groups = {coal = 1, flammable = 1} -}) - -minetest.register_craftitem("default:iron_lump", { - description = S("Iron Lump"), - inventory_image = "default_iron_lump.png" -}) - -minetest.register_craftitem("default:copper_lump", { - description = S("Copper Lump"), - inventory_image = "default_copper_lump.png" -}) - -minetest.register_craftitem("default:tin_lump", { - description = S("Tin Lump"), - inventory_image = "default_tin_lump.png" -}) - -minetest.register_craftitem("default:mese_crystal", { - description = S("Mese Crystal"), - inventory_image = "default_mese_crystal.png", -}) - -minetest.register_craftitem("default:gold_lump", { - description = S("Gold Lump"), - inventory_image = "default_gold_lump.png" -}) - -minetest.register_craftitem("default:diamond", { - description = S("Diamond"), - inventory_image = "default_diamond.png", -}) - -minetest.register_craftitem("default:clay_lump", { - description = S("Clay Lump"), - inventory_image = "default_clay_lump.png", -}) - -minetest.register_craftitem("default:steel_ingot", { - description = S("Steel Ingot"), - inventory_image = "default_steel_ingot.png" -}) - -minetest.register_craftitem("default:copper_ingot", { - description = S("Copper Ingot"), - inventory_image = "default_copper_ingot.png" -}) - -minetest.register_craftitem("default:tin_ingot", { - description = S("Tin Ingot"), - inventory_image = "default_tin_ingot.png" -}) - -minetest.register_craftitem("default:bronze_ingot", { - description = S("Bronze Ingot"), - inventory_image = "default_bronze_ingot.png" -}) - -minetest.register_craftitem("default:gold_ingot", { - description = S("Gold Ingot"), - inventory_image = "default_gold_ingot.png" -}) - -minetest.register_craftitem("default:mese_crystal_fragment", { - description = S("Mese Crystal Fragment"), - inventory_image = "default_mese_crystal_fragment.png", -}) - -minetest.register_craftitem("default:clay_brick", { - description = S("Clay Brick"), - inventory_image = "default_clay_brick.png", -}) - -minetest.register_craftitem("default:obsidian_shard", { - description = S("Obsidian Shard"), - inventory_image = "default_obsidian_shard.png", -}) - -minetest.register_craftitem("default:flint", { - description = S("Flint"), - inventory_image = "default_flint.png" -}) +-- +-- Craftitem registry +-- minetest.register_craftitem("default:blueberries", { description = S("Blueberries"), @@ -350,3 +210,329 @@ minetest.register_craftitem("default:blueberries", { groups = {food_blueberries = 1, food_berry = 1}, on_use = minetest.item_eat(2), }) + +minetest.register_craftitem("default:book", { + description = S("Book"), + inventory_image = "default_book.png", + groups = {book = 1, flammable = 3}, + on_use = book_on_use, +}) + +minetest.register_craftitem("default:book_written", { + description = S("Book with Text"), + inventory_image = "default_book_written.png", + groups = {book = 1, not_in_creative_inventory = 1, flammable = 3}, + stack_max = 1, + on_use = book_on_use, +}) + +minetest.register_craftitem("default:bronze_ingot", { + description = S("Bronze Ingot"), + inventory_image = "default_bronze_ingot.png" +}) + +minetest.register_craftitem("default:clay_brick", { + description = S("Clay Brick"), + inventory_image = "default_clay_brick.png", +}) + +minetest.register_craftitem("default:clay_lump", { + description = S("Clay Lump"), + inventory_image = "default_clay_lump.png", +}) + +minetest.register_craftitem("default:coal_lump", { + description = S("Coal Lump"), + inventory_image = "default_coal_lump.png", + groups = {coal = 1, flammable = 1} +}) + +minetest.register_craftitem("default:copper_ingot", { + description = S("Copper Ingot"), + inventory_image = "default_copper_ingot.png" +}) + +minetest.register_craftitem("default:copper_lump", { + description = S("Copper Lump"), + inventory_image = "default_copper_lump.png" +}) + +minetest.register_craftitem("default:diamond", { + description = S("Diamond"), + inventory_image = "default_diamond.png", +}) + +minetest.register_craftitem("default:flint", { + description = S("Flint"), + inventory_image = "default_flint.png" +}) + +minetest.register_craftitem("default:gold_ingot", { + description = S("Gold Ingot"), + inventory_image = "default_gold_ingot.png" +}) + +minetest.register_craftitem("default:gold_lump", { + description = S("Gold Lump"), + inventory_image = "default_gold_lump.png" +}) + +minetest.register_craftitem("default:iron_lump", { + description = S("Iron Lump"), + inventory_image = "default_iron_lump.png" +}) + +minetest.register_craftitem("default:mese_crystal", { + description = S("Mese Crystal"), + inventory_image = "default_mese_crystal.png", +}) + +minetest.register_craftitem("default:mese_crystal_fragment", { + description = S("Mese Crystal Fragment"), + inventory_image = "default_mese_crystal_fragment.png", +}) + +minetest.register_craftitem("default:obsidian_shard", { + description = S("Obsidian Shard"), + inventory_image = "default_obsidian_shard.png", +}) + +minetest.register_craftitem("default:paper", { + description = S("Paper"), + inventory_image = "default_paper.png", + groups = {flammable = 3}, +}) + +minetest.register_craftitem("default:steel_ingot", { + description = S("Steel Ingot"), + inventory_image = "default_steel_ingot.png" +}) + +minetest.register_craftitem("default:stick", { + description = S("Stick"), + inventory_image = "default_stick.png", + groups = {stick = 1, flammable = 2}, +}) + +minetest.register_craftitem("default:tin_ingot", { + description = S("Tin Ingot"), + inventory_image = "default_tin_ingot.png" +}) + +minetest.register_craftitem("default:tin_lump", { + description = S("Tin Lump"), + inventory_image = "default_tin_lump.png" +}) + +-- +-- Crafting recipes +-- + +minetest.register_craft({ + output = "default:book", + recipe = { + {"default:paper"}, + {"default:paper"}, + {"default:paper"}, + } +}) + +default.register_craft_metadata_copy("default:book", "default:book_written") + +minetest.register_craft({ + output = "default:bronze_ingot 9", + recipe = { + {"default:copper_ingot", "default:copper_ingot", "default:copper_ingot"}, + {"default:copper_ingot", "default:tin_ingot", "default:copper_ingot"}, + {"default:copper_ingot", "default:copper_ingot", "default:copper_ingot"}, + } +}) + +minetest.register_craft({ + output = "default:clay_brick 4", + recipe = { + {"default:brick"}, + } +}) + +minetest.register_craft({ + output = "default:clay_lump 4", + recipe = { + {"default:clay"}, + } +}) + +minetest.register_craft({ + output = "default:coal_lump 9", + recipe = { + {"default:coalblock"}, + } +}) + +minetest.register_craft({ + output = "default:copper_ingot 9", + recipe = { + {"default:copperblock"}, + } +}) + +minetest.register_craft({ + output = "default:diamond 9", + recipe = { + {"default:diamondblock"}, + } +}) + +minetest.register_craft({ + output = "default:gold_ingot 9", + recipe = { + {"default:goldblock"}, + } +}) + +minetest.register_craft({ + output = "default:mese_crystal", + recipe = { + {"default:mese_crystal_fragment", "default:mese_crystal_fragment", "default:mese_crystal_fragment"}, + {"default:mese_crystal_fragment", "default:mese_crystal_fragment", "default:mese_crystal_fragment"}, + {"default:mese_crystal_fragment", "default:mese_crystal_fragment", "default:mese_crystal_fragment"}, + } +}) + +minetest.register_craft({ + output = "default:mese_crystal 9", + recipe = { + {"default:mese"}, + } +}) + +minetest.register_craft({ + output = "default:mese_crystal_fragment 9", + recipe = { + {"default:mese_crystal"}, + } +}) + +minetest.register_craft({ + output = "default:obsidian_shard 9", + recipe = { + {"default:obsidian"} + } +}) + +minetest.register_craft({ + output = "default:paper", + recipe = { + {"default:papyrus", "default:papyrus", "default:papyrus"}, + } +}) + +minetest.register_craft({ + output = "default:skeleton_key", + recipe = { + {"default:gold_ingot"}, + } +}) + +minetest.register_craft({ + output = "default:steel_ingot 9", + recipe = { + {"default:steelblock"}, + } +}) + +minetest.register_craft({ + output = "default:stick 4", + recipe = { + {"group:wood"}, + } +}) + +minetest.register_craft({ + output = "default:tin_ingot 9", + recipe = { + {"default:tinblock"}, + } +}) + +-- +-- Cooking recipes +-- + +minetest.register_craft({ + type = "cooking", + output = "default:clay_brick", + recipe = "default:clay_lump", +}) + +minetest.register_craft({ + type = "cooking", + output = "default:copper_ingot", + recipe = "default:copper_lump", +}) + +minetest.register_craft({ + type = "cooking", + output = "default:gold_ingot", + recipe = "default:gold_lump", +}) + +minetest.register_craft({ + type = "cooking", + output = "default:gold_ingot", + recipe = "default:key", + cooktime = 5, +}) + +minetest.register_craft({ + type = "cooking", + output = "default:gold_ingot", + recipe = "default:skeleton_key", + cooktime = 5, +}) + +minetest.register_craft({ + type = "cooking", + output = "default:steel_ingot", + recipe = "default:iron_lump", +}) + +minetest.register_craft({ + type = "cooking", + output = "default:tin_ingot", + recipe = "default:tin_lump", +}) + +-- +-- Fuels +-- + +minetest.register_craft({ + type = "fuel", + recipe = "default:book", + burntime = 3, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:book_written", + burntime = 3, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:coal_lump", + burntime = 40, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:paper", + burntime = 1, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "group:stick", + burntime = 1, +}) diff --git a/mods/default/functions.lua b/mods/default/functions.lua index 91f8bb3..f67eadf 100644 --- a/mods/default/functions.lua +++ b/mods/default/functions.lua @@ -141,7 +141,7 @@ default.cool_lava = function(pos, node) minetest.set_node(pos, {name = "default:stone"}) end minetest.sound_play("default_cool_lava", - {pos = pos, max_hear_distance = 16, gain = 0.25}) + {pos = pos, max_hear_distance = 16, gain = 0.25}, true) end if minetest.settings:get_bool("enable_lavacooling") ~= false then @@ -581,6 +581,40 @@ minetest.register_abm({ end }) +-- +-- Register a craft to copy the metadata of items +-- + +function default.register_craft_metadata_copy(ingredient, result) + minetest.register_craft({ + type = "shapeless", + output = result, + recipe = {ingredient, result} + }) + + minetest.register_on_craft(function(itemstack, player, old_craft_grid, craft_inv) + if itemstack:get_name() ~= result then + return + end + + local original + local index + for i = 1, #old_craft_grid do + if old_craft_grid[i]:get_name() == result then + original = old_craft_grid[i] + index = i + end + end + if not original then + return + end + local copymeta = original:get_meta():to_table() + itemstack:get_meta():from_table(copymeta) + -- put the book with metadata back in the craft grid + craft_inv:set_stack("craft", index, original) + end) +end + -- -- NOTICE: This method is not an official part of the API yet. @@ -605,7 +639,7 @@ function default.can_interact_with_node(player, pos) -- Is player wielding the right key? local item = player:get_wielded_item() - if item:get_name() == "default:key" then + if minetest.get_item_group(item:get_name(), "key") == 1 then local key_meta = item:get_meta() if key_meta:get_string("secret") == "" then diff --git a/mods/default/furnace.lua b/mods/default/furnace.lua index d133a3a..3c4ac9c 100644 --- a/mods/default/furnace.lua +++ b/mods/default/furnace.lua @@ -352,3 +352,12 @@ minetest.register_node("default:furnace_active", { allow_metadata_inventory_move = allow_metadata_inventory_move, allow_metadata_inventory_take = allow_metadata_inventory_take, }) + +minetest.register_craft({ + output = "default:furnace", + recipe = { + {"group:stone", "group:stone", "group:stone"}, + {"group:stone", "", "group:stone"}, + {"group:stone", "group:stone", "group:stone"}, + } +}) diff --git a/mods/default/init.lua b/mods/default/init.lua index a487383..d4388e5 100644 --- a/mods/default/init.lua +++ b/mods/default/init.lua @@ -14,11 +14,22 @@ default.get_translator = S -- GUI related stuff minetest.register_on_joinplayer(function(player) - player:set_formspec_prepend([[ + -- Set formspec prepend + local formspec = [[ bgcolor[#080808BB;true] - background[5,5;1,1;gui_formbg.png;true] - background9[5,5;1,1;gui_formbg.png;true;10] - listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF] ]]) + listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF] ]] + local name = player:get_player_name() + local info = minetest.get_player_information(name) + if info.formspec_version > 1 then + formspec = formspec .. "background9[5,5;1,1;gui_formbg.png;true;10]" + else + formspec = formspec .. "background[5,5;1,1;gui_formbg.png;true]" + end + player:set_formspec_prepend(formspec) + + -- Set hotbar textures + player:hud_set_hotbar_image("gui_hotbar.png") + player:hud_set_hotbar_selected_image("gui_hotbar_selected.png") end) function default.get_hotbar_bg(x,y) diff --git a/mods/default/item_entity.lua b/mods/default/item_entity.lua index 2a61f08..8545436 100644 --- a/mods/default/item_entity.lua +++ b/mods/default/item_entity.lua @@ -20,7 +20,7 @@ local item = { minetest.sound_play("default_item_smoke", { pos = p, max_hear_distance = 8, - }) + }, true) minetest.add_particlespawner({ amount = 3, time = 0.1, diff --git a/mods/default/locale/default.ms.tr b/mods/default/locale/default.ms.tr new file mode 100644 index 0000000..b82c201 --- /dev/null +++ b/mods/default/locale/default.ms.tr @@ -0,0 +1,211 @@ +# textdomain: default +Locked Chest=Peti Berkunci +Locked Chest (owned by @1)=Peti Berkunci (milik @1) +You do not own this chest.=Ini bukan peti milik anda. +a locked chest=peti berkunci +Chest=Peti +Stick=Serpihan Kayu +Paper=Kertas +"@1" by @2="@1" oleh @2 +Book=Buku +Book with Text=Buku Bertulisan +Skeleton Key=Kunci Induk +Key to @1's @2=Kunci @2 milik @1 +Coal Lump=Longgokan Batu Arang +Iron Lump=Longgokan Besi +Copper Lump=Longgokan Tembaga +Tin Lump=Longgokan Timah +Mese Crystal=Kristal Mese +Gold Lump=Longgokan Emas +Diamond=Berlian +Clay Lump=Longgokan Tanah Liat +Steel Ingot=Jongkong Keluli +Copper Ingot=Jongkong Tembaga +Tin Ingot=Jongkong Timah +Bronze Ingot=Jongkong Gangsa +Gold Ingot=Jongkong Emas +Mese Crystal Fragment=Serpihan Mese +Clay Brick=Bata Tanah Liat +Obsidian Shard=Serpihan Obsidia +Flint=Batu Api +Blueberries=Beri Biru +Furnace is empty=Relau masih kosong +100% (output full)=100% (keluaran penuh) +@1%=@1% +Empty=Kosong +Not cookable=Tidak boleh dimasak +Furnace active=Relau aktif +Furnace inactive=Relau tidak aktif +(Item: @1; Fuel: @2)=(Item: @1; Bahan api: @2) +Furnace=Relau +Stone=Batu +Cobblestone=Batu Buntar +Stone Brick=Bata Batu +Stone Block=Bongkah Batu +Mossy Cobblestone=Batu Buntar Berlumut +Desert Stone=Batu Gurun +Desert Cobblestone=Batu Buntar Gurun +Desert Stone Brick=Bata Batu Gurun +Desert Stone Block=Bongkah Batu Gurun +Sandstone=Batu Pasir +Sandstone Brick=Bata Batu Pasir +Sandstone Block=Bongkah Batu Pasir +Desert Sandstone=Batu Pasir Gurun +Desert Sandstone Brick=Bata Batu Pasir Gurun +Desert Sandstone Block=Bongkah Batu Pasir Gurun +Silver Sandstone=Batu Pasir Perak +Silver Sandstone Brick=Bata Batu Pasir Perak +Silver Sandstone Block=Bongkah Batu Pasir Perak +Obsidian=Obsidia +Obsidian Brick=Bata Obsidia +Obsidian Block=Bongkah Obsidia +Dirt=Tanah +Dirt with Grass=Tanah Berumput +Dirt with Grass and Footsteps=Tanah Berumput dan Tapak Kaki +Dirt with Dry Grass=Tanah Berumput Kering +Dirt with Snow=Tanah Bersalji +Dirt with Rainforest Litter=Tanah Bersarap Hutan Hujan +Dirt with Coniferous Litter=Tanah Bersarap Hutan Konifer +Dry Dirt=Tanah Kering +Dry Dirt with Dry Grass=Tanah Kering Berumput Kering +Permafrost=Ibun Abadi +Permafrost with Stones=Ibun Abadi Berbatu +Permafrost with Moss=Ibun Abadi Berlumut +Sand=Pasir +Desert Sand=Pasir Gurun +Silver Sand=Pasir Perak +Gravel=Kelikir +Clay=Tanah Liat +Snow=Salji +Snow Block=Bongkah Salji +Ice=Ais +Cave Ice=Ais Gua +Apple Tree=Kayu Pokok Epal +Apple Wood Planks=Papan Kayu Epal +Apple Tree Sapling=Anak Pokok Epal +Apple Tree Leaves=Daun Pokok Epal +Apple=Epal +Apple Marker=Penanda Epal +Jungle Tree=Kayu Pokok Hutan +Jungle Wood Planks=Papan Kayu Hutan +Jungle Tree Leaves=Daun Pokok Hutan +Jungle Tree Sapling=Anak Pokok Hutan +Emergent Jungle Tree Sapling=Anak Pokok Hutan Kembang +Pine Tree=Kayu Pokok Pain +Pine Wood Planks=Papan Kayu Pain +Pine Needles=Daun Pokok Pain +Pine Tree Sapling=Anak Pokok Pain +Acacia Tree=Kayu Pokok Akasia +Acacia Wood Planks=Papan Kayu Akasia +Acacia Tree Leaves=Daun Pokok Akasia +Acacia Tree Sapling=Anak Pokok Akasia +Aspen Tree=Kayu Pokok Aspen +Aspen Wood Planks=Papan Kayu Aspen +Aspen Tree Leaves=Daun Pokok Aspen +Aspen Tree Sapling=Anak Pokok Aspen +Coal Ore=Bijih Batu Arang +Coal Block=Bongkah Batu Arang +Iron Ore=Bijih Besi +Steel Block=Bongkah Keluli +Copper Ore=Bijih Tembaga +Copper Block=Bongkah Tembaga +Tin Ore=Bijih Timah +Tin Block=Bongkah Timah +Bronze Block=Bongkah Gangsa +Mese Ore=Bijih Mese +Mese Block=Bongkah Mese +Gold Ore=Bijih Emas +Gold Block=Bongkah Emas +Diamond Ore=Bijih Intan +Diamond Block=Bongkah Intan +Cactus=Kaktus +Large Cactus Seedling=Benih Kaktus Besar +Papyrus=Papirus +Dry Shrub=Pokok Renek Kering +Jungle Grass=Rumput Hutan +Grass=Rumput +Dry Grass=Rumput Kering +Fern=Paku Pakis +Marram Grass=Rumput Maram +Bush Stem=Batang Belukar +Bush Leaves=Daun Belukar +Bush Sapling=Anak Belukar +Blueberry Bush Leaves with Berries=Daun Belukar Beri Biru Berberi +Blueberry Bush Leaves=Daun Belukar Beri Biru +Blueberry Bush Sapling=Anak Belukar Beri Biru +Acacia Bush Stem=Batang Belukar Akasia +Acacia Bush Leaves=Daun Belukar Akasia +Acacia Bush Sapling=Anak Belukar Akasia +Pine Bush Stem=Batang Belukar Pain +Pine Bush Needles=Daun Belukar Pain +Pine Bush Sapling=Anak Belukar Pain +Kelp=Kelpa +Green Coral=Batu Karang Hijau +Pink Coral=Batu Karang Merah Jambu +Cyan Coral=Batu Karang Biru Kehijauan +Brown Coral=Batu Karang Perang +Orange Coral=Batu Karang Jingga +Coral Skeleton= Rangka Karang +Water Source=Sumber Air +Flowing Water=Air Mengalir +River Water Source=Sumber Air Sungai +Flowing River Water=Air Sungai Mengalir +Lava Source=Sumber Lava +Flowing Lava=Lava Mengalir +Empty Bookshelf=Rak Buku Kosong +Bookshelf (@1 written, @2 empty books)=Rak Buku (@1 buku bertulis, @2 buku kosong) +Bookshelf=Rak Buku +Text too long=Tulisan terlalu panjang +Wooden Sign=Papan Tanda Kayu +Steel Sign=Papan Tanda Keluli +Wooden Ladder=Tangga Panjat Kayu +Steel Ladder=Tangga Panjat Keluli +Apple Wood Fence=Pagar Kayu Epal +Acacia Wood Fence=Pagar Kayu Akasia +Jungle Wood Fence=Pagar Kayu Hutan +Pine Wood Fence=Pagar Kayu Pain +Aspen Wood Fence=Pagar Kayu Aspen +Apple Wood Fence Rail=Pagar Rel Kayu Epal +Acacia Wood Fence Rail=Pagar Rel Kayu Akasia +Jungle Wood Fence Rail=Pagar Rel Kayu Hutan +Pine Wood Fence Rail=Pagar Rel Kayu Pain +Aspen Wood Fence Rail=Pagar Rel Kayu Aspen +Glass=Kaca +Obsidian Glass=Kaca Obsidia +Brick Block=Bongkah Bata +Mese Lamp=Lampu Mese +Mese Post Light=Lampu Tiang Mese +Cloud=Awan +Wooden Pickaxe=Beliung Kayu +Stone Pickaxe=Beliung Batu +Bronze Pickaxe=Beliung Gangsa +Steel Pickaxe=Beliung Keluli +Mese Pickaxe=Beliung Mese +Diamond Pickaxe=Beliung Intan +Wooden Shovel=Penyodok Kayu +Stone Shovel=Penyodok Batu +Bronze Shovel=Penyodok Gangsa +Steel Shovel=Penyodok Keluli +Mese Shovel=Penyodok Mese +Diamond Shovel=Penyodok Intan +Wooden Axe=Kapak Kayu +Stone Axe=Kapak Batu +Bronze Axe=Kapak Gangsa +Steel Axe=Kapak Keluli +Mese Axe=Kapak Mese +Diamond Axe=Kapak Intan +Wooden Sword=Pedang Kayu +Stone Sword=Pedang Batu +Bronze Sword=Pedang Gangsa +Steel Sword=Pedang Keluli +Mese Sword=Pedang Mese +Diamond Sword=Pedang Intan +Key=Kunci +Torch=Obor +@1 will intersect protection on growth.=@1 akan masuk kawasan perlindungan lain apabila ia tumbuh. +Title:=Tajuk: +Contents:=Kandungan: +Save=Simpan +by @1=oleh @1 +Page @1 of @2=Ms. @1 / @2 +"@1"="@1" diff --git a/mods/default/locale/default.ru.tr b/mods/default/locale/default.ru.tr new file mode 100644 index 0000000..214f669 --- /dev/null +++ b/mods/default/locale/default.ru.tr @@ -0,0 +1,211 @@ +# textdomain: default +Locked Chest=Заблокированный Сундук +Locked Chest (owned by @1)=Заблокированный Сундук (владелец: @1) +You do not own this chest.=Вы не владелец этого сундука. +a locked chest=заблокированный сундук +Chest=Сундук +Stick=Палка +Paper=Бумага +"@1" by @2="@1" @2 +Book=Книга +Book with Text=Книга с Текстом +Skeleton Key=Ключ Скелета +Key to @1's @2=Ключ к @2 от @1 +Coal Lump=Кусок Угля +Iron Lump=Кусок Железа +Copper Lump=Кусок Меди +Tin Lump=Кусок Олова +Mese Crystal=Кристалл Месе +Gold Lump=Кусок Золота +Diamond=Алмаз +Clay Lump=Ком Глины +Steel Ingot=Железный Брусок +Copper Ingot=Медный Брусок +Tin Ingot=Оловянный Брусок +Bronze Ingot=Бронзовый Брусок +Gold Ingot=Золотой Брусок +Mese Crystal Fragment=Осколок Кристалла Месе +Clay Brick=Глиняный Кирпич +Obsidian Shard=Обсидиановый Осколок +Flint=Огниво +Blueberries=Черника +Furnace is empty=Печь пустая +100% (output full)=100% (полное приготовление) +@1%=@1% +Empty=Пустое +Not cookable=Не может быть приготовлено +Furnace active=Печь зажжена +Furnace inactive=Печь не зажжена +(Item: @1; Fuel: @2)=(Предмет: @1; Топливо: @2) +Furnace=Печь +Stone=Камень +Cobblestone=Булыжник +Stone Brick=Каменный Кирпич +Stone Block=Каменный Блок +Mossy Cobblestone=Мшистый Булыжник +Desert Stone=Пустынный Камень +Desert Cobblestone=Пустынный Булыжник +Desert Stone Brick=Пустынный Каменный Кирпич +Desert Stone Block=Пустынный Каменный Блок +Sandstone=Песчаник +Sandstone Brick=Песчаниковый Кирпич +Sandstone Block=Песчаниковый Блок +Desert Sandstone=Пустынный Песчаник +Desert Sandstone Brick=Пустынный Песчаниковый Кирпич +Desert Sandstone Block=Пустынный Песчаниковый Блок +Silver Sandstone=Серебряный Песчаник +Silver Sandstone Brick=Серебряный Песчаниковый Кирпич +Silver Sandstone Block=Серебряный Песчаниковый Блок +Obsidian=Обсидиан +Obsidian Brick=Обсидиановый Кирпич +Obsidian Block=Обсидиановый Блок +Dirt=Земля +Dirt with Grass=Земля с Травой +Dirt with Grass and Footsteps=Земля с Травой и Следами +Dirt with Dry Grass=Земля с Сухой Травой +Dirt with Snow=Земля Со Снегом +Dirt with Rainforest Litter=Земля с Тропической Подстилкой +Dirt with Coniferous Litter=Земля с Сосновой Подстилкой +Dry Dirt=Сухая Земля +Dry Dirt with Dry Grass=Сухая Земля с Сухой Травой +Permafrost=Замороженная Почва +Permafrost with Stones=Замороженная Почва с Камнями +Permafrost with Moss=Замороженная Почва с Мхом +Sand=Песок +Desert Sand=Пустынный Песок +Silver Sand=Серебряный Песок +Gravel=Гравий +Clay=Глиняный Блок +Snow=Снег +Snow Block=Снежный Блок +Ice=Лёд +Cave Ice=Пещерный Лёд +Apple Tree=Яблоневый Ствол +Apple Wood Planks=Яблоневые Деревянные Доски +Apple Tree Sapling=Яблоневый Саженец +Apple Tree Leaves=Яблоневая Листва +Apple=Яблоко +Apple Marker=Яблочная Метка +Jungle Tree=Ствол Тропического Дерева +Jungle Wood Planks=Деревянные Доски Тропического Дерева +Jungle Tree Leaves=Листва Тропического Дерева +Jungle Tree Sapling=Саженец Тропического Дерева +Emergent Jungle Tree Sapling=Выросший Саженец Тропического Дерева +Pine Tree=Сосновый Ствол +Pine Wood Planks=Сосновые Деревянные Доски +Pine Needles=Сосновая Хвоя +Pine Tree Sapling=Сосновый Саженец +Acacia Tree=Ствол Акации +Acacia Wood Planks=Деревянные Доски Акации +Acacia Tree Leaves=Листва Акации +Acacia Tree Sapling=Саженец Акации +Aspen Tree=Осиновый Ствол +Aspen Wood Planks=Осиновые Деревянные Доски +Aspen Tree Leaves=Осиновая Листва +Aspen Tree Sapling=Осиновый Саженец +Coal Ore=Уголь +Coal Block=Угольный Блок +Iron Ore=Железная Руда +Steel Block=Стальной Блок +Copper Ore=Медная Руда +Copper Block=Медный Блок +Tin Ore=Оловянная Руда +Tin Block=Оловянный Блок +Bronze Block=Бронзовый Блок +Mese Ore=Месевая Руда +Mese Block=Месевый Блок +Gold Ore=Золотая Руда +Gold Block=Золотой Блок +Diamond Ore=Алмаз +Diamond Block=Алмазный Блок +Cactus=Кактус +Large Cactus Seedling=Кактусовый Саженец +Papyrus=Папирус +Dry Shrub=Сухой Куст +Jungle Grass=Тропическая Трава +Grass=Трава +Dry Grass=Сухая Трава +Fern=Папоротник +Marram Grass=Песколюб +Bush Stem=Ствол Яблочного Деревца +Bush Leaves=Листья Яблочного Деревца +Bush Sapling=Саженца яблочного деревца +Blueberry Bush Leaves with Berries=Куст Черники с Ягодами +Blueberry Bush Leaves=Куст Черники +Blueberry Bush Sapling=Саженца Куста Черники +Acacia Bush Stem=Ствол Деревца Акации +Acacia Bush Leaves=Листья Деревца Акации +Acacia Bush Sapling=Саженца Деревца Акации +Pine Bush Stem=Сосновое Деревце +Pine Bush Needles=Хвоя Соснового Деревца +Pine Bush Sapling=Саженца Соснового Деревца +Kelp=Ламинария +Green Coral=Зеленый Коралл +Pink Coral=Розовый Коралл +Cyan Coral=Голубой Коралл +Brown Coral=Бурый Коралл +Orange Coral=Оранжевый Коралл +Coral Skeleton=Коралловый Остов +Water Source=Водный Источник +Flowing Water=Текущая Вода +River Water Source=Речной Водный Источник +Flowing River Water=Текущая Речная Вода +Lava Source=Лавовый Источник +Flowing Lava=Текущая Лава +Empty Bookshelf=Пустая Книжная Полка +Bookshelf (@1 written, @2 empty books)=Книжная Полка (@1 написано, @2 чистые книги) +Bookshelf=Книжная Полка +Text too long=Текст слишком длинный +Wooden Sign=Деревянная Табличка +Steel Sign=Стальная Табличка +Wooden Ladder=Деревянная Лестница +Steel Ladder=Стальная Лестница +Apple Wood Fence=Яблоневый Деревянный Забор +Acacia Wood Fence=Деревянный Забор Из Акации +Jungle Wood Fence=Деревянный Забор Из Тропического Дерева +Pine Wood Fence=Сосновый Деревянный Забор +Aspen Wood Fence=Осиновый Деревянный Забор +Apple Wood Fence Rail=Яблоневый Деревянный Реечный Забор +Acacia Wood Fence Rail=Деревянный Реечный Забор Из Акации +Jungle Wood Fence Rail=Деревянный Реечный Забор Из Тропического Дерева +Pine Wood Fence Rail=Сосновый Деревянный Реечный Забор +Aspen Wood Fence Rail=Осиновый Деревянный Реечный Забор +Glass=Стекло +Obsidian Glass=Обсидиановое Стекло +Brick Block=Кирпичный Блок +Mese Lamp=Месе Лампа +Mese Post Light=Столб с Месе Фонарем +Cloud=Облако +Wooden Pickaxe=Деревянная Кирка +Stone Pickaxe=Каменная Кирка +Bronze Pickaxe=Бронзовая Кирка +Steel Pickaxe=Стальная Кирка +Mese Pickaxe=Месе Кирка +Diamond Pickaxe=Алмазная Кирка +Wooden Shovel=Деревянная Лопата +Stone Shovel=Каменная Лопата +Bronze Shovel=Бронзовая Лопата +Steel Shovel=Стальная Лопата +Mese Shovel=Месе Лопата +Diamond Shovel=Алмазная Лопата +Wooden Axe=Деревянный Топор +Stone Axe=Каменный Топор +Bronze Axe=Бронзовый Топор +Steel Axe=Стальной Топор +Mese Axe=Месе Топор +Diamond Axe=Алмазный Топор +Wooden Sword=Деревянный Меч +Stone Sword=Каменный Меч +Bronze Sword=Бронзовый Меч +Steel Sword=Стальной Меч +Mese Sword=Месе Меч +Diamond Sword=Алмазный Меч +Key=Ключ +Torch=Факел +@1 will intersect protection on growth.=@1 пересечёт защиту по росту. +Title:=Заголовок: +Contents:=Содержимое: +Save=Сохранить +by @1=@1 +Page @1 of @2=Страница @1 из @2 +"@1"="@1" diff --git a/mods/default/locale/default.se.tr b/mods/default/locale/default.se.tr new file mode 100644 index 0000000..d123530 --- /dev/null +++ b/mods/default/locale/default.se.tr @@ -0,0 +1,211 @@ +## textdomain: default +Locked Chest=Låst kista +Locked Chest (owned by @1)=Låst kista (Ägd av @1) +You do not own this chest.=Du äger inte denna kistan. +a locked chest=en låst kista +Chest=Kista +Stick=Pinne +Paper=Papper +"@1" by @2="@1" av @2 +Book=Bok +Book with Text=Bok med text +Skeleton Key=Skelett Nyckel +Key to @1's @2=Nyckel till @1s @2 +Coal Lump=Kol Klumo +Iron Lump=Järn Klump +Copper Lump=Koppar Klump +Tin Lump=Tenn Klump +Mese Crystal=Mese Kristall +Gold Lump=Guld Klump +Diamond=Diamant +Clay Lump=Lerklump +Steel Ingot=Stål tacka +Copper Ingot=Koppar tacka +Tin Ingot=Tenn tacka +Bronze Ingot=Brons tacka +Gold Ingot=Guld tacka +Mese Crystal Fragment=Mese Kristall Fragment +Clay Brick=Tegelsten +Obsidian Shard=Obsidian Skärva +Flint=Flinta +Blueberries=Blåbär +Furnace is empty=Ugnen är tom +100% (output full)=100% (utgången full) +@1%=@1% +Empty=Tom +Not cookable=Inte kokbar +Furnace active=Ugn aktiv +Furnace inactive=Ugn inaktiv +(Item: @1; Fuel: @2)=(Sak: @1; Bränsle: @2) +Furnace=Ugn +Stone=Sten +Cobblestone=Kullersten +Stone Brick=Stentegel +Stone Block=Sten block +Mossy Cobblestone=Mossig kullersten +Desert Stone=Öken sten +Desert Cobblestone=Öken kullersten +Desert Stone Brick=Öken stentegel +Desert Stone Block=Öken sten block +Sandstone=Sandsten +Sandstone Brick=Sandstenstegel +Sandstone Block=Sandsten block +Desert Sandstone=Öken sandsten +Desert Sandstone Brick=Öken Sandstenstegel +Desert Sandstone Block=Öken sandsten block +Silver Sandstone=Silver sandsten +Silver Sandstone Brick=Silver Sandstenstegel +Silver Sandstone Block=Silver sandsten block +Obsidian=Obsidian +Obsidian Brick=Obsidiantegel +Obsidian Block=Obsidian block +Dirt=Jord +Dirt with Grass=Jord med gräs +Dirt with Grass and Footsteps=Jord med gräs och fotsteg +Dirt with Dry Grass=Jord med torrt gräs +Dirt with Snow=Jord med snö +Dirt with Rainforest Litter=Jord med regnskogströ +Dirt with Coniferous Litter=Jord med Barrträd +Dry Dirt=Torr jord +Dry Dirt with Dry Grass=Torr jord med torrt gräs +Permafrost=Permafrost +Permafrost with Stones=Permafrost med sten +Permafrost with Moss=Permafrost med mossa +Sand=Sand +Desert Sand=Öken sand +Silver Sand=Silver sand +Gravel=Grus +Clay=Lera +Snow=Snö +Snow Block=Snö block +Ice=Is +Cave Ice=Grott Is +Apple Tree=Äpple Träd +Apple Wood Planks=Äpple Plankor +Apple Tree Sapling=Äpple Planta +Apple Tree Leaves=Äpple Löv +Apple=Äpple +Apple Marker=Äpple Markör +Jungle Tree=Djungel Träd +Jungle Wood Planks=Djungel Plankor +Jungle Tree Leaves=Djungel Löv +Jungle Tree Sapling=Djungel Planta +Emergent Jungle Tree Sapling=Nybliven Djungel Planta +Pine Tree=Tall +Pine Wood Planks= Tall Plankor +Pine Needles=Granbarr +Pine Tree Sapling=Tall Planta +Acacia Tree=Akacia Träd +Acacia Wood Planks=Akacia Plankor +Acacia Tree Leaves=Akacia Löv +Acacia Tree Sapling=Akacia Planta +Aspen Tree=Asp +Aspen Wood Planks=Asp Plankor +Aspen Tree Leaves=Asp Löv +Aspen Tree Sapling=Asp Planta +Coal Ore=Kol Malm +Coal Block=Kol Block +Iron Ore=Järn Malm +Steel Block=Stål Block +Copper Ore=Koppar Malm +Copper Block=Koppar Block +Tin Ore=Tenn Malm +Tin Block=Tenn Block +Bronze Block=Brons Block +Mese Ore=Mese Malm +Mese Block=Mese Block +Gold Ore=Guld Malm +Gold Block=Guld Block +Diamond Ore=Diamant Malm +Diamond Block=Diamant Block +Cactus=Kaktus +Large Cactus Seedling=Stor kaktusplanta +Papyrus=Papyrus +Dry Shrub=Torr Buske +Jungle Grass=Djungel Gräs +Grass=Gräs +Dry Grass=Torrt Gräs +Fern=Ormbunke +Marram Grass=Marram Gräs +Bush Stem=Busk Stam +Bush Leaves=Busk Löv +Bush Sapling=Busk Planta +Blueberry Bush Leaves with Berries=Blåbärsbusks Löv med Bär +Blueberry Bush Leaves=Blåbärsbusks Löv +Blueberry Bush Sapling=Blåbärsbusks Plantga +Acacia Bush Stem=Akacia Busks Stam +Acacia Bush Leaves=Akacia Busks Löv +Acacia Bush Sapling=Akacia Busks Planta +Pine Bush Stem=Tall Busks Stam +Pine Bush Needles=Tall Busks Granbarr +Pine Bush Sapling=Tall Busks Planta +Kelp=Brunalg +Green Coral=Grön Korall +Pink Coral=Rosa Korall +Cyan Coral=Cyan Korall +Brown Coral=Brun Korall +Orange Coral=Orange Korall +Coral Skeleton=Korall Skelett +Water Source=Vattenkälla +Flowing Water=Flödande Vatten +River Water Source=Flodvattenkälla +Flowing River Water=Flödande Flodvatten +Lava Source=Lavakälla +Flowing Lava=Flödande Lava +Empty Bookshelf=Tom Bokhylla +Bookshelf (@1 written, @2 empty books)=Bokhylla (@1 skriva, @2 tomma böcker) +Bookshelf=Bokhylla +Text too long=Text för lång +Wooden Sign=Trä Skylt +Steel Sign=Stål Skylt +Wooden Ladder=Trä Stege +Steel Ladder=Stål Stege +Apple Wood Fence=Äpple Trä Staket +Acacia Wood Fence=Akacia Trä Staket +Jungle Wood Fence=Djungel Trä Staket +Pine Wood Fence=Tall Trä Staket +Aspen Wood Fence=Asp Trä Staket +Apple Wood Fence Rail=Äpple Trä Staket Pinne +Acacia Wood Fence Rail=Akacia Trä Staket Pinne +Jungle Wood Fence Rail=Djungel Trä Staket Pinne +Pine Wood Fence Rail=Tall Trä Staket Pinne +Aspen Wood Fence Rail=Asp Trä Staket Pinne +Glass=Glas +Obsidian Glass=Obsidian Glas +Brick Block=Tegelstens Block +Mese Lamp=Mese Lampa +Mese Post Light=Mese Postljus +Cloud=Moln +Wooden Pickaxe=Trä Hacka +Stone Pickaxe=Sten Hacka +Bronze Pickaxe=Brons Hacka +Steel Pickaxe=Stål Hacka +Mese Pickaxe=Mese Hacka +Diamond Pickaxe=Diamant Hacka +Wooden Shovel=Trä Spade +Stone Shovel=Sten Spade +Bronze Shovel=Brons Spade +Steel Shovel=Stål Spade +Mese Shovel=Mese Spade +Diamond Shovel=Diamant Spade +Wooden Axe=Trä Yxa +Stone Axe=Sten Yxa +Bronze Axe=Brons Yxa +Steel Axe=Stål Yxa +Mese Axe=Mese Yxa +Diamond Axe=Diamant Yxa +Wooden Sword=Trä Svärd +Stone Sword=Sten Svärd +Bronze Sword=Brons Svärd +Steel Sword=Stål Svärd +Mese Sword=Mese Svärd +Diamond Sword=Diamant Svärd +Key=Nyckel +Torch=Fakla +@1 will intersect protection on growth.=@1 kommer korsa skyddet mot tillväxt. +Title:=Titel: +Contents:=Innehåll: +Save=Spara +by @1=av @1 +Page @1 of @2=Sida @1 av @2 +"@1"="@1" \ No newline at end of file diff --git a/mods/default/locale/default.zh_CN.tr b/mods/default/locale/default.zh_CN.tr new file mode 100644 index 0000000..ddd9471 --- /dev/null +++ b/mods/default/locale/default.zh_CN.tr @@ -0,0 +1,211 @@ +# textdomain: default +Locked Chest=已上锁的箱子 +Locked Chest (owned by @1)=已上锁的箱子(属于@1所有) +You do not own this chest.=这个箱子不属于你所有。 +a locked chest=一个已上锁的箱子 +Chest=箱子 +Stick=棒 +Paper=纸 +"@1" by @2="@1" by @2 +Book=书 +Book with Text=带文字的书 +Skeleton Key=万能钥匙 +Key to @1's @2=@1的@2的钥匙 +Coal Lump=煤块 +Iron Lump=铁块 +Copper Lump=铜块 +Tin Lump=锡块 +Mese Crystal=黄石晶体 +Gold Lump=金块 +Diamond=钻石 +Clay Lump=粘土块 +Steel Ingot=铁锭 +Copper Ingot=铜锭 +Tin Ingot=锡锭 +Bronze Ingot=青铜锭 +Gold Ingot=金锭 +Mese Crystal Fragment=黄石晶体碎片 +Clay Brick=粘土砖 +Obsidian Shard=黑曜石碎片 +Flint=燧石 +Blueberries=蓝莓 +Furnace is empty=熔炉是空的 +100% (output full)=100%(输出已满) +@1%=@1% +Empty=空 +Not cookable=不可烹饪 +Furnace active=熔炉正在运转 +Furnace inactive=熔炉未使用 +(Item: @1; Fuel: @2)=(项目:@1;燃料:@2) +Furnace=熔炉 +Stone=石 +Cobblestone=鹅卵石 +Stone Brick=石砖 +Stone Block=石方块 +Mossy Cobblestone=苔藓覆盖的鹅卵石 +Desert Stone=沙漠石 +Desert Cobblestone=沙漠鹅卵石 +Desert Stone Brick=沙漠鹅卵石砖 +Desert Stone Block=沙漠鹅卵石方块 +Sandstone=砂岩 +Sandstone Brick=砂岩砖 +Sandstone Block=砂岩方块 +Desert Sandstone=沙漠砂岩 +Desert Sandstone Brick=沙漠砂岩砖 +Desert Sandstone Block=沙漠砂岩方块 +Silver Sandstone=银砂岩 +Silver Sandstone Brick=银砂岩砖 +Silver Sandstone Block=银砂岩方块 +Obsidian=黑曜石 +Obsidian Brick=黑曜石砖 +Obsidian Block=黑曜石方块 +Dirt=土 +Dirt with Grass=带草的土 +Dirt with Grass and Footsteps=带草的土及脚印 +Dirt with Dry Grass=带干草的土 +Dirt with Snow=带雪的土 +Dirt with Rainforest Litter=雨林腐土 +Dirt with Coniferous Litter=针叶林腐土 +Dry Dirt=干土 +Dry Dirt with Dry Grass=干土和干草 +Permafrost=多年冻土 +Permafrost with Stones=带石头的多年冻土 +Permafrost with Moss=生苔的多年冻土 +Sand=沙 +Desert Sand=沙漠沙 +Silver Sand=银沙 +Gravel=沙砾 +Clay=粘土 +Snow=雪 +Snow Block=雪方块 +Ice=冰 +Cave Ice=洞穴冰 +Apple Tree=苹果树 +Apple Wood Planks=苹果树木板 +Apple Tree Sapling=苹果树苗 +Apple Tree Leaves=苹果树叶 +Apple=苹果 +Apple Marker=苹果标记 +Jungle Tree=丛林树 +Jungle Wood Planks=丛林树木板 +Jungle Tree Leaves=丛林树叶 +Jungle Tree Sapling=丛林树苗 +Emergent Jungle Tree Sapling=应急丛林树苗 +Pine Tree=松树 +Pine Wood Planks=松树木板 +Pine Needles=松针 +Pine Tree Sapling=松树树苗 +Acacia Tree=相思树 +Acacia Wood Planks=相思树木板 +Acacia Tree Leaves=相思树叶 +Acacia Tree Sapling=相思树树苗 +Aspen Tree=白杨树 +Aspen Wood Planks=白杨树木板 +Aspen Tree Leaves=白杨树叶 +Aspen Tree Sapling=白杨树树苗 +Coal Ore=煤炭矿石 +Coal Block=煤炭方块 +Iron Ore=铁矿石 +Steel Block=钢方块 +Copper Ore=铜矿石 +Copper Block=铜方块 +Tin Ore=锡矿石 +Tin Block=锡方块 +Bronze Block=青铜方块 +Mese Ore=黄石矿石 +Mese Block=黄石方块 +Gold Ore=金矿石 +Gold Block=金方块 +Diamond Ore=钻石矿石 +Diamond Block=钻石方块 +Cactus=仙人掌 +Large Cactus Seedling=大仙人掌苗 +Papyrus=莎草纸 +Dry Shrub=干灌木 +Jungle Grass=丛林草 +Grass=草 +Dry Grass=干草 +Fern=蕨 +Marram Grass=滨草 +Bush Stem=灌木 +Bush Leaves=灌木叶 +Bush Sapling=灌木苗 +Blueberry Bush Leaves with Berries=蓝莓灌木叶与浆果 +Blueberry Bush Leaves=蓝莓灌木叶 +Blueberry Bush Sapling=蓝莓灌木苗 +Acacia Bush Stem=相思灌木 +Acacia Bush Leaves=相思灌木叶 +Acacia Bush Sapling=相思灌木苗 +Pine Bush Stem=松树灌木 +Pine Bush Needles=松树灌木针 +Pine Bush Sapling=松树灌木苗 +Kelp=海带 +Green Coral=绿珊瑚 +Pink Coral=淡红珊瑚 +Cyan Coral=青珊瑚 +Brown Coral=棕珊瑚 +Orange Coral=橙珊瑚 +Coral Skeleton=珊瑚骨架 +Water Source=水方块 +Flowing Water=流动的水 +River Water Source=河水方块 +Flowing River Water=流动的河水 +Lava Source=岩浆方块 +Flowing Lava=流动的岩浆 +Empty Bookshelf=空书架 +Bookshelf (@1 written, @2 empty books)=书架(@1本有字的书,@2本空书) +Bookshelf=书架 +Text too long=文字太长 +Wooden Sign=木牌 +Steel Sign=铁牌 +Wooden Ladder=木梯子 +Steel Ladder=铁梯子 +Apple Wood Fence=苹果木栅栏 +Acacia Wood Fence=相思木栅栏 +Jungle Wood Fence=丛林木栅栏 +Pine Wood Fence=松木栅栏 +Aspen Wood Fence=白杨木栅栏 +Apple Wood Fence Rail=苹果木栏杆 +Acacia Wood Fence Rail=相思木栏杆 +Jungle Wood Fence Rail=丛林木栏杆 +Pine Wood Fence Rail=松木栏杆 +Aspen Wood Fence Rail=白杨木栏杆 +Glass=玻璃 +Obsidian Glass=黑曜石玻璃 +Brick Block=砖方块 +Mese Lamp=黄石灯 +Mese Post Light=黄石柱灯 +Cloud=云 +Wooden Pickaxe=木镐 +Stone Pickaxe=石镐 +Bronze Pickaxe=青铜镐 +Steel Pickaxe=铁镐 +Mese Pickaxe=黄石镐 +Diamond Pickaxe=钻石镐 +Wooden Shovel=木铲 +Stone Shovel=石铲 +Bronze Shovel=青铜铲 +Steel Shovel=铁铲 +Mese Shovel=黄石铲 +Diamond Shovel=钻石铲 +Wooden Axe=木斧 +Stone Axe=石斧 +Bronze Axe=青铜斧 +Steel Axe=铁斧 +Mese Axe=黄石斧 +Diamond Axe=钻石斧 +Wooden Sword=木剑 +Stone Sword=石剑 +Bronze Sword=青铜剑 +Steel Sword=铁剑 +Mese Sword=黄石剑 +Diamond Sword=钻石剑 +Key=钥匙 +Torch=火把 +@1 will intersect protection on growth.=@1将与增长的保护相交。 +Title:=标题: +Contents:=内容: +Save=保存 +by @1=由@1 +Page @1 of @2=第@1页,共@2页。 +"@1"="@1" diff --git a/mods/default/locale/default.zh_TW.tr b/mods/default/locale/default.zh_TW.tr new file mode 100644 index 0000000..6b06b8a --- /dev/null +++ b/mods/default/locale/default.zh_TW.tr @@ -0,0 +1,211 @@ +# textdomain: default +Locked Chest=已上鎖的箱子 +Locked Chest (owned by @1)=已上鎖的箱子(屬於@1所有) +You do not own this chest.=這個箱子不屬於你所有。 +a locked chest=一個已上鎖的箱子 +Chest=箱子 +Stick=棒 +Paper=紙 +"@1" by @2="@1" by @2 +Book=書 +Book with Text=帶文字的書 +Skeleton Key=萬能鑰匙 +Key to @1's @2=@1的@2的鑰匙 +Coal Lump=煤塊 +Iron Lump=鐵塊 +Copper Lump=銅塊 +Tin Lump=錫塊 +Mese Crystal=黃石晶體 +Gold Lump=金塊 +Diamond=鑽石 +Clay Lump=粘土塊 +Steel Ingot=鐵錠 +Copper Ingot=銅錠 +Tin Ingot=錫錠 +Bronze Ingot=青銅錠 +Gold Ingot=金錠 +Mese Crystal Fragment=黃石晶體碎片 +Clay Brick=粘土磚 +Obsidian Shard=黑曜石碎片 +Flint=燧石 +Blueberries=藍莓 +Furnace is empty=熔爐是空的 +100% (output full)=100%(輸出已滿) +@1%=@1% +Empty=空 +Not cookable=不可烹飪 +Furnace active=熔爐正在運轉 +Furnace inactive=熔爐未使用 +(Item: @1; Fuel: @2)=(項目:@1;燃料:@2) +Furnace=熔爐 +Stone=石 +Cobblestone=鵝卵石 +Stone Brick=石磚 +Stone Block=石方塊 +Mossy Cobblestone=苔蘚覆蓋的鵝卵石 +Desert Stone=沙漠石 +Desert Cobblestone=沙漠鵝卵石 +Desert Stone Brick=沙漠鵝卵石磚 +Desert Stone Block=沙漠鵝卵石方塊 +Sandstone=砂岩 +Sandstone Brick=砂岩磚 +Sandstone Block=砂岩方塊 +Desert Sandstone=沙漠砂岩 +Desert Sandstone Brick=沙漠砂岩磚 +Desert Sandstone Block=沙漠砂岩方塊 +Silver Sandstone=銀砂岩 +Silver Sandstone Brick=銀砂岩磚 +Silver Sandstone Block=銀砂岩方塊 +Obsidian=黑曜石 +Obsidian Brick=黑曜石磚 +Obsidian Block=黑曜石方塊 +Dirt=土 +Dirt with Grass=帶草的土 +Dirt with Grass and Footsteps=帶草的土及腳印 +Dirt with Dry Grass=帶乾草的土 +Dirt with Snow=帶雪的土 +Dirt with Rainforest Litter=雨林腐土 +Dirt with Coniferous Litter=針葉林腐土 +Dry Dirt=乾土 +Dry Dirt with Dry Grass=乾土和乾草 +Permafrost=多年凍土 +Permafrost with Stones=帶石頭的多年凍土 +Permafrost with Moss=生苔的多年凍土 +Sand=沙 +Desert Sand=沙漠沙 +Silver Sand=銀沙 +Gravel=沙礫 +Clay=粘土 +Snow=雪 +Snow Block=雪方塊 +Ice=冰 +Cave Ice=洞穴冰 +Apple Tree=蘋果樹 +Apple Wood Planks=蘋果樹木板 +Apple Tree Sapling=蘋果樹苗 +Apple Tree Leaves=蘋果樹葉 +Apple=蘋果 +Apple Marker=蘋果標記 +Jungle Tree=叢林樹 +Jungle Wood Planks=叢林樹木板 +Jungle Tree Leaves=叢林樹葉 +Jungle Tree Sapling=叢林樹苗 +Emergent Jungle Tree Sapling=應急叢林樹苗 +Pine Tree=松樹 +Pine Wood Planks=松樹木板 +Pine Needles=松針 +Pine Tree Sapling=松樹樹苗 +Acacia Tree=相思樹 +Acacia Wood Planks=相思樹木板 +Acacia Tree Leaves=相思樹葉 +Acacia Tree Sapling=相思樹樹苗 +Aspen Tree=白楊樹 +Aspen Wood Planks=白楊樹木板 +Aspen Tree Leaves=白楊樹葉 +Aspen Tree Sapling=白楊樹樹苗 +Coal Ore=煤炭礦石 +Coal Block=煤炭方塊 +Iron Ore=鐵礦石 +Steel Block=鋼方塊 +Copper Ore=銅礦石 +Copper Block=銅方塊 +Tin Ore=錫礦石 +Tin Block=錫方塊 +Bronze Block=青銅方塊 +Mese Ore=黃石礦石 +Mese Block=黃石方塊 +Gold Ore=金礦石 +Gold Block=金方塊 +Diamond Ore=鑽石礦石 +Diamond Block=鑽石方塊 +Cactus=仙人掌 +Large Cactus Seedling=大仙人掌苗 +Papyrus=莎草紙 +Dry Shrub=幹灌木 +Jungle Grass=叢林草 +Grass=草 +Dry Grass=乾草 +Fern=蕨 +Marram Grass=濱草 +Bush Stem=灌木 +Bush Leaves=灌木葉 +Bush Sapling=灌木苗 +Blueberry Bush Leaves with Berries=藍莓灌木葉與漿果 +Blueberry Bush Leaves=藍莓灌木葉 +Blueberry Bush Sapling=藍莓灌木苗 +Acacia Bush Stem=相思灌木 +Acacia Bush Leaves=相思灌木葉 +Acacia Bush Sapling=相思灌木苗 +Pine Bush Stem=松樹灌木 +Pine Bush Needles=松樹灌木針 +Pine Bush Sapling=松樹灌木苗 +Kelp=海帶 +Green Coral=綠珊瑚 +Pink Coral=淡紅珊瑚 +Cyan Coral=青珊瑚 +Brown Coral=棕珊瑚 +Orange Coral=橙珊瑚 +Coral Skeleton=珊瑚骨架 +Water Source=水方塊 +Flowing Water=流動的水 +River Water Source=河水方塊 +Flowing River Water=流動的河水 +Lava Source=岩漿方塊 +Flowing Lava=流動的岩漿 +Empty Bookshelf=空書架 +Bookshelf (@1 written, @2 empty books)=書架(@1本有字的書,@2本空書) +Bookshelf=書架 +Text too long=文字太長 +Wooden Sign=木牌 +Steel Sign=鐵牌 +Wooden Ladder=木梯子 +Steel Ladder=鐵梯子 +Apple Wood Fence=蘋果木柵欄 +Acacia Wood Fence=相思木柵欄 +Jungle Wood Fence=叢林木柵欄 +Pine Wood Fence=松木柵欄 +Aspen Wood Fence=白楊木柵欄 +Apple Wood Fence Rail=蘋果木欄杆 +Acacia Wood Fence Rail=相思木欄杆 +Jungle Wood Fence Rail=叢林木欄杆 +Pine Wood Fence Rail=松木欄杆 +Aspen Wood Fence Rail=白楊木欄杆 +Glass=玻璃 +Obsidian Glass=黑曜石玻璃 +Brick Block=磚方塊 +Mese Lamp=黃石燈 +Mese Post Light=黃石柱燈 +Cloud=雲 +Wooden Pickaxe=木鎬 +Stone Pickaxe=石鎬 +Bronze Pickaxe=青銅鎬 +Steel Pickaxe=鐵鎬 +Mese Pickaxe=黃石鎬 +Diamond Pickaxe=鑽石鎬 +Wooden Shovel=木鏟 +Stone Shovel=石鏟 +Bronze Shovel=青銅鏟 +Steel Shovel=鐵鏟 +Mese Shovel=黃石鏟 +Diamond Shovel=鑽石鏟 +Wooden Axe=木斧 +Stone Axe=石斧 +Bronze Axe=青銅斧 +Steel Axe=鐵斧 +Mese Axe=黃石斧 +Diamond Axe=鑽石斧 +Wooden Sword=木劍 +Stone Sword=石劍 +Bronze Sword=青銅劍 +Steel Sword=鐵劍 +Mese Sword=黃石劍 +Diamond Sword=鑽石劍 +Key=鑰匙 +Torch=火把 +@1 will intersect protection on growth.=@1將與增長的保護相交。 +Title:=標題: +Contents:=內容: +Save=保存 +by @1=由@1 +Page @1 of @2=第@1頁,共@2頁。 +"@1"="@1" diff --git a/mods/default/mapgen.lua b/mods/default/mapgen.lua index a361f89..8c161d1 100644 --- a/mods/default/mapgen.lua +++ b/mods/default/mapgen.lua @@ -576,7 +576,7 @@ function default.register_ores() -- Only where default:dirt is present as surface material biomes = {"taiga", "snowy_grassland", "grassland", "coniferous_forest", "deciduous_forest", "deciduous_forest_shore", "rainforest", - "rainforest_swamp", "floatland_coniferous_forest"} + "rainforest_swamp"} }) -- Gravel @@ -890,7 +890,7 @@ end -- All mapgens except mgv6 -function default.register_biomes(upper_limit) +function default.register_biomes() -- Icesheet @@ -909,7 +909,7 @@ function default.register_biomes(upper_limit) depth_riverbed = 2, node_dungeon = "default:ice", node_dungeon_stair = "stairs:stair_ice", - y_max = upper_limit, + y_max = 31000, y_min = -8, heat_point = 0, humidity_point = 73, @@ -956,7 +956,7 @@ function default.register_biomes(upper_limit) node_dungeon = "default:cobble", node_dungeon_alt = "default:mossycobble", node_dungeon_stair = "stairs:stair_cobble", - y_max = upper_limit, + y_max = 31000, y_min = 47, heat_point = 0, humidity_point = 40, @@ -1043,7 +1043,7 @@ function default.register_biomes(upper_limit) node_dungeon = "default:cobble", node_dungeon_alt = "default:mossycobble", node_dungeon_stair = "stairs:stair_cobble", - y_max = upper_limit, + y_max = 31000, y_min = 4, heat_point = 25, humidity_point = 70, @@ -1095,7 +1095,7 @@ function default.register_biomes(upper_limit) node_dungeon = "default:cobble", node_dungeon_alt = "default:mossycobble", node_dungeon_stair = "stairs:stair_cobble", - y_max = upper_limit, + y_max = 31000, y_min = 4, heat_point = 20, humidity_point = 35, @@ -1146,7 +1146,7 @@ function default.register_biomes(upper_limit) node_dungeon = "default:cobble", node_dungeon_alt = "default:mossycobble", node_dungeon_stair = "stairs:stair_cobble", - y_max = upper_limit, + y_max = 31000, y_min = 6, heat_point = 50, humidity_point = 35, @@ -1213,7 +1213,7 @@ function default.register_biomes(upper_limit) node_dungeon = "default:cobble", node_dungeon_alt = "default:mossycobble", node_dungeon_stair = "stairs:stair_cobble", - y_max = upper_limit, + y_max = 31000, y_min = 6, heat_point = 45, humidity_point = 70, @@ -1280,7 +1280,7 @@ function default.register_biomes(upper_limit) node_dungeon = "default:cobble", node_dungeon_alt = "default:mossycobble", node_dungeon_stair = "stairs:stair_cobble", - y_max = upper_limit, + y_max = 31000, y_min = 1, heat_point = 60, humidity_point = 68, @@ -1347,7 +1347,7 @@ function default.register_biomes(upper_limit) depth_riverbed = 2, node_dungeon = "default:desert_stone", node_dungeon_stair = "stairs:stair_desert_stone", - y_max = upper_limit, + y_max = 31000, y_min = 4, heat_point = 92, humidity_point = 16, @@ -1397,7 +1397,7 @@ function default.register_biomes(upper_limit) depth_riverbed = 2, node_dungeon = "default:sandstonebrick", node_dungeon_stair = "stairs:stair_sandstone_block", - y_max = upper_limit, + y_max = 31000, y_min = 4, heat_point = 60, humidity_point = 0, @@ -1446,7 +1446,7 @@ function default.register_biomes(upper_limit) node_dungeon = "default:cobble", node_dungeon_alt = "default:mossycobble", node_dungeon_stair = "stairs:stair_cobble", - y_max = upper_limit, + y_max = 31000, y_min = 4, heat_point = 40, humidity_point = 0, @@ -1496,7 +1496,7 @@ function default.register_biomes(upper_limit) node_dungeon = "default:cobble", node_dungeon_alt = "default:mossycobble", node_dungeon_stair = "stairs:stair_cobble", - y_max = upper_limit, + y_max = 31000, y_min = 1, heat_point = 89, humidity_point = 42, @@ -1563,7 +1563,7 @@ function default.register_biomes(upper_limit) node_dungeon = "default:cobble", node_dungeon_alt = "default:mossycobble", node_dungeon_stair = "stairs:stair_cobble", - y_max = upper_limit, + y_max = 31000, y_min = 1, heat_point = 86, humidity_point = 65, @@ -1619,59 +1619,6 @@ function default.register_biomes(upper_limit) end --- Biomes for floatlands - --- TODO Temporary simple biomes to be replaced by special floatland biomes later. - -function default.register_floatland_biomes(floatland_level, shadow_limit) - - minetest.register_biome({ - name = "floatland_grassland", - node_top = "default:dirt_with_grass", - depth_top = 1, - node_filler = "default:dirt", - depth_filler = 1, - node_dungeon = "default:cobble", - node_dungeon_alt = "default:mossycobble", - node_dungeon_stair = "stairs:stair_cobble", - y_max = 31000, - y_min = floatland_level + 2, - heat_point = 50, - humidity_point = 25, - }) - - minetest.register_biome({ - name = "floatland_coniferous_forest", - node_top = "default:dirt_with_coniferous_litter", - depth_top = 1, - node_filler = "default:dirt", - depth_filler = 3, - node_dungeon = "default:cobble", - node_dungeon_alt = "default:mossycobble", - node_dungeon_stair = "stairs:stair_cobble", - y_max = 31000, - y_min = floatland_level + 2, - heat_point = 50, - humidity_point = 75, - }) - - minetest.register_biome({ - name = "floatland_ocean", - node_top = "default:sand", - depth_top = 1, - node_filler = "default:sand", - depth_filler = 3, - node_dungeon = "default:cobble", - node_dungeon_alt = "default:mossycobble", - node_dungeon_stair = "stairs:stair_cobble", - y_max = floatland_level + 1, - y_min = shadow_limit, - heat_point = 50, - humidity_point = 50, - }) -end - - -- -- Register decorations -- @@ -1787,7 +1734,7 @@ local function register_grass_decoration(offset, scale, length) octaves = 3, persist = 0.6 }, - biomes = {"grassland", "deciduous_forest", "floatland_grassland"}, + biomes = {"grassland", "deciduous_forest"}, y_max = 31000, y_min = 1, decoration = "default:grass_" .. length, @@ -1829,7 +1776,7 @@ local function register_fern_decoration(seed, length) octaves = 3, persist = 0.7 }, - biomes = {"coniferous_forest", "floatland_coniferous_forest"}, + biomes = {"coniferous_forest"}, y_max = 31000, y_min = 6, decoration = "default:fern_" .. length, @@ -1944,11 +1891,35 @@ function default.register_decorations() minetest.register_decoration({ name = "default:jungle_tree", deco_type = "schematic", - place_on = {"default:dirt_with_rainforest_litter", "default:dirt"}, + place_on = {"default:dirt_with_rainforest_litter"}, sidelen = 80, fill_ratio = 0.1, - biomes = {"rainforest", "rainforest_swamp"}, + biomes = {"rainforest"}, y_max = 31000, + y_min = 1, + schematic = minetest.get_modpath("default") .. "/schematics/jungle_tree.mts", + flags = "place_center_x, place_center_z", + rotation = "random", + }) + + -- Swamp jungle trees + + minetest.register_decoration({ + name = "default:jungle_tree(swamp)", + deco_type = "schematic", + place_on = {"default:dirt"}, + sidelen = 16, + -- Noise tuned to place swamp trees where papyrus is absent + noise_params = { + offset = 0.0, + scale = -0.1, + spread = {x = 200, y = 200, z = 200}, + seed = 354, + octaves = 1, + persist = 0.5 + }, + biomes = {"rainforest_swamp"}, + y_max = 0, y_min = -1, schematic = minetest.get_modpath("default") .. "/schematics/jungle_tree.mts", flags = "place_center_x, place_center_z", @@ -1962,7 +1933,7 @@ function default.register_decorations() place_offset_y = 1, sidelen = 80, fill_ratio = 0.005, - biomes = {"rainforest", "rainforest_swamp"}, + biomes = {"rainforest"}, y_max = 31000, y_min = 1, schematic = minetest.get_modpath("default") .. "/schematics/jungle_log.mts", @@ -1987,7 +1958,7 @@ function default.register_decorations() octaves = 3, persist = 0.66 }, - biomes = {"taiga", "coniferous_forest", "floatland_coniferous_forest"}, + biomes = {"taiga", "coniferous_forest"}, y_max = 31000, y_min = 4, schematic = minetest.get_modpath("default") .. "/schematics/pine_tree.mts", @@ -2007,7 +1978,7 @@ function default.register_decorations() octaves = 3, persist = 0.66 }, - biomes = {"taiga", "coniferous_forest", "floatland_coniferous_forest"}, + biomes = {"taiga", "coniferous_forest"}, y_max = 31000, y_min = 4, schematic = minetest.get_modpath("default") .. "/schematics/small_pine_tree.mts", @@ -2021,7 +1992,7 @@ function default.register_decorations() place_offset_y = 1, sidelen = 80, fill_ratio = 0.0018, - biomes = {"taiga", "coniferous_forest", "floatland_coniferous_forest"}, + biomes = {"taiga", "coniferous_forest"}, y_max = 31000, y_min = 4, schematic = minetest.get_modpath("default") .. "/schematics/pine_log.mts", @@ -2172,8 +2143,10 @@ function default.register_decorations() -- Papyrus + -- Dirt version for rainforest swamp + minetest.register_decoration({ - name = "default:papyrus", + name = "default:papyrus_on_dirt", deco_type = "schematic", place_on = {"default:dirt"}, sidelen = 16, @@ -2185,10 +2158,32 @@ function default.register_decorations() octaves = 3, persist = 0.7 }, + biomes = {"rainforest_swamp"}, + y_max = 0, + y_min = 0, + schematic = minetest.get_modpath("default") .. "/schematics/papyrus_on_dirt.mts", + }) + + -- Dry dirt version for savanna shore + + minetest.register_decoration({ + name = "default:papyrus_on_dry_dirt", + deco_type = "schematic", + place_on = {"default:dry_dirt"}, + sidelen = 16, + noise_params = { + offset = -0.3, + scale = 0.7, + spread = {x = 200, y = 200, z = 200}, + seed = 354, + octaves = 3, + persist = 0.7 + }, biomes = {"savanna_shore"}, y_max = 0, y_min = 0, - schematic = minetest.get_modpath("default") .. "/schematics/papyrus.mts", + schematic = minetest.get_modpath("default") .. + "/schematics/papyrus_on_dry_dirt.mts", }) -- Bush @@ -2206,8 +2201,7 @@ function default.register_decorations() octaves = 3, persist = 0.7, }, - biomes = {"grassland", "deciduous_forest", - "floatland_grassland"}, + biomes = {"grassland", "deciduous_forest"}, y_max = 31000, y_min = 1, schematic = minetest.get_modpath("default") .. "/schematics/bush.mts", @@ -2479,22 +2473,9 @@ end -- --- Detect mapgen, flags and parameters to select functions +-- Detect mapgen to select functions -- --- Get setting or default -local mgv7_spflags = minetest.get_mapgen_setting("mgv7_spflags") or - "mountains, ridges, nofloatlands, caverns" -local captures_float = string.match(mgv7_spflags, "floatlands") -local captures_nofloat = string.match(mgv7_spflags, "nofloatlands") - --- Get setting or default --- Make global for mods to use to register floatland biomes -default.mgv7_floatland_level = - minetest.get_mapgen_setting("mgv7_floatland_level") or 1280 -default.mgv7_shadow_limit = - minetest.get_mapgen_setting("mgv7_shadow_limit") or 1024 - minetest.clear_registered_biomes() minetest.clear_registered_ores() minetest.clear_registered_decorations() @@ -2504,19 +2485,8 @@ local mg_name = minetest.get_mapgen_setting("mg_name") if mg_name == "v6" then default.register_mgv6_ores() default.register_mgv6_decorations() --- Need to check for 'nofloatlands' because that contains --- 'floatlands' which makes the second condition true. -elseif mg_name == "v7" and - captures_float == "floatlands" and - captures_nofloat ~= "nofloatlands" then - -- Mgv7 with floatlands and floatland biomes - default.register_biomes(default.mgv7_shadow_limit - 1) - default.register_floatland_biomes( - default.mgv7_floatland_level, default.mgv7_shadow_limit) - default.register_ores() - default.register_decorations() else - default.register_biomes(31000) + default.register_biomes() default.register_ores() default.register_decorations() end diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua index cee1242..cd46593 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -2031,7 +2031,7 @@ local function coral_on_place(itemstack, placer, pointed_thing) local def_under = minetest.registered_nodes[node_under.name] if def_under and def_under.on_rightclick and not placer:get_player_control().sneak then - return def_under.on_rightclick(pos_under, node_under.name, + return def_under.on_rightclick(pos_under, node_under, placer, itemstack, pointed_thing) or itemstack end @@ -2203,7 +2203,7 @@ minetest.register_node("default:water_source", { }, }, }, - alpha = 160, + alpha = 191, paramtype = "light", walkable = false, pointable = false, @@ -2234,7 +2234,7 @@ minetest.register_node("default:water_flowing", { type = "vertical_frames", aspect_w = 16, aspect_h = 16, - length = 0.8, + length = 0.5, }, }, { @@ -2244,11 +2244,11 @@ minetest.register_node("default:water_flowing", { type = "vertical_frames", aspect_w = 16, aspect_h = 16, - length = 0.8, + length = 0.5, }, }, }, - alpha = 160, + alpha = 191, paramtype = "light", paramtype2 = "flowingliquid", walkable = false, @@ -2330,7 +2330,7 @@ minetest.register_node("default:river_water_flowing", { type = "vertical_frames", aspect_w = 16, aspect_h = 16, - length = 0.8, + length = 0.5, }, }, { @@ -2340,7 +2340,7 @@ minetest.register_node("default:river_water_flowing", { type = "vertical_frames", aspect_w = 16, aspect_h = 16, - length = 0.8, + length = 0.5, }, }, }, diff --git a/mods/default/schematics/papyrus.mts b/mods/default/schematics/papyrus_on_dirt.mts similarity index 100% rename from mods/default/schematics/papyrus.mts rename to mods/default/schematics/papyrus_on_dirt.mts diff --git a/mods/default/schematics/papyrus_on_dry_dirt.mts b/mods/default/schematics/papyrus_on_dry_dirt.mts new file mode 100644 index 0000000..3626580 Binary files /dev/null and b/mods/default/schematics/papyrus_on_dry_dirt.mts differ diff --git a/mods/default/sounds/default_grass_footstep.1.ogg b/mods/default/sounds/default_grass_footstep.1.ogg index 22d1ad6..a04cdb4 100644 Binary files a/mods/default/sounds/default_grass_footstep.1.ogg and b/mods/default/sounds/default_grass_footstep.1.ogg differ diff --git a/mods/default/sounds/default_grass_footstep.2.ogg b/mods/default/sounds/default_grass_footstep.2.ogg index 4ccd8a0..d193068 100644 Binary files a/mods/default/sounds/default_grass_footstep.2.ogg and b/mods/default/sounds/default_grass_footstep.2.ogg differ diff --git a/mods/default/sounds/default_grass_footstep.3.ogg b/mods/default/sounds/default_grass_footstep.3.ogg index 20db84e..e1897ea 100644 Binary files a/mods/default/sounds/default_grass_footstep.3.ogg and b/mods/default/sounds/default_grass_footstep.3.ogg differ diff --git a/mods/player_api/sounds/player_damage.ogg b/mods/default/sounds/player_damage.ogg similarity index 100% rename from mods/player_api/sounds/player_damage.ogg rename to mods/default/sounds/player_damage.ogg diff --git a/mods/player_api/textures/gui_hotbar.png b/mods/default/textures/gui_hotbar.png similarity index 100% rename from mods/player_api/textures/gui_hotbar.png rename to mods/default/textures/gui_hotbar.png diff --git a/mods/player_api/textures/gui_hotbar_selected.png b/mods/default/textures/gui_hotbar_selected.png similarity index 100% rename from mods/player_api/textures/gui_hotbar_selected.png rename to mods/default/textures/gui_hotbar_selected.png diff --git a/mods/default/tools.lua b/mods/default/tools.lua index d792d14..e3c974c 100644 --- a/mods/default/tools.lua +++ b/mods/default/tools.lua @@ -402,6 +402,57 @@ minetest.register_tool("default:sword_diamond", { groups = {sword = 1} }) +-- +-- Register Craft Recipies +-- + +local craft_ingreds = { + wood = "group:wood", + stone = "group:stone", + steel = "default:steel_ingot", + bronze = "default:bronze_ingot", + mese = "default:mese_crystal", + diamond = "default:diamond" +} + +for name, mat in pairs(craft_ingreds) do + minetest.register_craft({ + output = "default:pick_".. name, + recipe = { + {mat, mat, mat}, + {"", "group:stick", ""}, + {"", "group:stick", ""} + } + }) + + minetest.register_craft({ + output = "default:shovel_".. name, + recipe = { + {mat}, + {"group:stick"}, + {"group:stick"} + } + }) + + minetest.register_craft({ + output = "default:axe_".. name, + recipe = { + {mat, mat}, + {mat, "group:stick"}, + {"", "group:stick"} + } + }) + + minetest.register_craft({ + output = "default:sword_".. name, + recipe = { + {mat}, + {mat}, + {"group:stick"} + } + }) +end + minetest.register_tool("default:key", { description = S("Key"), inventory_image = "default_key.png", @@ -441,3 +492,27 @@ minetest.register_tool("default:key", { return nil end }) + +minetest.register_craft({ + type = "fuel", + recipe = "default:pick_wood", + burntime = 6, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:shovel_wood", + burntime = 4, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:axe_wood", + burntime = 6, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:sword_wood", + burntime = 5, +}) diff --git a/mods/default/torch.lua b/mods/default/torch.lua index fcdc1fe..c06dee8 100644 --- a/mods/default/torch.lua +++ b/mods/default/torch.lua @@ -11,7 +11,8 @@ local function on_flood(pos, oldnode, newnode) nodedef.groups.igniter and nodedef.groups.igniter > 0) then minetest.sound_play( "default_cool_lava", - {pos = pos, max_hear_distance = 16, gain = 0.1} + {pos = pos, max_hear_distance = 16, gain = 0.1}, + true ) end -- Remove the torch node @@ -70,6 +71,7 @@ minetest.register_node("default:torch", { end, floodable = true, on_flood = on_flood, + on_rotate = false }) minetest.register_node("default:torch_wall", { @@ -93,6 +95,7 @@ minetest.register_node("default:torch_wall", { sounds = default.node_sound_wood_defaults(), floodable = true, on_flood = on_flood, + on_rotate = false }) minetest.register_node("default:torch_ceiling", { @@ -116,6 +119,7 @@ minetest.register_node("default:torch_ceiling", { sounds = default.node_sound_wood_defaults(), floodable = true, on_flood = on_flood, + on_rotate = false }) minetest.register_lbm({ @@ -134,3 +138,17 @@ minetest.register_lbm({ end end }) + +minetest.register_craft({ + output = "default:torch 4", + recipe = { + {"default:coal_lump"}, + {"group:stick"}, + } +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:torch", + burntime = 4, +}) diff --git a/mods/doors/init.lua b/mods/doors/init.lua index 85af0ef..ee4a188 100644 --- a/mods/doors/init.lua +++ b/mods/doors/init.lua @@ -176,10 +176,10 @@ function doors.door_toggle(pos, node, clicker) if state % 2 == 0 then minetest.sound_play(def.door.sounds[1], - {pos = pos, gain = 0.3, max_hear_distance = 10}) + {pos = pos, gain = 0.3, max_hear_distance = 10}, true) else minetest.sound_play(def.door.sounds[2], - {pos = pos, gain = 0.3, max_hear_distance = 10}) + {pos = pos, gain = 0.3, max_hear_distance = 10}, true) end minetest.swap_node(pos, { @@ -340,7 +340,7 @@ function doors.register(name, def) itemstack:take_item() end - minetest.sound_play(def.sounds.place, {pos = pos}) + minetest.sound_play(def.sounds.place, {pos = pos}, true) on_place_node(pos, minetest.get_node(pos), placer, node, itemstack, pointed_thing) @@ -550,12 +550,12 @@ function doors.trapdoor_toggle(pos, node, clicker) if string.sub(node.name, -5) == "_open" then minetest.sound_play(def.sound_close, - {pos = pos, gain = 0.3, max_hear_distance = 10}) + {pos = pos, gain = 0.3, max_hear_distance = 10}, true) minetest.swap_node(pos, {name = string.sub(node.name, 1, string.len(node.name) - 5), param1 = node.param1, param2 = node.param2}) else minetest.sound_play(def.sound_open, - {pos = pos, gain = 0.3, max_hear_distance = 10}) + {pos = pos, gain = 0.3, max_hear_distance = 10}, true) minetest.swap_node(pos, {name = node.name .. "_open", param1 = node.param1, param2 = node.param2}) end @@ -744,7 +744,7 @@ function doors.register_fencegate(name, def) local node_def = minetest.registered_nodes[node.name] minetest.swap_node(pos, {name = node_def.gate, param2 = node.param2}) minetest.sound_play(node_def.sound, {pos = pos, gain = 0.3, - max_hear_distance = 8}) + max_hear_distance = 8}, true) return itemstack end, selection_box = { diff --git a/mods/doors/locale/doors.ms.tr b/mods/doors/locale/doors.ms.tr new file mode 100644 index 0000000..93d6df2 --- /dev/null +++ b/mods/doors/locale/doors.ms.tr @@ -0,0 +1,18 @@ +# textdomain: doors +Hidden Door Segment=Segmen Pintu Tersembunyi +Owned by @1=Milik @1 +You do not own this locked door.=Anda bukan pemilik pintu berkunci ini. +a locked door=pintu berkunci +Wooden Door=Pintu Kayu +Steel Door=Pintu Keluli +Glass Door=Pintu Kaca +Obsidian Glass Door=Pintu Kaca Obsidia +You do not own this trapdoor.=Anda bukan pemilik pintu kolong ini. +a locked trapdoor=pintu kolong berkunci +Wooden Trapdoor=Pintu Kolong Kayu +Steel Trapdoor=Pintu Kolong Keluli +Apple Wood Fence Gate=Pintu Pagar Kayu Epal +Acacia Wood Fence Gate=Pintu Pagar Kayu Akasia +Jungle Wood Fence Gate=Pintu Pagar Kayu Hutan +Pine Wood Fence Gate=Pintu Pagar Kayu Pain +Aspen Wood Fence Gate=Pintu Pagar Kayu Aspen diff --git a/mods/doors/locale/doors.ru.tr b/mods/doors/locale/doors.ru.tr new file mode 100644 index 0000000..dc5c3c0 --- /dev/null +++ b/mods/doors/locale/doors.ru.tr @@ -0,0 +1,18 @@ +# textdomain: doors +Hidden Door Segment=Спрятанная Часть Двери +Owned by @1=Владелец: @1 +You do not own this locked door.=Вы не владелец этой заблокированной двери. +a locked door=заблокированная дверь +Wooden Door=Деревянная Дверь +Steel Door=Стальная Дверь +Glass Door=Стеклянная Дверь +Obsidian Glass Door=Дверь Из Обсидианового Стекла +You do not own this trapdoor.=Вы не владелец этого люка. +a locked trapdoor=заблокированный люк +Wooden Trapdoor=Деревянный Люк +Steel Trapdoor=Стальной Люк +Apple Wood Fence Gate=Яблоневая Деревянная Калитка +Acacia Wood Fence Gate=Деревянная Калитка Из Акации +Jungle Wood Fence Gate=Деревянная Калитка Из Тропического Дерева +Pine Wood Fence Gate=Сосновая Деревянная Калитка +Aspen Wood Fence Gate=Осиновая Деревянная Калитка diff --git a/mods/doors/locale/doors.se.tr b/mods/doors/locale/doors.se.tr new file mode 100644 index 0000000..1ecbead --- /dev/null +++ b/mods/doors/locale/doors.se.tr @@ -0,0 +1,19 @@ +# textdomain: doors +Hidden Door Segment=Dold dörrsegment +Owned by @1=Ägd av @1 +You do not own this locked door.=Du äger inte denna låsta dörr. +a locked door=en låst dörr +Wooden Door=Trä Dörr +Steel Door=Stål Dörr +Glass Door=Glas Dörr +Obsidian Glass Door=Obsidian Glas Dörr +Owned by @1=Ägd av @1 +You do not own this trapdoor.=Du äger inte denna fallucka +a locked trapdoor=en låst fallucka +Wooden Trapdoor=Trä Fallucka +Steel Trapdoor=Stål Fallucka +Apple Wood Fence Gate=Äpple Trä Fallucka +Acacia Wood Fence Gate=Akacia Trä Fallucka +Jungle Wood Fence Gate=Djungel Trä Fallucka +Pine Wood Fence Gate=Tall Trä Fallucka +Aspen Wood Fence Gate=Asp Trä Fallucka \ No newline at end of file diff --git a/mods/doors/locale/doors.zh_CN.tr b/mods/doors/locale/doors.zh_CN.tr new file mode 100644 index 0000000..5294558 --- /dev/null +++ b/mods/doors/locale/doors.zh_CN.tr @@ -0,0 +1,18 @@ +# textdomain: doors +Hidden Door Segment=隐藏门段 +Owned by @1=由@1拥有 +You do not own this locked door.=这个门不属于你所有。 +a locked door=一扇已上锁的门 +Wooden Door=木门 +Steel Door=铁门 +Glass Door=玻璃门 +Obsidian Glass Door=黑曜石玻璃门 +You do not own this trapdoor.=这个活板门不属于你所有。 +a locked trapdoor=一扇已上锁的活板门 +Wooden Trapdoor=木活板门 +Steel Trapdoor=铁活板门 +Apple Wood Fence Gate=用苹果树做的木栅栏门 +Acacia Wood Fence Gate=相思木栅栏门 +Jungle Wood Fence Gate=丛林木栅栏门 +Pine Wood Fence Gate=松木栅栏门 +Aspen Wood Fence Gate=白杨木栅栏门 diff --git a/mods/doors/locale/doors.zh_TW.tr b/mods/doors/locale/doors.zh_TW.tr new file mode 100644 index 0000000..47959ee --- /dev/null +++ b/mods/doors/locale/doors.zh_TW.tr @@ -0,0 +1,18 @@ +# textdomain: doors +Hidden Door Segment=隱藏門段 +Owned by @1=由@1擁有 +You do not own this locked door.=這個門不屬於你所有。 +a locked door=一扇已上鎖的門 +Wooden Door=木門 +Steel Door=鐵門 +Glass Door=玻璃門 +Obsidian Glass Door=黑曜石玻璃門 +You do not own this trapdoor.=這個活板門不屬於你所有。 +a locked trapdoor=一扇已上鎖的活板門 +Wooden Trapdoor=木活板門 +Steel Trapdoor=鐵活板門 +Apple Wood Fence Gate=用蘋果樹做的木柵欄門 +Acacia Wood Fence Gate=相思木柵欄門 +Jungle Wood Fence Gate=叢林木柵欄門 +Pine Wood Fence Gate=松木柵欄門 +Aspen Wood Fence Gate=白楊木柵欄門 diff --git a/mods/dungeon_loot/loot.lua b/mods/dungeon_loot/loot.lua index 7eb08cd..a5a4097 100644 --- a/mods/dungeon_loot/loot.lua +++ b/mods/dungeon_loot/loot.lua @@ -1,26 +1,13 @@ -dungeon_loot.registered_loot = { - -- buckets - {name = "bucket:bucket_empty", chance = 0.55}, - -- water in deserts/ice or above ground, lava otherwise - {name = "bucket:bucket_water", chance = 0.45, - types = {"sandstone", "desert", "ice"}}, - {name = "bucket:bucket_water", chance = 0.45, y = {0, 32768}, - types = {"normal"}}, - {name = "bucket:bucket_lava", chance = 0.45, y = {-32768, -1}, - types = {"normal"}}, +-- Loot from the `default` mod is registered here, +-- with the rest being registered in the respective mods +dungeon_loot.registered_loot = { -- various items {name = "default:stick", chance = 0.6, count = {3, 6}}, {name = "default:flint", chance = 0.4, count = {1, 3}}, - {name = "vessels:glass_fragments", chance = 0.35, count = {1, 4}}, - {name = "carts:rail", chance = 0.35, count = {1, 6}}, -- farming / consumable - {name = "farming:string", chance = 0.5, count = {1, 8}}, - {name = "farming:wheat", chance = 0.5, count = {2, 5}}, {name = "default:apple", chance = 0.4, count = {1, 4}}, - {name = "farming:seed_cotton", chance = 0.4, count = {1, 4}, - types = {"normal"}}, {name = "default:cactus", chance = 0.4, count = {1, 4}, types = {"sandstone", "desert"}}, diff --git a/mods/dungeon_loot/mapgen.lua b/mods/dungeon_loot/mapgen.lua index 624e9a8..b2c80fa 100644 --- a/mods/dungeon_loot/mapgen.lua +++ b/mods/dungeon_loot/mapgen.lua @@ -89,20 +89,20 @@ local function populate_chest(pos, rand, dungeontype) amount = rand:next(loot.count[1], loot.count[2]) end - if itemdef then - if itemdef.tool_capabilities then - for n = 1, amount do - local wear = rand:next(0.20 * 65535, 0.75 * 65535) -- 20% to 75% wear - table.insert(items, ItemStack({name = loot.name, wear = wear})) - end - elseif itemdef.stack_max == 1 then - -- not stackable, add separately - for n = 1, amount do - table.insert(items, loot.name) - end - else - table.insert(items, ItemStack({name = loot.name, count = amount})) + if not itemdef then + minetest.log("warning", "Registered loot item " .. loot.name .. " does not exist") + elseif itemdef.tool_capabilities then + for n = 1, amount do + local wear = rand:next(0.20 * 65535, 0.75 * 65535) -- 20% to 75% wear + table.insert(items, ItemStack({name = loot.name, wear = wear})) end + elseif itemdef.stack_max == 1 then + -- not stackable, add separately + for n = 1, amount do + table.insert(items, loot.name) + end + else + table.insert(items, ItemStack({name = loot.name, count = amount})) end end end diff --git a/mods/dye/locale/dye.ms.tr b/mods/dye/locale/dye.ms.tr new file mode 100644 index 0000000..50c0473 --- /dev/null +++ b/mods/dye/locale/dye.ms.tr @@ -0,0 +1,16 @@ +# textdomain: dye +White Dye=Pewarna Putih +Grey Dye=Pewarna Kelabu +Dark Grey Dye=Pewarna Kelabu Gelap +Black Dye=Pewarna Hitam +Violet Dye=Pewarna Ungu +Blue Dye=Pewarna Biru +Cyan Dye=Pewarna Biru Kehijauan +Dark Green Dye=Pewarna Hijau Gelap +Green Dye=Pewarna Hijau +Yellow Dye=Pewarna Kuning +Brown Dye=Pewarna Perang +Orange Dye=Pewarna Jingga +Red Dye=Pewarna Merah +Magenta Dye=Pewarna Merah Lembayung +Pink Dye=Pewarna Merah Jambu diff --git a/mods/dye/locale/dye.ru.tr b/mods/dye/locale/dye.ru.tr new file mode 100644 index 0000000..fa3c5c4 --- /dev/null +++ b/mods/dye/locale/dye.ru.tr @@ -0,0 +1,16 @@ +# textdomain: dye +White Dye=Белая Краска +Grey Dye=Серая Краска +Dark Grey Dye=Тёмно-Серая Краска +Black Dye=Черная Краска +Violet Dye=Фиолетовая Краска +Blue Dye=Синяя Краска +Cyan Dye=Голубая Краска +Dark Green Dye=Тёмно-Зелёная Краска +Green Dye=Зелёная Краска +Yellow Dye=Жёлтая Краска +Brown Dye=Бурая Краска +Orange Dye=Оранжевая Краска +Red Dye=Красная Краска +Magenta Dye=Пурпурная Краска +Pink Dye=Розовая Краска diff --git a/mods/dye/locale/dye.se.tr b/mods/dye/locale/dye.se.tr new file mode 100644 index 0000000..27adb10 --- /dev/null +++ b/mods/dye/locale/dye.se.tr @@ -0,0 +1,16 @@ +# textdomain: dye +White Dye=Vit Färg +Grey Dye=Grå Färg +Dark Grey Dye=Mörk Grå Färg +Black Dye=Svart Färg +Violet Dye=Violett Färg +Blue Dye=Blå Färg +Cyan Dye=Cyan Färg +Dark Green Dye=Mörk Grön Färg +Green Dye=Grön Färg +Yellow Dye=Gul Färg +Brown Dye=Brun Färg +Orange Dye=Orange Färg +Red Dye=Röd Färg +Magenta Dye=Magenta Färg +Pink Dye=Rosa Färg \ No newline at end of file diff --git a/mods/dye/locale/dye.zh_CN.tr b/mods/dye/locale/dye.zh_CN.tr new file mode 100644 index 0000000..8dcf311 --- /dev/null +++ b/mods/dye/locale/dye.zh_CN.tr @@ -0,0 +1,16 @@ +# textdomain: dye +White Dye=白染料 +Grey Dye=灰染料 +Dark Grey Dye=暗灰染料 +Black Dye=黑染料 +Violet Dye=紫染料 +Blue Dye=蓝染料 +Cyan Dye=青染料 +Dark Green Dye=暗绿染料 +Green Dye=绿染料 +Yellow Dye=黄染料 +Brown Dye=棕染料 +Orange Dye=橙染料 +Red Dye=红染料 +Magenta Dye=品红染料 +Pink Dye=粉红染料 diff --git a/mods/dye/locale/dye.zh_TW.tr b/mods/dye/locale/dye.zh_TW.tr new file mode 100644 index 0000000..cc60a21 --- /dev/null +++ b/mods/dye/locale/dye.zh_TW.tr @@ -0,0 +1,16 @@ +# textdomain: dye +White Dye=白染料 +Grey Dye=灰染料 +Dark Grey Dye=暗灰染料 +Black Dye=黑染料 +Violet Dye=紫染料 +Blue Dye=藍染料 +Cyan Dye=青染料 +Dark Green Dye=暗綠染料 +Green Dye=綠染料 +Yellow Dye=黃染料 +Brown Dye=棕染料 +Orange Dye=橙染料 +Red Dye=紅染料 +Magenta Dye=品紅染料 +Pink Dye=粉紅染料 diff --git a/mods/farming/api.lua b/mods/farming/api.lua index c2c549e..91d557c 100644 --- a/mods/farming/api.lua +++ b/mods/farming/api.lua @@ -59,7 +59,7 @@ farming.hoe_on_use = function(itemstack, user, pointed_thing, uses) minetest.sound_play("default_dig_crumbly", { pos = pt.under, gain = 0.5, - }) + }, true) if not (creative and creative.is_enabled_for and creative.is_enabled_for(user:get_player_name())) then @@ -68,7 +68,8 @@ farming.hoe_on_use = function(itemstack, user, pointed_thing, uses) itemstack:add_wear(65535/(uses-1)) -- tool break sound if itemstack:get_count() == 0 and wdef.sound and wdef.sound.breaks then - minetest.sound_play(wdef.sound.breaks, {pos = pt.above, gain = 0.5}) + minetest.sound_play(wdef.sound.breaks, {pos = pt.above, + gain = 0.5}, true) end end return itemstack @@ -176,6 +177,8 @@ farming.place_seed = function(itemstack, placer, pointed_thing, plantname) end -- add the node and remove 1 item from the itemstack + minetest.log("action", player_name .. " places node " .. plantname .. " at " .. + minetest.pos_to_string(pt.above)) minetest.add_node(pt.above, {name = plantname, param2 = 1}) tick(pt.above) if not (creative and creative.is_enabled_for diff --git a/mods/farming/init.lua b/mods/farming/init.lua index e6dfd57..96672fa 100644 --- a/mods/farming/init.lua +++ b/mods/farming/init.lua @@ -144,3 +144,13 @@ minetest.register_craft({ recipe = "farming:hoe_wood", burntime = 5, }) + +-- Register farming items as dungeon loot +if minetest.global_exists("dungeon_loot") then + dungeon_loot.register({ + {name = "farming:string", chance = 0.5, count = {1, 8}}, + {name = "farming:wheat", chance = 0.5, count = {2, 5}}, + {name = "farming:seed_cotton", chance = 0.4, count = {1, 4}, + types = {"normal"}}, + }) +end diff --git a/mods/farming/locale/farming.ms.tr b/mods/farming/locale/farming.ms.tr new file mode 100644 index 0000000..408f495 --- /dev/null +++ b/mods/farming/locale/farming.ms.tr @@ -0,0 +1,25 @@ +# textdomain: farming +Wooden Hoe=Cangkul Kayu +Stone Hoe=Cangkul Batu +Steel Hoe=Cangkul Keluli +Bronze Hoe=Cangkul Gangsa +Mese Hoe=Cangkul Mese +Diamond Hoe=Cangkul Intan +Wheat Seed=Benih Gandum +Flour=Tepung +Bread=Roti +Cotton Seed=Benih Kapas +String=Benang +Soil=Tanih +Wet Soil=Tanih Lembap +Dry Soil=Tanih Kering +Wet Dry Soil=Tanih Kering Lembap +Desert Sand Soil=Tanih Pasir Gurun +Wet Desert Sand Soil=Tanih Pasir Gurun Lembap +Straw=Jerami +Straw Stair=Tangga Jerami +Inner Straw Stair=Tangga Jerami Dalaman +Outer Straw Stair=Tangga Jerami Luaran +Straw Slab=Papak Jerami +Wheat=Gandum +Cotton=Kapas diff --git a/mods/farming/locale/farming.ru.tr b/mods/farming/locale/farming.ru.tr new file mode 100644 index 0000000..ad6249b --- /dev/null +++ b/mods/farming/locale/farming.ru.tr @@ -0,0 +1,25 @@ +# textdomain: farming +Wooden Hoe=Деревянная Мотыга +Stone Hoe=Каменная Мотыга +Steel Hoe=Стальная Мотыга +Bronze Hoe=Бронзовая Мотыга +Mese Hoe=Месе Мотыга +Diamond Hoe=Алмазная Мотыга +Wheat Seed=Семена Пшеницы +Flour=Мука +Bread=Хлеб +Cotton Seed=Семена Хлопка +String=Нить +Soil=Почва +Wet Soil=Влажная Почва +Dry Soil=Сухая Почва +Wet Dry Soil=Влажная Сухая Почва +Desert Sand Soil=Пустынная Песчаная Почва +Wet Desert Sand Soil=Влажная Пустынная Песчаная Почва +Straw=Солома +Straw Stair=Соломенная Ступень +Inner Straw Stair=Угловая Соломенная Ступень (Внутренний Угол) +Outer Straw Stair=Угловая Соломенная Ступень (Внешний Угол) +Straw Slab=Соломенная Плита +Wheat=Пшеница +Cotton=Хлопок diff --git a/mods/farming/locale/farming.se.tr b/mods/farming/locale/farming.se.tr new file mode 100644 index 0000000..6218e3a --- /dev/null +++ b/mods/farming/locale/farming.se.tr @@ -0,0 +1,25 @@ +# textdomain: farming +Wooden Hoe=Träsko +Stone Hoe=Stensko +Steel Hoe=Stålsko +Bronze Hoe=Bronssko +Mese Hoe=Mesesko +Diamond Hoe=Diamantsko +Wheat Seed=Vetefrö +Flour=Mjöl +Bread=Bröd +Cotton Seed=Bollumsfrö +String=Snöra +Soil=Odlningsmark +Wet Soil=Våt Odlningsmark +Dry Soil=Torr Odlningsmark +Wet Dry Soil=Våt Torr Odlningsmark +Desert Sand Soil=Öken Sand Odlningsmark +Wet Desert Sand Soil=Våt Öken Sand Odlningsmark +Straw=Halm +Straw Stair=Halmstrappa +Inner Straw Stair=Inre Halmstrappa +Outer Straw Stair=Yttre Halmstrappa +Straw Slab=Halmplatta +Wheat=Vete +Cotton=Bomull \ No newline at end of file diff --git a/mods/farming/locale/farming.zh_CN.tr b/mods/farming/locale/farming.zh_CN.tr new file mode 100644 index 0000000..d856288 --- /dev/null +++ b/mods/farming/locale/farming.zh_CN.tr @@ -0,0 +1,25 @@ +# textdomain: farming +Wooden Hoe=木锄头 +Stone Hoe=石锄头 +Steel Hoe=铁锄头 +Bronze Hoe=青铜锄头 +Mese Hoe=黄石锄头 +Diamond Hoe=钻石锄头 +Wheat Seed=小麦种子 +Flour=面粉 +Bread=面包 +Cotton Seed=棉花种子 +String=线 +Soil=土 +Wet Soil=湿土 +Dry Soil=干土 +Wet Dry Soil=湿干土 +Desert Sand Soil=沙漠沙土 +Wet Desert Sand Soil=湿沙漠沙土 +Straw=稻草 +Straw Stair=稻草台阶 +Inner Straw Stair=稻草内楼梯 +Outer Straw Stair=稻草外楼梯 +Straw Slab=稻草板 +Wheat=小麦 +Cotton=棉 diff --git a/mods/farming/locale/farming.zh_TW.tr b/mods/farming/locale/farming.zh_TW.tr new file mode 100644 index 0000000..f1b7a7a --- /dev/null +++ b/mods/farming/locale/farming.zh_TW.tr @@ -0,0 +1,25 @@ +# textdomain: farming +Wooden Hoe=木鋤頭 +Stone Hoe=石鋤頭 +Steel Hoe=鐵鋤頭 +Bronze Hoe=青銅鋤頭 +Mese Hoe=黃石鋤頭 +Diamond Hoe=鑽石鋤頭 +Wheat Seed=小麥種子 +Flour=麵粉 +Bread=麵包 +Cotton Seed=棉花種子 +String=線 +Soil=土 +Wet Soil=溼土 +Dry Soil=乾土 +Wet Dry Soil=溼乾土 +Desert Sand Soil=沙漠沙土 +Wet Desert Sand Soil=溼沙漠沙土 +Straw=稻草 +Straw Stair=稻草臺階 +Inner Straw Stair=稻草內樓梯 +Outer Straw Stair=稻草外樓梯 +Straw Slab=稻草板 +Wheat=小麥 +Cotton=棉 diff --git a/mods/farming/mod.conf b/mods/farming/mod.conf index c26c28f..9a76a6a 100644 --- a/mods/farming/mod.conf +++ b/mods/farming/mod.conf @@ -1,3 +1,4 @@ name = farming description = Minetest Game mod: farming depends = default, wool, stairs +optional_depends = dungeon_loot diff --git a/mods/fire/init.lua b/mods/fire/init.lua index 3c8a8fc..c35207e 100644 --- a/mods/fire/init.lua +++ b/mods/fire/init.lua @@ -34,7 +34,7 @@ local function flood_flame(pos, oldnode, newnode) if not (nodedef and nodedef.groups and nodedef.groups.igniter and nodedef.groups.igniter > 0) then minetest.sound_play("fire_extinguish_flame", - {pos = pos, max_hear_distance = 16, gain = 0.15}) + {pos = pos, max_hear_distance = 16, gain = 0.15}, true) end -- Remove the flame return false @@ -127,7 +127,8 @@ minetest.register_tool("fire:flint_and_steel", { local sound_pos = pointed_thing.above or user:get_pos() minetest.sound_play( "fire_flint_and_steel", - {pos = sound_pos, gain = 0.5, max_hear_distance = 8} + {pos = sound_pos, gain = 0.5, max_hear_distance = 8}, + true ) local player_name = user:get_player_name() if pointed_thing.type == "node" then @@ -154,7 +155,8 @@ minetest.register_tool("fire:flint_and_steel", { itemstack:add_wear(1000) -- Tool break sound if itemstack:get_count() == 0 and wdef.sound and wdef.sound.breaks then - minetest.sound_play(wdef.sound.breaks, {pos = sound_pos, gain = 0.5}) + minetest.sound_play(wdef.sound.breaks, {pos = sound_pos, + gain = 0.5}, true) end return itemstack end diff --git a/mods/fire/locale/fire.ms.tr b/mods/fire/locale/fire.ms.tr new file mode 100644 index 0000000..67b5bbe --- /dev/null +++ b/mods/fire/locale/fire.ms.tr @@ -0,0 +1,3 @@ +# textdomain: fire +Permanent Flame=Api Abadi +Flint and Steel=Pemetik Api diff --git a/mods/fire/locale/fire.ru.tr b/mods/fire/locale/fire.ru.tr new file mode 100644 index 0000000..e10813b --- /dev/null +++ b/mods/fire/locale/fire.ru.tr @@ -0,0 +1,3 @@ +# textdomain: fire +Permanent Flame=Вечный Огонь +Flint and Steel=Огниво и Сталь diff --git a/mods/fire/locale/fire.se.tr b/mods/fire/locale/fire.se.tr new file mode 100644 index 0000000..622925d --- /dev/null +++ b/mods/fire/locale/fire.se.tr @@ -0,0 +1,3 @@ +# textdomain: fire +Permanent Flame=Permanent Eld +Flint and Steel=Flinta och Stål \ No newline at end of file diff --git a/mods/fire/locale/fire.zh_CN.tr b/mods/fire/locale/fire.zh_CN.tr new file mode 100644 index 0000000..89aff0e --- /dev/null +++ b/mods/fire/locale/fire.zh_CN.tr @@ -0,0 +1,3 @@ +# textdomain: fire +Permanent Flame=永久火焰 +Flint and Steel=火石和钢 diff --git a/mods/fire/locale/fire.zh_TW.tr b/mods/fire/locale/fire.zh_TW.tr new file mode 100644 index 0000000..4c7a293 --- /dev/null +++ b/mods/fire/locale/fire.zh_TW.tr @@ -0,0 +1,3 @@ +# textdomain: fire +Permanent Flame=永久火焰 +Flint and Steel=火石和鋼 diff --git a/mods/fireflies/locale/fireflies.ms.tr b/mods/fireflies/locale/fireflies.ms.tr new file mode 100644 index 0000000..509d03d --- /dev/null +++ b/mods/fireflies/locale/fireflies.ms.tr @@ -0,0 +1,5 @@ +# textdomain: fireflies +Firefly=Kelip-Kelip +Hidden Firefly=Kelip-Kelip Tersembunyi +Bug Net=Jaring Pepijat +Firefly in a Bottle=Kelip-Kelip dalam Botol diff --git a/mods/fireflies/locale/fireflies.ru.tr b/mods/fireflies/locale/fireflies.ru.tr new file mode 100644 index 0000000..c05f288 --- /dev/null +++ b/mods/fireflies/locale/fireflies.ru.tr @@ -0,0 +1,5 @@ +# textdomain: fireflies +Firefly=Светлячок +Hidden Firefly=Притаившийся Светлячок +Bug Net=Сачок Для Ловли Насекомых +Firefly in a Bottle=Светлячок в Бутылке diff --git a/mods/fireflies/locale/fireflies.se.tr b/mods/fireflies/locale/fireflies.se.tr new file mode 100644 index 0000000..1bff782 --- /dev/null +++ b/mods/fireflies/locale/fireflies.se.tr @@ -0,0 +1,5 @@ +# textdomain: fireflies +Firefly=Eldfluga +Hidden Firefly=Gömd Eldfluga +Bug Net=Buggernät +Firefly in a Bottle=Eldfluga i en flaska \ No newline at end of file diff --git a/mods/fireflies/locale/fireflies.zh_CN.tr b/mods/fireflies/locale/fireflies.zh_CN.tr new file mode 100644 index 0000000..5971785 --- /dev/null +++ b/mods/fireflies/locale/fireflies.zh_CN.tr @@ -0,0 +1,5 @@ +# textdomain: fireflies +Firefly=萤火虫 +Hidden Firefly=隐藏的萤火虫 +Bug Net=虫网 +Firefly in a Bottle=放在瓶子里的萤火虫 diff --git a/mods/fireflies/locale/fireflies.zh_TW.tr b/mods/fireflies/locale/fireflies.zh_TW.tr new file mode 100644 index 0000000..af754a9 --- /dev/null +++ b/mods/fireflies/locale/fireflies.zh_TW.tr @@ -0,0 +1,5 @@ +# textdomain: fireflies +Firefly=螢火蟲 +Hidden Firefly=隱藏的螢火蟲 +Bug Net=蟲網 +Firefly in a Bottle=放在瓶子裡的螢火蟲 diff --git a/mods/flowers/locale/flowers.ms.tr b/mods/flowers/locale/flowers.ms.tr new file mode 100644 index 0000000..4e846eb --- /dev/null +++ b/mods/flowers/locale/flowers.ms.tr @@ -0,0 +1,12 @@ +# textdomain: flowers +Red Rose=Ros Merah +Orange Tulip=Tulip Jingga +Yellow Dandelion=Dandelion Kuning +Green Chrysanthemum=Kekwa Hijau +Blue Geranium=Geranium Biru +Viola=Violet +White Dandelion=Dandelion Putih +Black Tulip=Tulip Hitam +Red Mushroom=Cendawan Merah +Brown Mushroom=Cendawan Perang +Waterlily=Teratai diff --git a/mods/flowers/locale/flowers.ru.tr b/mods/flowers/locale/flowers.ru.tr new file mode 100644 index 0000000..d861e2a --- /dev/null +++ b/mods/flowers/locale/flowers.ru.tr @@ -0,0 +1,12 @@ +# textdomain: flowers +Red Rose=Красная Роза +Orange Tulip=Оранжевый Тюльпан +Yellow Dandelion=Желтый Одуванчик +Green Chrysanthemum=Зелёная Хризантема +Blue Geranium=Синяя Герань +Viola=Фиалка +White Dandelion=Белый Одуванчик +Black Tulip=Черный Тюльпан +Red Mushroom=Мухомор +Brown Mushroom=Коричневый Гриб +Waterlily=Кувшинка diff --git a/mods/flowers/locale/flowers.se.tr b/mods/flowers/locale/flowers.se.tr new file mode 100644 index 0000000..1bee645 --- /dev/null +++ b/mods/flowers/locale/flowers.se.tr @@ -0,0 +1,12 @@ +# textdomain: flowers +Red Rose=Röd ros +Orange Tulip=Orange Tulpan +Yellow Dandelion=Gul Maskros +Green Chrysanthemum=Grön Krysantemum +Blue Geranium=Blå Geranium +Viola=Violett Viola +White Dandelion=Vit Maskros +Black Tulip=Svart Tulpan +Red Mushroom=Röd Svamp +Brown Mushroom=Brun Svamp +Waterlily=Näckros \ No newline at end of file diff --git a/mods/flowers/locale/flowers.zh_CN.tr b/mods/flowers/locale/flowers.zh_CN.tr new file mode 100644 index 0000000..3139dfb --- /dev/null +++ b/mods/flowers/locale/flowers.zh_CN.tr @@ -0,0 +1,12 @@ +# textdomain: flowers +Red Rose=红玫瑰 +Orange Tulip=橙郁金香 +Yellow Dandelion=黄蒲公英 +Green Chrysanthemum=绿菊花 +Blue Geranium=蓝天竺葵 +Viola=三色堇 +White Dandelion=白蒲公英 +Black Tulip=黑郁金香 +Red Mushroom=红蘑菇 +Brown Mushroom=棕蘑菇 +Waterlily=睡莲 diff --git a/mods/flowers/locale/flowers.zh_TW.tr b/mods/flowers/locale/flowers.zh_TW.tr new file mode 100644 index 0000000..a3a3ec5 --- /dev/null +++ b/mods/flowers/locale/flowers.zh_TW.tr @@ -0,0 +1,12 @@ +# textdomain: flowers +Red Rose=紅玫瑰 +Orange Tulip=橙鬱金香 +Yellow Dandelion=黃蒲公英 +Green Chrysanthemum=綠菊花 +Blue Geranium=藍天竺葵 +Viola=三色堇 +White Dandelion=白蒲公英 +Black Tulip=黑鬱金香 +Red Mushroom=紅蘑菇 +Brown Mushroom=棕蘑菇 +Waterlily=睡蓮 diff --git a/mods/flowers/mapgen.lua b/mods/flowers/mapgen.lua index 85e19b7..f282f50 100644 --- a/mods/flowers/mapgen.lua +++ b/mods/flowers/mapgen.lua @@ -100,7 +100,7 @@ local function register_flower(seed, flower_name) octaves = 3, persist = 0.6 }, - biomes = {"grassland", "deciduous_forest", "floatland_grassland"}, + biomes = {"grassland", "deciduous_forest"}, y_max = 31000, y_min = 1, decoration = "flowers:"..flower_name, @@ -121,8 +121,7 @@ local function register_mushroom(mushroom_name) octaves = 3, persist = 0.66 }, - biomes = {"deciduous_forest", "coniferous_forest", - "floatland_coniferous_forest"}, + biomes = {"deciduous_forest", "coniferous_forest"}, y_max = 31000, y_min = 1, decoration = "flowers:"..mushroom_name, diff --git a/mods/game_commands/init.lua b/mods/game_commands/init.lua index 139a879..e038be1 100644 --- a/mods/game_commands/init.lua +++ b/mods/game_commands/init.lua @@ -13,7 +13,7 @@ minetest.register_chatcommand("killme", { player:set_hp(0) return true else - for _, callback in pairs(core.registered_on_respawnplayers) do + for _, callback in pairs(minetest.registered_on_respawnplayers) do if callback(player) then return true end diff --git a/mods/game_commands/locale/game_commands.ms.tr b/mods/game_commands/locale/game_commands.ms.tr new file mode 100644 index 0000000..ed4a0bd --- /dev/null +++ b/mods/game_commands/locale/game_commands.ms.tr @@ -0,0 +1,4 @@ +# textdomain: game_commands +Kill yourself to respawn=Bunuh diri anda untuk lahir semula +No static_spawnpoint defined=Tiada titik permulaan statik (tetapan static_spawnpoint) ditakrifkan +You need to be online to be killed!=Anda mesti berada dalam talian untuk dibunuh! diff --git a/mods/game_commands/locale/game_commands.ru.tr b/mods/game_commands/locale/game_commands.ru.tr new file mode 100644 index 0000000..26d9e08 --- /dev/null +++ b/mods/game_commands/locale/game_commands.ru.tr @@ -0,0 +1,4 @@ +# textdomain: game_commands +Kill yourself to respawn=Убейте себя, чтобы возродиться +No static_spawnpoint defined=static_spawnpoint не определён +You need to be online to be killed!=Вы должны быть онлайн, чтобы убить себя! diff --git a/mods/game_commands/locale/game_commands.se.tr b/mods/game_commands/locale/game_commands.se.tr new file mode 100644 index 0000000..259e1db --- /dev/null +++ b/mods/game_commands/locale/game_commands.se.tr @@ -0,0 +1,4 @@ +# textdomain: game_commands +Kill yourself to respawn=Döda dig själv för att respawna +No static_spawnpoint defined=Ingen static_spawnpoint definierat +You need to be online to be killed!=Du måsta vara online för att bli dödad! \ No newline at end of file diff --git a/mods/game_commands/locale/game_commands.zh_CN.tr b/mods/game_commands/locale/game_commands.zh_CN.tr new file mode 100644 index 0000000..3c69dfb --- /dev/null +++ b/mods/game_commands/locale/game_commands.zh_CN.tr @@ -0,0 +1,4 @@ +# textdomain: game_commands +Kill yourself to respawn=杀死自己并重生 +No static_spawnpoint defined=static_spawnpoint 未定义 +You need to be online to be killed!=您需要在线才能被杀死! diff --git a/mods/game_commands/locale/game_commands.zh_TW.tr b/mods/game_commands/locale/game_commands.zh_TW.tr new file mode 100644 index 0000000..34e148d --- /dev/null +++ b/mods/game_commands/locale/game_commands.zh_TW.tr @@ -0,0 +1,4 @@ +# textdomain: game_commands +Kill yourself to respawn=殺死自己並重生 +No static_spawnpoint defined=static_spawnpoint 未定義 +You need to be online to be killed!=您需要在線才能被殺死! diff --git a/mods/inventory_plus/inventory_plus/init.lua b/mods/inventory_plus/inventory_plus/init.lua index b38f21f..11b6e0f 100644 --- a/mods/inventory_plus/inventory_plus/init.lua +++ b/mods/inventory_plus/inventory_plus/init.lua @@ -117,11 +117,13 @@ end inventory_plus.set_inventory_formspec = function(player,formspec) if minetest.setting_getbool("creative_mode") then -- if creative mode is on then wait a bit - minetest.after(0.01,function() + minetest.after(0.05,function() player:set_inventory_formspec(formspec) end) else - player:set_inventory_formspec(formspec) + minetest.after(0.05,function() + player:set_inventory_formspec(formspec) + end) end end @@ -146,7 +148,8 @@ inventory_plus.get_formspec = function(player,page) end -- craft page if page=="main" or page==""then - if minetest.setting_getbool("creative_mode") then + local pri = minetest.get_player_privs(player:get_player_name()) + if minetest.setting_getbool("creative_mode") or pri.creative then sfinv.set_player_inventory_formspec(player) return player:get_inventory_formspec() --.. get_buttons(6,0,2) @@ -171,7 +174,8 @@ end) minetest.register_on_player_receive_fields(function(player, formname, fields) -- main if fields.main then - if minetest.setting_getbool("creative_mode") then + local pri = minetest.get_player_privs(player:get_player_name()) + if minetest.setting_getbool("creative_mode") or pri.creative then minetest.after(0.01,function() inventory_plus.set_inventory_formspec(player, inventory_plus.get_formspec(player,"main")) end) diff --git a/mods/map/locale/map.ms.tr b/mods/map/locale/map.ms.tr new file mode 100644 index 0000000..8564f91 --- /dev/null +++ b/mods/map/locale/map.ms.tr @@ -0,0 +1,3 @@ +# textdomain: map +Mapping Kit=Alat Pemetaan +Use with 'Minimap' key=Guna dengan kekunci 'Peta Mini' diff --git a/mods/map/locale/map.ru.tr b/mods/map/locale/map.ru.tr new file mode 100644 index 0000000..73120b6 --- /dev/null +++ b/mods/map/locale/map.ru.tr @@ -0,0 +1,3 @@ +# textdomain: map +Mapping Kit=Картографический комплект +Use with 'Minimap' key=Используйте с ключом 'Minimap' diff --git a/mods/map/locale/map.se.tr b/mods/map/locale/map.se.tr new file mode 100644 index 0000000..c1bb01a --- /dev/null +++ b/mods/map/locale/map.se.tr @@ -0,0 +1,3 @@ +# textdomain: map +Mapping Kit=Kartläggningssats +Use with 'Minimap' key=Använd med 'Minimap' tangent \ No newline at end of file diff --git a/mods/map/locale/map.zh_CN.tr b/mods/map/locale/map.zh_CN.tr new file mode 100644 index 0000000..cec95bb --- /dev/null +++ b/mods/map/locale/map.zh_CN.tr @@ -0,0 +1,3 @@ +# textdomain: map +Mapping Kit=地图绘制工具包 +Use with 'Minimap' key=与“迷你地图”键一起使用 diff --git a/mods/map/locale/map.zh_TW.tr b/mods/map/locale/map.zh_TW.tr new file mode 100644 index 0000000..a098124 --- /dev/null +++ b/mods/map/locale/map.zh_TW.tr @@ -0,0 +1,3 @@ +# textdomain: map +Mapping Kit=地圖繪製工具包 +Use with 'Minimap' key=與“迷你地圖”鍵一起使用 diff --git a/mods/mobs/api.lua b/mods/mobs/api.lua index 2a8d742..feb9857 100644 --- a/mods/mobs/api.lua +++ b/mods/mobs/api.lua @@ -6,9 +6,9 @@ local use_cmi = minetest.global_exists("cmi") mobs = { mod = "redo", - version = "20190124", + version = "20200412", intllib = S, - invis = minetest.global_exists("invisibility") and invisibility or {}, + invis = minetest.global_exists("invisibility") and invisibility or {} } -- creative check @@ -79,11 +79,11 @@ local node_snow = "default:snow" mobs.fallback_node = minetest.registered_aliases["mapgen_dirt"] or "default:dirt" local mob_class = { - stepheight = 1.1, -- was 0.6 + stepheight = 1.1, fly_in = "air", owner = "", order = "", - jump_height = 4, -- was 6 + jump_height = 4, lifetimer = 180, -- 3 minutes physical = true, collisionbox = {-0.25, -0.25, -0.25, 0.25, 0.25, 0.25}, @@ -106,6 +106,7 @@ local mob_class = { jump = true, knock_back = true, walk_chance = 50, + stand_chance = 30, attack_chance = 5, passive = false, blood_amount = 5, @@ -114,7 +115,7 @@ local mob_class = { floats = 1, -- floats in water by default replace_offset = 0, timer = 0, - metadata3 = 0, + metadata3 = 0, env_damage_timer = 0, -- only used when state = "attack" tamed = false, pause_timer = 0, @@ -142,8 +143,9 @@ local mob_class = { attack_players = true, attack_npcs = true, facing_fence = false, - _cmi_is_mob = true, + _cmi_is_mob = true } + local mob_class_meta = {__index = mob_class} -- play sound @@ -229,10 +231,16 @@ function mob_class:set_velocity(v) local yaw = (self.object:get_yaw() or 0) + self.rotate + -- nil check for velocity + v = v or 0 + + -- set velocity with hard limit of 10 + local vel = self.object:get_velocity() + self.object:set_velocity({ - x = (sin(yaw) * -v) + c_x, - y = self.object:get_velocity().y, - z = (cos(yaw) * v) + c_y, + x = max(-10, min((sin(yaw) * -v) + c_x, 10)), + y = max(-10, min((vel and vel.y or 0), 10)), + z = max(-10, min((cos(yaw) * v) + c_y, 10)) }) end @@ -247,6 +255,8 @@ function mob_class:get_velocity() local v = self.object:get_velocity() + if not v then return 0 end + return (v.x * v.x + v.z * v.z) ^ 0.5 end @@ -278,15 +288,15 @@ end -- set defined animation -function mob_class:set_animation(anim) +function mob_class:set_animation(anim, force) if not self.animation or not anim then return end self.animation.current = self.animation.current or "" - -- only set different animation for attacks when setting to same set - if anim ~= "punch" and anim ~= "shoot" + -- only use different animation for attacks when using same set + if force ~= true and anim ~= "punch" and anim ~= "shoot" and string.find(self.animation.current, anim) then return end @@ -330,7 +340,7 @@ end -- check line of sight (BrunoMine) -function mob_class:line_of_sight(pos1, pos2, stepsize) +local line_of_sight = function(self, pos1, pos2, stepsize) stepsize = stepsize or 1 @@ -393,7 +403,6 @@ function mob_class:line_of_sight(pos1, pos2, stepsize) -- New Nodename found nn = minetest.get_node(pos).name - end return false @@ -401,7 +410,7 @@ end -- check line of sight (by BrunoMine, tweaked by Astrobe) -function mob_class:NEW_line_of_sight(pos1, pos2, stepsize) +local new_line_of_sight = function(self, pos1, pos2, stepsize) if not pos1 or not pos2 then return end @@ -447,10 +456,47 @@ function mob_class:NEW_line_of_sight(pos1, pos2, stepsize) return false end +-- check line of sight using raycasting (thanks Astrobe) +local ray_line_of_sight = function(self, pos1, pos2) + + local ray = minetest.raycast(pos1, pos2, true, false) + local thing = ray:next() + + while thing do + +-- if thing.type == "object" +-- and thing.ref ~= self.object +-- and not thing.ref:is_player() then return false end + + if thing.type == "node" then + + local name = minetest.get_node(thing.under).name + + if minetest.registered_items[name] + and minetest.registered_items[name].walkable then return false end + end + + thing = ray:next() + end + + return true +end + +-- detect if using minetest 5.0 by searching for permafrost node +local is_50 = minetest.registered_nodes["default:permafrost"] + +function mob_class:line_of_sight(pos1, pos2, stepsize) + + if is_50 then -- only use if minetest 5.0 is detected + return ray_line_of_sight(self, pos1, pos2) + end + + return line_of_sight(self, pos1, pos2, stepsize) +end + -- global function function mobs:line_of_sight(entity, pos1, pos2, stepsize) - - return mob_class.line_of_sight(entity, pos1, pos2, stepsize) + return entity:line_of_sight(pos1, pos2, stepsize) end @@ -491,7 +537,7 @@ function mob_class:flight_check() local def = minetest.registered_nodes[self.standing_in] - if not def then return false end -- nil check + if not def then return false end if type(self.fly_in) == "string" and self.standing_in == self.fly_in then @@ -549,11 +595,7 @@ function mob_class:do_stay_near() local target = nearby_nodes[math.random(1, #nearby_nodes)] local direction = vector.direction(pos, target) - - local vec = { - x = target.x - pos.x, - z = target.z - pos.z - } + local vec = {x = target.x - pos.x, z = target.z - pos.z} yaw = (atan(vec.z / vec.x) + pi / 2) - self.rotate @@ -594,7 +636,7 @@ local effect = function(pos, amount, texture, min_size, max_size, radius, gravit minsize = min_size, maxsize = max_size, texture = texture, - glow = glow, + glow = glow }) end @@ -627,6 +669,11 @@ end -- drop items function mob_class:item_drop() + local pos = self.object:get_pos() + + -- check for drops function + self.drops = type(self.drops) == "function" and self.drops(pos) or self.drops + -- check for nil or no drops if not self.drops or #self.drops == 0 then return @@ -643,7 +690,6 @@ function mob_class:item_drop() and self.cause_of_death.puncher:is_player() or nil local obj, item, num - local pos = self.object:get_pos() for n = 1, #self.drops do @@ -676,7 +722,7 @@ function mob_class:item_drop() obj:set_velocity({ x = random(-10, 10) / 9, y = 6, - z = random(-10, 10) / 9, + z = random(-10, 10) / 9 }) elseif obj then @@ -694,7 +740,7 @@ function mob_class:check_for_death(cmi_cause) -- has health actually changed? if self.health == self.old_health and self.health > 0 then - return + return false end self.old_health = self.health @@ -802,6 +848,11 @@ function mob_class:is_at_cliff() return false end + -- if object no longer exists then return + if not self.object:get_luaentity() then + return false + end + local yaw = self.object:get_yaw() local dir_x = -sin(yaw) * (self.collisionbox[4] + 0.5) local dir_z = cos(yaw) * (self.collisionbox[4] + 0.5) @@ -810,8 +861,7 @@ function mob_class:is_at_cliff() if minetest.line_of_sight( {x = pos.x + dir_x, y = ypos, z = pos.z + dir_z}, - {x = pos.x + dir_x, y = ypos - self.fear_height, z = pos.z + dir_z} - , 1) then + {x = pos.x + dir_x, y = ypos - self.fear_height, z = pos.z + dir_z}, 1) then return true end @@ -862,21 +912,21 @@ function mob_class:do_env_damage() else self.object:remove() end - return + return true 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 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 + if self:check_for_death({type = "light"}) then return true end end end end @@ -888,44 +938,49 @@ 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 - + effect(pos, 5, "bubble.png", nil, nil, 1, nil) + + if self:check_for_death({type = "environment", + pos = pos, node = self.standing_in}) then return true end + 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 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 + + if self:check_for_death({type = "environment", pos = pos, + node = self.standing_in, hot = true}) then return true end end + end -- damage_per_second node check elseif nodef.damage_per_second ~= 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 + 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 + + if self:check_for_death({type = "environment", + pos = pos, node = self.standing_in}) then return true end end end --[[ @@ -938,10 +993,10 @@ function mob_class:do_env_damage() self.health = self.health - self.suffocation if self:check_for_death({type = "environment", - pos = pos, node = self.standing_in}) then return end + pos = pos, node = self.standing_in}) then return true end end ]] - self:check_for_death({type = "unknown"}) + return self:check_for_death({type = "unknown"}) end @@ -968,6 +1023,9 @@ function mob_class:do_jump() local pos = self.object:get_pos() local yaw = self.object:get_yaw() + -- sanity check + if not yaw then return false end + -- what is mob standing on? pos.y = pos.y + self.collisionbox[2] - 0.2 @@ -1017,9 +1075,9 @@ function mob_class:do_jump() if self.object:get_luaentity() then self.object:set_acceleration({ - x = v.x * 2,--1.5, + x = v.x * 2, y = 0, - z = v.z * 2,--1.5 + z = v.z * 2 }) end end, self, v) @@ -1130,7 +1188,7 @@ function mob_class:breed() mesh = self.base_mesh, visual_size = self.base_size, collisionbox = self.base_colbox, - selectionbox = self.base_selbox, + selectionbox = self.base_selbox }) -- custom function when child grows up @@ -1245,7 +1303,7 @@ function mob_class:breed() textures = textures, visual_size = { x = self.base_size.x * .5, - y = self.base_size.y * .5, + y = self.base_size.y * .5 }, collisionbox = { self.base_colbox[1] * .5, @@ -1253,7 +1311,7 @@ function mob_class:breed() self.base_colbox[3] * .5, self.base_colbox[4] * .5, self.base_colbox[5] * .5, - self.base_colbox[6] * .5, + self.base_colbox[6] * .5 }, selectionbox = { self.base_selbox[1] * .5, @@ -1261,7 +1319,7 @@ function mob_class:breed() self.base_selbox[3] * .5, self.base_selbox[4] * .5, self.base_selbox[5] * .5, - self.base_selbox[6] * .5, + self.base_selbox[6] * .5 }, }) -- tamed and owned by parents' owner @@ -1312,17 +1370,22 @@ function mob_class:replace(pos) -- print ("replace node = ".. minetest.get_node(pos).name, pos.y) - local oldnode = {name = what} - local newnode = {name = with} - local on_replace_return - if self.on_replace then - on_replace_return = self:on_replace(pos, oldnode, newnode) + + local oldnode = what + local newnode = with + + -- convert any group: replacements to actual node name + if oldnode:find("group:") then + oldnode = minetest.get_node(pos).name + end + + if self:on_replace(pos, oldnode, newnode) == false then + return + end end - if on_replace_return ~= false then - minetest.set_node(pos, {name = with}) - end + minetest.set_node(pos, {name = with}) end end @@ -1619,7 +1682,7 @@ local specific_attack = function(list, what) end --- general attack function for all mobs ========== +-- general attack function for all mobs function mob_class:general_attack() -- return if already attacking, passive or docile during day @@ -1996,7 +2059,7 @@ function mob_class:do_states(dtime) and self.walk_chance ~= 0 and self.facing_fence ~= true and random(1, 100) <= self.walk_chance - and self:is_at_cliff() == false then + and self.at_cliff == false then self:set_velocity(self.walk_velocity) self.state = "walk" @@ -2077,15 +2140,13 @@ function mob_class:do_states(dtime) end -- stand for great fall in front - local temp_is_cliff = self:is_at_cliff() - if self.facing_fence == true - or temp_is_cliff - or random(1, 100) <= 30 then + or self.at_cliff + or random(1, 100) <= self.stand_chance then self:set_velocity(0) self.state = "stand" - self:set_animation("stand") + self:set_animation("stand", true) else self:set_velocity(self.walk_velocity) @@ -2106,7 +2167,7 @@ function mob_class:do_states(dtime) -- stop after 5 seconds or when at cliff if self.runaway_timer > 5 - or self:is_at_cliff() + or self.at_cliff or self.order == "stand" then self.runaway_timer = 0 self:set_velocity(0) @@ -2208,9 +2269,9 @@ function mob_class:do_states(dtime) self.blinktimer = 0 if self.blinkstatus then - self.object:settexturemod("") + self.object:set_texture_mod("") else - self.object:settexturemod("^[brighten") + self.object:set_texture_mod("^[brighten") end self.blinkstatus = not self.blinkstatus @@ -2232,13 +2293,14 @@ function mob_class:do_states(dtime) else self.object:remove() end + if minetest.get_modpath("tnt") and tnt and tnt.boom and not minetest.is_protected(pos, "") then tnt.boom(pos, { radius = node_break_radius, damage_radius = entity_damage_radius, - sound = self.sounds.explode, + sound = self.sounds.explode }) else @@ -2357,7 +2419,7 @@ function mob_class:do_states(dtime) self:smart_mobs(s, p, dist, dtime) end - if self:is_at_cliff() then + if self.at_cliff then self:set_velocity(0) self:set_animation("stand") @@ -2389,13 +2451,7 @@ function mob_class:do_states(dtime) if self.timer > 1 then self.timer = 0 - --- if self.double_melee_attack --- and random(1, 2) == 1 then --- self:set_animation("punch2") --- else - self:set_animation("punch") --- end + self:set_animation("punch") local p2 = p local s2 = s @@ -2500,6 +2556,9 @@ function mob_class:falling(pos) -- floating in water (or falling) local v = self.object:get_velocity() + -- sanity check + if not v then return end + if v.y > 0 then -- apply gravity when moving up @@ -2546,13 +2605,15 @@ function mob_class:falling(pos) 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 @@ -2652,7 +2713,7 @@ function mob_class:on_punch(hitter, tflp, tool_capabilities, dir) -- add weapon wear punch_interval = tool_capabilities.full_punch_interval or 1.4 - --[[ toolrank support + -- toolrank support local wear = floor((punch_interval / 75) * 9000) if mobs.is_creative(hitter:get_player_name()) then @@ -2673,7 +2734,7 @@ function mob_class:on_punch(hitter, tflp, tool_capabilities, dir) end hitter:set_wielded_item(weapon) ---]] + -- only play hit sound and show blood effects if damage is 1 or over if damage >= 1 then @@ -2713,9 +2774,9 @@ function mob_class:on_punch(hitter, tflp, tool_capabilities, dir) -- do damage 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 + else self.health = self.health - floor(damage) - end + end -- exit here if dead, check for tools with fire damage local hot = tool_capabilities and tool_capabilities.damage_groups @@ -2741,11 +2802,14 @@ function mob_class:on_punch(hitter, tflp, tool_capabilities, dir) end -- END if damage -- knock back effect (only on full punch) - --[[ if self.knock_back and tflp >= punch_interval then local v = self.object:get_velocity() + + -- sanity check + if not v then return end + local kb = damage or 1 local up = 2 @@ -2769,7 +2833,7 @@ function mob_class:on_punch(hitter, tflp, tool_capabilities, dir) self.pause_timer = 0.25 end - --]] + -- if skittish then run away if self.runaway == true and self.order ~= "stand" then @@ -2913,6 +2977,12 @@ function mob_class:mob_activate(staticdata, def, dtime) end end + -- force current model into mob + self.mesh = def.mesh + self.base_mesh = def.mesh + self.collisionbox = def.collisionbox + self.selectionbox = def.selectionbox + -- select random texture, set model and size if not self.base_texture then @@ -2983,7 +3053,7 @@ function mob_class:mob_activate(staticdata, def, dtime) end if self.health == 0 then - self.health = random (self.hp_min, self.hp_max) + self.health = random(self.hp_min, self.hp_max) end -- pathfinding init @@ -3258,6 +3328,8 @@ function mob_class:on_step(dtime) 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)) + minetest.get_player_by_name(self.owner):set_attribute("dragon_meta1", ""..self.metadata) + minetest.get_player_by_name(self.owner):set_attribute("dragon_meta2", ""..self.metadata2) end end if self.name == "mobs:sheep" then @@ -3265,6 +3337,8 @@ function mob_class:on_step(dtime) 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)) + minetest.get_player_by_name(self.owner):set_attribute("sheep_meta1", ""..self.metadata) + minetest.get_player_by_name(self.owner):set_attribute("sheep_meta2", ""..self.metadata2) end end @@ -3273,6 +3347,8 @@ function mob_class:on_step(dtime) 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)) + minetest.get_player_by_name(self.owner):set_attribute("fox_meta1", ""..self.metadata) + minetest.get_player_by_name(self.owner):set_attribute("fox_meta2", ""..self.metadata2) end end if self.name == "mobs:tortoise" then @@ -3280,6 +3356,8 @@ function mob_class:on_step(dtime) 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)) + minetest.get_player_by_name(self.owner):set_attribute("tortoise_meta1", ""..self.metadata) + minetest.get_player_by_name(self.owner):set_attribute("tortoise_meta2", ""..self.metadata2) end end if self.name == "mobs:knight_1248" then @@ -3287,16 +3365,30 @@ function mob_class:on_step(dtime) 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)) + minetest.get_player_by_name(self.owner):set_attribute("knight_meta1", ""..self.metadata) + minetest.get_player_by_name(self.owner):set_attribute("knight_meta2", ""..self.metadata2) end - end - - if self.name == "mobs:dog" and self.metadata2 == 1 then + 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)) + minetest.get_player_by_name(self.owner):set_attribute("dog_meta1", ""..self.metadata) + minetest.get_player_by_name(self.owner):set_attribute("dog_meta2", ""..self.metadata2) 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)) + minetest.get_player_by_name(self.owner):set_attribute("cat_meta1", ""..self.metadata) + minetest.get_player_by_name(self.owner):set_attribute("cat_meta2", ""..self.metadata2) + 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 = {} @@ -3316,11 +3408,6 @@ function mob_class:on_step(dtime) 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 = {} @@ -3358,7 +3445,7 @@ function mob_class:on_step(dtime) 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 numd > 25 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 @@ -3392,7 +3479,7 @@ function mob_class:on_step(dtime) 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 + if numd > 25 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 @@ -3491,7 +3578,7 @@ function mob_class:on_step(dtime) 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 numd > 25 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 @@ -3567,7 +3654,10 @@ function mob_class:on_step(dtime) end local pos = self.object:get_pos() - local yaw = 0 + local yaw = self.object:get_yaw() + + -- early warning check, if no yaw then no entity, skip rest of function + if not yaw then return end -- get node at foot level every quarter second self.node_timer = (self.node_timer or 0) + dtime @@ -3587,6 +3677,24 @@ function mob_class:on_step(dtime) x = pos.x, y = pos.y + y_level + 0.25, z = pos.z}, "air").name -- print ("standing in " .. self.standing_in) + -- if standing inside solid block then jump to escape + if minetest.registered_nodes[self.standing_in].walkable and + minetest.registered_nodes[self.standing_in].drawtype == "normal" then + + self.object:set_velocity({ + x = 0, + y = self.jump_height, + z = 0 + }) + end + + -- check and stop if standing at cliff and fear of heights + self.at_cliff = self:is_at_cliff() + + if self.at_cliff then + self:set_velocity(0) + end + -- check for mob expiration (0.25 instead of dtime since were in a timer) self:mob_expire(pos, 0.25) end @@ -3598,8 +3706,6 @@ function mob_class:on_step(dtime) if self.delay and self.delay > 0 then - local yaw = self.object:get_yaw() - if self.delay == 1 then yaw = self.target_yaw else @@ -3682,7 +3788,7 @@ function mob_class:on_step(dtime) self.env_damage_timer = 0 -- check for environmental damage (water, fire, lava etc.) - self:do_env_damage() + if self:do_env_damage() then return end -- node replace check (cow eats grass etc.) self:replace(pos) @@ -3703,7 +3809,6 @@ function mob_class:on_step(dtime) self:do_stay_near() end - function update(self, clicker) if self.name == "mobs:dog" then if self.owner ~= clicker:get_player_name() then @@ -3970,7 +4075,8 @@ function mob_class:on_blast(damage) damage_groups = {fleshy = damage}, }, nil) - return false, true, {} + -- return no damage, no knockback, no item drops, mob api handles all + return false, false, {} end @@ -3996,6 +4102,7 @@ minetest.register_entity(name, setmetatable({ jump_height = def.jump_height, drawtype = def.drawtype, -- DEPRECATED, use rotate instead rotate = math.rad(def.rotate or 0), -- 0=front, 90=side, 180=back, 270=side2 + glow = def.glow, lifetimer = def.lifetimer, hp_min = max(1, (def.hp_min or 5) * difficulty), hp_max = max(1, (def.hp_max or 10) * difficulty), @@ -4027,6 +4134,7 @@ minetest.register_entity(name, setmetatable({ follow = def.follow, jump = def.jump, walk_chance = def.walk_chance, + stand_chance = def.stand_chance, attack_chance = def.attack_chance, passive = def.passive, knock_back = def.knock_back, @@ -4085,7 +4193,6 @@ minetest.register_entity(name, setmetatable({ on_activate = function(self, staticdata, dtime) return self:mob_activate(staticdata, def, dtime) end, - on_receive_fields = function(self, fields, sender) if self.owner == sender:get_player_name() then if fields.leave then @@ -4181,11 +4288,13 @@ end -- END mobs:register_mob function -- count how many mobs of one type are inside an area +-- will also return true for second value if player is inside area local count_mobs = function(pos, type) local total = 0 local objs = minetest.get_objects_inside_radius(pos, aoc_range * 2) local ent + local players for n = 1, #objs do @@ -4197,10 +4306,12 @@ local count_mobs = function(pos, type) if ent and ent.name and ent.name == type then total = total + 1 end + else + players = true end end - return total + return total, players end @@ -4269,7 +4380,12 @@ function mobs:spawn_specific(name, nodes, neighbors, min_light, max_light, end -- get total number of this mob in area - local num_mob = count_mobs(pos, name) + local num_mob, is_pla = count_mobs(pos, name) + + if not is_pla then +--print ("--- no players within active area, will not spawn " .. name) + return + end if num_mob >= aoc then --print ("--- too many " .. name .. " in area", num_mob .. "/" .. aoc) @@ -4316,7 +4432,7 @@ function mobs:spawn_specific(name, nodes, neighbors, min_light, max_light, end -- only spawn away from player - local objs = minetest.get_objects_inside_radius(pos, 10) + local objs = minetest.get_objects_inside_radius(pos, 8) for n = 1, #objs do @@ -4370,7 +4486,8 @@ end -- compatibility with older mob registration -function mobs:register_spawn(name, nodes, max_light, min_light, chance, active_object_count, max_height, day_toggle) +function mobs:register_spawn(name, nodes, max_light, min_light, chance, + active_object_count, max_height, day_toggle) mobs:spawn_specific(name, nodes, {"air"}, min_light, max_light, 30, chance, active_object_count, -31000, max_height, day_toggle) @@ -4392,8 +4509,7 @@ function mobs:spawn(def) def.min_height or -31000, def.max_height or 31000, def.day_toggle, - def.on_spawn - ) + def.on_spawn) end @@ -4455,7 +4571,7 @@ function mobs:register_arrow(name, def) collisiondetection = false, texture = def.tail_texture, size = def.tail_size or 5, - glow = def.glow or 0, + glow = def.glow or 0 }) end @@ -4620,6 +4736,8 @@ function mobs:register_egg(mob, desc, background, addegg, no_creative) local mob = minetest.add_entity(pos, mob, data) local ent = mob:get_luaentity() + if not ent then return end -- sanity check + -- set owner if not a monster if ent.type ~= "monster" then ent.owner = placer:get_player_name() @@ -4665,6 +4783,8 @@ function mobs:register_egg(mob, desc, background, addegg, no_creative) local mob = minetest.add_entity(pos, mob) local ent = mob:get_luaentity() + if not ent then return end -- sanity check + -- don't set owner if monster or sneak pressed if ent.type ~= "monster" and not placer:get_player_control().sneak then @@ -4990,8 +5110,6 @@ function mobs:feed_tame(self, clicker, feed_count, breed, tame) local tag = self.nametag or "" minetest.show_formspec(name, "mobs_nametag", "size[8,4]" - .. default.gui_bg - .. default.gui_bg_img .. "field[0.5,1;7.5,0;name;" .. minetest.formspec_escape(S("Enter name:")) .. ";" .. tag .. "]" .. "button_exit[2.5,3.5;3,1;mob_rename;" @@ -5052,6 +5170,11 @@ end) -- compatibility function for old entities to new modpack entities function mobs:alias_mob(old_name, new_name) + -- check old_name entity doesnt already exist + if minetest.registered_entities[old_name] then + return + end + -- spawn egg minetest.register_alias(old_name, new_name) @@ -5060,15 +5183,19 @@ function mobs:alias_mob(old_name, new_name) physical = false, - on_activate = function(self) + on_activate = function(self, staticdata) if minetest.registered_entities[new_name] then - minetest.add_entity(self.object:get_pos(), new_name) + minetest.add_entity(self.object:get_pos(), new_name, staticdata) 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.object:remove() end + end, + + get_staticdata = function(self) + return self end }) end diff --git a/mods/mobs/api__.lua b/mods/mobs/api_.lua similarity index 84% rename from mods/mobs/api__.lua rename to mods/mobs/api_.lua index 0213acc..f6695c6 100644 --- a/mods/mobs/api__.lua +++ b/mods/mobs/api_.lua @@ -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,7 +858,10 @@ 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 @@ -2220,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 @@ -2839,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 @@ -2885,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 @@ -3189,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 @@ -3200,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() @@ -3226,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() @@ -3247,304 +3252,333 @@ 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)) + minetest.get_player_by_name(self.owner):set_attribute("dragon_meta1", ""..self.metadata) + minetest.get_player_by_name(self.owner):set_attribute("dragon_meta2", ""..self.metadata2) + 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)) + minetest.get_player_by_name(self.owner):set_attribute("sheep_meta1", ""..self.metadata) + minetest.get_player_by_name(self.owner):set_attribute("sheep_meta2", ""..self.metadata2) + + 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)) + minetest.get_player_by_name(self.owner):set_attribute("fox_meta1", ""..self.metadata) + minetest.get_player_by_name(self.owner):set_attribute("fox_meta2", ""..self.metadata2) + 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)) + minetest.get_player_by_name(self.owner):set_attribute("tortoise_meta1", ""..self.metadata) + minetest.get_player_by_name(self.owner):set_attribute("tortoise_meta2", ""..self.metadata2) + 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)) + minetest.get_player_by_name(self.owner):set_attribute("knight_meta1", ""..self.metadata) + minetest.get_player_by_name(self.owner):set_attribute("knight_meta2", ""..self.metadata2) + end + end + 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)) + minetest.get_player_by_name(self.owner):set_attribute("dog_meta1", ""..self.metadata) + minetest.get_player_by_name(self.owner):set_attribute("dog_meta2", ""..self.metadata2) + 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)) + minetest.get_player_by_name(self.owner):set_attribute("cat_meta1", ""..self.metadata) + minetest.get_player_by_name(self.owner):set_attribute("cat_meta2", ""..self.metadata2) + 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 > 25 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 > 25 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 > 25 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 @@ -4417,8 +4451,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 @@ -4456,8 +4492,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 @@ -4471,7 +4509,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 @@ -4484,8 +4525,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 @@ -4687,8 +4730,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 @@ -4801,8 +4846,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") @@ -5035,8 +5082,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 diff --git a/mods/mobs/init.lua b/mods/mobs/init.lua index 4ff17cb..9d2a2b2 100644 --- a/mods/mobs/init.lua +++ b/mods/mobs/init.lua @@ -9,4 +9,105 @@ dofile(path.."/fox.lua") dofile(path.."/tortoise.lua") dofile(path.."/knight.lua") dofile(path.."/monsterx1.lua") -dofile(path.."/mummy.lua") \ No newline at end of file +dofile(path.."/mummy.lua") + +local animals = { + {"dog","Dog","dog"}, + {"cat","Cat","cat"}, + {"sheep","Sheep","sheep"}, + {"tortoise","Tortoise","tortoise"}, + {"knight","Knight","knight_1248"}, + {"fox","Fox","fox"}, + {"dragon","Dragon","dragon"}, +} + +local timer = 0 +minetest.register_globalstep(function(dtime) + timer = timer + dtime; + if timer >= 1 then + local players = minetest.get_connected_players() + for _,player in ipairs(players) do + for _, m in pairs(animals) do + if player:get_attribute(m[1].."x") then + local all_objects = minetest.get_objects_inside_radius({x=tonumber(player:get_attribute(m[1].."x")), y=tonumber(player:get_attribute(m[1].."y")), z=tonumber(player:get_attribute(m[1].."z"))}, 30) + local is_player = false + for _,obj in ipairs(all_objects) do + if obj:is_player() then + is_player = true + end + end + local set_animal = true + if is_player then + for _,obj in ipairs(all_objects) do + if obj:get_entity_name() == "mobs:"..m[3] and obj:get_luaentity().owner == player:get_player_name() then + if set_animal == false then + obj:remove() + end + set_animal = false + end + end + end + if set_animal and is_player then + local obj2 = minetest.env:add_entity({x=tonumber(player:get_attribute(m[1].."x")), y=tonumber(player:get_attribute(m[1].."y")), z=tonumber(player:get_attribute(m[1].."z"))},"mobs:"..m[3]) + local ent = obj2:get_luaentity() + ent.owner = player:get_player_name() + ent.npc_name = player:get_player_name().."'s "..m[2] + obj2:set_properties({infotext=player:get_player_name().."'s "..m[2]}) + if player:get_attribute(m[1].."_meta1") then + ent.metadata = tonumber(player:get_attribute(m[1].."_meta1")) + ent.metadata2 = tonumber(player:get_attribute(m[1].."_meta2")) + update_meta(player,m[1],obj2,ent) + end + end + end + end + end + end +end) + +function update_meta(player,animal,obj,ent) + if animal == "dog" then + if tonumber(player:get_attribute("dog_meta1")) == 2 then + obj:set_properties({textures={"mobs_dog2.png"}}) + elseif tonumber(player:get_attribute("dog_meta1")) == 1 then + obj:set_properties({textures={"mobs_dog.png"}}) + end + elseif animal == "cat" then + if tonumber(player:get_attribute("cat_meta1")) == 2 then + obj:set_properties({textures={"mobs_kitten.png"}}) + elseif tonumber(player:get_attribute("cat_meta1")) == 3 then + obj:set_properties({textures={"mobs_kitten2.png"}}) + elseif tonumber(player:get_attribute("cat_meta1")) == 4 then + obj:set_properties({textures={"mobs_kitten3.png"}}) + elseif tonumber(player:get_attribute("cat_meta1")) == 1 then + obj:set_properties({textures={"mobs_kitten4.png"}}) + end + elseif animal == "dragon" then + if tonumber(player:get_attribute("dragon_meta1")) == 2 then + obj:set_properties({textures={"mobs_dragon_yellow.png"}}) + elseif tonumber(player:get_attribute("dragon_meta1")) == 3 then + obj:set_properties({textures={"mobs_dragon_blue.png"}}) + elseif tonumber(player:get_attribute("dragon_meta1")) == 4 then + obj:set_properties({textures={"mobs_dragon_green.png"}}) + elseif tonumber(player:get_attribute("dragon_meta1")) == 5 then + obj:set_properties({textures={"mobs_dragon_black.png"}}) + elseif tonumber(player:get_attribute("dragon_meta1")) == 6 then + obj:set_properties({textures={"mobs_dragon_great.png"}}) + elseif tonumber(player:get_attribute("dragon_meta1")) == 1 then + obj:set_properties({textures={"mobs_dragon_red.png"}}) + end + elseif animal == "fox" then + if tonumber(player:get_attribute("fox_meta1")) == 2 then + obj:set_properties({textures={"mobs_fox1.png"}}) + elseif tonumber(player:get_attribute("fox_meta1")) == 1 then + obj:set_properties({textures={"mobs_fox.png"}}) + end + end + if tonumber(player:get_attribute(animal.."_meta2")) == 2 then + ent.walk_velocity = 0 + ent.run_velocity = 0 + elseif tonumber(player:get_attribute(animal.."_meta2")) == 1 then + ent.walk_velocity = 1 + ent.run_velocity = 3 + end +end \ No newline at end of file diff --git a/mods/pipeworks/crafts.lua b/mods/pipeworks/crafts.lua index 5cbf0b8..b98f973 100644 --- a/mods/pipeworks/crafts.lua +++ b/mods/pipeworks/crafts.lua @@ -19,10 +19,6 @@ minetest.register_craft( { }, }) - - - - minetest.register_craft( { output = "pipeworks:mese_sand_tube_1 2", recipe = { @@ -32,6 +28,23 @@ minetest.register_craft( { }, }) +minetest.register_craft( { + output = "pipeworks:crossing_tube_1 2", + recipe = { + { "gems:shadow_gem", "gems:shadow_gem", "gems:shadow_gem" }, + { "", "", "" }, + { "gems:shadow_gem", "gems:shadow_gem", "gems:shadow_gem" } + }, +}) + +minetest.register_craft( { + output = "pipeworks:mese_tube_000000 2", + recipe = { + { "gems:amethyst_gem", "gems:amethyst_gem", "gems:amethyst_gem" }, + { "", "", "" }, + { "gems:amethyst_gem", "gems:amethyst_gem", "gems:amethyst_gem" } + }, +}) minetest.register_craft( { diff --git a/mods/player_api/README.txt b/mods/player_api/README.txt index 22d040c..0f6a0b8 100644 --- a/mods/player_api/README.txt +++ b/mods/player_api/README.txt @@ -4,6 +4,7 @@ See license.txt for license information. Provides an API to allow multiple mods to set player models and textures. Also sets the default model, texture, and player flags. +This mod is only for content related to the Player API and the player object. Authors of source code ---------------------- @@ -16,17 +17,13 @@ stujones11 (CC BY-SA 3.0): character.b3d character.blend -- Both derived from a model by MirceaKitsune (CC BY-SA 3.0) +An0n3m0us (CC BY-SA 3.0): + character.b3d + character.blend -- Player animation improvement + Jordach (CC BY-SA 3.0): character.png -paramat (CC BY-SA 3.0): - gui_hotbar.png - gui_hotbar_selected.png - celeron55, Perttu Ahola (CC BY-SA 3.0): player.png player_back.png - -sonictechtonic (CC BY 3.0): -https://www.freesound.org/people/sonictechtonic/sounds/241872/ - player_damage.ogg diff --git a/mods/player_api/api.lua b/mods/player_api/api.lua index 0afd679..4cb3944 100644 --- a/mods/player_api/api.lua +++ b/mods/player_api/api.lua @@ -96,6 +96,15 @@ end) local player_set_animation = player_api.set_animation local player_attached = player_api.player_attached +-- Prevent knockback for attached players +local old_calculate_knockback = minetest.calculate_knockback +function minetest.calculate_knockback(player, ...) + if player_attached[player:get_player_name()] then + return 0 + end + return old_calculate_knockback(player, ...) +end + -- Check each player and apply animations minetest.register_globalstep(function(dtime) for _, player in pairs(minetest.get_connected_players()) do diff --git a/mods/player_api/init.lua b/mods/player_api/init.lua index 783ff7e..19028de 100644 --- a/mods/player_api/init.lua +++ b/mods/player_api/init.lua @@ -31,6 +31,4 @@ minetest.register_on_joinplayer(function(player) {x = 200, y = 219}, 30 ) - player:hud_set_hotbar_image("gui_hotbar.png") - player:hud_set_hotbar_selected_image("gui_hotbar_selected.png") end) diff --git a/mods/player_api/license.txt b/mods/player_api/license.txt index 69bb2f8..dac0408 100644 --- a/mods/player_api/license.txt +++ b/mods/player_api/license.txt @@ -22,7 +22,7 @@ Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) Copyright (C) 2011-2018 celeron55, Perttu Ahola Copyright (C) 2012-2018 Jordach Copyright (C) 2018 stujones11 -Copyright (C) 2018 paramat +Copyright (C) 2019 An0n3m0us You are free to: Share — copy and redistribute the material in any medium or format. @@ -51,34 +51,3 @@ rights may limit how you use the material. For more details: http://creativecommons.org/licenses/by-sa/3.0/ - ------------------------------------- - -Attribution 3.0 Unported (CC BY 3.0) -Copyright (C) 2014-2018 sonictechtonic - -You are free to: -Share — copy and redistribute the material in any medium or format. -Adapt — remix, transform, and build upon the material for any purpose, even commercially. -The licensor cannot revoke these freedoms as long as you follow the license terms. - -Under the following terms: - -Attribution — You must give appropriate credit, provide a link to the license, and -indicate if changes were made. You may do so in any reasonable manner, but not in any way -that suggests the licensor endorses you or your use. - -No additional restrictions — You may not apply legal terms or technological measures that -legally restrict others from doing anything the license permits. - -Notices: - -You do not have to comply with the license for elements of the material in the public -domain or where your use is permitted by an applicable exception or limitation. -No warranties are given. The license may not give you all of the permissions necessary -for your intended use. For example, other rights such as publicity, privacy, or moral -rights may limit how you use the material. - -For more details: -http://creativecommons.org/licenses/by/3.0/ - diff --git a/mods/player_api/models/character.b3d b/mods/player_api/models/character.b3d index b3b772a..8edbaf6 100644 Binary files a/mods/player_api/models/character.b3d and b/mods/player_api/models/character.b3d differ diff --git a/mods/player_api/models/character.blend b/mods/player_api/models/character.blend index 652579c..f0ce411 100644 Binary files a/mods/player_api/models/character.blend and b/mods/player_api/models/character.blend differ diff --git a/mods/screwdriver/locale/screwdriver.ms.tr b/mods/screwdriver/locale/screwdriver.ms.tr new file mode 100644 index 0000000..f296fc5 --- /dev/null +++ b/mods/screwdriver/locale/screwdriver.ms.tr @@ -0,0 +1,3 @@ +# textdomain: screwdriver +Screwdriver=Pemutar Skru +(left-click rotates face, right-click rotates axis)=(klik-kiri putar muka, klik-kanan putar paksi) diff --git a/mods/screwdriver/locale/screwdriver.ru.tr b/mods/screwdriver/locale/screwdriver.ru.tr new file mode 100644 index 0000000..bbab330 --- /dev/null +++ b/mods/screwdriver/locale/screwdriver.ru.tr @@ -0,0 +1,3 @@ +# textdomain: screwdriver +Screwdriver=Отвёртка +(left-click rotates face, right-click rotates axis)=(клик левой кнопкой мыши вращает грань, клик правой кнопкой мыши вращает ось) diff --git a/mods/screwdriver/locale/screwdriver.se.tr b/mods/screwdriver/locale/screwdriver.se.tr new file mode 100644 index 0000000..9197357 --- /dev/null +++ b/mods/screwdriver/locale/screwdriver.se.tr @@ -0,0 +1,3 @@ +# textdomain: screwdriver +Screwdriver=Skruvmejsel +(left-click rotates face, right-click rotates axis)=(vänster-klick roterar ansikte, höger-klick roterar axeln) \ No newline at end of file diff --git a/mods/screwdriver/locale/screwdriver.zh_CN.tr b/mods/screwdriver/locale/screwdriver.zh_CN.tr new file mode 100644 index 0000000..caddf79 --- /dev/null +++ b/mods/screwdriver/locale/screwdriver.zh_CN.tr @@ -0,0 +1,3 @@ +# textdomain: screwdriver +Screwdriver=螺丝刀 +(left-click rotates face, right-click rotates axis)=(左键单击旋转面,右键单击旋转轴) diff --git a/mods/screwdriver/locale/screwdriver.zh_TW.tr b/mods/screwdriver/locale/screwdriver.zh_TW.tr new file mode 100644 index 0000000..e638bfa --- /dev/null +++ b/mods/screwdriver/locale/screwdriver.zh_TW.tr @@ -0,0 +1,3 @@ +# textdomain: screwdriver +Screwdriver=螺絲刀 +(left-click rotates face, right-click rotates axis)=(左鍵單擊旋轉面,右鍵單擊旋轉軸) diff --git a/mods/sethome/locale/sethome.ms.tr b/mods/sethome/locale/sethome.ms.tr new file mode 100644 index 0000000..7e9ec76 --- /dev/null +++ b/mods/sethome/locale/sethome.ms.tr @@ -0,0 +1,8 @@ +# textdomain: sethome +Can use /sethome and /home=Boleh guna /sethome dan /home +Teleport you to your home point=Teleportasikan anda ke titik rumah anda +Teleported to home!=Diteleportasikan ke rumah! +Set a home using /sethome=Tetapkan rumah menggunakan /sethome +Set your home point=Tetapkan titik rumah anda +Home set!=Rumah ditetapkan! +Player not found!=Pemain tidak dijumpai! diff --git a/mods/sethome/locale/sethome.ru.tr b/mods/sethome/locale/sethome.ru.tr new file mode 100644 index 0000000..6738824 --- /dev/null +++ b/mods/sethome/locale/sethome.ru.tr @@ -0,0 +1,8 @@ +# textdomain: sethome +Can use /sethome and /home=Возможность использовать /sethome и /home +Teleport you to your home point=Вы телепортируетесь в свою домашнюю точку +Teleported to home!=Вы телепортировались домой! +Set a home using /sethome=Установите домашнюю точку, используя /sethome +Set your home point=Установите вашу домашнюю точку +Home set!=Домашняя точка установлена! +Player not found!=Игрок не обнаружен! diff --git a/mods/sethome/locale/sethome.se.tr b/mods/sethome/locale/sethome.se.tr new file mode 100644 index 0000000..6077e4a --- /dev/null +++ b/mods/sethome/locale/sethome.se.tr @@ -0,0 +1,8 @@ +# textdomain: sethome +Can use /sethome and /home=Kan används /sethome och /home +Teleport you to your home point=Teleportera dig till din hempunkt +Teleported to home!=Teleporterad hem! +Set a home using /sethome=Ställ in ett hem med /sethome +Set your home point=Ställ in din hempunkt +Home set!=Hem inställt! +Player not found!=Spelare inte hittad! \ No newline at end of file diff --git a/mods/sethome/locale/sethome.zh_CN.tr b/mods/sethome/locale/sethome.zh_CN.tr new file mode 100644 index 0000000..9e3780a --- /dev/null +++ b/mods/sethome/locale/sethome.zh_CN.tr @@ -0,0 +1,8 @@ +# textdomain: sethome +Can use /sethome and /home=可以使用/sethome和/home +Teleport you to your home point=传送您到您家的地点 +Teleported to home!=已传送到家! +Set a home using /sethome=使用/sethome设定家 +Set your home point=设定您家的地点 +Home set!=已设定家! +Player not found!=未找到玩家! diff --git a/mods/sethome/locale/sethome.zh_TW.tr b/mods/sethome/locale/sethome.zh_TW.tr new file mode 100644 index 0000000..43e14aa --- /dev/null +++ b/mods/sethome/locale/sethome.zh_TW.tr @@ -0,0 +1,8 @@ +# textdomain: sethome +Can use /sethome and /home=可以使用/sethome和/home +Teleport you to your home point=傳送您到您家的地點 +Teleported to home!=已傳送到家! +Set a home using /sethome=使用/sethome設定家 +Set your home point=設定您家的地點 +Home set!=已設定家! +Player not found!=未找到玩家! diff --git a/mods/sfinv/api.lua b/mods/sfinv/api.lua index 509cb90..1dbc44a 100644 --- a/mods/sfinv/api.lua +++ b/mods/sfinv/api.lua @@ -37,21 +37,21 @@ function sfinv.get_nav_fs(player, context, nav, current_idx) end local theme_inv = [[ - image[0,4.7;1,1;gui_hb_bg.png] - image[1,4.7;1,1;gui_hb_bg.png] - image[2,4.7;1,1;gui_hb_bg.png] - image[3,4.7;1,1;gui_hb_bg.png] - image[4,4.7;1,1;gui_hb_bg.png] - image[5,4.7;1,1;gui_hb_bg.png] - image[6,4.7;1,1;gui_hb_bg.png] - image[7,4.7;1,1;gui_hb_bg.png] - list[current_player;main;0,4.7;8,1;] - list[current_player;main;0,5.85;8,3;8] + image[0,5.2;1,1;gui_hb_bg.png] + image[1,5.2;1,1;gui_hb_bg.png] + image[2,5.2;1,1;gui_hb_bg.png] + image[3,5.2;1,1;gui_hb_bg.png] + image[4,5.2;1,1;gui_hb_bg.png] + image[5,5.2;1,1;gui_hb_bg.png] + image[6,5.2;1,1;gui_hb_bg.png] + image[7,5.2;1,1;gui_hb_bg.png] + list[current_player;main;0,5.2;8,1;] + list[current_player;main;0,6.35;8,3;8] ]] function sfinv.make_formspec(player, context, content, show_inv, size) local tmp = { - size or "size[8,8.6]", + size or "size[8,9.1]", sfinv.get_nav_fs(player, context, context.nav_titles, context.nav_idx), show_inv and theme_inv or "", content diff --git a/mods/sfinv/locale/sfinv.ms.tr b/mods/sfinv/locale/sfinv.ms.tr new file mode 100644 index 0000000..cc416ca --- /dev/null +++ b/mods/sfinv/locale/sfinv.ms.tr @@ -0,0 +1,2 @@ +# textdomain:sfinv +Crafting=Pertukangan diff --git a/mods/sfinv/locale/sfinv.ru.tr b/mods/sfinv/locale/sfinv.ru.tr new file mode 100644 index 0000000..a98c708 --- /dev/null +++ b/mods/sfinv/locale/sfinv.ru.tr @@ -0,0 +1,2 @@ +# textdomain:sfinv +Crafting=Крафтинг diff --git a/mods/sfinv/locale/sfinv.se.tr b/mods/sfinv/locale/sfinv.se.tr new file mode 100644 index 0000000..cf2924a --- /dev/null +++ b/mods/sfinv/locale/sfinv.se.tr @@ -0,0 +1,2 @@ +# textdomain:sfinv +Crafting=Tillverkning \ No newline at end of file diff --git a/mods/sfinv/locale/sfinv.zh_CN.tr b/mods/sfinv/locale/sfinv.zh_CN.tr new file mode 100644 index 0000000..251362f --- /dev/null +++ b/mods/sfinv/locale/sfinv.zh_CN.tr @@ -0,0 +1,2 @@ +# textdomain:sfinv +Crafting=合成 diff --git a/mods/sfinv/locale/sfinv.zh_TW.tr b/mods/sfinv/locale/sfinv.zh_TW.tr new file mode 100644 index 0000000..251362f --- /dev/null +++ b/mods/sfinv/locale/sfinv.zh_TW.tr @@ -0,0 +1,2 @@ +# textdomain:sfinv +Crafting=合成 diff --git a/mods/spawn/init.lua b/mods/spawn/init.lua index 0e1261e..12c957f 100644 --- a/mods/spawn/init.lua +++ b/mods/spawn/init.lua @@ -135,6 +135,7 @@ local function on_spawn(player) if success then player:set_pos(spawn_pos) end + return success end minetest.register_on_newplayer(function(player) @@ -153,7 +154,5 @@ minetest.register_on_respawnplayer(function(player) return end - on_spawn(player) - - return true + return on_spawn(player) end) diff --git a/mods/stairs/locale/stairs.fr.tr b/mods/stairs/locale/stairs.fr.tr index 2dd6594..81b575e 100644 --- a/mods/stairs/locale/stairs.fr.tr +++ b/mods/stairs/locale/stairs.fr.tr @@ -142,4 +142,4 @@ Ice Slab=Dalle de glace Snow Block Stair=Escalier en bloc de neige Inner Snow Block Stair=Escalier intérieur en bloc de neige Outer Snow Block Stair=Escalier extérieur en bloc de neige -Snow Block Slab=Escalier en bloc de neige +Snow Block Slab=Dalle en bloc de neige diff --git a/mods/stairs/locale/stairs.ms.tr b/mods/stairs/locale/stairs.ms.tr new file mode 100644 index 0000000..a39c7f6 --- /dev/null +++ b/mods/stairs/locale/stairs.ms.tr @@ -0,0 +1,145 @@ +# textdomain: stairs +Glass Stair=Tangga Kaca +Glass Slab=Papak Kaca +Inner Glass Stair=Tangga Kaca Dalaman +Outer Glass Stair=Tangga Kaca Luaran +Obsidian Glass Stair=Tangga Obsidia +Obsidian Glass Slab=Papak Obsidia +Inner Obsidian Glass Stair=Tangga Obsidia Dalaman +Outer Obsidian Glass Stair=Tangga Obsidia Luaran +Wooden Stair=Tangga Kayu +Inner Wooden Stair=Tangga Kayu Dalaman +Outer Wooden Stair=Tangga Kayu Luaran +Wooden Slab=Papak Kayu +Jungle Wood Stair=Tangga Kayu Hutan +Inner Jungle Wood Stair=Tangga Kayu Hutan Dalaman +Outer Jungle Wood Stair=Tangga Kayu Hutan Luaran +Jungle Wood Slab=Papak Kayu Hutan +Pine Wood Stair=Tangga Kayu Pain +Inner Pine Wood Stair=Tangga Kayu Pain Dalaman +Outer Pine Wood Stair=Tangga Kayu Pain Luaran +Pine Wood Slab=Papak Kayu Pain +Acacia Wood Stair=Tangga Kayu Akasia +Inner Acacia Wood Stair=Tangga Kayu Akasia Dalaman +Outer Acacia Wood Stair=Tangga Kayu Akasia Luaran +Acacia Wood Slab=Papak Kayu Akasia +Aspen Wood Stair=Tangga Kayu Aspen +Inner Aspen Wood Stair=Tangga Kayu Aspen Dalaman +Outer Aspen Wood Stair=Tangga Kayu Aspen Luaran +Aspen Wood Slab=Papak Kayu Aspen +Stone Stair=Tangga Batu +Inner Stone Stair=Tangga Batu Dalaman +Outer Stone Stair=Tangga Batu Luaran +Stone Slab=Papak Batu +Cobblestone Stair=Tangga Batu Buntar +Inner Cobblestone Stair=Tangga Batu Buntar Dalaman +Outer Cobblestone Stair=Tangga Batu Buntar Luaran +Cobblestone Slab=Papak Batu Buntar +Mossy Cobblestone Stair=Tangga Batu Buntar Berlumut +Inner Mossy Cobblestone Stair=Tangga Batu Buntar Berlumut Dalaman +Outer Mossy Cobblestone Stair=Tangga Batu Buntar Berlumut Luaran +Mossy Cobblestone Slab=Papak Batu Buntar Berlumut +Stone Brick Stair=Tangga Bata Batu +Inner Stone Brick Stair=Tangga Bata Batu Dalaman +Outer Stone Brick Stair=Tangga Bata Batu Luaran +Stone Brick Slab=Papak Bata Batu +Stone Block Stair=Tangga Bongkah Batu +Inner Stone Block Stair=Tangga Bongkah Batu Dalaman +Outer Stone Block Stair=Tangga Bongkah Batu Luaran +Stone Block Slab=Papak Bongkah Batu +Desert Stone Stair=Tangga Batu Gurun +Inner Desert Stone Stair=Tangga Batu Gurun Dalaman +Outer Desert Stone Stair=Tangga Batu Gurun Luaran +Desert Stone Slab=Papak Batu Gurun +Desert Cobblestone Stair=Tangga Batu Buntar Gurun +Inner Desert Cobblestone Stair=Tangga Batu Buntar Gurun Dalaman +Outer Desert Cobblestone Stair=Tangga Batu Buntar Gurun Luaran +Desert Cobblestone Slab=Papak Batu Buntar Gurun +Desert Stone Brick Stair=Tangga Bata Batu Gurun +Inner Desert Stone Brick Stair=Tangga Bata Batu Gurun Dalaman +Outer Desert Stone Brick Stair=Tangga Bata Batu Gurun Luaran +Desert Stone Brick Slab=Papak Bata Batu Gurun +Desert Stone Block Stair=Tangga Bongkah Batu Gurun +Inner Desert Stone Block Stair=Tangga Bongkah Batu Gurun Dalaman +Outer Desert Stone Block Stair=Tangga Bongkah Batu Gurun Luaran +Desert Stone Block Slab=Papak Bongkah Batu Gurun +Sandstone Stair=Tangga Batu Pasir +Inner Sandstone Stair=Tangga Batu Pasir Dalaman +Outer Sandstone Stair=Tangga Batu Pasir Luaran +Sandstone Slab=Papak Batu Pasir +Sandstone Brick Stair=Tangga Bata Batu Pasir +Inner Sandstone Brick Stair=Tangga Bata Batu Pasir Dalaman +Outer Sandstone Brick Stair=Tangga Bata Batu Pasir Luaran +Sandstone Brick Slab=Papak Bata Batu Pasir +Sandstone Block Stair=Tangga Bongkah Batu Pasir +Inner Sandstone Block Stair=Tangga Bongkah Batu Pasir Dalaman +Outer Sandstone Block Stair=Tangga Bongkah Batu Pasir Luaran +Sandstone Block Slab=Papak Bongkah Batu Pasir +Desert Sandstone Stair=Tangga Batu Pasir Gurun +Inner Desert Sandstone Stair=Tangga Batu Pasir Gurun Dalaman +Outer Desert Sandstone Stair=Tangga Batu Pasir Gurun Luaran +Desert Sandstone Slab=Papak Batu Pasir Gurun +Desert Sandstone Brick Stair=Tangga Bata Batu Pasir Gurun +Inner Desert Sandstone Brick Stair=Tangga Bata Batu Pasir Gurun Dalaman +Outer Desert Sandstone Brick Stair=Tangga Bata Batu Pasir Gurun Luaran +Desert Sandstone Brick Slab=Papak Bata Batu Pasir Gurun +Desert Sandstone Block Stair=Tangga Bongkah Batu Pasir Gurun +Inner Desert Sandstone Block Stair=Tangga Bongkah Batu Pasir Gurun Dalaman +Outer Desert Sandstone Block Stair=Tangga Bongkah Batu Pasir Gurun Luaran +Desert Sandstone Block Slab=Papak Bongkah Batu Pasir Gurun +Silver Sandstone Stair=Tangga Batu Pasir Perak +Inner Silver Sandstone Stair=Tangga Batu Pasir Perak Dalaman +Outer Silver Sandstone Stair=Tangga Batu Pasir Perak Luaran +Silver Sandstone Slab=Papak Batu Pasir Perak +Silver Sandstone Brick Stair=Tangga Bata Batu Pasir Perak +Inner Silver Sandstone Brick Stair=Tangga Bata Batu Pasir Perak Dalaman +Outer Silver Sandstone Brick Stair=Tangga Bata Batu Pasir Perak Luaran +Silver Sandstone Brick Slab=Papak Bata Batu Pasir Perak +Silver Sandstone Block Stair=Tangga Bongkah Batu Pasir Perak +Inner Silver Sandstone Block Stair=Tangga Bongkah Batu Pasir Perak Dalaman +Outer Silver Sandstone Block Stair=Tangga Bongkah Batu Pasir Perak Luaran +Silver Sandstone Block Slab=Papak Bongkah Batu Pasir Perak +Obsidian Stair=Tangga Obsidia +Inner Obsidian Stair=Tangga Obsidia Dalaman +Outer Obsidian Stair=Tangga Obsidia Luaran +Obsidian Slab=Papak Obsidia +Obsidian Brick Stair=Tangga Bata Obsidia +Inner Obsidian Brick Stair=Tangga Bata Obsidia Dalaman +Outer Obsidian Brick Stair=Tangga Bata Obsidia Luaran +Obsidian Brick Slab=Papak Bata Obsidia +Obsidian Block Stair=Tangga Bongkah Obsidia +Inner Obsidian Block Stair=Tangga Bongkah Obsidia Dalaman +Outer Obsidian Block Stair=Tangga Bongkah Obsidia Luaran +Obsidian Block Slab=Papak Bongkah Obsidia +Brick Stair=Tangga Bata +Inner Brick Stair=Tangga Bata Dalaman +Outer Brick Stair=Tangga Bata Luaran +Brick Slab=Papak Bata +Steel Block Stair=Tangga Bongkah Keluli +Inner Steel Block Stair=Tangga Bongkah Keluli Dalaman +Outer Steel Block Stair=Tangga Bongkah Keluli Luaran +Steel Block Slab=Papak Bongkah Keluli +Tin Block Stair=Tangga Bongkah Timah +Inner Tin Block Stair=Tangga Bongkah Timah Dalaman +Outer Tin Block Stair=Tangga Bongkah Timah Luaran +Tin Block Slab=Papak Bongkah Timah +Copper Block Stair=Tangga Bongkah Tembaga +Inner Copper Block Stair=Tangga Bongkah Tembaga Dalaman +Outer Copper Block Stair=Tangga Bongkah Tembaga Luaran +Copper Block Slab=Papak Bongkah Tembaga +Bronze Block Stair=Tangga Bongkah Gangsa +Inner Bronze Block Stair=Tangga Bongkah Gangsa Dalaman +Outer Bronze Block Stair=Tangga Bongkah Gangsa Luaran +Bronze Block Slab=Papak Bongkah Gangsa +Gold Block Stair=Tangga Bongkah Emas +Inner Gold Block Stair=Tangga Bongkah Emas Dalaman +Outer Gold Block Stair=Tangga Bongkah Emas Luaran +Gold Block Slab=Papak Bongkah Emas +Ice Stair=Tangga Ais +Inner Ice Stair=Tangga Ais Dalaman +Outer Ice Stair=Tangga Ais Luaran +Ice Slab=Papak Ais +Snow Block Stair=Tangga Bongkah Salji +Inner Snow Block Stair=Tangga Bongkah Salji Dalaman +Outer Snow Block Stair=Tangga Bongkah Salji Luaran +Snow Block Slab=Papak Bongkah Salji diff --git a/mods/stairs/locale/stairs.ru.tr b/mods/stairs/locale/stairs.ru.tr new file mode 100644 index 0000000..2d5850e --- /dev/null +++ b/mods/stairs/locale/stairs.ru.tr @@ -0,0 +1,145 @@ +# textdomain: stairs +Glass Stair=Стеклянная Ступень +Glass Slab=Стеклянная Плита +Inner Glass Stair=Угловая Стеклянная Ступень (Внутренний Угол) +Outer Glass Stair=Угловая Стеклянная Ступень (Внешний Угол) +Obsidian Glass Stair=Стеклянная Ступень Из Обсидиана +Obsidian Glass Slab=Стеклянная Плита Из Обсидиана +Inner Obsidian Glass Stair=Угловая Стеклянная Ступень Из Обсидиана (Внутренний Угол) +Outer Obsidian Glass Stair=Угловая Стеклянная Ступень Из Обсидиана (Внешний Угол) +Wooden Stair=Яблоневая Деревянная Ступень +Inner Wooden Stair=Угловая Яблоневая Деревянная Ступень (Внутренний Угол) +Outer Wooden Stair=Угловая Яблоневая Деревянная Ступень (Внешний Угол) +Wooden Slab=Яблоневая Деревянная Плита +Jungle Wood Stair=Тропическая Деревянная Ступень +Inner Jungle Wood Stair=Угловая Тропическая Деревянная Ступень (Внутренний Угол) +Outer Jungle Wood Stair=Угловая Тропическая Деревянная Ступень (Внешний Угол) +Jungle Wood Slab=Тропическая Деревянная Плита +Pine Wood Stair=Сосновая Деревянная Ступень +Inner Pine Wood Stair=Угловая Сосновая Деревянная Ступень (Внутренний Угол) +Outer Pine Wood Stair=Угловая Сосновая Деревянная Ступень (Внешний Угол) +Pine Wood Slab=Сосновая Деревянная Плита +Acacia Wood Stair=Деревянная Ступень Из Акации +Inner Acacia Wood Stair=Угловая Деревянная Ступень Из Акации (Внутренний Угол) +Outer Acacia Wood Stair=Угловая Деревянная Ступень Из Акации (Внешний Угол) +Acacia Wood Slab=Деревянная Плита Из Акации +Aspen Wood Stair=Осиновая Деревянная Ступень +Inner Aspen Wood Stair=Угловая Осиновая Деревянная Ступень (Внутренний Угол) +Outer Aspen Wood Stair=Угловая осиновая Деревянная Ступень (Внешний Угол) +Aspen Wood Slab=Осиновая Деревянная Плита +Stone Stair=Каменная Ступень +Inner Stone Stair=Угловая Каменная Ступень (Внутренний Угол) +Outer Stone Stair=Угловая Каменная Ступень (Внешний Угол) +Stone Slab=Каменная Плита +Cobblestone Stair=Булыжниковая Ступень +Inner Cobblestone Stair=Угловая Булыжниковая Ступень (Внутренний Угол) +Outer Cobblestone Stair=Угловая Булыжниковая Ступень (Внешний Угол) +Cobblestone Slab=Булыжниковая Плита +Mossy Cobblestone Stair=Мшистая Булыжниковая Ступень +Inner Mossy Cobblestone Stair=Угловая Мшистая Булыжниковая Ступень (Внутренний Угол) +Outer Mossy Cobblestone Stair=Угловая Мшистая Булыжниковая Ступень (Внешний Угол) +Mossy Cobblestone Slab=Мшистая Булыжниковая Плита +Stone Brick Stair=Cтупень Из Каменных Кирпичей +Inner Stone Brick Stair=Угловая Ступень Из Каменных Кирпичей (Внутренний Угол) +Outer Stone Brick Stair=Угловая Ступень Из Каменных Кирпичей (Внешний Угол) +Stone Brick Slab=Плита Из Каменных Кирпичей +Stone Block Stair=Ступень Из Каменного Блока +Inner Stone Block Stair=Угловая Ступень Из Каменного Блока (Внутренний Угол) +Outer Stone Block Stair=Угловая Ступень Из Каменного Блока (Внешний Угол) +Stone Block Slab=Плита Из Каменного Блока +Desert Stone Stair=Ступень Из Пустынного Камня +Inner Desert Stone Stair=Угловая Ступень Из Пустынного Камня (Внутренний Угол) +Outer Desert Stone Stair=Угловая Ступень Из Пустынного Камня (Внешний Угол) +Desert Stone Slab=Плита Из Пустынного Камня +Desert Cobblestone Stair=Ступень Из Пустынного Булыжника +Inner Desert Cobblestone Stair=Угловая Ступень Из Пустынного Булыжника (Внутренний Угол) +Outer Desert Cobblestone Stair=Угловая Ступень Из Пустынного Булыжника (Внешний Угол) +Desert Cobblestone Slab=Плита Из Пустынного Камня +Desert Stone Brick Stair=Ступень Из Кирпичей Пустынного Камня +Inner Desert Stone Brick Stair=Угловая Ступень Из Кирпичей Пустынного Камня (Внутренний Угол) +Outer Desert Stone Brick Stair=Угловая Ступень Из Кирпичей Пустынного Камня (Внешний Угол) +Desert Stone Brick Slab=Плита Из Кирпичей Пустынного Камня +Desert Stone Block Stair=Ступень Из Пустынного Каменного Блока +Inner Desert Stone Block Stair=Угловая Ступень Из Пустынного Каменного Блока (Внутренний Угол) +Outer Desert Stone Block Stair=Угловая Ступень Из Пустынного Каменного Блока (Внешний Угол) +Desert Stone Block Slab=Плита Из Пустынного Каменного Блока +Sandstone Stair=Песчаниковая Ступень +Inner Sandstone Stair=Угловая Песчаниковая Ступень (Внутренний Угол) +Outer Sandstone Stair=Угловая Песчаниковая Ступень (Внешний Угол) +Sandstone Slab=Песчаниковая Плита +Sandstone Brick Stair=Ступень Из Песчаниковых Кирпичей +Inner Sandstone Brick Stair=Угловая Ступень Из Песчаниковых Кирпичей (Внутренний Угол) +Outer Sandstone Brick Stair=Угловая Ступень Из Песчаниковых Кирпичей (Внешний Угол) +Sandstone Brick Slab=Плита Из Песчаниковых Кирпичей +Sandstone Block Stair=Ступень Из Песчаникового Блока +Inner Sandstone Block Stair=Угловая Ступень Из Песчаникового Блока (Внутренний Угол) +Outer Sandstone Block Stair=Угловая Ступень Из Песчаникового Блока (Внешний Угол) +Sandstone Block Slab=Плита Из Песчаникового Блока +Desert Sandstone Stair=Ступень Из Пустынного Песчаника +Inner Desert Sandstone Stair=Угловая Ступень Из Пустынного Песчаника (Внутренний Угол) +Outer Desert Sandstone Stair=Угловая Ступень Из Пустынного Песчаника (Внешний Угол) +Desert Sandstone Slab=Плита Из Пустынного Песчаника +Desert Sandstone Brick Stair=Ступень Из Кирпичей Пустынного Песчаника +Inner Desert Sandstone Brick Stair=Угловая Ступень Из Кирпичей Пустынного Песчаника (Внутренний Угол) +Outer Desert Sandstone Brick Stair=Угловая Ступень Из Кирпичей Пустынного Песчаника (Внешний Угол) +Desert Sandstone Brick Slab=Плита Из Кирпичей Пустынного Песчаника +Desert Sandstone Block Stair=Ступень Из Пустынного Песчаникового Блока +Inner Desert Sandstone Block Stair=Угловая Ступень Из Пустынного Песчаникового Блока (Внутренний Угол) +Outer Desert Sandstone Block Stair=Угловая Ступень Из Пустынного Песчаникового Блока (Внешний Угол) +Desert Sandstone Block Slab=Плита Из Пустынного Песчаникового Блока +Silver Sandstone Stair=Ступень Из Серебрянного Песчаника +Inner Silver Sandstone Stair=Угловая Ступень Из Серебряного Песчаника (Внутренний Угол) +Outer Silver Sandstone Stair=Угловая Ступень Из Серебряного Песчаника (Внешний Угол) +Silver Sandstone Slab=Плита Из Серебряного Песчаника +Silver Sandstone Brick Stair=Ступень Из Кирпичей Серебряного Песчаника +Inner Silver Sandstone Brick Stair=Угловая Ступень Из Кирпичей Серебряного Песчаника (Внутренний Угол) +Outer Silver Sandstone Brick Stair=Угловая Ступень Из Кирпичей Серебряного Песчаника (Внешний Угол) +Silver Sandstone Brick Slab=Плита Из Кирпичей Серебряного Песчаника +Silver Sandstone Block Stair=Ступень Из Серебряного Песчаникового Блока +Inner Silver Sandstone Block Stair=Угловая Ступень Из Серебряного Песчаникового Блока (Внутренний Угол) +Outer Silver Sandstone Block Stair=Угловая Ступень Из Серебряного Песчаникового Блока (Внешний Угол) +Silver Sandstone Block Slab=Плита Из Серебряного Песчаникового Блока +Obsidian Stair=Обсидиановая Ступень +Inner Obsidian Stair=Угловая Обсидиановая Ступень (Внутренний Угол) +Outer Obsidian Stair=Угловая Обсидиановая Ступень (Внешний Угол) +Obsidian Slab=Обсидиановая Плита +Obsidian Brick Stair=Ступень Из Обсидиановых Кирпичей +Inner Obsidian Brick Stair=Угловая Ступень Из Обсидиановых Кирпичей (Внутренний Угол) +Outer Obsidian Brick Stair=Угловая Ступень Из Обсидиановых Кирпичей (Внешний Угол) +Obsidian Brick Slab=Плита Из Обсидиановых Кирпичей +Obsidian Block Stair=Ступень Из Обсидианового Блока +Inner Obsidian Block Stair=Угловая Ступень Из Обсидианового Блока (Внутренний Угол) +Outer Obsidian Block Stair=Угловая Ступень Из Обсидианового Блока (Внешний Угол) +Obsidian Block Slab=Плита Из Обсидианового Блока +Brick Stair=Ступень Из Кирпичей +Inner Brick Stair=Угловая Ступень Из Кирпичей (Внутренний Угол) +Outer Brick Stair=Угловая Ступень Из Кирпичей (Внешний Угол) +Brick Slab=Плита Из Кирпичей +Steel Block Stair=Ступень Из Стального Блока +Inner Steel Block Stair=Угловая Ступень Из Стального Блока (Внутренний Угол) +Outer Steel Block Stair=Угловая Ступень Из Стального Блока (Внешний Угол) +Steel Block Slab=Плита Из Стального Блока +Tin Block Stair=Ступень Из Оловянного Блока +Inner Tin Block Stair=Угловая Ступень Из Оловянного Блока (Внутренний Угол) +Outer Tin Block Stair=Угловая Ступень Из Оловянного Блока (Внешний Угол) +Tin Block Slab=Плита Из Оловянного Блока +Copper Block Stair=Ступень Из Медного Блока +Inner Copper Block Stair=Угловая Ступень Из Медного Блока (Внутренний Угол) +Outer Copper Block Stair=Угловая Ступень Из Медного Блока (Внешний Угол) +Copper Block Slab=Плита Из Медного Блока +Bronze Block Stair=Ступень Из Бронзового Блока +Inner Bronze Block Stair=Угловая Ступень Из Бронзового Блока (Внутренний Угол) +Outer Bronze Block Stair=Угловая Ступень Из Бронзового Блока (Внешний Угол) +Bronze Block Slab=Плита Из Бронзового Блока +Gold Block Stair=Ступень Из Золотого Блока +Inner Gold Block Stair=Угловая Ступень Из Золотого Блока (Внутренний Угол) +Outer Gold Block Stair=Угловая Ступень Из Золотого Блока (Внешний Угол) +Gold Block Slab=Плита Из Золотого Блока +Ice Stair=Ледяная Ступень +Inner Ice Stair=Угловая Ледяная Ступень (Внутренний Угол) +Outer Ice Stair=Угловая Ледяная Ступень (Внешний Угол) +Ice Slab=Ледяная Плита +Snow Block Stair=Ступень Из Снежного Блока +Inner Snow Block Stair=Угловая Ступень Из Снежного Блока (Внутренний Угол) +Outer Snow Block Stair=Угловая Ступень Из Снежного Блока (Внешний Угол) +Snow Block Slab=Плита Из Снежного Блока diff --git a/mods/stairs/locale/stairs.se.tr b/mods/stairs/locale/stairs.se.tr new file mode 100644 index 0000000..0bc0bbc --- /dev/null +++ b/mods/stairs/locale/stairs.se.tr @@ -0,0 +1,144 @@ +# textdomain: stairs +Glass Stair=Glastrappa +Glass Slab=Glasplatta +Inner Glass Stair=Inre glasstrappa +Outer Glass Stair=Yttre glasstrappa +Obsidian Glass Stair=Obsidian Glass Trappa +Obsidian Glass Slab=Obsidian glasplatta +Inner Obsidian Glass Stair=Inre Obsidian Glass Trappa +Outer Obsidian Glass Stair=Yttre Obsidian Glass Trappa +Wooden Stair=Trätrappa +Inner Wooden Stair=Inre trätrappa +Outer Wooden Stair=Yttre trätrappa +Wooden Slab=Träplatta +Jungle Wood Stair=Jungle Wood Stair +Inner Jungle Wood Stair=Inre Jungle Wood Stair +Outer Jungle Wood Stair=Ytter Jungle Wood Stair +Jungle Wood Slab=Jungle Wood Platta +Pine Wood Stair=Pine Wood Stair +Inner Pine Wood Stair=Inre tall trä trappa +Outer Pine Wood Stair=Ytter tall Trätrappa +Pine Wood Slab=Tallskiva +Acacia Wood Stair=Acacia Wood Stair +Inner Acacia Wood Stair=Inre Acacia Trätrappa +Outer Acacia Wood Stair=Yttre Acacia Trätrappa +Acacia Wood Slab=Acacia träplatta +Aspen Wood Stair=Asp Trä Stair +Inner Aspen Wood Stair=Inre Aspen Trätrappa +Outer Aspen Wood Stair=Yttre Aspen Trätrappa +Aspen Wood Slab=Asp Trä Platta +Stone Stair=Stentrappa +Inner Stone Stair=Inre stentrappa +Outer Stone Stair=Yttre stentrappa +Stone Slab=Stenplatta +Cobblestone Stair=Kullersten trappa +Inner Cobblestone Stair=Inre kullerstensTrappa +Outer Cobblestone Stair=Yttre kullerstensTrappa +Cobblestone Slab=Kullerstenplatta +Mossy Cobblestone Stair=Mossig kullerstensTrappa +Inner Mossy Cobblestone Stair=Inre mossiga kullerstensTrappa +Outer Mossy Cobblestone Stair=Yttre mossiga kullerstensTrappa +Mossy Cobblestone Slab=Mossig kullerstenplatta +Stone Brick Stair=Sten Brick Trappa +Inner Stone Brick Stair=Inre sten tegel trappa +Outer Stone Brick Stair=Yttre sten tegel trappa +Stone Brick Slab=Sten tegelplatta +Stone Block Stair=Sten Block Trappa +Inner Stone Block Stair=Inre stenblock trappa +Outer Stone Block Stair=Yttre stenblock trappa +Stone Block Slab=Stenblockplatta +Desert Stone Stair=Öken Sten Trappa +Inner Desert Stone Stair=Inre Öken Sten Stair +Outer Desert Stone Stair=Outer Öken Sten Stair +Desert Stone Slab=Öken Sten Platta +Desert Cobblestone Stair=Öken Kullersten Trappa +Inner Desert Cobblestone Stair=Inre Öken Kullersten Trappa +Outer Desert Cobblestone Stair=Outer Öken Kullersten Trappa +Desert Cobblestone Slab=Öken Kullersten Platta +Desert Stone Brick Stair=Öken Sten Brick Trappa +Inner Desert Stone Brick Stair=Inre Öken Sten Brick Trappa +Outer Desert Stone Brick Stair=Outer Öken Sten Brick Trappa +Desert Stone Brick Slab=Öken Sten tegelplatta +Desert Stone Block Stair=Öken Sten Block Trappa +Inner Desert Stone Block Stair=Inre Öken Sten Block Stair +Outer Desert Stone Block Stair=Outer Öken Sten Block Trappa +Desert Stone Block Slab=Öken Sten Block Platta +Sandstone Stair=Sandstenstrappa +Inner Sandstone Stair=Inre Sandstenstrappa +Outer Sandstone Stair=Yttre Sandstenstrappa +Sandstone Slab=Sandstenplatta +Sandstone Brick Stair=Sandsten tegel trappa +Inner Sandstone Brick Stair=Inre Sandsten tegel trappa +Outer Sandstone Brick Stair=Yttre Sandsten tegel trappa +Sandstone Brick Slab=Sandsten tegelplatta +Sandstone Block Stair=Sandsten block trappa +Inner Sandstone Block Stair=Inre Sandsten block trappa +Outer Sandstone Block Stair=Yttre Sandsten block trappa +Sandstone Block Slab=Sandsten Block Platta +Desert Sandstone Stair=Öken Sandsten Trappa +Inner Desert Sandstone Stair=Inre Öken Sandsten Trappa +Outer Desert Sandstone Stair=Outer Öken Sandsten Trappa +Desert Sandstone Slab=Öken Sandsten Platta +Desert Sandstone Brick Stair=Öken Sandsten Brick Trappa +Inner Desert Sandstone Brick Stair=Inre Öken Sandsten Brick Trappa +Outer Desert Sandstone Brick Stair=Outer Öken Sandsten Brick Trappa +Desert Sandstone Brick Slab=Öken Sandsten Tegelplatta +Desert Sandstone Block Stair=Öken Sandsten Block Trappa +Inner Desert Sandstone Block Stair=Inre Öken Sandsten Block Trappa +Outer Desert Sandstone Block Stair=Outer Öken Sandsten Block Trappa +Desert Sandstone Block Slab=Öken Sandsten Block Platta +Silver Sandstone Stair=Silver Sandsten trappa +Inner Silver Sandstone Stair=Inre silver Sandsten trappa +Outer Silver Sandstone Stair=Yttre silver Sandsten trappa +Silver Sandstone Slab=Silver Sandsten platta +Silver Sandstone Brick Stair=Silver Sandsten tegel trappa +Inner Silver Sandstone Brick Stair=Inre silver Sandsten tegel trappa +Outer Silver Sandstone Brick Stair=Yttre silver Sandsten tegel trappa +Silver Sandstone Brick Slab=Silver Sandsten tegelplatta +Silver Sandstone Block Stair=Silver Sandsten block trappa +Inner Silver Sandstone Block Stair=Inre silver Sandsten block trappa +Outer Silver Sandstone Block Stair=Yttre silver Sandsten block trappa +Silver Sandstone Block Slab=Silver Sandsten block platta +Obsidian Stair=Obsidian Trappa +Inner Obsidian Stair=Inre Obsidian Trappa +Outer Obsidian Stair=Yttre Obsidian Trappa +Obsidian Slab=Obsidian Platta +Obsidian Brick Stair=Obsidian Brick Stair +Inner Obsidian Brick Stair=Inre Obsidian Brick Trappa +Outer Obsidian Brick Stair=Yttre Obsidian Brick Trappa +Obsidian Brick Slab=Obsidian tegelplatta +Obsidian Block Stair=Obsidian Block Stair +Inner Obsidian Block Stair=Inre Obsidian Block Trappa +Outer Obsidian Block Stair=Yttre Obsidian Block Trappa +Obsidian Block Slab=Obsidian Block Slab +Brick Stair=Tegel trappa +Inner Brick Stair=Inre tegel trappa +Outer Brick Stair=Yttre tegel trappa +Brick Slab=Tegelplatta +Steel Block Stair=Stålblock trappa +Inner Steel Block Stair=Inre stålblock trappa +Outer Steel Block Stair=Yttre stålblocktrappa +Steel Block Slab=Stålblockplatta +Tin Block Stair=Tinn Block Trappa +Inner Tin Block Stair=Inre tennblock trappa +Outer Tin Block Stair=Yttre tennblock trappa +Tin Block Slab=Tennblockplatta +Copper Block Stair=Kopparblock trappa +Inner Copper Block Stair=Inre kopparblock trappa +Outer Copper Block Stair=Yttre kopparblock trappa +Copper Block Slab=Kopparblockplatta +Bronze Block Stair=Bronze Block Trappa +Inner Bronze Block Stair=Inre bronsblock trappa +Outer Bronze Block Stair=Yttre bronsblock trappa +Bronze Block Slab=Bronsblockplatta +Gold Block Stair=Guldblockstrappa +Inner Gold Block Stair=Inre guldblock trappa +Outer Gold Block Stair=Yttre guldblock trappa +Gold Block Slab=Guldblockplatta +Ice Stair=Ice Stair +Inner Ice Stair=Inre istrappa +Outer Ice Stair=Yttre istrappa +Ice Slab=Isplatta +Snow Block Stair=Snow Block Stair +Inner Snow Block Stair=Inre snöblock trappa +Outer Snow Block Stair=Yttre snöblock trappa \ No newline at end of file diff --git a/mods/stairs/locale/stairs.zh_CN.tr b/mods/stairs/locale/stairs.zh_CN.tr new file mode 100644 index 0000000..060ccaf --- /dev/null +++ b/mods/stairs/locale/stairs.zh_CN.tr @@ -0,0 +1,149 @@ +# textdomain: stairs +Glass Stair=玻璃楼梯 +Glass Slab=玻璃台阶 +Inner Glass Stair=玻璃楼梯(内) +Outer Glass Stair=玻璃楼梯(外) +Obsidian Glass Stair=黑曜石玻璃楼梯 +Obsidian Glass Slab=黑曜石玻璃台阶 +Inner Obsidian Glass Stair=黑曜石玻璃楼梯(内) +Outer Obsidian Glass Stair=黑曜石玻璃楼梯(外) +Wooden Stair=木制楼梯 +Inner Wooden Stair=木楼梯(内) +Outer Wooden Stair=木楼梯(外) +Wooden Slab=木制台阶 +Jungle Wood Stair=丛林木楼梯 +Inner Jungle Wood Stair=丛林木楼梯(内) +Outer Jungle Wood Stair=丛林木楼梯(外) +Jungle Wood Slab=丛林木台阶 +Pine Wood Stair=松木楼梯 +Inner Pine Wood Stair=松木楼梯(内) +Outer Pine Wood Stair=松木楼梯(外) +Pine Wood Slab=松木台阶 +Acacia Wood Stair=金合欢木楼梯 +Inner Acacia Wood Stair=金合欢木楼梯(内) +Outer Acacia Wood Stair=金合欢木楼梯(外) +Acacia Wood Slab=金合欢木台阶 +Aspen Wood Stair=白杨木楼梯 +Inner Aspen Wood Stair=白杨木楼梯(内) +Outer Aspen Wood Stair=白杨木楼梯(外) +Aspen Wood Slab=白杨木台阶 +Blue Stained Stair=蓝木楼梯 +Inner Blue Stained Stair=蓝木楼梯(内) +Outer Blue Stained Stair=蓝木楼梯(外) +Blue Stained Slab=蓝木台阶 +Stone Stair=石楼梯 +Inner Stone Stair=石楼梯(内) +Outer Stone Stair=石楼梯(外) +Stone Slab=石台阶 +Cobblestone Stair=圆石楼梯 +Inner Cobblestone Stair=圆石楼梯(内) +Outer Cobblestone Stair=圆石楼梯(外) +Cobblestone Slab=圆石台阶 +Mossy Cobblestone Stair=苔石楼梯 +Inner Mossy Cobblestone Stair=苔石楼梯(内) +Outer Mossy Cobblestone Stair=苔石楼梯(外) +Mossy Cobblestone Slab=苔石台阶 +Stone Brick Stair=石砖楼梯 +Inner Stone Brick Stair=石砖楼梯(内) +Outer Stone Brick Stair=石砖楼梯(外) +Stone Brick Slab=石砖台阶 +Stone Block Stair=石块楼梯 +Inner Stone Block Stair=石块楼梯(内) +Outer Stone Block Stair=石块楼梯(外) +Stone Block Slab=石块台阶 +Desert Stone Stair=沙漠石楼梯 +Inner Desert Stone Stair=沙漠石楼梯(内) +Outer Desert Stone Stair=沙漠石楼梯(外) +Desert Stone Slab=沙漠石台阶 +Desert Cobblestone Stair=沙漠圆石楼梯 +Inner Desert Cobblestone Stair=沙漠圆石楼梯(内) +Outer Desert Cobblestone Stair=沙漠圆石楼梯(外) +Desert Cobblestone Slab=沙漠圆石台阶 +Desert Stone Brick Stair=沙漠石砖楼梯 +Inner Desert Stone Brick Stair=沙漠石砖楼梯(内) +Outer Desert Stone Brick Stair=沙漠石砖楼梯(外) +Desert Stone Brick Slab=沙漠石砖台阶 +Desert Stone Block Stair=沙漠石块楼梯 +Inner Desert Stone Block Stair=沙漠石块楼梯(内) +Outer Desert Stone Block Stair=沙漠石块楼梯(外) +Desert Stone Block Slab=沙漠石块台阶 +Sandstone Stair=沙石楼梯 +Inner Sandstone Stair=沙石楼梯(内) +Outer Sandstone Stair=沙石楼梯(外) +Sandstone Slab=沙石台阶 +Sandstone Brick Stair=沙石砖楼梯 +Inner Sandstone Brick Stair=沙石砖楼梯(内) +Outer Sandstone Brick Stair=沙石砖楼梯(外) +Sandstone Brick Slab=沙石砖台阶 +Sandstone Block Stair=沙石块楼梯 +Inner Sandstone Block Stair=沙石块楼梯(内) +Outer Sandstone Block Stair=沙石块楼梯(外) +Sandstone Block Slab=沙石块台阶 +Desert Sandstone Stair=沙漠沙石楼梯 +Inner Desert Sandstone Stair=沙漠沙石楼梯(内) +Outer Desert Sandstone Stair=沙漠沙石楼梯(外) +Desert Sandstone Slab=沙漠沙石台阶 +Desert Sandstone Brick Stair=沙漠沙石砖楼梯 +Inner Desert Sandstone Brick Stair=沙漠沙石砖楼梯(内) +Outer Desert Sandstone Brick Stair=沙漠沙石砖楼梯(外) +Desert Sandstone Brick Slab=沙漠沙石砖台阶 +Desert Sandstone Block Stair=沙漠沙石块楼梯 +Inner Desert Sandstone Block Stair=沙漠沙石块楼梯(内) +Outer Desert Sandstone Block Stair=沙漠沙石块楼梯(外) +Desert Sandstone Block Slab=沙漠沙石块台阶 +Silver Sandstone Stair=银沙石楼梯 +Inner Silver Sandstone Stair=银沙石楼梯(内) +Outer Silver Sandstone Stair=银沙石楼梯(外) +Silver Sandstone Slab=银沙石台阶 +Silver Sandstone Brick Stair=银沙石砖楼梯 +Inner Silver Sandstone Brick Stair=银沙石砖楼梯(内) +Outer Silver Sandstone Brick Stair=银沙石砖楼梯(外) +Silver Sandstone Brick Slab=银沙石砖台阶 +Silver Sandstone Block Stair=银沙石块楼梯 +Inner Silver Sandstone Block Stair=银沙石块楼梯(内) +Outer Silver Sandstone Block Stair=银沙石块楼梯(外) +Silver Sandstone Block Slab=银沙石块台阶 +Obsidian Stair=黑曜石楼梯 +Inner Obsidian Stair=黑曜石楼梯(内) +Outer Obsidian Stair=黑曜石楼梯(外) +Obsidian Slab=黑曜石台阶 +Obsidian Brick Stair=黑曜石砖楼梯 +Inner Obsidian Brick Stair=黑曜石砖楼梯(内) +Outer Obsidian Brick Stair=黑曜石砖楼梯(外) +Obsidian Brick Slab=黑曜石砖台阶 +Obsidian Block Stair=黑曜石块楼梯 +Inner Obsidian Block Stair=黑曜石块楼梯(内) +Outer Obsidian Block Stair=黑曜石块楼梯(外) +Obsidian Block Slab=黑曜石块台阶 +Brick Stair=砖楼梯 +Inner Brick Stair=砖楼梯(内) +Outer Brick Stair=砖楼梯(外) +Brick Slab=砖制台阶 +Steel Block Stair=铁块楼梯 +Inner Steel Block Stair=铁块楼梯(内) +Outer Steel Block Stair=铁块楼梯(外) +Steel Block Slab=铁块台阶 +Tin Block Stair=锡块楼梯 +Inner Tin Block Stair=锡块楼梯(内) +Outer Tin Block Stair=锡块楼梯(外) +Tin Block Slab=锡块台阶 +Copper Block Stair=铜块楼梯 +Inner Copper Block Stair=铜块楼梯(内) +Outer Copper Block Stair=铜块楼梯(外) +Copper Block Slab=铜块台阶 +Bronze Block Stair=青铜块楼梯 +Inner Bronze Block Stair=青铜块楼梯(内) +Outer Bronze Block Stair=青铜块楼梯(外) +Bronze Block Slab=青铜块台阶 +Gold Block Stair=金块楼梯 +Inner Gold Block Stair=金块楼梯(内) +Outer Gold Block Stair=金块楼梯(外) +Gold Block Slab=金块台阶 +Ice Stair=冰阶梯 +Inner Ice Stair=冰块楼梯(内) +Outer Ice Stair=冰块楼梯(外) +Ice Slab=冰台阶 +Snow Block Stair=雪块楼梯 +Inner Snow Block Stair=雪块楼梯(内) +Outer Snow Block Stair=雪块楼梯(外) +Snow Block Slab=雪块台阶 diff --git a/mods/stairs/locale/stairs.zh_TW.tr b/mods/stairs/locale/stairs.zh_TW.tr new file mode 100644 index 0000000..00c43e2 --- /dev/null +++ b/mods/stairs/locale/stairs.zh_TW.tr @@ -0,0 +1,149 @@ +# textdomain: stairs +Glass Stair=玻璃樓梯 +Glass Slab=玻璃臺階 +Inner Glass Stair=玻璃樓梯(內) +Outer Glass Stair=玻璃樓梯(外) +Obsidian Glass Stair=黑曜石玻璃樓梯 +Obsidian Glass Slab=黑曜石玻璃臺階 +Inner Obsidian Glass Stair=黑曜石玻璃樓梯(內) +Outer Obsidian Glass Stair=黑曜石玻璃樓梯(外) +Wooden Stair=木製樓梯 +Inner Wooden Stair=木樓梯(內) +Outer Wooden Stair=木樓梯(外) +Wooden Slab=木製臺階 +Jungle Wood Stair=叢林木樓梯 +Inner Jungle Wood Stair=叢林木樓梯(內) +Outer Jungle Wood Stair=叢林木樓梯(外) +Jungle Wood Slab=叢林木臺階 +Pine Wood Stair=松木樓梯 +Inner Pine Wood Stair=松木樓梯(內) +Outer Pine Wood Stair=松木樓梯(外) +Pine Wood Slab=松木臺階 +Acacia Wood Stair=金合歡木樓梯 +Inner Acacia Wood Stair=金合歡木樓梯(內) +Outer Acacia Wood Stair=金合歡木樓梯(外) +Acacia Wood Slab=金合歡木臺階 +Aspen Wood Stair=白楊木樓梯 +Inner Aspen Wood Stair=白楊木樓梯(內) +Outer Aspen Wood Stair=白楊木樓梯(外) +Aspen Wood Slab=白楊木臺階 +Blue Stained Stair=藍木樓梯 +Inner Blue Stained Stair=藍木樓梯(內) +Outer Blue Stained Stair=藍木樓梯(外) +Blue Stained Slab=藍木臺階 +Stone Stair=石樓梯 +Inner Stone Stair=石樓梯(內) +Outer Stone Stair=石樓梯(外) +Stone Slab=石臺階 +Cobblestone Stair=圓石樓梯 +Inner Cobblestone Stair=圓石樓梯(內) +Outer Cobblestone Stair=圓石樓梯(外) +Cobblestone Slab=圓石臺階 +Mossy Cobblestone Stair=苔石樓梯 +Inner Mossy Cobblestone Stair=苔石樓梯(內) +Outer Mossy Cobblestone Stair=苔石樓梯(外) +Mossy Cobblestone Slab=苔石臺階 +Stone Brick Stair=石磚樓梯 +Inner Stone Brick Stair=石磚樓梯(內) +Outer Stone Brick Stair=石磚樓梯(外) +Stone Brick Slab=石磚臺階 +Stone Block Stair=石塊樓梯 +Inner Stone Block Stair=石塊樓梯(內) +Outer Stone Block Stair=石塊樓梯(外) +Stone Block Slab=石塊臺階 +Desert Stone Stair=沙漠石樓梯 +Inner Desert Stone Stair=沙漠石樓梯(內) +Outer Desert Stone Stair=沙漠石樓梯(外) +Desert Stone Slab=沙漠石臺階 +Desert Cobblestone Stair=沙漠圓石樓梯 +Inner Desert Cobblestone Stair=沙漠圓石樓梯(內) +Outer Desert Cobblestone Stair=沙漠圓石樓梯(外) +Desert Cobblestone Slab=沙漠圓石臺階 +Desert Stone Brick Stair=沙漠石磚樓梯 +Inner Desert Stone Brick Stair=沙漠石磚樓梯(內) +Outer Desert Stone Brick Stair=沙漠石磚樓梯(外) +Desert Stone Brick Slab=沙漠石磚臺階 +Desert Stone Block Stair=沙漠石塊樓梯 +Inner Desert Stone Block Stair=沙漠石塊樓梯(內) +Outer Desert Stone Block Stair=沙漠石塊樓梯(外) +Desert Stone Block Slab=沙漠石塊臺階 +Sandstone Stair=沙石樓梯 +Inner Sandstone Stair=沙石樓梯(內) +Outer Sandstone Stair=沙石樓梯(外) +Sandstone Slab=沙石臺階 +Sandstone Brick Stair=沙石磚樓梯 +Inner Sandstone Brick Stair=沙石磚樓梯(內) +Outer Sandstone Brick Stair=沙石磚樓梯(外) +Sandstone Brick Slab=沙石磚臺階 +Sandstone Block Stair=沙石塊樓梯 +Inner Sandstone Block Stair=沙石塊樓梯(內) +Outer Sandstone Block Stair=沙石塊樓梯(外) +Sandstone Block Slab=沙石塊臺階 +Desert Sandstone Stair=沙漠沙石樓梯 +Inner Desert Sandstone Stair=沙漠沙石樓梯(內) +Outer Desert Sandstone Stair=沙漠沙石樓梯(外) +Desert Sandstone Slab=沙漠沙石臺階 +Desert Sandstone Brick Stair=沙漠沙石磚樓梯 +Inner Desert Sandstone Brick Stair=沙漠沙石磚樓梯(內) +Outer Desert Sandstone Brick Stair=沙漠沙石磚樓梯(外) +Desert Sandstone Brick Slab=沙漠沙石磚臺階 +Desert Sandstone Block Stair=沙漠沙石塊樓梯 +Inner Desert Sandstone Block Stair=沙漠沙石塊樓梯(內) +Outer Desert Sandstone Block Stair=沙漠沙石塊樓梯(外) +Desert Sandstone Block Slab=沙漠沙石塊臺階 +Silver Sandstone Stair=銀沙石樓梯 +Inner Silver Sandstone Stair=銀沙石樓梯(內) +Outer Silver Sandstone Stair=銀沙石樓梯(外) +Silver Sandstone Slab=銀沙石臺階 +Silver Sandstone Brick Stair=銀沙石磚樓梯 +Inner Silver Sandstone Brick Stair=銀沙石磚樓梯(內) +Outer Silver Sandstone Brick Stair=銀沙石磚樓梯(外) +Silver Sandstone Brick Slab=銀沙石磚臺階 +Silver Sandstone Block Stair=銀沙石塊樓梯 +Inner Silver Sandstone Block Stair=銀沙石塊樓梯(內) +Outer Silver Sandstone Block Stair=銀沙石塊樓梯(外) +Silver Sandstone Block Slab=銀沙石塊臺階 +Obsidian Stair=黑曜石樓梯 +Inner Obsidian Stair=黑曜石樓梯(內) +Outer Obsidian Stair=黑曜石樓梯(外) +Obsidian Slab=黑曜石臺階 +Obsidian Brick Stair=黑曜石磚樓梯 +Inner Obsidian Brick Stair=黑曜石磚樓梯(內) +Outer Obsidian Brick Stair=黑曜石磚樓梯(外) +Obsidian Brick Slab=黑曜石磚臺階 +Obsidian Block Stair=黑曜石塊樓梯 +Inner Obsidian Block Stair=黑曜石塊樓梯(內) +Outer Obsidian Block Stair=黑曜石塊樓梯(外) +Obsidian Block Slab=黑曜石塊臺階 +Brick Stair=磚樓梯 +Inner Brick Stair=磚樓梯(內) +Outer Brick Stair=磚樓梯(外) +Brick Slab=磚制臺階 +Steel Block Stair=鐵塊樓梯 +Inner Steel Block Stair=鐵塊樓梯(內) +Outer Steel Block Stair=鐵塊樓梯(外) +Steel Block Slab=鐵塊臺階 +Tin Block Stair=錫塊樓梯 +Inner Tin Block Stair=錫塊樓梯(內) +Outer Tin Block Stair=錫塊樓梯(外) +Tin Block Slab=錫塊臺階 +Copper Block Stair=銅塊樓梯 +Inner Copper Block Stair=銅塊樓梯(內) +Outer Copper Block Stair=銅塊樓梯(外) +Copper Block Slab=銅塊臺階 +Bronze Block Stair=青銅塊樓梯 +Inner Bronze Block Stair=青銅塊樓梯(內) +Outer Bronze Block Stair=青銅塊樓梯(外) +Bronze Block Slab=青銅塊臺階 +Gold Block Stair=金塊樓梯 +Inner Gold Block Stair=金塊樓梯(內) +Outer Gold Block Stair=金塊樓梯(外) +Gold Block Slab=金塊臺階 +Ice Stair=冰階梯 +Inner Ice Stair=冰塊樓梯(內) +Outer Ice Stair=冰塊樓梯(外) +Ice Slab=冰臺階 +Snow Block Stair=雪塊樓梯 +Inner Snow Block Stair=雪塊樓梯(內) +Outer Snow Block Stair=雪塊樓梯(外) +Snow Block Slab=雪塊臺階 diff --git a/mods/technic/technic/tools/mining_drill.lua b/mods/technic/technic/tools/mining_drill.lua index f2b99b9..f13ccd1 100644 --- a/mods/technic/technic/tools/mining_drill.lua +++ b/mods/technic/technic/tools/mining_drill.lua @@ -3,13 +3,6 @@ local power_usage_per_node = {1000, 2000, 3000,0} local S = technic.getter -local mining_drill_mode_text = { - {S("Single node.")}, - {S("3 nodes deep.")}, - {S("3 nodes wide.")}, - {S("3 nodes tall.")}, - {S("3x3 nodes.")}, -} local function drill_dig_it0 (pos,player) if minetest.is_protected(pos, player:get_player_name()) then @@ -199,9 +192,7 @@ local function mining_drill_setmode(user,itemstack) meta={} mode=0 end - if meta["mode"]==nil then - minetest.chat_send_player(player_name, S("Use while sneaking to change Mining Drill Mk%d modes."):format(3)) meta["mode"]=0 mode=0 end @@ -209,7 +200,6 @@ local function mining_drill_setmode(user,itemstack) local mode2 = mode mode=mode+1 if mode>=6 then mode=1 end - minetest.chat_send_player(player_name, S("Mining Drill Mk%d Mode %d"):format(3, mode)..": "..mining_drill_mode_text[mode][1]) local items = user:get_wielded_item():get_name() if mode2 == 0 then item["name"]=items.."_"..mode @@ -389,12 +379,21 @@ for i=1,5,1 do }) end +local mining_drill_mode_text = {"single node","3 nodes deep","3 nodes wide","3 nodes tall","3x3 nodes"} minetest.register_tool("technic:mining_drill_mkA1", { description = "Admin tool 8: Mining drill", inventory_image = "technic_mining_drill_Admin1.png", wear_represents = "technic_RE_charge", on_refill = technic.refill_RE_charge, + on_secondary_use = function(itemstack, user, pointed_thing) + local keys = user:get_player_control() + 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 + return itemstack + end, on_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() local player_name = user:get_player_name() @@ -417,19 +416,23 @@ technic.register_power_tool("technic:mining_drill_mkA1", max_charge[4]) for i=1,5,1 do technic.register_power_tool("technic:mining_drill_mkA1_"..i, max_charge[4]) minetest.register_tool("technic:mining_drill_mkA1_"..i, { - description = "Admin tool 8: Mining drill Mode "..i, + description = "Admin tool 8: Mining drill Mode "..i.." ("..mining_drill_mode_text[i]..")", inventory_image = "technic_mining_drill_Admin1.png^technic_tool_mode"..i..".png", wield_image = "technic_mining_drill_Admin1.png", wear_represents = "technic_RE_charge", on_refill = technic.refill_RE_charge, groups = {not_in_creative_inventory=1}, + on_secondary_use = function(itemstack, user, pointed_thing) + local keys = user:get_player_control() + 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 + return itemstack + end, 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 @@ -605,6 +608,14 @@ for _, m in pairs(mining_drill_list) do wear_represents = "technic_RE_charge", on_refill = technic.refill_RE_charge, groups = {not_in_creative_inventory=1}, + on_secondary_use = function(itemstack, user, pointed_thing) + local keys = user:get_player_control() + 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 + return itemstack + end, on_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() local player_name = user:get_player_name() @@ -623,9 +634,6 @@ for _, m in pairs(mining_drill_list) do 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, @@ -633,19 +641,23 @@ for _, m in pairs(mining_drill_list) do 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, + description = "Spezial Mining drill lv."..m[1].." Mode "..i.." ("..mining_drill_mode_text[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) + on_secondary_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 + return itemstack + end, + on_use = function(itemstack, user, pointed_thing) + local player_name = user:get_player_name() + local meta = minetest.deserialize(itemstack:get_metadata()) if pointed_thing.type ~= "node" or not pos_is_pointable(pointed_thing.under) or not meta.charge then return end @@ -657,9 +669,6 @@ for _, m in pairs(mining_drill_list) do 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, @@ -672,6 +681,15 @@ for _, m in pairs(mining_drill_list) do inventory_image = "technic_mining_drill_mkS"..m[1]..".png", wear_represents = "technic_RE_charge", on_refill = technic.refill_RE_charge, + on_secondary_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 + return itemstack + end, on_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() local player_name = user:get_player_name() @@ -691,19 +709,23 @@ for _, m in pairs(mining_drill_list) do 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, + description = "Spezial Mining drill lv.MAX Mode "..i.." ("..mining_drill_mode_text[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) + on_secondary_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 + return itemstack + end, + on_use = function(itemstack, user, pointed_thing) + local player_name = user:get_player_name() + local meta = minetest.deserialize(itemstack:get_metadata()) if pointed_thing.type ~= "node" or not pos_is_pointable(pointed_thing.under) then return end diff --git a/mods/tnt/init.lua b/mods/tnt/init.lua index 0e061fa..6565f85 100644 --- a/mods/tnt/init.lua +++ b/mods/tnt/init.lua @@ -163,9 +163,8 @@ local function entity_physics(pos, radius, drops) local damage = (4 / dist) * radius if obj:is_player() then - -- currently the engine has no method to set - -- player velocity. See #2960 - -- instead, we knock the player back 1.0 node, and slightly upwards + -- we knock the player back 1.0 node, and slightly upwards + -- TODO: switch to add_player_velocity() introduced in 5.1 local dir = vector.normalize(vector.subtract(obj_pos, pos)) local moveoff = vector.multiply(dir, dist + 1.0) local newpos = vector.add(pos, moveoff) @@ -174,31 +173,35 @@ local function entity_physics(pos, radius, drops) obj:set_hp(obj:get_hp() - damage) else - local do_damage = true - local do_knockback = true - local entity_drops = {} local luaobj = obj:get_luaentity() - local objdef = minetest.registered_entities[luaobj.name] - if objdef and objdef.on_blast then - do_damage, do_knockback, entity_drops = objdef.on_blast(luaobj, damage) - end + -- object might have disappeared somehow + if luaobj then + local do_damage = true + local do_knockback = true + local entity_drops = {} + local objdef = minetest.registered_entities[luaobj.name] - if do_knockback then - local obj_vel = obj:get_velocity() - obj:set_velocity(calc_velocity(pos, obj_pos, - obj_vel, radius * 10)) - end - if do_damage then - if not obj:get_armor_groups().immortal then - obj:punch(obj, 1.0, { - full_punch_interval = 1.0, - damage_groups = {fleshy = damage}, - }, nil) + if objdef and objdef.on_blast then + do_damage, do_knockback, entity_drops = objdef.on_blast(luaobj, damage) + end + + if do_knockback then + local obj_vel = obj:get_velocity() + obj:set_velocity(calc_velocity(pos, obj_pos, + obj_vel, radius * 10)) + end + if do_damage then + if not obj:get_armor_groups().immortal then + obj:punch(obj, 1.0, { + full_punch_interval = 1.0, + damage_groups = {fleshy = damage}, + }, nil) + end + end + for _, item in pairs(entity_drops) do + add_drop(drops, item) end - end - for _, item in pairs(entity_drops) do - add_drop(drops, item) end end end @@ -274,7 +277,7 @@ function tnt.burn(pos, nodename) def.on_ignite(pos) elseif minetest.get_item_group(name, "tnt") > 0 then minetest.swap_node(pos, {name = name .. "_burning"}) - minetest.sound_play("tnt_ignite", {pos = pos}) + minetest.sound_play("tnt_ignite", {pos = pos}, true) minetest.get_node_timer(pos):start(1) end end @@ -403,7 +406,7 @@ function tnt.boom(pos, def) end local sound = def.sound or "tnt_explode" minetest.sound_play(sound, {pos = pos, gain = 2.5, - max_hear_distance = math.min(def.radius * 20, 128)}) + max_hear_distance = math.min(def.radius * 20, 128)}, true) local drops, radius = tnt_explode(pos, def.radius, def.ignore_protection, def.ignore_on_blast, owner, def.explode_center) -- append entity drops @@ -541,7 +544,8 @@ minetest.register_node("tnt:gunpowder_burning", { -- unaffected by explosions on_blast = function() end, on_construct = function(pos) - minetest.sound_play("tnt_gunpowder_burning", {pos = pos, gain = 2}) + minetest.sound_play("tnt_gunpowder_burning", {pos = pos, + gain = 2}, true) minetest.get_node_timer(pos):start(1) end, }) @@ -672,7 +676,7 @@ function tnt.register_tnt(def) -- unaffected by explosions on_blast = function() end, on_construct = function(pos) - minetest.sound_play("tnt_ignite", {pos = pos}) + minetest.sound_play("tnt_ignite", {pos = pos}, true) minetest.get_node_timer(pos):start(4) minetest.check_for_falling(pos) end, diff --git a/mods/tnt/locale/tnt.ms.tr b/mods/tnt/locale/tnt.ms.tr new file mode 100644 index 0000000..c4c5fdd --- /dev/null +++ b/mods/tnt/locale/tnt.ms.tr @@ -0,0 +1,4 @@ +# textdomain: tnt +Gun Powder=Serbuk Senjata Api +TNT Stick=Batang TNT +TNT=TNT diff --git a/mods/tnt/locale/tnt.ru.tr b/mods/tnt/locale/tnt.ru.tr new file mode 100644 index 0000000..a8cee43 --- /dev/null +++ b/mods/tnt/locale/tnt.ru.tr @@ -0,0 +1,4 @@ +# textdomain: tnt +Gun Powder=Порох +TNT Stick=Тротиловая Палка +TNT=Тротил diff --git a/mods/tnt/locale/tnt.se.tr b/mods/tnt/locale/tnt.se.tr new file mode 100644 index 0000000..21fbbd0 --- /dev/null +++ b/mods/tnt/locale/tnt.se.tr @@ -0,0 +1,4 @@ +# textdomain: tnt +Gun Powder=Krut +TNT Stick=Dynamitpinne +TNT=Dynamit \ No newline at end of file diff --git a/mods/tnt/locale/tnt.zh_CN.tr b/mods/tnt/locale/tnt.zh_CN.tr new file mode 100644 index 0000000..0a3294e --- /dev/null +++ b/mods/tnt/locale/tnt.zh_CN.tr @@ -0,0 +1,4 @@ +# textdomain: tnt +Gun Powder=火药粉 +TNT Stick=炸药棒 +TNT=炸药包 diff --git a/mods/tnt/locale/tnt.zh_TW.tr b/mods/tnt/locale/tnt.zh_TW.tr new file mode 100644 index 0000000..c1b3caf --- /dev/null +++ b/mods/tnt/locale/tnt.zh_TW.tr @@ -0,0 +1,4 @@ +# textdomain: tnt +Gun Powder=火藥粉 +TNT Stick=炸藥棒 +TNT=炸藥包 diff --git a/mods/tutorial/chatcommand.lua b/mods/tutorial/chatcommand.lua index 3561a6a..fc65c03 100644 --- a/mods/tutorial/chatcommand.lua +++ b/mods/tutorial/chatcommand.lua @@ -101,6 +101,10 @@ minetest.register_chatcommand("regnum", { inv:set_size("tearpurple", 1) inv:set_size("tearyellow", 1) inv:set_size("tearcyan", 1) + inv:set_size("dgon", 1) + inv:set_size("ttoise", 1) + inv:add_item("dgon", "default:dirt") + inv:add_item("ttoise", "default:dirt") inv:add_item("artrew", "default:dirt") inv:add_item("medrew", "default:dirt") inv:add_item("trerew", "default:dirt") @@ -442,12 +446,12 @@ minetest.register_chatcommand("admin", { func = function(name, param) local player = minetest.get_player_by_name(name) local inv = player:get_inventory() - inv:add_item("main", "ban_hammer:hammer") --admin tool 1 + inv:add_item("main", "ban_hammer:hammer1") --admin tool 1 inv:add_item("main", "tutorial:pistole") --admin tool 2 inv:add_item("main", "tutorial:adminbattleaxe") --admin tool 3 inv:add_item("main", "technic:laser_mkA1") --admin tool 4 inv:add_item("main", "technic:chainsaw") --admin tool 5 - inv:add_item("main", "tutorial:server_hammer") --admin tool 6 + inv:add_item("main", "tutorial:server_hammer1") --admin tool 6 inv:add_item("main", "tutorial:monster_remover") --admin tool 7 inv:add_item("main", "technic:mining_drill_mkA1") --admin tool 8 inv:add_item("main", "tutorial:adminwallplacer_1") --admin tool 9 diff --git a/mods/tutorial/craft.lua b/mods/tutorial/craft.lua index c1851fd..e4f032b 100644 --- a/mods/tutorial/craft.lua +++ b/mods/tutorial/craft.lua @@ -123,13 +123,21 @@ minetest.register_craft({ minetest.register_craft({ output = 'tutorial:regnumbattleaxe2', recipe = { - {'tutorial:regnumbattleaxe1'}, + {'', '', 'tutorial:regnum', '', ''}, + {'', '', 'tutorial:bottleSS', '', ''}, + {'tutorial:regnum', 'tutorial:bottleSS', 'tutorial:superlegendenbattleaxe2', 'tutorial:bottleSS', 'tutorial:regnum'}, + {'', '', 'tutorial:bottleSS', '', ''}, + {'', '', 'tutorial:regnum', '', ''}, } }) minetest.register_craft({ output = 'tutorial:regnumbattleaxe3', recipe = { - {'tutorial:regnumbattleaxe2'}, + {'', '', 'tutorial:regnum', '', ''}, + {'', '', 'tutorial:bottleSS', '', ''}, + {'tutorial:regnum', 'tutorial:bottleSS', 'tutorial:superlegendenbattleaxe3', 'tutorial:bottleSS', 'tutorial:regnum'}, + {'', '', 'tutorial:bottleSS', '', ''}, + {'', '', 'tutorial:regnum', '', ''}, } }) minetest.register_craft({ @@ -138,18 +146,6 @@ minetest.register_craft({ {'tutorial:lilabattleaxe2', 'tutorial:legendenbattleaxe6'}, } }) -minetest.register_craft({ - output = 'tutorial:superlegendenbattleaxe2', - recipe = { - {'tutorial:superlegendenbattleaxe1'}, - } -}) -minetest.register_craft({ - output = 'tutorial:superlegendenbattleaxe3', - recipe = { - {'tutorial:superlegendenbattleaxe2'}, - } -}) minetest.register_craft({ output = 'tutorial:lilabattleaxe2', recipe = { @@ -509,18 +505,6 @@ minetest.register_craft({ {'tutorial:arena_block', 'tutorial:arena_block', 'tutorial:arena_block'}, } }) -minetest.register_craft({ - output = 'tutorial:adminbattleaxe2', - recipe = { - {'tutorial:adminbattleaxe'}, - } -}) -minetest.register_craft({ - output = 'tutorial:adminbattleaxe3', - recipe = { - {'tutorial:adminbattleaxe2'}, - } -}) minetest.register_craft({ output = 'tutorial:coin_lila', recipe = { diff --git a/mods/tutorial/craftitem.lua b/mods/tutorial/craftitem.lua index a589082..5ce5075 100644 --- a/mods/tutorial/craftitem.lua +++ b/mods/tutorial/craftitem.lua @@ -19,7 +19,7 @@ minetest.register_craftitem("tutorial:magic_gem5", { inventory_image = "tutorial_gem5.png", }) minetest.register_craftitem("tutorial:gem_fragment", { - description = "Gem fragment lv.2", + description = "Gem fragment (dragon)", inventory_image = "tutorial_gem_fragment.png", }) minetest.register_craftitem("tutorial:dragon_crystal", { diff --git a/mods/tutorial/init.lua b/mods/tutorial/init.lua index 9572210..7028e23 100644 --- a/mods/tutorial/init.lua +++ b/mods/tutorial/init.lua @@ -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.x", + text = "For Minetest : 5.2.0", }) player:hud_add({ hud_elem_type = "text", @@ -14,7 +14,7 @@ minetest.register_on_joinplayer(function(player) offset = {x=0, y=30}, alignment = {x=1, y=0}, number = 0xFFFFFF , - text = "Game Version : 3.4.0", + text = "Game Version : 3.5.0", }) end) @@ -30,6 +30,35 @@ dofile(minetest.get_modpath("tutorial").."/other.lua") dofile(minetest.get_modpath("tutorial").."/alias.lua") --v.2.0.0+ +local backward = {} +backward.get_formspec = function(player, pos) + if player == nil then + return + end + local player_inv = player:get_inventory() + player_inv:set_size("backward", 1) + formspec = "size[8,7.5]" + .."button[0,0;2,0.5;cr;Back]" + .."button[2,0;2,0.5;main;Main]" + .."background[8,7.5;1,1;gui_formbg.png;true]" + .."listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF]" + .."bgcolor[#080808BB;true]" + .."button[3,2.6;2,0.5;backwardcra;Get items back]" + .."list[current_player;main;0,3.75;8,4;]" + .."list[current_player;backward;3.5,1;1,1;]" + .."listring[current_player;main]" + .."listring[current_player;backward]" + .."label[5,0.7;You can get your items back from:]" + .."label[5,1.0;superlegend & regnum armor/gun]" + .."label[5,1.3;Spezial Mining Laser/Drill lv.1-149]" + .."label[5,1.6;Craftkey lv.1-6]" + .."label[5,1.9;Spezial grey coin lv.1-MAX]" + .."label[5,2.2;Bagkey lv.1-3]" + .."label[5,2.5;Wallplacer lv.1-4]" + .."label[5,2.8;Cookingkey lv.1-3]" + return formspec +end + minetest.register_craft({ output = "tutorial:spawn_egg", recipe = { @@ -51,28 +80,7 @@ minetest.register_craftitem("tutorial:spawn_egg", { end end, }) -local rg25 = {} -rg25.get_formspec = function(player, pos) - if player == nil then - return - end - formspec = "size[9,10.3]" - .."button[0,0;2,0.5;inven;Back]" - .."button[2,0;2,0.5;main;Main]" - .."background[9,10.3;1,1;gui_formbg.png;true]" - .."listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF]" - .."bgcolor[#080808BB;true]" - .."label[0,1;I. 17. Music]" - .."label[0,1.3;Enable Background Music.]" - .."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 Themes]" - .."button[2,10; 2,0.5;rg24;<]" - .."button[4,10; 2,0.5;rg15;>]" - return formspec -end + minetest.register_craft({ output = 'tutorial:colorstick_empty', recipe = { @@ -95,7 +103,7 @@ minetest.register_alias("homedecor:trophy_year1", "tutorial:trophy_year1") minetest.register_node("tutorial:trophy_year1", { description = "One year Regnum!!", tiles = { - "moreores_mithril_block.png" + "tutorial_trophy_year1.png" }, groups = { snappy=3 }, drawtype = "nodebox", @@ -127,7 +135,7 @@ minetest.register_node("tutorial:trophy_year1", { minetest.register_node("tutorial:trophy_year2", { description = "Two years Regnum!!", tiles = { - "moreores_mithril_block.png" + "tutorial_trophy_year2.png" }, groups = { snappy=3 }, drawtype = "nodebox", @@ -159,7 +167,39 @@ minetest.register_node("tutorial:trophy_year2", { minetest.register_node("tutorial:trophy_year3", { description = "Three years Regnum!!", tiles = { - "moreores_mithril_block.png" + "tutorial_trophy_year3.png" + }, + groups = { snappy=3 }, + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + {-0.125, -0.5, -0.125, 0.1875, -0.4375, 0.1875}, -- NodeBox1 + {-0.0625, -0.4375, -0.0625, 0.125, -0.375, 0.125}, -- NodeBox2 + {-0.02, -0.375, -0.02, 0.0825, -0.1875, 0.0825}, -- NodeBox3 + {-0.0625, -0.1875, -0.0625, 0.125, -0.125, 0.125}, -- NodeBox4 + {-0.125, -0.1875, -0.0625, -0.0625, 0.125, 0.125}, -- NodeBox5 + {0.125, -0.1875, -0.0625, 0.1875, 0.125, 0.125}, -- NodeBox6 + {-0.125, -0.1875, 0.125, 0.1875, 0.125, 0.1875}, -- NodeBox7 + {-0.125, -0.1875, -0.125, 0.1875, 0.125, -0.0625}, -- NodeBox8 + {-0.0625, -0.25, -0.0625, 0.125, -0.1875, 0.125}, -- NodeBox9 + {0.1875, 0.05, 0, 0.23, 0.0925, 0.0625}, -- NodeBox10 + {0.1875, -0.15, 0, 0.23, -0.11, 0.0625}, -- NodeBox11 + {0.23, -0.15, 0, 0.2725, 0.0925, 0.0625}, -- NodeBox12 + {-0.1675, -0.15, 0, -0.125, -0.11, 0.0625}, -- NodeBox13 + {-0.1675, 0.05, 0, -0.125, 0.0925, 0.0625}, -- NodeBox14 + {-0.21, -0.15, 0, -0.1675, 0.0925, 0.0625}, -- NodeBox15 + } + }, + selection_box = { + type = "fixed", + fixed = { -0.21, -0.5, -0.125, 0.2725, 0.125, 0.1875 } + } +}) +minetest.register_node("tutorial:trophy_year4", { + description = "Four years Regnum!!", + tiles = { + "tutorial_trophy_year4.png" }, groups = { snappy=3 }, drawtype = "nodebox", @@ -557,48 +597,6 @@ minetest.register_craft({ {'tutorial:lila_erz3', 'tutorial:lila_erz3', 'tutorial:lila_erz3'}, } }) -local rg23 = {} -rg23.get_formspec = function(player, pos) - if player == nil then - return - end - formspec = "size[9,10.3]" - .."button[0,0;2,0.5;inven;Back]" - .."button[2,0;2,0.5;main;Main]" - .."background[9,10.3;1,1;gui_formbg.png;true]" - .."listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF]" - .."bgcolor[#080808BB;true]" - .."label[0,1;I. 15. Treasures]" - .."label[0,1.3;get treasures from the fox]" - .."label[0,1.6;Collect 6 treasures to get the legend stick]" - .."label[0,1.9;How to use artifacts:]" - .."label[0,2.2;1. get 6 treasures]" - .."label[0,2.5;2. press 'reward']" - .."button[2,10; 2,0.5;rg22;<]" - .."button[4,10; 2,0.5;rg24;>]" - return formspec -end -local rg24 = {} -rg24.get_formspec = function(player, pos) - if player == nil then - return - end - formspec = "size[9,10.3]" - .."button[0,0;2,0.5;inven;Back]" - .."button[2,0;2,0.5;main;Main]" - .."background[9,10.3;1,1;gui_formbg.png;true]" - .."listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF]" - .."bgcolor[#080808BB;true]" - .."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 trophys:]" - .."label[0,2.2;1. get 24 trophys]" - .."label[0,2.5;2. press 'reward']" - .."button[2,10; 2,0.5;rg23;<]" - .."button[4,10; 2,0.5;rg25;>]" - return formspec -end local troph = {} troph.get_formspec = function(player, pos) if player == nil then @@ -1015,11 +1013,6 @@ minetest.register_on_joinplayer(function(player) player:set_physics_override(override_table) local player_inv = player:get_inventory() player_inv:set_stack("crtime", 1, nil) - --player_inv:set_size("year", 3) - --if player_inv:room_for_item("main", "tutorial:trophy_year3") and player_inv:get_stack("year", 3):get_count() == 0 then - -- player_inv:add_item("main", "tutorial:trophy_year3") - -- player_inv:set_stack("year", 3, "default:dirt") - --end end) minetest.register_craftitem("tutorial:cooking_schluessel1", { description = "Cookingkey lv.1", @@ -1049,7 +1042,7 @@ minetest.register_craftitem("tutorial:crystal_schluessel", { inventory_image = "tutorial_crystal_schluessel.png", }) minetest.register_craftitem("tutorial:medallion", { - description = "Medallion", + description = "Medallion piece", inventory_image = "tutorial_medallion.png", stack_max = 1000, }) @@ -1336,50 +1329,6 @@ medallion.get_formspec = function(player, pos) player_inv:set_stack("meme", 1 , "default:dirt "..p) return formspec end -local rg21 = {} -rg21.get_formspec = function(player, pos) - if player == nil then - return - end - formspec = "size[9,10.3]" - .."button[0,0;2,0.5;inven;Back]" - .."button[2,0;2,0.5;main;Main]" - .."background[9,10.3;1,1;gui_formbg.png;true]" - .."listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF]" - .."bgcolor[#080808BB;true]" - .."label[0,1;I. 13. Artifacts]" - .."label[0,1.3;If you run around you will get artifacts]" - .."label[0,1.6;Collect 71 artifacts to get the Knight key]" - .."label[0,1.9;How to use artifacts:]" - .."label[0,2.2;1. run around]" - .."label[0,2.5;2. get 71 artifacts]" - .."label[0,2.8;3. press 'reward']" - .."button[2,10; 2,0.5;rg14;<]" - .."button[4,10; 2,0.5;rg22;>]" - return formspec -end -local rg22 = {} -rg22.get_formspec = function(player, pos) - if player == nil then - return - end - formspec = "size[9,10.3]" - .."button[0,0;2,0.5;inven;Back]" - .."button[2,0;2,0.5;main;Main]" - .."background[9,10.3;1,1;gui_formbg.png;true]" - .."listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF]" - .."bgcolor[#080808BB;true]" - .."label[0,1;I. 14. Medallion]" - .."label[0,1.3;craft medallions in the medallion craft]" - .."label[0,1.6;Collect 7 medallions to get the Crystalkey]" - .."label[0,1.9;How to use artifacts:]" - .."label[0,2.2;1. craft medallions]" - .."label[0,2.5;2. get 7 medallions]" - .."label[0,2.8;3. press 'reward']" - .."button[2,10; 2,0.5;rg21;<]" - .."button[4,10; 2,0.5;rg23;>]" - return formspec -end local timer = 0 local oldpos = {} local newpos = {} @@ -1390,6 +1339,13 @@ minetest.register_globalstep(function(dtime) for _,player in ipairs(players) do local pri = minetest.get_player_privs(player:get_player_name()) local player_inv = player:get_inventory() + + player_inv:set_size("year", 4) + if player_inv:room_for_item("main", "tutorial:trophy_year4") and player_inv:get_stack("year", 4):get_count() == 0 then + player_inv:add_item("main", "tutorial:trophy_year4") + player_inv:set_stack("year", 4, "default:dirt") + end + player_inv:set_size("youtube", 1) local c = player_inv:get_stack("youtube",1):get_count() if c == 0 then @@ -1459,22 +1415,29 @@ minetest.register_globalstep(function(dtime) end end) minetest.register_craftitem("tutorial:gem_fragment2", { - description = "Gem fragment lv.2", + description = "Gem fragment (tortoise)", inventory_image = "tutorial_gem_fragment2.png", }) minetest.register_node("tutorial:geschenk_tortoise",{ description = "Gift (tortoise)", is_ground_content = true, - tiles = {"tutorial_geschenk_dragon.png"}, + tiles = {"tutorial_geschenk_tortoise.png"}, groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3}, - drop = {}, + drop = "default:coal_lump 20", }) minetest.register_node("tutorial:geschenk_gem2",{ - description = "Gift lv.2 (gem)", + description = "Gift (gem tortoise)", is_ground_content = true, tiles = {"tutorial_geschenk_gem2.png"}, groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3}, - drop = {}, + drop = { + max_items = 1, + items = { + {items = {"tutorial:gem_fragment2"},rarity = 2.5}, + {items = {"tutorial:geschenk_legend"},rarity = 5}, + {items = {""},rarity = 2.5}, + } + } }) local artifacts = {} artifacts.get_formspec = function(player, pos) @@ -1727,7 +1690,7 @@ minetest.register_craft({ } }) minetest.register_craftitem("tutorial:wallplacer1", { - description = "Wallplacer lv.1", + description = "Wallplacer lv.1 (place 3x3 wall)", inventory_image = "tutorial_block_placer1.png", groups = {not_in_creative_inventory=1}, on_place = function(itemstack, placer, pointed_thing) @@ -1842,11 +1805,11 @@ minetest.register_craftitem("tutorial:wallplacer1", { end, }) minetest.register_craftitem("tutorial:wallplacer2_2", { - description = "Wallplacer lv.2", + description = "Wallplacer lv.2 Mode 2 (place 5x5 wall)", 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) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("tutorial:wallplacer2_1") @@ -1965,11 +1928,11 @@ minetest.register_craftitem("tutorial:wallplacer2_2", { end, }) minetest.register_craftitem("tutorial:wallplacer2_1", { - description = "Wallplacer lv.2", + description = "Wallplacer lv.2 Mode 1 (place 3x3 wall)", 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) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("tutorial:wallplacer2_2") @@ -2088,11 +2051,11 @@ minetest.register_craftitem("tutorial:wallplacer2_1", { end, }) minetest.register_craftitem("tutorial:wallplacer3_1", { - description = "Wallplacer lv.3", + description = "Wallplacer lv.3 Mode 1 (place 3x3 wall)", 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) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("tutorial:wallplacer3_2") @@ -2211,11 +2174,11 @@ minetest.register_craftitem("tutorial:wallplacer3_1", { end, }) minetest.register_craftitem("tutorial:wallplacer3_2", { - description = "Wallplacer lv.3", + description = "Wallplacer lv.3 Mode 2 (place 5x5 wall)", 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) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("tutorial:wallplacer3_3") @@ -2334,11 +2297,11 @@ minetest.register_craftitem("tutorial:wallplacer3_2", { end, }) minetest.register_craftitem("tutorial:wallplacer3_3", { - description = "Wallplacer lv.3", + description = "Wallplacer lv.3 Mode 3 (place 7x7 wall)", 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) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("tutorial:wallplacer3_1") @@ -2457,11 +2420,11 @@ minetest.register_craftitem("tutorial:wallplacer3_3", { end, }) minetest.register_craftitem("tutorial:wallplacer4_1", { - description = "Wallplacer lv.4", + description = "Wallplacer lv.4 Mode 1 (place 3x3 wall)", 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) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("tutorial:wallplacer4_2") @@ -2580,11 +2543,11 @@ minetest.register_craftitem("tutorial:wallplacer4_1", { end, }) minetest.register_craftitem("tutorial:wallplacer4_2", { - description = "Wallplacer lv.4", + description = "Wallplacer lv.4 Mode 2 (place 5x5 wall)", 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) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("tutorial:wallplacer4_3") @@ -2703,11 +2666,11 @@ minetest.register_craftitem("tutorial:wallplacer4_2", { end, }) minetest.register_craftitem("tutorial:wallplacer4_3", { - description = "Wallplacer lv.4", + description = "Wallplacer lv.4 Mode 3 (place 7x7 wall)", 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) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("tutorial:wallplacer4_4") @@ -2826,11 +2789,11 @@ minetest.register_craftitem("tutorial:wallplacer4_3", { end, }) minetest.register_craftitem("tutorial:wallplacer4_4", { - description = "Wallplacer lv.4", + description = "Wallplacer lv.4 Mode 4 (place 9x9 wall)", 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) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("tutorial:wallplacer4_1") @@ -2949,10 +2912,10 @@ minetest.register_craftitem("tutorial:wallplacer4_4", { end, }) minetest.register_craftitem("tutorial:wallplacer5_1", { - description = "Wallplacer lv.MAX", + description = "Wallplacer lv.MAX Mode 1 (place 3x3 wall)", inventory_image = "tutorial_block_placer5.png^technic_tool_mode1.png", wield_image = "tutorial_block_placer5.png", - on_use = function(itemstack, user, pointed_thing) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("tutorial:wallplacer5_2") @@ -3071,11 +3034,11 @@ minetest.register_craftitem("tutorial:wallplacer5_1", { end, }) minetest.register_craftitem("tutorial:wallplacer5_2", { - description = "Wallplacer lv.MAX", + description = "Wallplacer lv.MAX Mode 2 (place 5x5 wall)", 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) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("tutorial:wallplacer5_3") @@ -3194,11 +3157,11 @@ minetest.register_craftitem("tutorial:wallplacer5_2", { end, }) minetest.register_craftitem("tutorial:wallplacer5_3", { - description = "Wallplacer lv.MAX", + description = "Wallplacer lv.MAX Mode 3 (place 7x7 wall)", 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) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("tutorial:wallplacer5_4") @@ -3317,11 +3280,11 @@ minetest.register_craftitem("tutorial:wallplacer5_3", { end, }) minetest.register_craftitem("tutorial:wallplacer5_4", { - description = "Wallplacer lv.MAX", + description = "Wallplacer lv.MAX Mode 4 (place 9x9 wall)", 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) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("tutorial:wallplacer5_5") @@ -3440,11 +3403,11 @@ minetest.register_craftitem("tutorial:wallplacer5_4", { end, }) minetest.register_craftitem("tutorial:wallplacer5_5", { - description = "Wallplacer lv.MAX", + description = "Wallplacer lv.MAX Mode 5 (place 11x11 wall)", 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) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("tutorial:wallplacer5_1") @@ -3566,7 +3529,7 @@ minetest.register_craftitem("tutorial:adminwallplacer_1", { description = "Admin tool 9: Wallplacer", inventory_image = "tutorial_block_placerAdmin.png^technic_tool_mode1.png", wield_image = "tutorial_block_placerAdmin.png", - on_use = function(itemstack, user, pointed_thing) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("tutorial:adminwallplacer_2") @@ -3689,7 +3652,7 @@ minetest.register_craftitem("tutorial:adminwallplacer_2", { 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) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("tutorial:adminwallplacer_3") @@ -3812,7 +3775,7 @@ minetest.register_craftitem("tutorial:adminwallplacer_3", { 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) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("tutorial:adminwallplacer_4") @@ -3935,7 +3898,7 @@ minetest.register_craftitem("tutorial:adminwallplacer_4", { 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) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("tutorial:adminwallplacer_5") @@ -4058,7 +4021,7 @@ minetest.register_craftitem("tutorial:adminwallplacer_5", { 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) + on_secondary_use = function(itemstack, user, pointed_thing) local keys = user:get_player_control() if keys["sneak"] == true then itemstack:set_name("tutorial:adminwallplacer_1") @@ -4176,946 +4139,938 @@ minetest.register_craftitem("tutorial:adminwallplacer_5", { end end, }) - minetest.register_craft({ - output = 'tutorial:gun', - recipe = { - {'group:wood', 'group:wood', 'group:wood'}, + output = 'tutorial:gun', + recipe = { + {'group:wood', 'group:wood', 'group:wood'}, {'', 'default:stick', 'group:wood'}, {'', '', 'default:stick'}, - } -}) -minetest.register_craft({ - output = 'tutorial:gun_mega1', - recipe = { - {'tutorial:obsidian4', 'tutorial:obsidian4', 'tutorial:obsidian4'}, - {'tutorial:obsidian4', 'tutorial:gun', 'tutorial:obsidian4'}, - {'tutorial:thunder', 'tutorial:thunder', 'tutorial:thunder'}, - } -}) -minetest.register_craft({ - output = 'tutorial:gun_mega2', - recipe = { - {'tutorial:obsidian4', 'tutorial:obsidian4', 'tutorial:obsidian4'}, - {'tutorial:obsidian4','tutorial:gun_mega1','tutorial:obsidian4'}, - {'tutorial:thunder', 'tutorial:thunder', 'tutorial:thunder'}, - } -}) -minetest.register_craft({ - output = 'tutorial:gun_mega3', - recipe = { - {'tutorial:obsidian5', 'tutorial:obsidian5', 'tutorial:obsidian5'}, - {'tutorial:obsidian5','tutorial:gun_mega2','tutorial:obsidian5'}, - {'tutorial:thunder', 'tutorial:thunder', 'tutorial:thunder'}, - } -}) -minetest.register_craft({ - output = 'tutorial:gun_mega4', - recipe = { - {'tutorial:obsidian6', 'tutorial:obsidian6', 'tutorial:obsidian6'}, - {'tutorial:obsidian6','tutorial:gun_mega3','tutorial:obsidian6'}, - {'tutorial:thunder', 'tutorial:thunder', 'tutorial:thunder'}, - } -}) -minetest.register_craft({ - output = 'tutorial:gun_mega5', - recipe = { - {'tutorial:dunklematerie4','tutorial:dunklematerie4', 'tutorial:dunklematerie4'}, - {'tutorial:dunklematerie4','tutorial:gun_mega4','tutorial:dunklematerie4'}, - {'tutorial:thunder','tutorial:thunder', 'tutorial:thunder'}, - } -}) -minetest.register_craft({ - output = 'tutorial:gun_mega6', - recipe = { - {'tutorial:dunklematerie4','tutorial:dunklematerie4', 'tutorial:dunklematerie4'}, - {'tutorial:dunklematerie4','tutorial:gun_mega5','tutorial:dunklematerie4'}, - {'tutorial:thunder','tutorial:thunder', 'tutorial:thunder'}, - } -}) -minetest.register_craft({ - output = 'tutorial:gun_mega7', - recipe = { - {'tutorial:dunklematerie5','tutorial:dunklematerie5', 'tutorial:dunklematerie5'}, - {'tutorial:dunklematerie5','tutorial:gun_mega6','tutorial:dunklematerie5'}, - {'tutorial:thunder','tutorial:thunder', 'tutorial:thunder'}, - } -}) -minetest.register_craft({ - output = 'tutorial:gun_mega8', - recipe = { - {'tutorial:dunklematerie6','tutorial:dunklematerie6', 'tutorial:dunklematerie6'}, - {'tutorial:dunklematerie6','tutorial:gun_mega7','tutorial:dunklematerie6'}, - {'tutorial:thunder','tutorial:thunder', 'tutorial:thunder'}, - } -}) -minetest.register_craft({ - output = 'tutorial:gun_mega9', - recipe = { - {'tutorial:diamondblock2','tutorial:diamondblock2', 'tutorial:diamondblock2'}, - {'tutorial:diamondblock2','tutorial:gun_mega8','tutorial:diamondblock2'}, - {'tutorial:thunder','tutorial:thunder', 'tutorial:thunder'}, - } -}) -minetest.register_craft({ - output = 'tutorial:gun_mega10', - recipe = { - {'tutorial:diamondblock2','tutorial:diamondblock2', 'tutorial:diamondblock2'}, - {'tutorial:diamondblock2','tutorial:gun_mega9','tutorial:diamondblock2'}, - {'tutorial:thunder','tutorial:thunder', 'tutorial:thunder'}, - } -}) -minetest.register_craft({ - output = 'tutorial:gun_mega11', - recipe = { - {'tutorial:diamondblock2','tutorial:diamondblock2', 'tutorial:diamondblock2'}, - {'tutorial:diamondblock2','tutorial:gun_mega10','tutorial:diamondblock2'}, - {'tutorial:thunder','tutorial:thunder', 'tutorial:thunder'}, - } -}) -minetest.register_craft({ - output = 'tutorial:gun_mega12', - recipe = { - {'tutorial:diamondblock2','tutorial:diamondblock2', 'tutorial:diamondblock2'}, - {'tutorial:diamondblock2','tutorial:gun_mega11','tutorial:diamondblock2'}, - {'tutorial:thunder','tutorial:thunder', 'tutorial:thunder'}, - } -}) -minetest.register_craft({ - output = 'tutorial:gun_mega13', - recipe = { - {'default:goldblock','default:goldblock', 'default:goldblock'}, - {'default:goldblock','tutorial:gun_mega12','default:goldblock'}, - {'tutorial:thunder','tutorial:thunder', 'tutorial:thunder'}, - } -}) -minetest.register_craft({ - output = 'tutorial:gun_mega14', - recipe = { - {'default:nyancat_rainbow','default:nyancat_rainbow', 'default:nyancat_rainbow'}, - {'default:nyancat_rainbow','tutorial:gun_mega13','default:nyancat_rainbow'}, - {'tutorial:thunder','tutorial:thunder', 'tutorial:thunder'}, - } -}) -minetest.register_craft({ - output = 'tutorial:gun_mega15', - recipe = { - {'default:nyancat_rainbow','default:nyancat_rainbow', 'default:nyancat_rainbow'}, - {'default:nyancat_rainbow','tutorial:gun_mega14','default:nyancat_rainbow'}, - {'tutorial:thunder','tutorial:thunder', 'tutorial:thunder'}, - } -}) -minetest.register_craft({ - output = 'tutorial:gun_mega16', - recipe = { - {'tutorial:megablock1','tutorial:megablock1', 'tutorial:megablock1'}, - {'tutorial:megablock1','tutorial:gun_mega15','tutorial:megablock1'}, - {'tutorial:thunder','tutorial:thunder', 'tutorial:thunder'}, - } -}) -minetest.register_craft({ - output = 'tutorial:gun_mega17', - recipe = { - {'tutorial:megablock1','tutorial:megablock1', 'tutorial:megablock1'}, - {'tutorial:megablock1','tutorial:gun_mega16','tutorial:megablock1'}, - {'tutorial:thunder','tutorial:thunder', 'tutorial:thunder'}, - } -}) -minetest.register_craft({ - output = 'tutorial:gun_mega18', - recipe = { - {'tutorial:megablock1','tutorial:megablock1', 'tutorial:megablock1'}, - {'tutorial:megablock1','tutorial:gun_mega17','tutorial:megablock1'}, - {'tutorial:thunder','tutorial:thunder', 'tutorial:thunder'}, - } -}) -minetest.register_craft({ - output = 'tutorial:gun_mega19', - recipe = { - {'tutorial:megablock1','tutorial:megablock1', 'tutorial:megablock1'}, - {'tutorial:megablock1','tutorial:gun_mega18','tutorial:megablock1'}, - {'tutorial:thunder','tutorial:thunder', 'tutorial:thunder'}, - } -}) -minetest.register_craft({ - output = 'tutorial:gun_mega20', - recipe = { - {'tutorial:megablock2','tutorial:megablock2', 'tutorial:megablock2'}, - {'tutorial:megablock2','tutorial:gun_mega19','tutorial:megablock2'}, - {'tutorial:thunder','tutorial:thunder', 'tutorial:thunder'}, - } -}) -minetest.register_craft({ - output = 'tutorial:cloudgun_mega25', - recipe = { - {'tutorial:superblock9', 'tutorial:superblock9', 'tutorial:superblock9'}, - {'tutorial:superblock9', 'tutorial:cloudgun_mega24', 'tutorial:superblock9'}, - {'tutorial:superblock9', 'tutorial:superblock9', 'tutorial:superblock9'}, - } -}) -minetest.register_craft({ - output = 'tutorial:cloudgun_mega24', - recipe = { - {'tutorial:superblock9', 'tutorial:superblock9', 'tutorial:superblock9'}, - {'tutorial:superblock9', 'tutorial:cloudgun_mega23', 'tutorial:superblock9'}, - {'tutorial:superblock9', 'tutorial:superblock9', 'tutorial:superblock9'}, - } -}) -minetest.register_craft({ - output = 'tutorial:cloudgun_mega23', - recipe = { - {'tutorial:superblock9', 'tutorial:superblock9', 'tutorial:superblock9'}, - {'tutorial:superblock9', 'tutorial:cloudgun_mega22', 'tutorial:superblock9'}, - {'tutorial:superblock9', 'tutorial:superblock9', 'tutorial:superblock9'}, - } -}) -minetest.register_craft({ - output = 'tutorial:cloudgun_mega22', - recipe = { - {'tutorial:superblock9', 'tutorial:superblock9', 'tutorial:superblock9'}, - {'tutorial:superblock9', 'tutorial:cloudgun_mega21', 'tutorial:superblock9'}, - {'tutorial:superblock9', 'tutorial:superblock9', 'tutorial:superblock9'}, - } -}) -minetest.register_craft({ - output = 'tutorial:cloudgun_mega21', - recipe = { - {'tutorial:superblock9', 'tutorial:superblock9', 'tutorial:superblock9'}, - {'tutorial:superblock9', 'tutorial:cloudgun_mega20', 'tutorial:superblock9'}, - {'tutorial:superblock9', 'tutorial:superblock9', 'tutorial:superblock9'}, - } -}) -minetest.register_craft({ - output = 'tutorial:cloudgun_mega20', - recipe = { - {'tutorial:superblock8', 'tutorial:superblock8', 'tutorial:superblock8'}, - {'tutorial:superblock8', 'tutorial:cloudgun_mega19', 'tutorial:superblock8'}, - {'tutorial:superblock8', 'tutorial:superblock8', 'tutorial:superblock8'}, - } -}) -minetest.register_craft({ - output = 'tutorial:cloudgun_mega19', - recipe = { - {'tutorial:superblock8', 'tutorial:superblock8', 'tutorial:superblock8'}, - {'tutorial:superblock8', 'tutorial:cloudgun_mega18', 'tutorial:superblock8'}, - {'tutorial:superblock8', 'tutorial:superblock8', 'tutorial:superblock8'}, - } -}) -minetest.register_craft({ - output = 'tutorial:cloudgun_mega18', - recipe = { - {'tutorial:superblock8', 'tutorial:superblock8', 'tutorial:superblock8'}, - {'tutorial:superblock8', 'tutorial:cloudgun_mega17', 'tutorial:superblock8'}, - {'tutorial:superblock8', 'tutorial:superblock8', 'tutorial:superblock8'}, - } -}) -minetest.register_craft({ - output = 'tutorial:cloudgun_mega17', - recipe = { - {'tutorial:superblock8', 'tutorial:superblock8', 'tutorial:superblock8'}, - {'tutorial:superblock8', 'tutorial:cloudgun_mega16', 'tutorial:superblock8'}, - {'tutorial:superblock8', 'tutorial:superblock8', 'tutorial:superblock8'}, - } -}) -minetest.register_craft({ - output = 'tutorial:cloudgun_mega16', - recipe = { - {'tutorial:superblock8', 'tutorial:superblock8', 'tutorial:superblock8'}, - {'tutorial:superblock8', 'tutorial:cloudgun_mega15', 'tutorial:superblock8'}, - {'tutorial:superblock8', 'tutorial:superblock8', 'tutorial:superblock8'}, - } -}) -minetest.register_craft({ - output = 'tutorial:cloudgun_mega15', - recipe = { - {'tutorial:superblock7', 'tutorial:superblock7', 'tutorial:superblock7'}, - {'tutorial:superblock7', 'tutorial:cloudgun_mega14', 'tutorial:superblock7'}, - {'tutorial:superblock7', 'tutorial:superblock7', 'tutorial:superblock7'}, - } -}) -minetest.register_craft({ - output = 'tutorial:cloudgun_mega14', - recipe = { - {'tutorial:superblock7', 'tutorial:superblock7', 'tutorial:superblock7'}, - {'tutorial:superblock7', 'tutorial:cloudgun_mega13', 'tutorial:superblock7'}, - {'tutorial:superblock7', 'tutorial:superblock7', 'tutorial:superblock7'}, - } -}) -minetest.register_craft({ - output = 'tutorial:cloudgun_mega13', - recipe = { - {'tutorial:superblock7', 'tutorial:superblock7', 'tutorial:superblock7'}, - {'tutorial:superblock7', 'tutorial:cloudgun_mega12', 'tutorial:superblock7'}, - {'tutorial:superblock7', 'tutorial:superblock7', 'tutorial:superblock7'}, - } -}) -minetest.register_craft({ - output = 'tutorial:cloudgun_mega12', - recipe = { - {'tutorial:superblock7', 'tutorial:superblock7', 'tutorial:superblock7'}, - {'tutorial:superblock7', 'tutorial:cloudgun_mega11', 'tutorial:superblock7'}, - {'tutorial:superblock7', 'tutorial:superblock7', 'tutorial:superblock7'}, - } -}) -minetest.register_craft({ - output = 'tutorial:cloudgun_mega11', - recipe = { - {'tutorial:superblock7', 'tutorial:superblock7', 'tutorial:superblock7'}, - {'tutorial:superblock7', 'tutorial:cloudgun_mega10', 'tutorial:superblock7'}, - {'tutorial:superblock7', 'tutorial:superblock7', 'tutorial:superblock7'}, - } -}) -minetest.register_craft({ - output = 'tutorial:cloudgun_mega10', - recipe = { - {'tutorial:superblock6', 'tutorial:superblock6', 'tutorial:superblock6'}, - {'tutorial:superblock6', 'tutorial:cloudgun_mega9', 'tutorial:superblock6'}, - {'tutorial:superblock6', 'tutorial:superblock6', 'tutorial:superblock6'}, - } -}) -minetest.register_craft({ - output = 'tutorial:cloudgun_mega9', - recipe = { - {'tutorial:superblock6', 'tutorial:superblock6', 'tutorial:superblock6'}, - {'tutorial:superblock6', 'tutorial:cloudgun_mega8', 'tutorial:superblock6'}, - {'tutorial:superblock6', 'tutorial:superblock6', 'tutorial:superblock6'}, - } -}) -minetest.register_craft({ - output = 'tutorial:cloudgun_mega8', - recipe = { - {'tutorial:superblock6', 'tutorial:superblock6', 'tutorial:superblock6'}, - {'tutorial:superblock6', 'tutorial:cloudgun_mega7', 'tutorial:superblock6'}, - {'tutorial:superblock6', 'tutorial:superblock6', 'tutorial:superblock6'}, - } -}) -minetest.register_craft({ - output = 'tutorial:cloudgun_mega7', - recipe = { - {'tutorial:superblock6', 'tutorial:superblock6', 'tutorial:superblock6'}, - {'tutorial:superblock6', 'tutorial:cloudgun_mega6', 'tutorial:superblock6'}, - {'tutorial:superblock6', 'tutorial:superblock6', 'tutorial:superblock6'}, - } -}) -minetest.register_craft({ - output = 'tutorial:cloudgun_mega6', - recipe = { - {'tutorial:superblock6', 'tutorial:superblock6', 'tutorial:superblock6'}, - {'tutorial:superblock6', 'tutorial:cloudgun_mega5', 'tutorial:superblock6'}, - {'tutorial:superblock6', 'tutorial:superblock6', 'tutorial:superblock6'}, - } -}) -minetest.register_craft({ - output = 'tutorial:cloudgun_mega5', - recipe = { - {'tutorial:superblock5', 'tutorial:superblock5', 'tutorial:superblock5'}, - {'tutorial:superblock5', 'tutorial:cloudgun_mega4', 'tutorial:superblock5'}, - {'tutorial:superblock5', 'tutorial:superblock5', 'tutorial:superblock5'}, - } -}) -minetest.register_craft({ - output = 'tutorial:cloudgun_mega4', - recipe = { - {'tutorial:superblock5', 'tutorial:superblock5', 'tutorial:superblock5'}, - {'tutorial:superblock5', 'tutorial:cloudgun_mega3', 'tutorial:superblock5'}, - {'tutorial:superblock5', 'tutorial:superblock5', 'tutorial:superblock5'}, - } -}) -minetest.register_craft({ - output = 'tutorial:cloudgun_mega3', - recipe = { - {'tutorial:superblock5', 'tutorial:superblock5', 'tutorial:superblock5'}, - {'tutorial:superblock5', 'tutorial:cloudgun_mega2', 'tutorial:superblock5'}, - {'tutorial:superblock5', 'tutorial:superblock5', 'tutorial:superblock5'}, - } -}) -minetest.register_craft({ - output = 'tutorial:cloudgun_mega2', - recipe = { - {'tutorial:superblock5', 'tutorial:superblock5', 'tutorial:superblock5'}, - {'tutorial:superblock5', 'tutorial:cloudgun_mega1', 'tutorial:superblock5'}, - {'tutorial:superblock5', 'tutorial:superblock5', 'tutorial:superblock5'}, - } -}) -minetest.register_craft({ - output = 'tutorial:cloudgun_mega1', - recipe = { - {'tutorial:cloudentverner21', 'tutorial:gun_mega20'}, - } -}) -minetest.register_craft({ - output = 'tutorial:supergun4', - recipe = { - {'tutorial:whiteblock6', 'tutorial:thunder', 'tutorial:blackblock6'}, - {'tutorial:whiteblock6', 'tutorial:supergun3', 'tutorial:blackblock6'}, - {'tutorial:whiteblock6', 'tutorial:thunder', 'tutorial:blackblock6'}, - } -}) -minetest.register_craft({ - output = 'tutorial:supergun3', - recipe = { - {'tutorial:whiteblock6', 'tutorial:thunder', 'tutorial:blackblock6'}, - {'tutorial:whiteblock6', 'tutorial:supergun2', 'tutorial:blackblock6'}, - {'tutorial:whiteblock6', 'tutorial:thunder', 'tutorial:blackblock6'}, - } -}) -minetest.register_craft({ - output = 'tutorial:supergun2', - recipe = { - {'tutorial:whiteblock5', 'tutorial:thunder', 'tutorial:blackblock5'}, - {'tutorial:whiteblock5', 'tutorial:supergun1', 'tutorial:blackblock5'}, - {'tutorial:whiteblock5', 'tutorial:thunder', 'tutorial:blackblock5'}, - } -}) -minetest.register_craft({ - output = 'tutorial:supergun1', - recipe = { - {'tutorial:zauberstab9', 'tutorial:cloudgun_mega25', 'tutorial:swored_zauber9'}, - } -}) -minetest.register_craft({ - output = 'tutorial:uraniumgun2', - recipe = { - {'tutorial:uranium9', 'tutorial:uranium9', 'tutorial:uranium9'}, - {'tutorial:uranium9', 'tutorial:uraniumgun1', 'tutorial:uranium9'}, - {'tutorial:uranium9', 'tutorial:uranium9', 'tutorial:uranium9'}, - } -}) -minetest.register_craft({ - output = 'tutorial:uraniumgun1', - recipe = { - {'tutorial:uranium8', 'tutorial:uranium8', 'tutorial:uranium8'}, - {'tutorial:uranium8', 'tutorial:supergun4', 'tutorial:uranium8'}, - {'tutorial:uranium8', 'tutorial:uranium8', 'tutorial:uranium8'}, - } -}) -minetest.register_craft({ - type = 'cooking', - recipe = 'tutorial:energygun12', - cooktime = 1000, - output = 'tutorial:superenergygun1', -}) -minetest.register_craft({ - type = 'cooking', - recipe = 'tutorial:superenergygun1', - cooktime = 1200, - output = 'tutorial:superenergygun2', -}) -minetest.register_craft({ - type = 'cooking', - recipe = 'tutorial:superenergygun2', - cooktime = 1400, - output = 'tutorial:superenergygun3', -}) -minetest.register_craft({ - type = 'cooking', - recipe = 'tutorial:superenergygun3', - cooktime = 1600, - output = 'tutorial:superenergygun4', -}) -minetest.register_craft({ - type = 'cooking', - recipe = 'tutorial:superenergygun4', - cooktime = 1800, - output = 'tutorial:superenergygun5', -}) -minetest.register_craft({ - type = 'cooking', - recipe = 'tutorial:superenergygun5', - cooktime = 2000, - output = 'tutorial:superenergygun6', -}) -minetest.register_craft({ - type = 'cooking', - recipe = 'tutorial:superenergygun6', - cooktime = 2500, - output = 'tutorial:superenergygun7', -}) -minetest.register_craft({ - type = 'cooking', - recipe = 'tutorial:uraniumgun2', - cooktime = 100, - output = 'tutorial:energygun1', -}) -minetest.register_craft({ - type = 'cooking', - recipe = 'tutorial:energygun1', - cooktime = 100, - output = 'tutorial:energygun2', -}) -minetest.register_craft({ - type = 'cooking', - recipe = 'tutorial:energygun2', - cooktime = 200, - output = 'tutorial:energygun3', -}) -minetest.register_craft({ - type = 'cooking', - recipe = 'tutorial:energygun3', - cooktime = 300, - output = 'tutorial:energygun4', -}) -minetest.register_craft({ - type = 'cooking', - recipe = 'tutorial:energygun4', - cooktime = 400, - output = 'tutorial:energygun5', -}) -minetest.register_craft({ - type = 'cooking', - recipe = 'tutorial:energygun5', - cooktime = 500, - output = 'tutorial:energygun6', -}) -minetest.register_craft({ - type = 'cooking', - recipe = 'tutorial:energygun6', - cooktime = 600, - output = 'tutorial:energygun7', -}) -minetest.register_craft({ - type = 'cooking', - recipe = 'tutorial:energygun7', - cooktime = 700, - output = 'tutorial:energygun8', -}) -minetest.register_craft({ - type = 'cooking', - recipe = 'tutorial:energygun8', - cooktime = 800, - output = 'tutorial:energygun9', -}) -minetest.register_craft({ - type = 'cooking', - recipe = 'tutorial:energygun9', - cooktime = 900, - output = 'tutorial:energygun10', -}) -minetest.register_craft({ - type = 'cooking', - recipe = 'tutorial:energygun10', - cooktime = 1000, - output = 'tutorial:energygun11', -}) -minetest.register_craft({ - type = 'cooking', - recipe = 'tutorial:energygun11', - cooktime = 1500, - output = 'tutorial:energygun12', -}) -minetest.register_craft({ - output = 'tutorial:kristallgun5', - recipe = { - {'tutorial:admin', 'tutorial:thunder', 'tutorial:admin'}, - {'tutorial:admin', 'tutorial:kristallgun4', 'tutorial:admin'}, - {'tutorial:admin', 'tutorial:thunder', 'tutorial:admin'}, - } -}) -minetest.register_craft({ - output = 'tutorial:kristallgun4', - recipe = { - {'gems:emerald_block', 'tutorial:thunder', 'gems:emerald_block'}, - {'gems:emerald_block', 'tutorial:kristallgun3', 'gems:emerald_block'}, - {'gems:emerald_block', 'tutorial:thunder', 'gems:emerald_block'}, - } -}) -minetest.register_craft({ - output = 'tutorial:kristallgun3', - recipe = { - {'gems:pearl_block', 'tutorial:thunder', 'gems:shadow_block'}, - {'gems:pearl_block', 'tutorial:kristallgun2', 'gems:shadow_block'}, - {'gems:pearl_block', 'tutorial:thunder', 'gems:shadow_block'}, - } -}) -minetest.register_craft({ - output = 'tutorial:kristallgun2', - recipe = { - {'gems:amethyst_block', 'tutorial:thunder', 'gems:amethyst_block'}, - {'gems:amethyst_block', 'tutorial:kristallgun1', 'gems:amethyst_block'}, - {'gems:amethyst_block', 'tutorial:thunder', 'gems:amethyst_block'}, - } -}) -minetest.register_craft({ - output = 'tutorial:kristallgun1', - recipe = { - {'gems:ruby_block', 'tutorial:thunder', 'gems:sapphire_block'}, - {'gems:ruby_block', 'tutorial:superenergygun7', 'gems:sapphire_block'}, - {'gems:ruby_block', 'tutorial:thunder', 'gems:sapphire_block'}, - } -}) -minetest.register_craft({ - type = 'cooking', - recipe = 'tutorial:ultragun24', - cooktime = 5000, - output = 'tutorial:ultragun25', -}) -minetest.register_craft({ - type = 'cooking', - recipe = 'tutorial:ultragun23', - cooktime = 4800, - output = 'tutorial:ultragun24', -}) -minetest.register_craft({ - type = 'cooking', - recipe = 'tutorial:ultragun22', - cooktime = 4600, - output = 'tutorial:ultragun23', -}) -minetest.register_craft({ - type = 'cooking', - recipe = 'tutorial:ultragun21', - cooktime = 4400, - output = 'tutorial:ultragun22', -}) -minetest.register_craft({ - type = 'cooking', - recipe = 'tutorial:ultragun20', - cooktime = 4200, - output = 'tutorial:ultragun21', -}) -minetest.register_craft({ - type = 'cooking', - recipe = 'tutorial:ultragun19', - cooktime = 4000, - output = 'tutorial:ultragun20', -}) -minetest.register_craft({ - type = 'cooking', - recipe = 'tutorial:ultragun18', - cooktime = 3800, - output = 'tutorial:ultragun19', -}) -minetest.register_craft({ - type = 'cooking', - recipe = 'tutorial:ultragun17', - cooktime = 3600, - output = 'tutorial:ultragun18', -}) -minetest.register_craft({ - type = 'cooking', - recipe = 'tutorial:ultragun16', - cooktime = 3400, - output = 'tutorial:ultragun17', -}) -minetest.register_craft({ - type = 'cooking', - recipe = 'tutorial:ultragun15', - cooktime = 3200, - output = 'tutorial:ultragun16', -}) -minetest.register_craft({ - type = 'cooking', - recipe = 'tutorial:ultragun14', - cooktime = 3000, - output = 'tutorial:ultragun15', -}) -minetest.register_craft({ - type = 'cooking', - recipe = 'tutorial:ultragun13', - cooktime = 2800, - output = 'tutorial:ultragun14', -}) -minetest.register_craft({ - type = 'cooking', - recipe = 'tutorial:ultragun12', - cooktime = 2600, - output = 'tutorial:ultragun13', -}) -minetest.register_craft({ - type = 'cooking', - recipe = 'tutorial:ultragun11', - cooktime = 2400, - output = 'tutorial:ultragun12', -}) -minetest.register_craft({ - type = 'cooking', - recipe = 'tutorial:ultragun10', - cooktime = 2200, - output = 'tutorial:ultragun11', -}) -minetest.register_craft({ - type = 'cooking', - recipe = 'tutorial:ultragun9', - cooktime = 2000, - output = 'tutorial:ultragun10', -}) -minetest.register_craft({ - type = 'cooking', - recipe = 'tutorial:ultragun8', - cooktime = 1800, - output = 'tutorial:ultragun9', -}) -minetest.register_craft({ - type = 'cooking', - recipe = 'tutorial:ultragun7', - cooktime = 1600, - output = 'tutorial:ultragun8', -}) -minetest.register_craft({ - type = 'cooking', - recipe = 'tutorial:ultragun6', - cooktime = 1400, - output = 'tutorial:ultragun7', -}) -minetest.register_craft({ - type = 'cooking', - recipe = 'tutorial:ultragun5', - cooktime = 1200, - output = 'tutorial:ultragun6', -}) -minetest.register_craft({ - type = 'cooking', - recipe = 'tutorial:ultragun4', - cooktime = 1000, - output = 'tutorial:ultragun5', -}) -minetest.register_craft({ - type = 'cooking', - recipe = 'tutorial:ultragun3', - cooktime = 800, - output = 'tutorial:ultragun4', -}) -minetest.register_craft({ - type = 'cooking', - recipe = 'tutorial:ultragun2', - cooktime = 600, - output = 'tutorial:ultragun3', -}) -minetest.register_craft({ - type = 'cooking', - recipe = 'tutorial:ultragun1', - cooktime = 400, - output = 'tutorial:ultragun2', -}) -minetest.register_craft({ - type = 'cooking', - recipe = 'tutorial:kristallgun5', - cooktime = 200, - output = 'tutorial:ultragun1', -}) -minetest.register_craft({ - type = 'cooking', - recipe = 'tutorial:ultragun25', - cooktime = 10000, - output = 'tutorial:ultragun', -}) -minetest.register_craft({ - output = 'tutorial:arenagun4', - recipe = { - {'tutorial:arena_block', 'tutorial:arena_block', 'tutorial:arena_block'}, - {'tutorial:arena_block', 'tutorial:arenagun3', 'tutorial:arena_block'}, - {'tutorial:arena_block', 'tutorial:arena_block', 'tutorial:arena_block'}, - } -}) -minetest.register_craft({ - output = 'tutorial:arenagun3', - recipe = { - {'tutorial:arena_block', 'tutorial:arena_block', 'tutorial:arena_block'}, - {'tutorial:arena_block', 'tutorial:arenagun2', 'tutorial:arena_block'}, - {'tutorial:arena_block', 'tutorial:arena_block', 'tutorial:arena_block'}, - } -}) -minetest.register_craft({ - output = 'tutorial:arenagun2', - recipe = { - {'tutorial:arena_block', 'tutorial:arena_block', 'tutorial:arena_block'}, - {'tutorial:arena_block', 'tutorial:arenagun1', 'tutorial:arena_block'}, - {'tutorial:arena_block', 'tutorial:arena_block', 'tutorial:arena_block'}, - } -}) -minetest.register_craft({ - output = 'tutorial:arenagun1', - recipe = { - {'tutorial:arena_block', 'tutorial:arena_block', 'tutorial:arena_block'}, - {'tutorial:arena_block', 'tutorial:ultragun', 'tutorial:arena_block'}, - {'tutorial:arena_block', 'tutorial:arena_block', 'tutorial:arena_block'}, - } -}) -minetest.register_craft({ - output = 'tutorial:titangun10', - recipe = { - {'', 'tutorial:titan', ''}, - {'tutorial:titan', 'tutorial:titangun9', 'tutorial:titan'}, - {'', 'tutorial:titan', ''}, - } -}) -minetest.register_craft({ - output = 'tutorial:titangun9', - recipe = { - {'', 'tutorial:titan', ''}, - {'tutorial:titan', 'tutorial:titangun8', 'tutorial:titan'}, - {'', 'tutorial:titan', ''}, - } -}) -minetest.register_craft({ - output = 'tutorial:titangun8', - recipe = { - {'', 'tutorial:titan', ''}, - {'tutorial:titan', 'tutorial:titangun7', 'tutorial:titan'}, - {'', 'tutorial:titan', ''}, - } -}) -minetest.register_craft({ - output = 'tutorial:titangun7', - recipe = { - {'', 'tutorial:titan', ''}, - {'tutorial:titan', 'tutorial:titangun6', 'tutorial:titan'}, - {'', 'tutorial:titan', ''}, - } -}) -minetest.register_craft({ - output = 'tutorial:titangun6', - recipe = { - {'', 'tutorial:titan', ''}, - {'tutorial:titan', 'tutorial:titangun5', 'tutorial:titan'}, - {'', 'tutorial:titan', ''}, - } -}) -minetest.register_craft({ - output = 'tutorial:titangun5', - recipe = { - {'', 'tutorial:titan', ''}, - {'tutorial:titan', 'tutorial:titangun4', 'tutorial:titan'}, - {'', 'tutorial:titan', ''}, - } -}) -minetest.register_craft({ - output = 'tutorial:titangun4', - recipe = { - {'', 'tutorial:titan', ''}, - {'tutorial:titan', 'tutorial:titangun3', 'tutorial:titan'}, - {'', 'tutorial:titan', ''}, - } -}) -minetest.register_craft({ - output = 'tutorial:titangun3', - recipe = { - {'', 'tutorial:titan', ''}, - {'tutorial:titan', 'tutorial:titangun2', 'tutorial:titan'}, - {'', 'tutorial:titan', ''}, - } -}) -minetest.register_craft({ - output = 'tutorial:titangun2', - recipe = { - {'', 'tutorial:titan', ''}, - {'tutorial:titan', 'tutorial:titangun1', 'tutorial:titan'}, - {'', 'tutorial:titan', ''}, - } -}) -minetest.register_craft({ - output = 'tutorial:titangun1', - recipe = { - {'', 'tutorial:titan', ''}, - {'tutorial:titan', 'tutorial:arena_gun4', 'tutorial:titan'}, - {'', 'tutorial:titan', ''}, - } -}) -minetest.register_craft({ - output = 'tutorial:legendengun1', - recipe = { - {'tutorial:titangun10', 'default:grass_1', 'default:grass_1', 'tutorial:bottle5'}, - {'default:grass_1', 'default:grass_1', 'default:grass_1', 'default:grass_1'}, - {'default:grass_1', 'default:grass_1', 'default:grass_1', 'default:grass_1'}, - {'tutorial:bottle5', 'default:grass_1', 'default:grass_1', 'default:grass_1'}, - } -}) -minetest.register_craft({ - output = 'tutorial:legendengun2', - recipe = { - {'tutorial:legendengun1', 'default:grass_1', 'default:grass_1', 'tutorial:bottle7'}, - {'default:grass_1', 'default:grass_1', 'default:grass_1', 'default:grass_1'}, - {'default:grass_1', 'default:grass_1', 'default:grass_1', 'default:grass_1'}, - {'tutorial:bottle7', 'default:grass_1', 'default:grass_1', 'default:grass_1'}, - } -}) -minetest.register_craft({ - output = 'tutorial:legendengun3', - recipe = { - {'tutorial:legendengun2', 'default:grass_1', 'default:grass_1', 'tutorial:bottle9'}, - {'default:grass_1', 'default:grass_1', 'default:grass_1', 'default:grass_1'}, - {'default:grass_1', 'default:grass_1', 'default:grass_1', 'default:grass_1'}, - {'tutorial:bottle9', 'default:grass_1', 'default:grass_1', 'default:grass_1'}, - } -}) -minetest.register_craft({ - output = 'tutorial:legendengun4', - recipe = { - {'tutorial:legendengun3', 'default:grass_1', 'default:grass_1', 'tutorial:bottle11'}, - {'default:grass_1', 'default:grass_1', 'default:grass_1', 'default:grass_1'}, - {'default:grass_1', 'default:grass_1', 'default:grass_1', 'default:grass_1'}, - {'tutorial:bottle11', 'default:grass_1', 'default:grass_1', 'default:grass_1'}, - } -}) -minetest.register_craft({ - output = 'tutorial:legendengun5', - recipe = { - {'tutorial:legendengun4', 'default:grass_1', 'default:grass_1', 'tutorial:bottleS1'}, - {'default:grass_1', 'default:grass_1', 'default:grass_1', 'default:grass_1'}, - {'default:grass_1', 'default:grass_1', 'default:grass_1', 'default:grass_1'}, - {'tutorial:bottleS1', 'default:grass_1', 'default:grass_1', 'default:grass_1'}, - } -}) -minetest.register_craft({ - output = 'tutorial:legendengun6', - recipe = { - {'tutorial:legendengun5', 'default:grass_1', 'default:grass_1', 'tutorial:bottleS3'}, - {'default:grass_1', 'default:grass_1', 'default:grass_1', 'default:grass_1'}, - {'default:grass_1', 'default:grass_1', 'default:grass_1', 'default:grass_1'}, - {'tutorial:bottleS3', 'default:grass_1', 'default:grass_1', 'default:grass_1'}, - } -}) -minetest.register_craft({ - output = 'tutorial:superlegendengun1', - recipe = { - {'tutorial:lilabattleaxe2', 'tutorial:legendengun6'}, - } -}) -minetest.register_craft({ - output = 'tutorial:superlegendengun1', - recipe = { - {'tutorial:superlegendengun2'}, - } -}) -minetest.register_craft({ - output = 'tutorial:superlegendengun2', - recipe = { - {'tutorial:superlegendengun1'}, - } -}) -minetest.register_craft({ - output = 'tutorial:regnumgun1', - recipe = { - {'', '', 'tutorial:regnum', '', ''}, + } +}) +local guns = {} +for _, m in pairs({"","_2"}) do + minetest.register_craft({ + output = 'tutorial:gun_mega1'..m, + recipe = { + {'tutorial:obsidian4', 'tutorial:obsidian4', 'tutorial:obsidian4'}, + {'tutorial:obsidian4', 'tutorial:gun'..m, 'tutorial:obsidian4'}, + {'tutorial:thunder', 'tutorial:thunder', 'tutorial:thunder'}, + } + }) + minetest.register_craft({ + output = 'tutorial:gun_mega2'..m, + recipe = { + {'tutorial:obsidian4', 'tutorial:obsidian4', 'tutorial:obsidian4'}, + {'tutorial:obsidian4','tutorial:gun_mega1'..m,'tutorial:obsidian4'}, + {'tutorial:thunder', 'tutorial:thunder', 'tutorial:thunder'}, + } + }) + minetest.register_craft({ + output = 'tutorial:gun_mega3'..m, + recipe = { + {'tutorial:obsidian5', 'tutorial:obsidian5', 'tutorial:obsidian5'}, + {'tutorial:obsidian5','tutorial:gun_mega2'..m,'tutorial:obsidian5'}, + {'tutorial:thunder', 'tutorial:thunder', 'tutorial:thunder'}, + } + }) + minetest.register_craft({ + output = 'tutorial:gun_mega4'..m, + recipe = { + {'tutorial:obsidian6', 'tutorial:obsidian6', 'tutorial:obsidian6'}, + {'tutorial:obsidian6','tutorial:gun_mega3'..m,'tutorial:obsidian6'}, + {'tutorial:thunder', 'tutorial:thunder', 'tutorial:thunder'}, + } + }) + minetest.register_craft({ + output = 'tutorial:gun_mega5'..m, + recipe = { + {'tutorial:dunklematerie4','tutorial:dunklematerie4', 'tutorial:dunklematerie4'}, + {'tutorial:dunklematerie4','tutorial:gun_mega4'..m,'tutorial:dunklematerie4'}, + {'tutorial:thunder','tutorial:thunder', 'tutorial:thunder'}, + } + }) + minetest.register_craft({ + output = 'tutorial:gun_mega6'..m, + recipe = { + {'tutorial:dunklematerie4','tutorial:dunklematerie4', 'tutorial:dunklematerie4'}, + {'tutorial:dunklematerie4','tutorial:gun_mega5'..m,'tutorial:dunklematerie4'}, + {'tutorial:thunder','tutorial:thunder', 'tutorial:thunder'}, + } + }) + minetest.register_craft({ + output = 'tutorial:gun_mega7'..m, + recipe = { + {'tutorial:dunklematerie5','tutorial:dunklematerie5', 'tutorial:dunklematerie5'}, + {'tutorial:dunklematerie5','tutorial:gun_mega6'..m,'tutorial:dunklematerie5'}, + {'tutorial:thunder','tutorial:thunder', 'tutorial:thunder'}, + } + }) + minetest.register_craft({ + output = 'tutorial:gun_mega8'..m, + recipe = { + {'tutorial:dunklematerie6','tutorial:dunklematerie6', 'tutorial:dunklematerie6'}, + {'tutorial:dunklematerie6','tutorial:gun_mega7'..m,'tutorial:dunklematerie6'}, + {'tutorial:thunder','tutorial:thunder', 'tutorial:thunder'}, + } + }) + minetest.register_craft({ + output = 'tutorial:gun_mega9'..m, + recipe = { + {'tutorial:diamondblock2','tutorial:diamondblock2', 'tutorial:diamondblock2'}, + {'tutorial:diamondblock2','tutorial:gun_mega8'..m,'tutorial:diamondblock2'}, + {'tutorial:thunder','tutorial:thunder', 'tutorial:thunder'}, + } + }) + minetest.register_craft({ + output = 'tutorial:gun_mega10'..m, + recipe = { + {'tutorial:diamondblock2','tutorial:diamondblock2', 'tutorial:diamondblock2'}, + {'tutorial:diamondblock2','tutorial:gun_mega9'..m,'tutorial:diamondblock2'}, + {'tutorial:thunder','tutorial:thunder', 'tutorial:thunder'}, + } + }) + minetest.register_craft({ + output = 'tutorial:gun_mega11'..m, + recipe = { + {'tutorial:diamondblock2','tutorial:diamondblock2', 'tutorial:diamondblock2'}, + {'tutorial:diamondblock2','tutorial:gun_mega10'..m,'tutorial:diamondblock2'}, + {'tutorial:thunder','tutorial:thunder', 'tutorial:thunder'}, + } + }) + minetest.register_craft({ + output = 'tutorial:gun_mega12'..m, + recipe = { + {'tutorial:diamondblock2','tutorial:diamondblock2', 'tutorial:diamondblock2'}, + {'tutorial:diamondblock2','tutorial:gun_mega11'..m,'tutorial:diamondblock2'}, + {'tutorial:thunder','tutorial:thunder', 'tutorial:thunder'}, + } + }) + minetest.register_craft({ + output = 'tutorial:gun_mega13'..m, + recipe = { + {'default:goldblock','default:goldblock', 'default:goldblock'}, + {'default:goldblock','tutorial:gun_mega12'..m,'default:goldblock'}, + {'tutorial:thunder','tutorial:thunder', 'tutorial:thunder'}, + } + }) + minetest.register_craft({ + output = 'tutorial:gun_mega14'..m, + recipe = { + {'default:nyancat_rainbow','default:nyancat_rainbow', 'default:nyancat_rainbow'}, + {'default:nyancat_rainbow','tutorial:gun_mega13'..m,'default:nyancat_rainbow'}, + {'tutorial:thunder','tutorial:thunder', 'tutorial:thunder'}, + } + }) + minetest.register_craft({ + output = 'tutorial:gun_mega15'..m, + recipe = { + {'default:nyancat_rainbow','default:nyancat_rainbow', 'default:nyancat_rainbow'}, + {'default:nyancat_rainbow','tutorial:gun_mega14'..m,'default:nyancat_rainbow'}, + {'tutorial:thunder','tutorial:thunder', 'tutorial:thunder'}, + } + }) + minetest.register_craft({ + output = 'tutorial:gun_mega16'..m, + recipe = { + {'tutorial:megablock1','tutorial:megablock1', 'tutorial:megablock1'}, + {'tutorial:megablock1','tutorial:gun_mega15'..m,'tutorial:megablock1'}, + {'tutorial:thunder','tutorial:thunder', 'tutorial:thunder'}, + } + }) + minetest.register_craft({ + output = 'tutorial:gun_mega17'..m, + recipe = { + {'tutorial:megablock1','tutorial:megablock1', 'tutorial:megablock1'}, + {'tutorial:megablock1','tutorial:gun_mega16'..m,'tutorial:megablock1'}, + {'tutorial:thunder','tutorial:thunder', 'tutorial:thunder'}, + } + }) + minetest.register_craft({ + output = 'tutorial:gun_mega18'..m, + recipe = { + {'tutorial:megablock1','tutorial:megablock1', 'tutorial:megablock1'}, + {'tutorial:megablock1','tutorial:gun_mega17'..m,'tutorial:megablock1'}, + {'tutorial:thunder','tutorial:thunder', 'tutorial:thunder'}, + } + }) + minetest.register_craft({ + output = 'tutorial:gun_mega19'..m, + recipe = { + {'tutorial:megablock1','tutorial:megablock1', 'tutorial:megablock1'}, + {'tutorial:megablock1','tutorial:gun_mega18'..m,'tutorial:megablock1'}, + {'tutorial:thunder','tutorial:thunder', 'tutorial:thunder'}, + } + }) + minetest.register_craft({ + output = 'tutorial:gun_mega20'..m, + recipe = { + {'tutorial:megablock2','tutorial:megablock2', 'tutorial:megablock2'}, + {'tutorial:megablock2','tutorial:gun_mega19'..m,'tutorial:megablock2'}, + {'tutorial:thunder','tutorial:thunder', 'tutorial:thunder'}, + } + }) + minetest.register_craft({ + output = 'tutorial:cloudgun_mega25'..m, + recipe = { + {'tutorial:superblock9', 'tutorial:superblock9', 'tutorial:superblock9'}, + {'tutorial:superblock9', 'tutorial:cloudgun_mega24'..m, 'tutorial:superblock9'}, + {'tutorial:superblock9', 'tutorial:superblock9', 'tutorial:superblock9'}, + } + }) + minetest.register_craft({ + output = 'tutorial:cloudgun_mega24'..m, + recipe = { + {'tutorial:superblock9', 'tutorial:superblock9', 'tutorial:superblock9'}, + {'tutorial:superblock9', 'tutorial:cloudgun_mega23'..m, 'tutorial:superblock9'}, + {'tutorial:superblock9', 'tutorial:superblock9', 'tutorial:superblock9'}, + } + }) + minetest.register_craft({ + output = 'tutorial:cloudgun_mega23'..m, + recipe = { + {'tutorial:superblock9', 'tutorial:superblock9', 'tutorial:superblock9'}, + {'tutorial:superblock9', 'tutorial:cloudgun_mega22'..m, 'tutorial:superblock9'}, + {'tutorial:superblock9', 'tutorial:superblock9', 'tutorial:superblock9'}, + } + }) + minetest.register_craft({ + output = 'tutorial:cloudgun_mega22'..m, + recipe = { + {'tutorial:superblock9', 'tutorial:superblock9', 'tutorial:superblock9'}, + {'tutorial:superblock9', 'tutorial:cloudgun_mega21'..m, 'tutorial:superblock9'}, + {'tutorial:superblock9', 'tutorial:superblock9', 'tutorial:superblock9'}, + } + }) + minetest.register_craft({ + output = 'tutorial:cloudgun_mega21'..m, + recipe = { + {'tutorial:superblock9', 'tutorial:superblock9', 'tutorial:superblock9'}, + {'tutorial:superblock9', 'tutorial:cloudgun_mega20'..m, 'tutorial:superblock9'}, + {'tutorial:superblock9', 'tutorial:superblock9', 'tutorial:superblock9'}, + } + }) + minetest.register_craft({ + output = 'tutorial:cloudgun_mega20'..m, + recipe = { + {'tutorial:superblock8', 'tutorial:superblock8', 'tutorial:superblock8'}, + {'tutorial:superblock8', 'tutorial:cloudgun_mega19'..m, 'tutorial:superblock8'}, + {'tutorial:superblock8', 'tutorial:superblock8', 'tutorial:superblock8'}, + } + }) + minetest.register_craft({ + output = 'tutorial:cloudgun_mega19'..m, + recipe = { + {'tutorial:superblock8', 'tutorial:superblock8', 'tutorial:superblock8'}, + {'tutorial:superblock8', 'tutorial:cloudgun_mega18'..m, 'tutorial:superblock8'}, + {'tutorial:superblock8', 'tutorial:superblock8', 'tutorial:superblock8'}, + } + }) + minetest.register_craft({ + output = 'tutorial:cloudgun_mega18'..m, + recipe = { + {'tutorial:superblock8', 'tutorial:superblock8', 'tutorial:superblock8'}, + {'tutorial:superblock8', 'tutorial:cloudgun_mega17'..m, 'tutorial:superblock8'}, + {'tutorial:superblock8', 'tutorial:superblock8', 'tutorial:superblock8'}, + } + }) + minetest.register_craft({ + output = 'tutorial:cloudgun_mega17'..m, + recipe = { + {'tutorial:superblock8', 'tutorial:superblock8', 'tutorial:superblock8'}, + {'tutorial:superblock8', 'tutorial:cloudgun_mega16'..m, 'tutorial:superblock8'}, + {'tutorial:superblock8', 'tutorial:superblock8', 'tutorial:superblock8'}, + } + }) + minetest.register_craft({ + output = 'tutorial:cloudgun_mega16'..m, + recipe = { + {'tutorial:superblock8', 'tutorial:superblock8', 'tutorial:superblock8'}, + {'tutorial:superblock8', 'tutorial:cloudgun_mega15'..m, 'tutorial:superblock8'}, + {'tutorial:superblock8', 'tutorial:superblock8', 'tutorial:superblock8'}, + } + }) + minetest.register_craft({ + output = 'tutorial:cloudgun_mega15'..m, + recipe = { + {'tutorial:superblock7', 'tutorial:superblock7', 'tutorial:superblock7'}, + {'tutorial:superblock7', 'tutorial:cloudgun_mega14'..m, 'tutorial:superblock7'}, + {'tutorial:superblock7', 'tutorial:superblock7', 'tutorial:superblock7'}, + } + }) + minetest.register_craft({ + output = 'tutorial:cloudgun_mega14'..m, + recipe = { + {'tutorial:superblock7', 'tutorial:superblock7', 'tutorial:superblock7'}, + {'tutorial:superblock7', 'tutorial:cloudgun_mega13'..m, 'tutorial:superblock7'}, + {'tutorial:superblock7', 'tutorial:superblock7', 'tutorial:superblock7'}, + } + }) + minetest.register_craft({ + output = 'tutorial:cloudgun_mega13'..m, + recipe = { + {'tutorial:superblock7', 'tutorial:superblock7', 'tutorial:superblock7'}, + {'tutorial:superblock7', 'tutorial:cloudgun_mega12'..m, 'tutorial:superblock7'}, + {'tutorial:superblock7', 'tutorial:superblock7', 'tutorial:superblock7'}, + } + }) + minetest.register_craft({ + output = 'tutorial:cloudgun_mega12'..m, + recipe = { + {'tutorial:superblock7', 'tutorial:superblock7', 'tutorial:superblock7'}, + {'tutorial:superblock7', 'tutorial:cloudgun_mega11'..m, 'tutorial:superblock7'}, + {'tutorial:superblock7', 'tutorial:superblock7', 'tutorial:superblock7'}, + } + }) + minetest.register_craft({ + output = 'tutorial:cloudgun_mega11'..m, + recipe = { + {'tutorial:superblock7', 'tutorial:superblock7', 'tutorial:superblock7'}, + {'tutorial:superblock7', 'tutorial:cloudgun_mega10'..m, 'tutorial:superblock7'}, + {'tutorial:superblock7', 'tutorial:superblock7', 'tutorial:superblock7'}, + } + }) + minetest.register_craft({ + output = 'tutorial:cloudgun_mega10'..m, + recipe = { + {'tutorial:superblock6', 'tutorial:superblock6', 'tutorial:superblock6'}, + {'tutorial:superblock6', 'tutorial:cloudgun_mega9'..m, 'tutorial:superblock6'}, + {'tutorial:superblock6', 'tutorial:superblock6', 'tutorial:superblock6'}, + } + }) + minetest.register_craft({ + output = 'tutorial:cloudgun_mega9'..m, + recipe = { + {'tutorial:superblock6', 'tutorial:superblock6', 'tutorial:superblock6'}, + {'tutorial:superblock6', 'tutorial:cloudgun_mega8'..m, 'tutorial:superblock6'}, + {'tutorial:superblock6', 'tutorial:superblock6', 'tutorial:superblock6'}, + } + }) + minetest.register_craft({ + output = 'tutorial:cloudgun_mega8'..m, + recipe = { + {'tutorial:superblock6', 'tutorial:superblock6', 'tutorial:superblock6'}, + {'tutorial:superblock6', 'tutorial:cloudgun_mega7'..m, 'tutorial:superblock6'}, + {'tutorial:superblock6', 'tutorial:superblock6', 'tutorial:superblock6'}, + } + }) + minetest.register_craft({ + output = 'tutorial:cloudgun_mega7'..m, + recipe = { + {'tutorial:superblock6', 'tutorial:superblock6', 'tutorial:superblock6'}, + {'tutorial:superblock6', 'tutorial:cloudgun_mega6'..m, 'tutorial:superblock6'}, + {'tutorial:superblock6', 'tutorial:superblock6', 'tutorial:superblock6'}, + } + }) + minetest.register_craft({ + output = 'tutorial:cloudgun_mega6'..m, + recipe = { + {'tutorial:superblock6', 'tutorial:superblock6', 'tutorial:superblock6'}, + {'tutorial:superblock6', 'tutorial:cloudgun_mega5'..m, 'tutorial:superblock6'}, + {'tutorial:superblock6', 'tutorial:superblock6', 'tutorial:superblock6'}, + } + }) + minetest.register_craft({ + output = 'tutorial:cloudgun_mega5'..m, + recipe = { + {'tutorial:superblock5', 'tutorial:superblock5', 'tutorial:superblock5'}, + {'tutorial:superblock5', 'tutorial:cloudgun_mega4'..m, 'tutorial:superblock5'}, + {'tutorial:superblock5', 'tutorial:superblock5', 'tutorial:superblock5'}, + } + }) + minetest.register_craft({ + output = 'tutorial:cloudgun_mega4'..m, + recipe = { + {'tutorial:superblock5', 'tutorial:superblock5', 'tutorial:superblock5'}, + {'tutorial:superblock5', 'tutorial:cloudgun_mega3'..m, 'tutorial:superblock5'}, + {'tutorial:superblock5', 'tutorial:superblock5', 'tutorial:superblock5'}, + } + }) + minetest.register_craft({ + output = 'tutorial:cloudgun_mega3'..m, + recipe = { + {'tutorial:superblock5', 'tutorial:superblock5', 'tutorial:superblock5'}, + {'tutorial:superblock5', 'tutorial:cloudgun_mega2'..m, 'tutorial:superblock5'}, + {'tutorial:superblock5', 'tutorial:superblock5', 'tutorial:superblock5'}, + } + }) + minetest.register_craft({ + output = 'tutorial:cloudgun_mega2'..m, + recipe = { + {'tutorial:superblock5', 'tutorial:superblock5', 'tutorial:superblock5'}, + {'tutorial:superblock5', 'tutorial:cloudgun_mega1'..m, 'tutorial:superblock5'}, + {'tutorial:superblock5', 'tutorial:superblock5', 'tutorial:superblock5'}, + } + }) + minetest.register_craft({ + output = 'tutorial:cloudgun_mega1'..m, + recipe = { + {'tutorial:cloudentverner21', 'tutorial:gun_mega20'..m}, + } + }) + minetest.register_craft({ + output = 'tutorial:supergun4'..m, + recipe = { + {'tutorial:whiteblock6', 'tutorial:thunder', 'tutorial:blackblock6'}, + {'tutorial:whiteblock6', 'tutorial:supergun3'..m, 'tutorial:blackblock6'}, + {'tutorial:whiteblock6', 'tutorial:thunder', 'tutorial:blackblock6'}, + } + }) + minetest.register_craft({ + output = 'tutorial:supergun3'..m, + recipe = { + {'tutorial:whiteblock6', 'tutorial:thunder', 'tutorial:blackblock6'}, + {'tutorial:whiteblock6', 'tutorial:supergun2'..m, 'tutorial:blackblock6'}, + {'tutorial:whiteblock6', 'tutorial:thunder', 'tutorial:blackblock6'}, + } + }) + minetest.register_craft({ + output = 'tutorial:supergun2'..m, + recipe = { + {'tutorial:whiteblock5', 'tutorial:thunder', 'tutorial:blackblock5'}, + {'tutorial:whiteblock5', 'tutorial:supergun1'..m, 'tutorial:blackblock5'}, + {'tutorial:whiteblock5', 'tutorial:thunder', 'tutorial:blackblock5'}, + } + }) + minetest.register_craft({ + output = 'tutorial:supergun1'..m, + recipe = { + {'tutorial:zauberstab9', 'tutorial:cloudgun_mega25'..m, 'tutorial:swored_zauber9'}, + } + }) + minetest.register_craft({ + output = 'tutorial:uraniumgun2'..m, + recipe = { + {'tutorial:uranium9', 'tutorial:uranium9', 'tutorial:uranium9'}, + {'tutorial:uranium9', 'tutorial:uraniumgun1'..m, 'tutorial:uranium9'}, + {'tutorial:uranium9', 'tutorial:uranium9', 'tutorial:uranium9'}, + } + }) + minetest.register_craft({ + output = 'tutorial:uraniumgun1'..m, + recipe = { + {'tutorial:uranium8', 'tutorial:uranium8', 'tutorial:uranium8'}, + {'tutorial:uranium8', 'tutorial:supergun4'..m, 'tutorial:uranium8'}, + {'tutorial:uranium8', 'tutorial:uranium8', 'tutorial:uranium8'}, + } + }) + minetest.register_craft({ + type = 'cooking', + recipe = 'tutorial:energygun12'..m, + cooktime = 1000, + output = 'tutorial:superenergygun1'..m, + }) + minetest.register_craft({ + type = 'cooking', + recipe = 'tutorial:superenergygun1'..m, + cooktime = 1200, + output = 'tutorial:superenergygun2'..m, + }) + minetest.register_craft({ + type = 'cooking', + recipe = 'tutorial:superenergygun2'..m, + cooktime = 1400, + output = 'tutorial:superenergygun3'..m, + }) + minetest.register_craft({ + type = 'cooking', + recipe = 'tutorial:superenergygun3'..m, + cooktime = 1600, + output = 'tutorial:superenergygun4'..m, + }) + minetest.register_craft({ + type = 'cooking', + recipe = 'tutorial:superenergygun4'..m, + cooktime = 1800, + output = 'tutorial:superenergygun5'..m, + }) + minetest.register_craft({ + type = 'cooking', + recipe = 'tutorial:superenergygun5'..m, + cooktime = 2000, + output = 'tutorial:superenergygun6'..m, + }) + minetest.register_craft({ + type = 'cooking', + recipe = 'tutorial:superenergygun6'..m, + cooktime = 2500, + output = 'tutorial:superenergygun7'..m, + }) + minetest.register_craft({ + type = 'cooking', + recipe = 'tutorial:uraniumgun2'..m, + cooktime = 100, + output = 'tutorial:energygun1'..m, + }) + minetest.register_craft({ + type = 'cooking', + recipe = 'tutorial:energygun1'..m, + cooktime = 100, + output = 'tutorial:energygun2'..m, + }) + minetest.register_craft({ + type = 'cooking', + recipe = 'tutorial:energygun2'..m, + cooktime = 200, + output = 'tutorial:energygun3'..m, + }) + minetest.register_craft({ + type = 'cooking', + recipe = 'tutorial:energygun3'..m, + cooktime = 300, + output = 'tutorial:energygun4'..m, + }) + minetest.register_craft({ + type = 'cooking', + recipe = 'tutorial:energygun4'..m, + cooktime = 400, + output = 'tutorial:energygun5'..m, + }) + minetest.register_craft({ + type = 'cooking', + recipe = 'tutorial:energygun5'..m, + cooktime = 500, + output = 'tutorial:energygun6'..m, + }) + minetest.register_craft({ + type = 'cooking', + recipe = 'tutorial:energygun6'..m, + cooktime = 600, + output = 'tutorial:energygun7'..m, + }) + minetest.register_craft({ + type = 'cooking', + recipe = 'tutorial:energygun7'..m, + cooktime = 700, + output = 'tutorial:energygun8'..m, + }) + minetest.register_craft({ + type = 'cooking', + recipe = 'tutorial:energygun8'..m, + cooktime = 800, + output = 'tutorial:energygun9'..m, + }) + minetest.register_craft({ + type = 'cooking', + recipe = 'tutorial:energygun9'..m, + cooktime = 900, + output = 'tutorial:energygun10'..m, + }) + minetest.register_craft({ + type = 'cooking', + recipe = 'tutorial:energygun10'..m, + cooktime = 1000, + output = 'tutorial:energygun11'..m, + }) + minetest.register_craft({ + type = 'cooking', + recipe = 'tutorial:energygun11'..m, + cooktime = 1500, + output = 'tutorial:energygun12'..m, + }) + minetest.register_craft({ + output = 'tutorial:kristallgun5'..m, + recipe = { + {'tutorial:admin', 'tutorial:thunder', 'tutorial:admin'}, + {'tutorial:admin', 'tutorial:kristallgun4'..m, 'tutorial:admin'}, + {'tutorial:admin', 'tutorial:thunder', 'tutorial:admin'}, + } + }) + minetest.register_craft({ + output = 'tutorial:kristallgun4'..m, + recipe = { + {'gems:emerald_block', 'tutorial:thunder', 'gems:emerald_block'}, + {'gems:emerald_block', 'tutorial:kristallgun3'..m, 'gems:emerald_block'}, + {'gems:emerald_block', 'tutorial:thunder', 'gems:emerald_block'}, + } + }) + minetest.register_craft({ + output = 'tutorial:kristallgun3'..m, + recipe = { + {'gems:pearl_block', 'tutorial:thunder', 'gems:shadow_block'}, + {'gems:pearl_block', 'tutorial:kristallgun2'..m, 'gems:shadow_block'}, + {'gems:pearl_block', 'tutorial:thunder', 'gems:shadow_block'}, + } + }) + minetest.register_craft({ + output = 'tutorial:kristallgun2'..m, + recipe = { + {'gems:amethyst_block', 'tutorial:thunder', 'gems:amethyst_block'}, + {'gems:amethyst_block', 'tutorial:kristallgun1'..m, 'gems:amethyst_block'}, + {'gems:amethyst_block', 'tutorial:thunder', 'gems:amethyst_block'}, + } + }) + minetest.register_craft({ + output = 'tutorial:kristallgun1'..m, + recipe = { + {'gems:ruby_block', 'tutorial:thunder', 'gems:sapphire_block'}, + {'gems:ruby_block', 'tutorial:superenergygun7'..m, 'gems:sapphire_block'}, + {'gems:ruby_block', 'tutorial:thunder', 'gems:sapphire_block'}, + } + }) + minetest.register_craft({ + type = 'cooking', + recipe = 'tutorial:ultragun24'..m, + cooktime = 5000, + output = 'tutorial:ultragun25'..m, + }) + minetest.register_craft({ + type = 'cooking', + recipe = 'tutorial:ultragun23'..m, + cooktime = 4800, + output = 'tutorial:ultragun24'..m, + }) + minetest.register_craft({ + type = 'cooking', + recipe = 'tutorial:ultragun22'..m, + cooktime = 4600, + output = 'tutorial:ultragun23'..m, + }) + minetest.register_craft({ + type = 'cooking', + recipe = 'tutorial:ultragun21'..m, + cooktime = 4400, + output = 'tutorial:ultragun22'..m, + }) + minetest.register_craft({ + type = 'cooking', + recipe = 'tutorial:ultragun20'..m, + cooktime = 4200, + output = 'tutorial:ultragun21'..m, + }) + minetest.register_craft({ + type = 'cooking', + recipe = 'tutorial:ultragun19'..m, + cooktime = 4000, + output = 'tutorial:ultragun20'..m, + }) + minetest.register_craft({ + type = 'cooking', + recipe = 'tutorial:ultragun18'..m, + cooktime = 3800, + output = 'tutorial:ultragun19'..m, + }) + minetest.register_craft({ + type = 'cooking', + recipe = 'tutorial:ultragun17'..m, + cooktime = 3600, + output = 'tutorial:ultragun18'..m, + }) + minetest.register_craft({ + type = 'cooking', + recipe = 'tutorial:ultragun16'..m, + cooktime = 3400, + output = 'tutorial:ultragun17'..m, + }) + minetest.register_craft({ + type = 'cooking', + recipe = 'tutorial:ultragun15'..m, + cooktime = 3200, + output = 'tutorial:ultragun16'..m, + }) + minetest.register_craft({ + type = 'cooking', + recipe = 'tutorial:ultragun14'..m, + cooktime = 3000, + output = 'tutorial:ultragun15'..m, + }) + minetest.register_craft({ + type = 'cooking', + recipe = 'tutorial:ultragun13'..m, + cooktime = 2800, + output = 'tutorial:ultragun14'..m, + }) + minetest.register_craft({ + type = 'cooking', + recipe = 'tutorial:ultragun12'..m, + cooktime = 2600, + output = 'tutorial:ultragun13'..m, + }) + minetest.register_craft({ + type = 'cooking', + recipe = 'tutorial:ultragun11'..m, + cooktime = 2400, + output = 'tutorial:ultragun12'..m, + }) + minetest.register_craft({ + type = 'cooking', + recipe = 'tutorial:ultragun10'..m, + cooktime = 2200, + output = 'tutorial:ultragun11'..m, + }) + minetest.register_craft({ + type = 'cooking', + recipe = 'tutorial:ultragun9'..m, + cooktime = 2000, + output = 'tutorial:ultragun10'..m, + }) + minetest.register_craft({ + type = 'cooking', + recipe = 'tutorial:ultragun8'..m, + cooktime = 1800, + output = 'tutorial:ultragun9'..m, + }) + minetest.register_craft({ + type = 'cooking', + recipe = 'tutorial:ultragun7'..m, + cooktime = 1600, + output = 'tutorial:ultragun8'..m, + }) + minetest.register_craft({ + type = 'cooking', + recipe = 'tutorial:ultragun6'..m, + cooktime = 1400, + output = 'tutorial:ultragun7'..m, + }) + minetest.register_craft({ + type = 'cooking', + recipe = 'tutorial:ultragun5'..m, + cooktime = 1200, + output = 'tutorial:ultragun6'..m, + }) + minetest.register_craft({ + type = 'cooking', + recipe = 'tutorial:ultragun4'..m, + cooktime = 1000, + output = 'tutorial:ultragun5'..m, + }) + minetest.register_craft({ + type = 'cooking', + recipe = 'tutorial:ultragun3'..m, + cooktime = 800, + output = 'tutorial:ultragun4'..m, + }) + minetest.register_craft({ + type = 'cooking', + recipe = 'tutorial:ultragun2'..m, + cooktime = 600, + output = 'tutorial:ultragun3'..m, + }) + minetest.register_craft({ + type = 'cooking', + recipe = 'tutorial:ultragun1'..m, + cooktime = 400, + output = 'tutorial:ultragun2'..m, + }) + minetest.register_craft({ + type = 'cooking', + recipe = 'tutorial:kristallgun5'..m, + cooktime = 200, + output = 'tutorial:ultragun1'..m, + }) + minetest.register_craft({ + type = 'cooking', + recipe = 'tutorial:ultragun25'..m, + cooktime = 10000, + output = 'tutorial:ultragun'..m, + }) + minetest.register_craft({ + output = 'tutorial:arenagun4'..m, + recipe = { + {'tutorial:arena_block', 'tutorial:arena_block', 'tutorial:arena_block'}, + {'tutorial:arena_block', 'tutorial:arenagun3'..m, 'tutorial:arena_block'}, + {'tutorial:arena_block', 'tutorial:arena_block', 'tutorial:arena_block'}, + } + }) + minetest.register_craft({ + output = 'tutorial:arenagun3'..m, + recipe = { + {'tutorial:arena_block', 'tutorial:arena_block', 'tutorial:arena_block'}, + {'tutorial:arena_block', 'tutorial:arenagun2'..m, 'tutorial:arena_block'}, + {'tutorial:arena_block', 'tutorial:arena_block', 'tutorial:arena_block'}, + } + }) + minetest.register_craft({ + output = 'tutorial:arenagun2'..m, + recipe = { + {'tutorial:arena_block', 'tutorial:arena_block', 'tutorial:arena_block'}, + {'tutorial:arena_block', 'tutorial:arenagun1'..m, 'tutorial:arena_block'}, + {'tutorial:arena_block', 'tutorial:arena_block', 'tutorial:arena_block'}, + } + }) + minetest.register_craft({ + output = 'tutorial:arenagun1'..m, + recipe = { + {'tutorial:arena_block', 'tutorial:arena_block', 'tutorial:arena_block'}, + {'tutorial:arena_block', 'tutorial:ultragun'..m, 'tutorial:arena_block'}, + {'tutorial:arena_block', 'tutorial:arena_block', 'tutorial:arena_block'}, + } + }) + minetest.register_craft({ + output = 'tutorial:titangun10'..m, + recipe = { + {'', 'tutorial:titan', ''}, + {'tutorial:titan', 'tutorial:titangun9'..m, 'tutorial:titan'}, + {'', 'tutorial:titan', ''}, + } + }) + minetest.register_craft({ + output = 'tutorial:titangun9'..m, + recipe = { + {'', 'tutorial:titan', ''}, + {'tutorial:titan', 'tutorial:titangun8'..m, 'tutorial:titan'}, + {'', 'tutorial:titan', ''}, + } + }) + minetest.register_craft({ + output = 'tutorial:titangun8'..m, + recipe = { + {'', 'tutorial:titan', ''}, + {'tutorial:titan', 'tutorial:titangun7'..m, 'tutorial:titan'}, + {'', 'tutorial:titan', ''}, + } + }) + minetest.register_craft({ + output = 'tutorial:titangun7'..m, + recipe = { + {'', 'tutorial:titan', ''}, + {'tutorial:titan', 'tutorial:titangun6'..m, 'tutorial:titan'}, + {'', 'tutorial:titan', ''}, + } + }) + minetest.register_craft({ + output = 'tutorial:titangun6'..m, + recipe = { + {'', 'tutorial:titan', ''}, + {'tutorial:titan', 'tutorial:titangun5'..m, 'tutorial:titan'}, + {'', 'tutorial:titan', ''}, + } + }) + minetest.register_craft({ + output = 'tutorial:titangun5'..m, + recipe = { + {'', 'tutorial:titan', ''}, + {'tutorial:titan', 'tutorial:titangun4'..m, 'tutorial:titan'}, + {'', 'tutorial:titan', ''}, + } + }) + minetest.register_craft({ + output = 'tutorial:titangun4'..m, + recipe = { + {'', 'tutorial:titan', ''}, + {'tutorial:titan', 'tutorial:titangun3'..m, 'tutorial:titan'}, + {'', 'tutorial:titan', ''}, + } + }) + minetest.register_craft({ + output = 'tutorial:titangun3'..m, + recipe = { + {'', 'tutorial:titan', ''}, + {'tutorial:titan', 'tutorial:titangun2'..m, 'tutorial:titan'}, + {'', 'tutorial:titan', ''}, + } + }) + minetest.register_craft({ + output = 'tutorial:titangun2'..m, + recipe = { + {'', 'tutorial:titan', ''}, + {'tutorial:titan', 'tutorial:titangun1'..m, 'tutorial:titan'}, + {'', 'tutorial:titan', ''}, + } + }) + minetest.register_craft({ + output = 'tutorial:titangun1'..m, + recipe = { + {'', 'tutorial:titan', ''}, + {'tutorial:titan', 'tutorial:arenagun4'..m, 'tutorial:titan'}, + {'', 'tutorial:titan', ''}, + } + }) + minetest.register_craft({ + output = 'tutorial:legendengun1'..m, + recipe = { + {'tutorial:titangun10'..m, 'default:grass_1', 'default:grass_1', 'tutorial:bottle5'}, + {'default:grass_1', 'default:grass_1', 'default:grass_1', 'default:grass_1'}, + {'default:grass_1', 'default:grass_1', 'default:grass_1', 'default:grass_1'}, + {'tutorial:bottle5', 'default:grass_1', 'default:grass_1', 'default:grass_1'}, + } + }) + minetest.register_craft({ + output = 'tutorial:legendengun2'..m, + recipe = { + {'tutorial:legendengun1'..m, 'default:grass_1', 'default:grass_1', 'tutorial:bottle7'}, + {'default:grass_1', 'default:grass_1', 'default:grass_1', 'default:grass_1'}, + {'default:grass_1', 'default:grass_1', 'default:grass_1', 'default:grass_1'}, + {'tutorial:bottle7', 'default:grass_1', 'default:grass_1', 'default:grass_1'}, + } + }) + minetest.register_craft({ + output = 'tutorial:legendengun3'..m, + recipe = { + {'tutorial:legendengun2'..m, 'default:grass_1', 'default:grass_1', 'tutorial:bottle9'}, + {'default:grass_1', 'default:grass_1', 'default:grass_1', 'default:grass_1'}, + {'default:grass_1', 'default:grass_1', 'default:grass_1', 'default:grass_1'}, + {'tutorial:bottle9', 'default:grass_1', 'default:grass_1', 'default:grass_1'}, + } + }) + minetest.register_craft({ + output = 'tutorial:legendengun4'..m, + recipe = { + {'tutorial:legendengun3'..m, 'default:grass_1', 'default:grass_1', 'tutorial:bottle11'}, + {'default:grass_1', 'default:grass_1', 'default:grass_1', 'default:grass_1'}, + {'default:grass_1', 'default:grass_1', 'default:grass_1', 'default:grass_1'}, + {'tutorial:bottle11', 'default:grass_1', 'default:grass_1', 'default:grass_1'}, + } + }) + minetest.register_craft({ + output = 'tutorial:legendengun5'..m, + recipe = { + {'tutorial:legendengun4'..m, 'default:grass_1', 'default:grass_1', 'tutorial:bottleS1'}, + {'default:grass_1', 'default:grass_1', 'default:grass_1', 'default:grass_1'}, + {'default:grass_1', 'default:grass_1', 'default:grass_1', 'default:grass_1'}, + {'tutorial:bottleS1', 'default:grass_1', 'default:grass_1', 'default:grass_1'}, + } + }) + minetest.register_craft({ + output = 'tutorial:legendengun6'..m, + recipe = { + {'tutorial:legendengun5'..m, 'default:grass_1', 'default:grass_1', 'tutorial:bottleS3'}, + {'default:grass_1', 'default:grass_1', 'default:grass_1', 'default:grass_1'}, + {'default:grass_1', 'default:grass_1', 'default:grass_1', 'default:grass_1'}, + {'tutorial:bottleS3', 'default:grass_1', 'default:grass_1', 'default:grass_1'}, + } + }) +end +minetest.register_craft({ + output = 'tutorial:superlegendengun1', + recipe = { + {'tutorial:lilabattleaxe2', 'tutorial:legendengun6'}, + } +}) +minetest.register_craft({ + output = 'tutorial:superlegendengun2', + recipe = { + {'tutorial:lilabattleaxe2', 'tutorial:legendengun6_2'}, + } +}) +minetest.register_craft({ + output = 'tutorial:regnumgun1', + recipe = { + {'', '', 'tutorial:regnum', '', ''}, {'', '', 'tutorial:bottleSS', '', ''}, {'tutorial:regnum', 'tutorial:bottleSS', 'tutorial:superlegendengun1', 'tutorial:bottleSS', 'tutorial:regnum'}, {'', '', 'tutorial:bottleSS', '', ''}, {'', '', 'tutorial:regnum', '', ''}, - } + } }) minetest.register_craft({ - output = 'tutorial:regnumgun2', - recipe = { - {'tutorial:regnumgun1'}, - } + output = 'tutorial:regnumgun2', + recipe = { + {'', '', 'tutorial:regnum', '', ''}, + {'', '', 'tutorial:bottleSS', '', ''}, + {'tutorial:regnum', 'tutorial:bottleSS', 'tutorial:superlegendengun2', 'tutorial:bottleSS', 'tutorial:regnum'}, + {'', '', 'tutorial:bottleSS', '', ''}, + {'', '', 'tutorial:regnum', '', ''}, + } }) minetest.register_craft({ - output = 'tutorial:regnumgun1', - recipe = { - {'tutorial:regnumgun2'}, - } -}) -minetest.register_craft({ - output = 'tutorial:gun_admin1', - recipe = { - {'tutorial:gun_admin2'}, - } -}) -minetest.register_craft({ - output = 'tutorial:gun_admin2', - recipe = { - {'tutorial:gun_admin1'}, - } + output = 'tutorial:regnumgun3', + recipe = { + {'', '', 'tutorial:regnum', '', ''}, + {'', '', 'tutorial:bottleSS', '', ''}, + {'tutorial:regnum', 'tutorial:bottleSS', 'tutorial:superlegendengun3', 'tutorial:bottleSS', 'tutorial:regnum'}, + {'', '', 'tutorial:bottleSS', '', ''}, + {'', '', 'tutorial:regnum', '', ''}, + } }) minetest.register_craft({ output = 'tutorial:xp_block_yellow 16', @@ -5400,342 +5355,209 @@ for i = 0, 127 do end minetest.register_entity("tutorial:tb_"..i, XTRAORES_TB) 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() - local dir = user:get_look_dir() - local yaw = user:get_look_yaw() - if pos and dir and yaw then - pos.y = pos.y + 1.6 - local obj = minetest.add_entity(pos, "tutorial:tb_0") - if obj then - minetest.sound_play("shot", {object=obj}) - obj:setvelocity({x=dir.x * 60, y=dir.y * 60, z=dir.z * 60}) - obj:setacceleration({x=dir.x * -0, y=-0, z=dir.z * -0}) - obj:setyaw(yaw + math.pi) - local ent = obj:get_luaentity() - if ent then - ent.player = user - end +for i = 0, 127 do + local XTRAORES_TB2 = { + physical = false, + timer = 0, + visual = "sprite", + visual_size = {x=0.075, y=0.075,}, + textures = {'tutorial_titanium_shot.png'}, + lastpos= {}, + collisionbox = {0, 0, 0, 0, 0, 0}, + metadata = "", + } + XTRAORES_TB2.on_step = function(self, dtime) + self.timer = self.timer + dtime + local ki = 0 + if i == 0 then + ki = 1 + elseif i == 122 then + ki = 122 + elseif i == 123 then + ki = 150 + elseif i == 124 then + ki = 122 + elseif i == 125 then + ki = 150 + elseif i == 126 then + ki = 500 + elseif i == 127 then + ki = 500 + else + ki = i + end + local l = 0 + if i == 0 then + l = 1 + elseif i < 21 then + l = 2 + elseif i < 46 then + l = 3 + elseif i < 50 then + l = 4 + elseif i < 52 then + l = 5 + elseif i < 64 then + l = 6 + elseif i < 71 then + l = 7 + elseif i < 76 then + l = 8 + elseif i < 101 then + l = 9 + elseif i < 102 then + l = 10 + elseif i < 106 then + l = 11 + elseif i < 116 then + l = 12 + elseif i < 122 then + l = 13 + elseif i < 123 then + l = 14 + elseif i < 124 then + l = 15 + elseif i < 125 then + l = 14 + elseif i < 126 then + l = 15 + elseif i < 128 then + l = 20 + end + local pos = self.object:getpos() + local node = minetest.get_node(pos) + if self.timer > 0.08 then + local objs = minetest.get_objects_inside_radius({x = pos.x, y = pos.y, z = pos.z}, l) + for k, obj in pairs(objs) do + local damage = ki + if obj:get_luaentity() ~= nil then + 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 end end - return itemstack - end, - }) + end + if self.lastpos.x ~= nil then + if minetest.registered_nodes[node.name].walkable then + if not minetest.setting_getbool("creative_mode") then + minetest.add_item(self.lastpos, "") + end + if i > 126 then + if minetest.get_node({x = pos.x, y = pos.y+1, z = pos.z+1}).name == "air" then + minetest.set_node({x = pos.x, y = pos.y+1, z = pos.z+1}, {name="tutorial:legend_thunderadmin"}) + end + if minetest.get_node({x = pos.x, y = pos.y+1, z = pos.z-1}).name == "air" then + minetest.set_node({x = pos.x, y = pos.y+1, z = pos.z-1}, {name="tutorial:legend_thunderadmin"}) + end + if minetest.get_node({x = pos.x+1, y = pos.y+1, z = pos.z}).name == "air" then + minetest.set_node({x = pos.x+1, y = pos.y+1, z = pos.z}, {name="tutorial:legend_thunderadmin"}) + end + if minetest.get_node({x = pos.x-1, y = pos.y+1, z = pos.z}).name == "air" then + minetest.set_node({x = pos.x-1, y = pos.y+1, z = pos.z}, {name="tutorial:legend_thunderadmin"}) + end + if minetest.get_node({x = pos.x+1, y = pos.y+1, z = pos.z+1}).name == "air" then + minetest.set_node({x = pos.x+1, y = pos.y+1, z = pos.z+1}, {name="tutorial:legend_thunderadmin"}) + end + if minetest.get_node({x = pos.x+1, y = pos.y+1, z = pos.z-1}).name == "air" then + minetest.set_node({x = pos.x+1, y = pos.y+1, z = pos.z-1}, {name="tutorial:legend_thunderadmin"}) + end + if minetest.get_node({x = pos.x-1, y = pos.y+1, z = pos.z+1}).name == "air" then + minetest.set_node({x = pos.x-1, y = pos.y+1, z = pos.z+1}, {name="tutorial:legend_thunderadmin"}) + end + if minetest.get_node({x = pos.x-1, y = pos.y+1, z = pos.z-1}).name == "air" then + minetest.set_node({x = pos.x-1, y = pos.y+1, z = pos.z-1}, {name="tutorial:legend_thunderadmin"}) + end + if minetest.get_node({x = pos.x, y = pos.y+1, z = pos.z}).name == "air" then + minetest.set_node({x = pos.x, y = pos.y+1, z = pos.z}, {name="tutorial:legend_thunderadmin"}) + end + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + elseif i >= 124 and i ~= 126 then + if minetest.get_node({x = pos.x, y = pos.y+1, z = pos.z+1}).name == "air" then + minetest.set_node({x = pos.x, y = pos.y+1, z = pos.z+1}, {name="tutorial:legend_thunder_8_8"}) + end + if minetest.get_node({x = pos.x, y = pos.y+1, z = pos.z-1}).name == "air" then + minetest.set_node({x = pos.x, y = pos.y+1, z = pos.z-1}, {name="tutorial:legend_thunder_8_8"}) + end + if minetest.get_node({x = pos.x+1, y = pos.y+1, z = pos.z}).name == "air" then + minetest.set_node({x = pos.x+1, y = pos.y+1, z = pos.z}, {name="tutorial:legend_thunder_8_8"}) + end + if minetest.get_node({x = pos.x-1, y = pos.y+1, z = pos.z}).name == "air" then + minetest.set_node({x = pos.x-1, y = pos.y+1, z = pos.z}, {name="tutorial:legend_thunder_8_8"}) + end + if minetest.get_node({x = pos.x+1, y = pos.y+1, z = pos.z+1}).name == "air" then + minetest.set_node({x = pos.x+1, y = pos.y+1, z = pos.z+1}, {name="tutorial:legend_thunder_8_8"}) + end + if minetest.get_node({x = pos.x+1, y = pos.y+1, z = pos.z-1}).name == "air" then + minetest.set_node({x = pos.x+1, y = pos.y+1, z = pos.z-1}, {name="tutorial:legend_thunder_8_8"}) + end + if minetest.get_node({x = pos.x-1, y = pos.y+1, z = pos.z+1}).name == "air" then + minetest.set_node({x = pos.x-1, y = pos.y+1, z = pos.z+1}, {name="tutorial:legend_thunder_8_8"}) + end + if minetest.get_node({x = pos.x-1, y = pos.y+1, z = pos.z-1}).name == "air" then + minetest.set_node({x = pos.x-1, y = pos.y+1, z = pos.z-1}, {name="tutorial:legend_thunder_8_8"}) + end + if minetest.get_node({x = pos.x, y = pos.y+1, z = pos.z}).name == "air" then + minetest.set_node({x = pos.x, y = pos.y+1, z = pos.z}, {name="tutorial:legend_thunder_8_8"}) + end + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + end + self.object:remove() + end + end + self.lastpos= {x = pos.x, y = pos.y, z = pos.z} + end + minetest.register_entity("tutorial:tb2_"..i, XTRAORES_TB2) +end + + +local guns = {} +table.insert(guns, {0,"tutorial:gun","Gun","tutorial_gun.png"}) 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() - local dir = user:get_look_dir() - local yaw = user:get_look_yaw() - if pos and dir and yaw then - pos.y = pos.y + 1.6 - local obj = minetest.add_entity(pos, "tutorial:tb_"..i) - if obj then - minetest.sound_play("shot", {object=obj}) - obj:setvelocity({x=dir.x * 60, y=dir.y * 60, z=dir.z * 60}) - obj:setacceleration({x=dir.x * -0, y=-0, z=dir.z * -0}) - obj:setyaw(yaw + math.pi) - local ent = obj:get_luaentity() - if ent then - ent.player = user - end - end - end - return itemstack - end, - }) + table.insert(guns, {i,"tutorial:gun_mega"..i,"Mega Gun lv."..i,"tutorial_gun_mega"..i..".png"}) end 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() - local dir = user:get_look_dir() - local yaw = user:get_look_yaw() - if pos and dir and yaw then - pos.y = pos.y + 1.6 - local obj = minetest.add_entity(pos, "tutorial:tb_"..(i+20)) - if obj then - minetest.sound_play("shot", {object=obj}) - obj:setvelocity({x=dir.x * 60, y=dir.y * 60, z=dir.z * 60}) - obj:setacceleration({x=dir.x * -0, y=-0, z=dir.z * -0}) - obj:setyaw(yaw + math.pi) - local ent = obj:get_luaentity() - if ent then - ent.player = user - end - end - end - return itemstack - end, - }) + table.insert(guns, {i+20,"tutorial:cloudgun_mega"..i,"Cloudgun lv."..i,"tutorial_cloudgun_mega"..i..".png"}) end 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() - local dir = user:get_look_dir() - local yaw = user:get_look_yaw() - if pos and dir and yaw then - pos.y = pos.y + 1.6 - local obj = minetest.add_entity(pos, "tutorial:tb_"..(i+45)) - if obj then - minetest.sound_play("shot", {object=obj}) - obj:setvelocity({x=dir.x * 60, y=dir.y * 60, z=dir.z * 60}) - obj:setacceleration({x=dir.x * -0, y=-0, z=dir.z * -0}) - obj:setyaw(yaw + math.pi) - local ent = obj:get_luaentity() - if ent then - ent.player = user - end - end - end - return itemstack - end, - }) + table.insert(guns, {i+45,"tutorial:supergun"..i,"Supergun lv."..i,"tutorial_supergun"..i..".png"}) end 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() - local dir = user:get_look_dir() - local yaw = user:get_look_yaw() - if pos and dir and yaw then - pos.y = pos.y + 1.6 - local obj = minetest.add_entity(pos, "tutorial:tb_"..(i+49)) - if obj then - minetest.sound_play("shot", {object=obj}) - obj:setvelocity({x=dir.x * 60, y=dir.y * 60, z=dir.z * 60}) - obj:setacceleration({x=dir.x * -0, y=-0, z=dir.z * -0}) - obj:setyaw(yaw + math.pi) - local ent = obj:get_luaentity() - if ent then - ent.player = user - end - end - end - return itemstack - end, - }) + table.insert(guns, {i+49,"tutorial:uraniumgun"..i,"Uraniumgun lv."..i,"tutorial_uraniumgun"..i..".png"}) +end +for i = 1, 2 do + table.insert(guns, {i+49,"tutorial:uraniumgun"..i,"Uraniumgun lv."..i,"tutorial_uraniumgun"..i..".png"}) end 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() - local dir = user:get_look_dir() - local yaw = user:get_look_yaw() - if pos and dir and yaw then - pos.y = pos.y + 1.6 - local obj = minetest.add_entity(pos, "tutorial:tb_"..(i+51)) - if obj then - minetest.sound_play("shot", {object=obj}) - obj:setvelocity({x=dir.x * 60, y=dir.y * 60, z=dir.z * 60}) - obj:setacceleration({x=dir.x * -0, y=-0, z=dir.z * -0}) - obj:setyaw(yaw + math.pi) - local ent = obj:get_luaentity() - if ent then - ent.player = user - end - end - end - return itemstack - end, - }) + table.insert(guns, {i+51,"tutorial:energygun"..i,"Energygun lv."..i,"tutorial_energygun"..i..".png"}) end 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() - local dir = user:get_look_dir() - local yaw = user:get_look_yaw() - if pos and dir and yaw then - pos.y = pos.y + 1.6 - local obj = minetest.add_entity(pos, "tutorial:tb_"..(i+63)) - if obj then - minetest.sound_play("shot", {object=obj}) - obj:setvelocity({x=dir.x * 60, y=dir.y * 60, z=dir.z * 60}) - obj:setacceleration({x=dir.x * -0, y=-0, z=dir.z * -0}) - obj:setyaw(yaw + math.pi) - local ent = obj:get_luaentity() - if ent then - ent.player = user - end - end - end - return itemstack - end, - }) + table.insert(guns, {i+63,"tutorial:superenergygun"..i,"Superenergygun lv."..i,"tutorial_superenergygun"..i..".png"}) end 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() - local dir = user:get_look_dir() - local yaw = user:get_look_yaw() - if pos and dir and yaw then - pos.y = pos.y + 1.6 - local obj = minetest.add_entity(pos, "tutorial:tb_"..(i+70)) - if obj then - minetest.sound_play("shot", {object=obj}) - obj:setvelocity({x=dir.x * 60, y=dir.y * 60, z=dir.z * 60}) - obj:setacceleration({x=dir.x * -0, y=-0, z=dir.z * -0}) - obj:setyaw(yaw + math.pi) - local ent = obj:get_luaentity() - if ent then - ent.player = user - end - end - end - return itemstack - end, - }) + table.insert(guns, {i+70,"tutorial:kristallgun"..i,"Crystalgun lv."..i,"tutorial_kristallgun"..i..".png"}) end 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() - local dir = user:get_look_dir() - local yaw = user:get_look_yaw() - if pos and dir and yaw then - pos.y = pos.y + 1.6 - local obj = minetest.add_entity(pos, "tutorial:tb_"..(i+75)) - if obj then - minetest.sound_play("shot", {object=obj}) - obj:setvelocity({x=dir.x * 60, y=dir.y * 60, z=dir.z * 60}) - obj:setacceleration({x=dir.x * -0, y=-0, z=dir.z * -0}) - obj:setyaw(yaw + math.pi) - local ent = obj:get_luaentity() - if ent then - ent.player = user - end - end - end - return itemstack - end, - }) + table.insert(guns, {i+75,"tutorial:ultragun"..i,"Ultragun lv."..i,"tutorial_ultragun"..i..".png"}) 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() - local dir = user:get_look_dir() - local yaw = user:get_look_yaw() - if pos and dir and yaw then - pos.y = pos.y + 1.6 - local obj = minetest.add_entity(pos, "tutorial:tb_101") - if obj then - minetest.sound_play("shot", {object=obj}) - obj:setvelocity({x=dir.x * 60, y=dir.y * 60, z=dir.z * 60}) - obj:setacceleration({x=dir.x * -0, y=-0, z=dir.z * -0}) - obj:setyaw(yaw + math.pi) - local ent = obj:get_luaentity() - if ent then - ent.player = user - end - end - end - return itemstack - end, -}) +table.insert(guns, {101,"tutorial:ultragun","Superultragun","tutorial_superultragun.png"}) 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() - local dir = user:get_look_dir() - local yaw = user:get_look_yaw() - if pos and dir and yaw then - pos.y = pos.y + 1.6 - local obj = minetest.add_entity(pos, "tutorial:tb_"..(i+101)) - if obj then - minetest.sound_play("shot", {object=obj}) - obj:setvelocity({x=dir.x * 60, y=dir.y * 60, z=dir.z * 60}) - obj:setacceleration({x=dir.x * -0, y=-0, z=dir.z * -0}) - obj:setyaw(yaw + math.pi) - local ent = obj:get_luaentity() - if ent then - ent.player = user - end - end - end - return itemstack - end, - }) + table.insert(guns, {i+101,"tutorial:arenagun"..i,"Arenagun lv."..i,"tutorial_arenagun"..i..".png"}) end 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() - local dir = user:get_look_dir() - local yaw = user:get_look_yaw() - if pos and dir and yaw then - pos.y = pos.y + 1.6 - local obj = minetest.add_entity(pos, "tutorial:tb_"..(i+105)) - if obj then - minetest.sound_play("shot", {object=obj}) - obj:setvelocity({x=dir.x * 60, y=dir.y * 60, z=dir.z * 60}) - obj:setacceleration({x=dir.x * -0, y=-0, z=dir.z * -0}) - obj:setyaw(yaw + math.pi) - local ent = obj:get_luaentity() - if ent then - ent.player = user - end - end - end - return itemstack - end, - }) + table.insert(guns, {i+105,"tutorial:titangun"..i,"Titangun lv."..i,"tutorial_titangun"..i..".png"}) end 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", + table.insert(guns, {i+115,"tutorial:legendengun"..i,"Legendgun lv."..i,"tutorial_legendengun"..i..".png"}) +end + +for _, m in pairs(guns) do + minetest.register_tool(m[2], { + description = m[3].." Mode 1 (damage to players and no thunder)\nGun-lv."..m[1], + inventory_image = m[4].."^technic_tool_mode1.png", + wield_image = m[4], groups = {not_in_creative_inventory=1}, on_use = function(itemstack, user, pointed_thing) local inv = user:get_inventory() @@ -5744,7 +5566,7 @@ for i = 1, 6 do local yaw = user:get_look_yaw() if pos and dir and yaw then pos.y = pos.y + 1.6 - local obj = minetest.add_entity(pos, "tutorial:tb_"..(i+115)) + local obj = minetest.add_entity(pos, "tutorial:tb_"..m[1]) if obj then minetest.sound_play("shot", {object=obj}) obj:setvelocity({x=dir.x * 60, y=dir.y * 60, z=dir.z * 60}) @@ -5758,10 +5580,51 @@ for i = 1, 6 do end return itemstack end, + on_secondary_use = function(itemstack, user, pointed_thing) + local keys = user:get_player_control() + if keys["sneak"] == true then + itemstack:set_name(m[2].."_2") + end + return itemstack + end, + }) + minetest.register_tool(m[2].."_2", { + description = m[3].." Mode 2 (no damage to players and no thunder)\nGun-lv."..m[1], + inventory_image = m[4].."^technic_tool_mode2.png", + wield_image = m[4], + groups = {not_in_creative_inventory=1}, + on_use = function(itemstack, user, pointed_thing) + local inv = user:get_inventory() + local pos = user:getpos() + local dir = user:get_look_dir() + local yaw = user:get_look_yaw() + if pos and dir and yaw then + pos.y = pos.y + 1.6 + local obj = minetest.add_entity(pos, "tutorial:tb2_"..m[1]) + if obj then + minetest.sound_play("shot", {object=obj}) + obj:setvelocity({x=dir.x * 60, y=dir.y * 60, z=dir.z * 60}) + obj:setacceleration({x=dir.x * -0, y=-0, z=dir.z * -0}) + obj:setyaw(yaw + math.pi) + local ent = obj:get_luaentity() + if ent then + ent.player = user + end + end + end + return itemstack + end, + on_secondary_use = function(itemstack, user, pointed_thing) + local keys = user:get_player_control() + if keys["sneak"] == true then + itemstack:set_name(m[2]) + end + return itemstack + end, }) end minetest.register_tool("tutorial:superlegendengun1", { - description = "Superlegendgun Mode 1. Add no thunder\nGun-lv.122", + description = "Superlegendgun Mode 1 (damage to players and 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}, @@ -5786,10 +5649,17 @@ minetest.register_tool("tutorial:superlegendengun1", { end return itemstack end, + on_secondary_use = function(itemstack, user, pointed_thing) + local keys = user:get_player_control() + if keys["sneak"] == true then + itemstack:set_name("tutorial:superlegendengun3") + end + return itemstack + end, }) minetest.register_tool("tutorial:superlegendengun2", { - description = "Superlegendgun Mode 2. Add thunder\nGun-lv.122", - inventory_image = "tutorial_superlegendengun.png^technic_tool_mode2.png", + description = "Superlegendgun Mode 3 (damage to players and thunder)\nGun-lv.122", + inventory_image = "tutorial_superlegendengun.png^technic_tool_mode3.png", wield_image = "tutorial_superlegendengun.png", groups = {not_in_creative_inventory=1}, on_use = function(itemstack, user, pointed_thing) @@ -5813,9 +5683,51 @@ minetest.register_tool("tutorial:superlegendengun2", { end return itemstack end, + on_secondary_use = function(itemstack, user, pointed_thing) + local keys = user:get_player_control() + if keys["sneak"] == true then + itemstack:set_name("tutorial:superlegendengun1") + end + return itemstack + end, }) +minetest.register_tool("tutorial:superlegendengun3", { + description = "Superlegendgun Mode 2. (no damage to players and no 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() + local dir = user:get_look_dir() + local yaw = user:get_look_yaw() + if pos and dir and yaw then + pos.y = pos.y + 1.6 + local obj = minetest.add_entity(pos, "tutorial:tb2_122") + if obj then + minetest.sound_play("shot", {object=obj}) + obj:setvelocity({x=dir.x * 60, y=dir.y * 60, z=dir.z * 60}) + obj:setacceleration({x=dir.x * -0, y=-0, z=dir.z * -0}) + obj:setyaw(yaw + math.pi) + local ent = obj:get_luaentity() + if ent then + ent.player = user + end + end + end + return itemstack + end, + on_secondary_use = function(itemstack, user, pointed_thing) + local keys = user:get_player_control() + if keys["sneak"] == true then + itemstack:set_name("tutorial:superlegendengun2") + end + return itemstack + end, +}) + minetest.register_tool("tutorial:regnumgun1", { - description = "Regnumgun Mode 1. Add no thunder\nGun-lv.MAX", + description = "Regnumgun Mode 1 (damage to players and no thunder)\nGun-lv.MAX", inventory_image = "tutorial_regnumgun.png^technic_tool_mode1.png", wield_image = "tutorial_regnumgun.png", on_use = function(itemstack, user, pointed_thing) @@ -5839,10 +5751,17 @@ minetest.register_tool("tutorial:regnumgun1", { end return itemstack end, + on_secondary_use = function(itemstack, user, pointed_thing) + local keys = user:get_player_control() + if keys["sneak"] == true then + itemstack:set_name("tutorial:regnumgun3") + end + return itemstack + end, }) minetest.register_tool("tutorial:regnumgun2", { - description = "Regnumgun Mode 2. Add thunder\nGun-lv.MAX", - inventory_image = "tutorial_regnumgun.png^technic_tool_mode2.png", + description = "Regnumgun Mode 3 (damage to players and thunder)\nGun-lv.MAX", + inventory_image = "tutorial_regnumgun.png^technic_tool_mode3.png", wield_image = "tutorial_regnumgun.png", groups = {not_in_creative_inventory=1}, on_use = function(itemstack, user, pointed_thing) @@ -5866,9 +5785,53 @@ minetest.register_tool("tutorial:regnumgun2", { end return itemstack end, + on_secondary_use = function(itemstack, user, pointed_thing) + local keys = user:get_player_control() + if keys["sneak"] == true then + itemstack:set_name("tutorial:regnumgun1") + end + return itemstack + end, }) + +minetest.register_tool("tutorial:regnumgun3", { + description = "Regnumgun Mode 2 (no damage to players and no 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() + local dir = user:get_look_dir() + local yaw = user:get_look_yaw() + if pos and dir and yaw then + pos.y = pos.y + 1.6 + local obj = minetest.add_entity(pos, "tutorial:tb2_123") + if obj then + minetest.sound_play("shot", {object=obj}) + obj:setvelocity({x=dir.x * 60, y=dir.y * 60, z=dir.z * 60}) + obj:setacceleration({x=dir.x * -0, y=-0, z=dir.z * -0}) + obj:setyaw(yaw + math.pi) + local ent = obj:get_luaentity() + if ent then + ent.player = user + end + end + end + return itemstack + end, + on_secondary_use = function(itemstack, user, pointed_thing) + local keys = user:get_player_control() + if keys["sneak"] == true then + itemstack:set_name("tutorial:regnumgun2") + end + return itemstack + end, +}) + + minetest.register_tool("tutorial:gun_admin1", { - description = "Admin tool 11: Gun Mode 1. Add no thunder", + description = "Admin tool 11: Gun Mode 1 (damage to players and no thunder)", inventory_image = "tutorial_admingun.png^technic_tool_mode1.png", wield_image = "tutorial_admingun.png", on_use = function(itemstack, user, pointed_thing) @@ -5892,10 +5855,17 @@ minetest.register_tool("tutorial:gun_admin1", { end return itemstack end, + on_secondary_use = function(itemstack, user, pointed_thing) + local keys = user:get_player_control() + if keys["sneak"] == true then + itemstack:set_name("tutorial:gun_admin3") + end + return itemstack + end, }) minetest.register_tool("tutorial:gun_admin2", { - description = "Admin tool 11: Gun Mode 2. Add thunder", - inventory_image = "tutorial_admingun.png^technic_tool_mode2.png", + description = "Admin tool 11: Gun Mode 3 (damage to players and thunder)", + inventory_image = "tutorial_admingun.png^technic_tool_mode3.png", wield_image = "tutorial_admingun.png", groups = {not_in_creative_inventory=1}, on_use = function(itemstack, user, pointed_thing) @@ -5919,7 +5889,50 @@ minetest.register_tool("tutorial:gun_admin2", { end return itemstack end, + on_secondary_use = function(itemstack, user, pointed_thing) + local keys = user:get_player_control() + if keys["sneak"] == true then + itemstack:set_name("tutorial:gun_admin1") + end + return itemstack + end, }) + +minetest.register_tool("tutorial:gun_admin3", { + description = "Admin tool 11: Gun Mode 2 (no damage to players and no 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() + local dir = user:get_look_dir() + local yaw = user:get_look_yaw() + if pos and dir and yaw then + pos.y = pos.y + 1.6 + local obj = minetest.add_entity(pos, "tutorial:tb2_126") + if obj then + minetest.sound_play("shot", {object=obj}) + obj:setvelocity({x=dir.x * 60, y=dir.y * 60, z=dir.z * 60}) + obj:setacceleration({x=dir.x * -0, y=-0, z=dir.z * -0}) + obj:setyaw(yaw + math.pi) + local ent = obj:get_luaentity() + if ent then + ent.player = user + end + end + end + return itemstack + end, + on_secondary_use = function(itemstack, user, pointed_thing) + local keys = user:get_player_control() + if keys["sneak"] == true then + itemstack:set_name("tutorial:gun_admin2") + end + return itemstack + end, +}) + local mine = {} mine.get_formspec = function(player, pos) if player == nil then @@ -6363,6 +6376,9 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) if fields.troph then inventory_plus.set_inventory_formspec(player, troph.get_formspec(player)) end + if fields.backward then + inventory_plus.set_inventory_formspec(player, backward.get_formspec(player)) + end if fields.trophys then inventory_plus.set_inventory_formspec(player, trophys.get_formspec(player)) end @@ -6460,6 +6476,158 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) end inventory_plus.set_inventory_formspec(player, troph.get_formspec(player)) end + if fields.backwardcra then + local player_inv = player:get_inventory() + player_inv:set_size("backward", 1) + local name = player_inv:get_stack("backward", 1):get_name() + local item1 = "" + local item2 = "" + local item3 = "" + local item4 = "" + local re = false + if name == "3d_armor:superlegendenboots" or name == "3d_armor:superlegendenboots2" or name == "3d_armor:superlegendenboots3" or name == "3d_armor:superlegendenboots4" then + item1 = "3d_armor:legendenboots6" + item2 = "tutorial:lilabattleaxe2" + re = true + elseif name == "3d_armor:superlegendenchestplate" or name == "3d_armor:superlegendenchestplate2" or name == "3d_armor:superlegendenchestplate3" or name == "3d_armor:superlegendenchestplate4" then + item1 = "3d_armor:legendenchestplate6" + item2 = "tutorial:lilabattleaxe2" + re = true + elseif name == "3d_armor:superlegendenhelmet" or name == "3d_armor:superlegendenhelmet2" or name == "3d_armor:superlegendenhelmet3" or name == "3d_armor:superlegendenhelmet4" then + item1 = "3d_armor:legendenhelmet6" + item2 = "tutorial:lilabattleaxe2" + re = true + elseif name == "3d_armor:superlegendenleggings" or name == "3d_armor:superlegendenleggings2" or name == "3d_armor:superlegendenleggings3" or name == "3d_armor:superlegendenleggings4" then + item1 = "3d_armor:legendenleggings6" + item2 = "tutorial:lilabattleaxe2" + re = true + elseif name == "shields:superlegendenshield" or name == "shields:superlegendenshield2" or name == "shields:superlegendenshield3" or name == "shields:superlegendenshield4" then + item1 = "shields:legendenshield6" + item2 = "tutorial:lilabattleaxe2" + re = true + elseif name == "tutorial:superlegendengun1" or name == "tutorial:superlegendengun2" then + item1 = "tutorial:legendengun6" + item2 = "tutorial:lilabattleaxe2" + re = true + elseif name == "tutorial:superlegendengun3" then + item1 = "tutorial:legendengun6_2" + item2 = "tutorial:lilabattleaxe2" + re = true + elseif name == "3d_armor:regnumboots" or name == "3d_armor:regnumboots2" or name == "3d_armor:regnumboots3" or name == "3d_armor:regnumboots4" then + item1 = "3d_armor:legendenboots6" + item2 = "tutorial:lilabattleaxe2" + item3 = "tutorial:bottleSS 4" + item4 = "tutorial:regnum 4" + re = true + elseif name == "3d_armor:regnumhelmet" or name == "3d_armor:regnumhelmet2" or name == "3d_armor:regnumhelmet3" or name == "3d_armor:regnumhelmet4" then + item1 = "3d_armor:legendenhelmet6" + item2 = "tutorial:lilabattleaxe2" + item3 = "tutorial:bottleSS 4" + item4 = "tutorial:regnum 4" + re = true + elseif name == "3d_armor:regnumleggings" or name == "3d_armor:regnumleggings2" or name == "3d_armor:regnumleggings3" or name == "3d_armor:regnumleggings4" then + item1 = "3d_armor:legendenleggings6" + item2 = "tutorial:lilabattleaxe2" + item3 = "tutorial:bottleSS 4" + item4 = "tutorial:regnum 4" + re = true + elseif name == "3d_armor:regnumchestplate" or name == "3d_armor:regnumchestplate2" or name == "3d_armor:regnumchestplate3" or name == "3d_armor:regnumchestplate4" then + item1 = "3d_armor:legendenchestplate6" + item2 = "tutorial:lilabattleaxe2" + item3 = "tutorial:bottleSS 4" + item4 = "tutorial:regnum 4" + re = true + elseif name == "shields:regnumshield" or name == "shields:regnumshield2" or name == "shields:regnumshield3" or name == "shields:regnumshield4" then + item1 = "shields:legendenshield6" + item2 = "tutorial:lilabattleaxe2" + item3 = "tutorial:bottleSS 4" + item4 = "tutorial:regnum 4" + re = true + elseif name == "tutorial:regnumgun1" or name == "tutorial:regnumgun2" then + item1 = "tutorial:legendengun6" + item2 = "tutorial:lilabattleaxe2" + item3 = "tutorial:bottleSS 4" + item4 = "tutorial:regnum 4" + re = true + elseif name == "tutorial:regnumgun3" then + item1 = "tutorial:legendengun6_2" + item2 = "tutorial:lilabattleaxe2" + item3 = "tutorial:bottleSS 4" + item4 = "tutorial:regnum 4" + re = true + end + if string.match(name, "tutorial:bag_schluessel") then + local level = string.gsub(name, "tutorial:bag_schluessel", "") + if tonumber(level) > 0 and tonumber(level) < 4 then + item1 = "tutorial:coin_grau "..(level*120) + item2 = "tutorial:obsidian6 "..level + item3 = "default:stick 2" + re = true + end + elseif string.match(name, "technic:laser_mkS") then + local level = string.gsub(name, "technic:laser_mkS", "") + if tonumber(level) > 0 and tonumber(level) < 150 then + item1 = "tutorial:coin "..(level-1)*8+3 + item2 = "tutorial:admin" + item3 = "moreores:mithril_ingot 2" + re = true + end + elseif string.match(name, "technic:drill_mkS") then + local level = string.gsub(name, "technic:drill_mkS", "") + local level = string.gsub(level, "_1", "") + local level = string.gsub(level, "_2", "") + local level = string.gsub(level, "_3", "") + local level = string.gsub(level, "_4", "") + local level = string.gsub(level, "_5", "") + minetest.chat_send_all(level) + if tonumber(level) > 0 and tonumber(level) < 150 then + item1 = "tutorial:coin2 "..(level-1)*8+3 + item2 = "tutorial:admin" + item3 = "moreores:mithril_ingot 2" + re = true + end + elseif string.match(name, "tutorial:cooking_schluessel") then + local level = string.gsub(name, "tutorial:cooking_schluessel", "") + if tonumber(level) > 0 and tonumber(level) < 4 then + item1 = "tutorial:coin_cyan "..(level-1)*8+6 + re = true + end + elseif string.match(name, "tutorial:craft_schluessel") then + local level = string.gsub(name, "tutorial:craft_schluessel", "") + if tonumber(level) > 0 and tonumber(level) < 7 then + item1 = "tutorial:coin_lila "..(level-1)*8+7 + item2 = "default:stick 2" + re = true + end + elseif string.match(name, "tutorial:wallplacer") then + local level = string.gsub(name, "tutorial:wallplacer", "") + local level = string.gsub(level, "_1", "") + local level = string.gsub(level, "_2", "") + local level = string.gsub(level, "_3", "") + local level = string.gsub(level, "_4", "") + local level = string.gsub(level, "_5", "") + minetest.chat_send_all(level) + if tonumber(level) > 0 and tonumber(level) < 5 then + item1 = "tutorial:coin_gelb "..(level-1)*24+8 + re = true + end + elseif string.match(name, "tutorial:coin_grau") and name ~= "tutorial:coin_grau" then + local level = string.gsub(name, "tutorial:coin_grau", "") + if tonumber(level) > 0 and tonumber(level) < 20 then + item1 = "tutorial:coin_grau "..(level)*8 + item2 = "tutorial:obsidian6" + re = true + end + end + if re == true and player_inv:room_for_item("main", item1) and player_inv:room_for_item("main", item2) and player_inv:room_for_item("main", item3) and player_inv:room_for_item("main", item4) then + player_inv:remove_item("backward", name) + player_inv:add_item("main", item1) + player_inv:add_item("main", item2) + player_inv:add_item("main", item3) + player_inv:add_item("main", item4) + end + inventory_plus.set_inventory_formspec(player, backward.get_formspec(player)) + end if fields.cre2 then local player_inv = player:get_inventory() player_inv:set_size("kri", 8) @@ -6470,7 +6638,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) end end - local time = 500-(k*50) + local time = 500 player_inv:set_stack("crtime", 1, "default:dirt") player_inv:set_size("pixkey", 1) local name = player_inv:get_stack("pixkey", 1):get_name() @@ -6487,7 +6655,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) inventory_plus.set_inventory_formspec(player, crafting8.get_formspec(player)) end player_inv:set_stack("crtime", 1, nil) - player_inv:add_item("main", "tutorial:bottle_crystal") + player_inv:add_item("main", "tutorial:bottle_crystal "..(k+2)) end) end if fields.meda1 then @@ -6590,21 +6758,6 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) end inventory_plus.set_inventory_formspec(player, meda.get_formspec(player)) end - if fields.rg21 then - inventory_plus.set_inventory_formspec(player, rg21.get_formspec(player)) - end - if fields.rg22 then - inventory_plus.set_inventory_formspec(player, rg22.get_formspec(player)) - end - if fields.rg23 then - inventory_plus.set_inventory_formspec(player, rg23.get_formspec(player)) - end - if fields.rg24 then - inventory_plus.set_inventory_formspec(player, rg24.get_formspec(player)) - end - if fields.rg25 then - inventory_plus.set_inventory_formspec(player, rg25.get_formspec(player)) - end if fields.medallion then inventory_plus.set_inventory_formspec(player, medallion.get_formspec(player)) end @@ -7421,14 +7574,8 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) inventory_plus.set_inventory_formspec(player, recraft.get_formspec(player)) end end) -minetest.register_craft({ - output = 'tutorial:adminbattleaxe', - recipe = { - {'tutorial:adminbattleaxe3'}, - } -}) minetest.register_tool("tutorial:adminbattleaxe3", { - description = "Admin tool 3: Admin battleaxe Mode 3. Only for hunting mobs", + description = "Admin tool 3: Admin battleaxe Mode 3 (for hunting mobs)", inventory_image = "tutorial_adminbattleaxe.png^technic_tool_mode3.png", wield_image = "tutorial_adminbattleaxe.png", groups = {not_in_creative_inventory=1}, @@ -7440,9 +7587,16 @@ minetest.register_tool("tutorial:adminbattleaxe3", { damage_groups = {fleshy=4000} }, liquids_pointable = false, + on_secondary_use = function(itemstack, user, pointed_thing) + local keys = user:get_player_control() + if keys["sneak"] == true then + itemstack:set_name("tutorial:adminbattleaxe") + end + return itemstack + end, }) minetest.register_tool("tutorial:superlegendenbattleaxe3", { - description = "Superlegendbattleaxe Mode 3. Only for hunting mobs\nBattleaxe-lv.122", + description = "Superlegendbattleaxe Mode 3 (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}, @@ -7454,21 +7608,16 @@ minetest.register_tool("tutorial:superlegendenbattleaxe3", { damage_groups = {fleshy=244} }, liquids_pointable = false, -}) -minetest.register_craft({ - output = 'tutorial:superlegendenbattleaxe1', - recipe = { - {'tutorial:superlegendenbattleaxe3'}, - } -}) -minetest.register_craft({ - output = 'tutorial:regnumbattleaxe1', - recipe = { - {'tutorial:regnumbattleaxe3'}, - } + on_secondary_use = function(itemstack, user, pointed_thing) + local keys = user:get_player_control() + if keys["sneak"] == true then + itemstack:set_name("tutorial:superlegendenbattleaxe1") + end + return itemstack + end, }) minetest.register_tool("tutorial:regnumbattleaxe3", { - description = "Regnumbattleaxe Mode 3. Only for hunting mobs\nBattleaxe-lv.MAX", + description = "Regnumbattleaxe Mode 3 (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}, @@ -7480,6 +7629,13 @@ minetest.register_tool("tutorial:regnumbattleaxe3", { damage_groups = {fleshy=150} }, liquids_pointable = false, + on_secondary_use = function(itemstack, user, pointed_thing) + local keys = user:get_player_control() + if keys["sneak"] == true then + itemstack:set_name("tutorial:regnumbattleaxe1") + end + return itemstack + end, }) minetest.register_craft({ output = 'tutorial:bottleSS', diff --git a/mods/tutorial/node.lua b/mods/tutorial/node.lua index 23b3906..c3b6480 100644 --- a/mods/tutorial/node.lua +++ b/mods/tutorial/node.lua @@ -1,65 +1,150 @@ minetest.register_node("tutorial:geschenk_gem",{ - description = "Gift lv.1 (gem)", + description = "Gift (gem dragon)", is_ground_content = true, tiles = {"tutorial_geschenk_gem.png"}, groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3}, - drop = {}, + drop = { + max_items = 1, + items = { + {items = {"tutorial:gem_fragment"},rarity = 2.5}, + {items = {"tutorial:geschenk_legend"},rarity = 5}, + {items = {""},rarity = 2.5}, + } + } }) minetest.register_node("tutorial:geschenk_dragon",{ description = "Gift (dragon)", is_ground_content = true, tiles = {"tutorial_geschenk_dragon.png"}, groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3}, - drop = {}, + drop = {"default:coal_lump 20"}, }) minetest.register_node("tutorial:geschenk_dna",{ description = "Gift (DNA)", is_ground_content = true, tiles = {"tutorial_geschenk_dna.png"}, groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3}, - drop = {} + drop = { + max_items = 1, + items = { + {items = {"mobs:watermob_crocodile_lg_egg"},rarity = 16}, + {items = {"mobs:watermob_crocodile_md_egg"},rarity = 16}, + {items = {"mobs:watermob_crocodile_sm_egg"},rarity = 16}, + {items = {"mobs:watermob_clownfish_egg"},rarity = 16}, + {items = {"mobs:watermob_tropical_fish_egg"},rarity = 16}, + {items = {"mobs:watermob_jellyfish_egg"},rarity = 16}, + {items = {"mobs:watermob_shark_sm_egg"},rarity = 16}, + {items = {"mobs:watermob_shark_md_egg"},rarity = 16}, + {items = {"mobs:watermob_shark_lg_egg"},rarity = 16}, + {items = {"mobs:watermob_turtle_lg_egg"},rarity = 16}, + {items = {"mobs:watermob_turtle_sm_egg"},rarity = 16}, + {items = {"mobs:skymob_butterfly_egg"},rarity = 16}, + {items = {"mobs:skymob_gull_egg"},rarity = 16}, + {items = {"mobs:skymob_bird_sm_egg"},rarity = 16}, + {items = {"mobs:skymob_bird_lg_egg"},rarity = 16}, + {items = {"mobs:skymob_bat_egg"},rarity = 16}, + {items = {"tutorial:geschenk_dna"}}, + } + } }) minetest.register_node("tutorial:geschenk_legend",{ description = "Gift (legendary)", is_ground_content = true, tiles = {"tutorial_geschenk_legenden.png"}, groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3}, - drop = {} + drop = { + max_items = 1, + items = { + {items = {"gems:emerald_gem 2"},rarity = 16}, + {items = {"gems:shadow_gem 2"},rarity = 8}, + {items = {"gems:pearl_gem 2"},rarity = 8}, + {items = {"gems:amethyst_gem 2"},rarity = 5.333}, + {items = {"gems:ruby_gem 2"},rarity = 4}, + {items = {"gems:sapphire_gem 2"},rarity = 4}, + {items = {"tutorial:geschenk_legend"}}, + } + } }) minetest.register_node("tutorial:geschenk_regnum",{ description = "Gift (regnum)", is_ground_content = true, tiles = {"tutorial_geschenk_regnum.png"}, groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3}, - drop = {} + drop = { + max_items = 1, + items = { + {items = {"tutorial:regnum_pixel_gold 20"},rarity = 5}, + {items = {"tutorial:regnum_pixel_green 20"},rarity = 5}, + {items = {"tutorial:regnum_pixel_purple 55"},rarity = 5}, + {items = {"tutorial:regnum_pixel_red 185"},rarity = 5}, + {items = {"tutorial:regnum_pixel_blue 185"},rarity = 5}, + {items = {"tutorial:geschenk_regnum"}}, + } + } }) minetest.register_node("tutorial:geschenk_death_silber",{ description = "Deathgift (silver)", is_ground_content = true, tiles = {"tutorial_geschenk_death_silber.png"}, groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3}, - drop = {} + drop = { + max_items = 1, + items = { + {items = {"default:mese_crystal"},rarity = 8.333}, + {items = {"tutorial:lightstone"},rarity = 8.333}, + {items = {"default:ice"},rarity = 8.333}, + {items = {"tutorial:regnum_part 2"},rarity = 50}, + {items = {"tutorial:geschenk_death_silber"}}, + } + } }) minetest.register_node("tutorial:geschenk_death_gold",{ description = "Deathgift (gold)", is_ground_content = true, tiles = {"tutorial_geschenk_death_gold.png"}, groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3}, - drop = {} + drop = { + max_items = 1, + items = { + {items = {"default:mese_crystal 2"},rarity = 7.143}, + {items = {"tutorial:lightstone 2"},rarity = 7.143}, + {items = {"default:ice"},rarity = 7.143}, + {items = {"tutorial:regnum_part 3"},rarity = 50}, + {items = {"tutorial:geschenk_death_gold"}}, + } + } }) minetest.register_node("tutorial:geschenk_death_platin",{ description = "Deathgift (platinum)", is_ground_content = true, tiles = {"tutorial_geschenk_death_platin.png"}, groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3}, - drop = {} + drop = { + max_items = 1, + items = { + {items = {"default:mese_crystal 3"},rarity = 6.25}, + {items = {"tutorial:lightstone 2"},rarity = 5.556}, + {items = {"default:ice"},rarity = 6.25}, + {items = {"tutorial:regnum_part 4"},rarity = 50}, + {items = {"tutorial:geschenk_death_platin"}}, + } + } }) minetest.register_node("tutorial:geschenk_death",{ description = "Deathgift", is_ground_content = true, tiles = {"tutorial_geschenk_death.png"}, groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3}, - drop = {} + drop = { + max_items = 1, + items = { + {items = {"default:mese_crystal_fragment 4"},rarity = 10}, + {items = {"tutorial:lightstone"},rarity = 10}, + {items = {"default:ice"},rarity = 10}, + {items = {"tutorial:regnum_part"},rarity = 50}, + {items = {"tutorial:geschenk_death"}}, + } + } }) minetest.register_node("tutorial:stone_with_regnum", { description = "Regnum ore", @@ -121,14 +206,45 @@ minetest.register_node("tutorial:geschenk_wool2",{ is_ground_content = true, tiles = {"tutorial_geschenk_wool2.png"}, groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3}, - drop = {}, + drop = { + max_items = 1, + items = { + {items = {"wool:yellow 3"},rarity = 15}, + {items = {"wool:white 3"},rarity = 15}, + {items = {"wool:violet 3"},rarity = 15}, + {items = {"wool:red 3"},rarity = 15}, + {items = {"wool:pink 3"},rarity = 15}, + {items = {"wool:orange 3"},rarity = 15}, + {items = {"wool:magenta 3"},rarity = 15}, + {items = {"wool:grey 3"},rarity = 15}, + {items = {"wool:green 3"},rarity = 15}, + {items = {"wool:dark_grey 3"},rarity = 15}, + {items = {"wool:dark_green 3"},rarity = 15}, + {items = {"wool:cyan 3"},rarity = 15}, + {items = {"wool:brown 3"},rarity = 15}, + {items = {"wool:blue 3"},rarity = 15}, + {items = {"wool:black 3"},rarity = 15}, + {items = {"tutorial:geschenk_wool2"}}, + } + } }) minetest.register_node("tutorial:geschenk_wool1",{ description = "Colored wool gift lv.1", is_ground_content = true, tiles = {"tutorial_geschenk_wool1.png"}, groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3}, - drop = {}, + drop = { + max_items = 1, + items = { + {items = {"wool:yellow 2"},rarity = 6}, + {items = {"wool:white 2"},rarity = 6}, + {items = {"wool:violet 2"},rarity = 6}, + {items = {"wool:red 2"},rarity = 6}, + {items = {"wool:orange 2"},rarity = 6}, + {items = {"wool:blue 2"},rarity = 6}, + {items = {"tutorial:geschenk_wool1"}}, + } + } }) minetest.register_node("tutorial:geschenk_wool",{ description = "Wool gift", @@ -142,21 +258,56 @@ minetest.register_node("tutorial:geschenk_gold",{ is_ground_content = true, tiles = {"tutorial_geschenk_gold.png"}, groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3}, - drop = {}, + drop = { + max_items = 1, + items = { + {items = {"mobs:dirt_monster_egg"},rarity = 17}, + {items = {"mobs:stone_monster_egg"},rarity = 17}, + {items = {"mobs:sand_monster_egg"},rarity = 17}, + {items = {"mobs:desert_sand_monster_egg"},rarity = 17}, + {items = {"mobs:snow_monster_egg"},rarity = 17}, + {items = {"mobs:desert_stone_monster_egg"},rarity = 17}, + {items = {"mobs:ice_monster_egg"},rarity = 17}, + {items = {"mobs:grass_monster_egg"},rarity = 17}, + {items = {"mobs:rainforest_litter_monster_egg"},rarity = 17}, + {items = {"mobs:dry_grass_monster_egg"},rarity = 17}, + {items = {"mobs:silver_sand_monster_egg"},rarity = 17}, + {items = {"default:mese_crystal"},rarity = 2.833}, + {items = {"tutorial:geschenk_gold"}}, + } + } }) minetest.register_node("tutorial:geschenk_platin",{ description = "Gift (platinum)", is_ground_content = true, tiles = {"tutorial_geschenk_platin.png"}, groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3}, - drop = {}, + drop = { + max_items = 1, + items = { + {items = {"default:mese_crystal 2"},rarity = 2.5}, + {items = {"tutorial:geschenk_wool"},rarity = 3.333}, + {items = {"tutorial:geschenk_wool1"},rarity = 5}, + {items = {"tutorial:geschenk_wool2"},rarity = 10}, + {items = {"tutorial:geschenk_platin"}}, + } + } }) minetest.register_node("tutorial:geschenk_silber",{ description = "Gift (silver)", is_ground_content = true, tiles = {"tutorial_geschenk_silber.png"}, groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3}, - drop = {}, + drop = { + max_items = 1, + items = { + {items = {"tutorial:lightstone 2"},rarity = 2.222}, + {items = {"default:mese_crystal_fragment 4"},rarity = 2.5}, + {items = {"tutorial:arena_block"},rarity = 10}, + {items = {"tutorial:arena_glass"},rarity = 20}, + {items = {"tutorial:geschenk_silber"}}, + } + } }) minetest.register_node("tutorial:stone_with_titan", { description = "Titanium ore", @@ -238,7 +389,16 @@ minetest.register_node("tutorial:geschenk",{ is_ground_content = true, tiles = {"tutorial_geschenk.png"}, groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3}, - drop = {}, + drop = { + max_items = 1, + items = { + {items = {"tutorial:lightstone"},rarity = 3.22}, + {items = {"default:mese_crystal_fragment 2"},rarity = 3.625}, + {items = {"default:ice"},rarity = 4.833}, + {items = {"tutorial:dunklematerie4"},rarity = 9.667}, + {items = {"tutorial:geschenk"}}, + } + } }) minetest.register_node("tutorial:stone_with_admin", { description = "Admin ore", diff --git a/mods/tutorial/other.lua b/mods/tutorial/other.lua index ee521f8..702165f 100644 --- a/mods/tutorial/other.lua +++ b/mods/tutorial/other.lua @@ -316,7 +316,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) if a19 == 1 then d1 = d1+1 end - if a18 == 1 then + if a20 == 1 then d1 = d1+1 end if a21 == 1 then @@ -654,8 +654,8 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) end end) -local rg18 = {} -rg18.get_formspec = function(player, pos) +local rg13 = {} +rg13.get_formspec = function(player, pos) if player == nil then return end @@ -668,34 +668,35 @@ rg18.get_formspec = function(player, pos) .."label[0,1;II. 4. Ores]" .."label[0,1.3;You can find ores in the depth.]" .."label[0,1.6;Where to find ores:]" - .."label[0,1.9;Silver: y < -2]" - .."label[0,2.2;Mithril: y < -512]" - .."label[0,2.5;Tin: y < 8]" - .."label[0,2.8;Coal: y < 0]" - .."label[0,3.1;Iron: y < 2]" - .."label[0,3.4;Mese: y < -64]" - .."label[0,3.7;Gold: y < -64]" - .."label[0,4.0;Diamond: y < -128]" - .."label[0,4.3;Copper: y < ?]" - .."label[0,4.6;Black/White: y < 2]" - .."label[0,4.9;Uranium: y < -128]" - .."label[0,5.2;Admin: y < -500]" - .."label[0,5.5;Titan: y < -400]" - .."label[0,5.8;Rot/Blau: y < -100]" - .."label[0,6.1;Regnum: y < -600]" - .."label[0,6.4;Technic Uranium: y < -80, y > -300]" - .."label[0,6.7;Cromium: y < -100]" - .."label[0,7.0;Zinc: y < 2]" - .."label[0,7.3;Ruby/Sapphire: y < -300]" - .."label[0,7.6;Amethyst: y < -600]" - .."label[0,7.9;Shadow/Pearl: y < -900]" - .."label[0,8.2;Emerald: y < -1200]" - .."button[2,10; 2,0.5;rg17;<]" - .."button[4,10; 2,0.5;rg19;>]" + .."label[0,1.9;(default) Coal: y < 65]" + .."label[0,2.2;(default) Iron: y < 1]" + .."label[0,2.5;(default) Copper: y < -15]" + .."label[0,2.8;(default) Tin: y < -31]" + .."label[0,3.1;(default) Gold: y < -63]" + .."label[0,3.4;(default) Mese: y < -63]" + .."label[0,3.7;(default) Diamond: y < -127]" + .."label[0,4.0;(moreores) Tin: y < 9]" + .."label[0,4.3;(moreores) Silver: y < -1]" + .."label[0,4.6;(moreores) Mithril: y < -511]" + .."label[0,4.9;(technic) Zinc: y < 3]" + .."label[0,5.2;(technic) Cromium: y < -99]" + .."label[0,5.5;(technic) Uranium: -301 < y < -79]" + .."label[0,5.8;(regnum) Black/White: y < 2 (can be digged with battleaxe-lv.21)]" + .."label[0,6.1;(regnum) Uranium: y < -128 (can be digged with battleaxe-lv.46)]" + .."label[0,6.4;(regnum) Ruby/Sapphire: y < -300 (can be digged with battleaxe-lv.52)]" + .."label[0,6.7;(regnum) Amethyst: y < -600 (can be digged with battleaxe-lv.62)]" + .."label[0,7.0;(regnum) Shadow/Pearl: y < -900 (can be digged with battleaxe-lv.64)]" + .."label[0,7.3;(regnum) Emerald: y < -1200 (can be digged with battleaxe-lv.71)]" + .."label[0,7.6;(regnum) Admin: y < -500 (can be digged with battleaxe-lv.74)]" + .."label[0,7.9;(regnum) Regnum: y < -600 (can be digged with battleaxe-lv.74)]" + .."label[0,8.2;(regnum) Titan: y < -400 (can be digged with battleaxe-lv.110 and titanremover)]" + .."label[0,8.5;(regnum) Rot/Blau: y < -100 (can be digged with battleaxe-lv.122 and purplebattleaxe)]" + .."button[2,10; 2,0.5;rg12;<]" + .."button[4,10; 2,0.5;rg14;>]" return formspec end -local rg19 = {} -rg19.get_formspec = function(player, pos) +local rg14 = {} +rg14.get_formspec = function(player, pos) if player == nil then return end @@ -706,8 +707,8 @@ rg19.get_formspec = function(player, pos) .."listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF]" .."bgcolor[#080808BB;true]" .."label[0,1;II. 5. Armor, Battleaxes & Guns]" - .."label[0,1.3;There are over 120 differend battleaxes and armors]" - .."label[0,1.6;Here you can see witch kind of armor/battleaxe/gun you have to craft:]" + .."label[0,1.3;There are over 120 differend battleaxes, armors and guns]" + .."label[0,1.6;Here you can see witch kind of armor, battleaxe and gun you have to craft:]" .."label[0,1.9;(starter)]" .."label[0,2.2;mega lv.1-20]" .."label[0,2.5;cloud lv.1-20]" @@ -723,18 +724,23 @@ rg19.get_formspec = function(player, pos) .."label[0,5.5;legendary lv.1-6]" .."label[0,5.8;superlegendary]" .."label[0,6.1;regnum]" - .."label[0,6.4;There are differend modes for the superlegendary armor/battleaxe/gun]" - .."label[0,6.7;and also for the regnum:]" - .."label[0,7.0;With the armor you can jump higher and run faster,]" - .."label[0,7.3;with the battleaxe you can dig water/lava]" - .."label[0,7.3;and the gun will add thunder]" - .."label[0,7.6;The legendary battleaxe (or higher) will double some ores if you dig them.]" - .."button[2,10; 2,0.5;rg18;<]" - .."button[4,10; 2,0.5;rg20;>]" + .."label[0,6.4;The legendary battleaxe (or higher) will double some ores if you dig them.]" + .."label[0,6.7;There are differend modes for some battleaxes, armors and guns]" + .."label[0,7.0;With battleaxe Mode 2 you can dig water and lava]" + .."label[0,7.3;With battleaxe Mode 3 you can only hunt monster]" + .."label[0,7.6;With armor Mode 2 you can run faster]" + .."label[0,7.9;With armor Mode 3 you can jump higher]" + .."label[0,8.2;With armor Mode 4 you can run faster and jump higher]" + .."label[0,8.5;With gun Mode 2 you can only make damage to monsters]" + .."label[0,8.8;With gun Mode 3 you will also add thunder]" + .."label[0,9.1;For changing the mode of a tool (also Wallplacer and mining Drill),]" + .."label[0,9.4;you have to press the right mouse and sneak (don't point at a node)]" + .."button[2,10; 2,0.5;rg13;<]" + .."button[4,10; 2,0.5;rg15;>]" return formspec end -local rg20 = {} -rg20.get_formspec = function(player, pos) +local rg15 = {} +rg15.get_formspec = function(player, pos) if player == nil then return end @@ -745,184 +751,16 @@ rg20.get_formspec = function(player, pos) .."listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF]" .."bgcolor[#080808BB;true]" .."label[0,1;II. 6. Chat commands]" - .."label[0,1.3;/admin for all admin tools]" - .."label[0,1.6;/regnum for all regnum things]" + .."label[0,1.3;/admin for all admin things (give priv needed)]" + .."label[0,1.6;/regnum for all regnum things (give priv needed)]" .."label[0,1.9;/rank to see your rank]" - .."button[2,10; 2,0.5;rg19;<]" + .."button[2,10; 2,0.5;rg14;<]" + .."button[4,10; 2,0.5;rg16;>]" return formspec end -minetest.register_on_dignode(function(pos, node, player) - if player == nil then - return - end - local name = player:get_player_name() - local inv = player:get_inventory() - if node.name == "tutorial:geschenk_dragon" then - local x = math.random(0,15) - if x == 8 then - inv:set_size("dgon", 1) - local dgon = inv:get_stack("dgon", 1):get_count() - if dgon == 0 then - inv:add_item("main", "tutorial:dragon_schluessel") - inv:add_item("dgon", "default:dirt") - end - else - inv:add_item("main", "default:coal_lump 20") - end - end - if node.name == "tutorial:geschenk_tortoise" then - local x = math.random(0,15) - if x == 8 then - inv:set_size("ttoise", 1) - local dgon = inv:get_stack("ttoise", 1):get_count() - if dgon == 0 then - inv:add_item("main", "tutorial:tortoise_schluessel") - inv:add_item("ttoise", "default:dirt") - end - else - inv:add_item("main", "default:coal_lump 20") - end - end - if node.name == "tutorial:geschenk_gem" then - local x = math.random(0,8) - if x == 2 then - inv:add_item("main", "tutorial:gem_fragment") - elseif x == 5 then - inv:add_item("main", "tutorial:geschenk_legend") - elseif x == 4 then - inv:add_item("main", "tutorial:geschenk_legend") - end - end - if node.name == "tutorial:geschenk_gem2" then - local x = math.random(0,8) - if x == 2 then - inv:add_item("main", "tutorial:gem_fragment2") - elseif x == 5 then - inv:add_item("main", "tutorial:geschenk_legend") - elseif x == 4 then - inv:add_item("main", "tutorial:geschenk_legend") - end - end - if node.name == "tutorial:geschenk" then - local x = math.random(1, 29) - if x < 10 then - inv:add_item("main", "tutorial:lightstone 1") - elseif x < 18 then - inv:add_item("main", "default:mese_crystal_fragment 2") - elseif x < 24 then - inv:add_item("main", "default:ice") - elseif x < 27 then - inv:add_item("main", "tutorial:dunklematerie4") - else - inv:add_item("main", "tutorial:geschenk") - end - end - if node.name == "tutorial:geschenk_silber" then - local x = math.random(1, 20) - if x < 10 then - inv:add_item("main", "tutorial:lightstone 2") - elseif x < 18 then - inv:add_item("main", "default:mese_crystal_fragment 4") - elseif x < 20 then - inv:add_item("main", "tutorial:arena_block") - else - inv:add_item("main", "tutorial:arena_glass") - end - end - if node.name == "tutorial:geschenk_gold" then - local x = math.random(1, 17) - if x < 2 then - inv:add_item("main", "mobs:dirt_monster_egg") - elseif x < 3 then - inv:add_item("main", "mobs:stone_monster_egg") - elseif x < 4 then - inv:add_item("main", "mobs:sand_monster_egg") - elseif x < 5 then - inv:add_item("main", "mobs:desert_sand_monster_egg") - elseif x < 6 then - inv:add_item("main", "mobs:snow_monster_egg") - elseif x < 7 then - inv:add_item("main", "mobs:desert_stone_monster_egg") - elseif x < 8 then - inv:add_item("main", "mobs:ice_monster_egg") - elseif x < 9 then - inv:add_item("main", "mobs:grass_monster_egg") - elseif x < 10 then - inv:add_item("main", "mobs:rainforest_litter_monster_egg") - elseif x < 11 then - inv:add_item("main", "mobs:dry_grass_monster_egg") - elseif x < 12 then - inv:add_item("main", "mobs:silver_sand_monster_egg") - else - inv:add_item("main", "default:mese_crystal") - end - end - if node.name == "tutorial:geschenk_platin" then - local x = math.random(1, 10) - if x < 5 then - inv:add_item("main", "default:mese_crystal 2") - elseif x < 8 then - inv:add_item("main", "tutorial:geschenk_wool") - elseif x < 10 then - inv:add_item("main", "tutorial:geschenk_wool1") - else - inv:add_item("main", "tutorial:geschenk_wool2") - end - end - if node.name == "tutorial:geschenk_wool1" then - local x = math.random(1, 6) - if x == 1 then - inv:add_item("main", "wool:yellow 2") - elseif x == 2 then - inv:add_item("main", "wool:white 2") - elseif x == 3 then - inv:add_item("main", "wool:violet 2") - elseif x == 4 then - inv:add_item("main", "wool:red 2") - elseif x == 5 then - inv:add_item("main", "wool:orange 2") - else - inv:add_item("main", "wool:blue 2") - end - end - if node.name == "tutorial:geschenk_wool2" then - local x = math.random(1, 15) - if x == 1 then - inv:add_item("main", "wool:yellow 3") - elseif x == 2 then - inv:add_item("main", "wool:white 3") - elseif x == 3 then - inv:add_item("main", "wool:violet 3") - elseif x == 4 then - inv:add_item("main", "wool:red 3") - elseif x == 5 then - inv:add_item("main", "wool:pink 3") - elseif x == 6 then - inv:add_item("main", "wool:orange 3") - elseif x == 7 then - inv:add_item("main", "wool:magenta 3") - elseif x == 8 then - inv:add_item("main", "wool:grey 3") - elseif x == 9 then - inv:add_item("main", "wool:green 3") - elseif x == 10 then - inv:add_item("main", "wool:dark_grey 3") - elseif x == 11 then - inv:add_item("main", "wool:dark_green 3") - elseif x == 12 then - inv:add_item("main", "wool:cyan 3") - elseif x == 13 then - inv:add_item("main", "wool:brown 3") - elseif x == 14 then - inv:add_item("main", "wool:blue 3") - else - inv:add_item("main", "wool:black 3") - end - end -end) -local rg14 = {} -rg14.get_formspec = function(player, pos) - if player == nil then +local rg16 = {} +rg16.get_formspec = function(player, pos) + if player == nil then return end formspec = "size[9,10.3]" @@ -931,22 +769,27 @@ rg14.get_formspec = function(player, pos) .."background[9,10.3;1,1;gui_formbg.png;true]" .."listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF]" .."bgcolor[#080808BB;true]" - .."label[0,1;I. 12. Gems]" - .."label[0,1.3;Use the gem inventory to get home and fast privs.]" - .."label[0,1.6;How to use Gems:]" - .."label[0,1.9;1. Craft a dragon in the DNA craft.]" - .."label[0,2.2;2. Craft a dragon crystal.]" - .."label[0,2.5;3. Place the drgagon crystal in the dragon inventory.]" - .."label[0,2.8;4. Collect gifts (gem).]" - .."label[0,3.1;5. Get gem fragents from then gift (gem).]" - .."label[0,3.4;6. Craft in the gem craft a magic gem.]" - .."label[0,3.7;7. Place the magic gems in the right order in the gems inventory.]" - .."button[2,10; 2,0.5;rg13;<]" - .."button[4,10; 2,0.5;rg21;>]" + .."label[0,1;II. 7. Keys]" + .."label[0,1.3;Bagkey: can be crafted with grey coins]" + .."label[0,1.6;Armorkey: can be crafted with a blue and a red ore]" + .."label[0,1.9;Levelkey: can be got as a reward for green level 50]" + .."label[0,2.2;Craftkey: can be crafted with purple coins]" + .."label[0,2.5;Legendkey: can be got as a reward for grey level 100]" + .."label[0,2.8;Regnumkey: can be crafted with a regnum ore]" + .."label[0,3.1;Pixeled Regnumkey: can be crafted with a pixeled regnum ore (make it in the regnum craft)]" + .."label[0,3.4;Dragonkey: can be got from a gift (dragon)]" + .."label[0,3.7;Foxkey: can be got from the fox after some time]" + .."label[0,4.0;Tortoisekey: can be got from a gift (tortoise)]" + .."label[0,4.3;Knightkey: can be got as a reward for all artifacts]" + .."label[0,4.6;Crystalkey: can be got as a reward for all medallions]" + .."label[0,4.9;Goldenkey: can be got as a reward for yellow level 100]" + .."label[0,5.2;Cookingkey: can be crafted with cyan coins]" + .."label[0,5.5;Protectionkey: can be got as a reward for all trophys]" + .."button[2,10; 2,0.5;rg15;<]" return formspec end -local rg15 = {} -rg15.get_formspec = function(player, pos) +local rg10 = {} +rg10.get_formspec = function(player, pos) if player == nil then return end @@ -974,12 +817,12 @@ rg15.get_formspec = function(player, pos) .."label[0,5.5;Colored wool gift lv.2: every wool]" .."label[0,5.8;Gift (dragon): coal lump, dragon key]" .."label[0,6.1;Gift (gem): gift (legendary), gem fragment]" - .."button[2,10; 2,0.5;rg25;<]" - .."button[4,10; 2,0.5;rg16;>]" + .."button[2,10; 2,0.5;rg9;<]" + .."button[4,10; 2,0.5;rg11;>]" return formspec end -local rg16 = {} -rg16.get_formspec = function(player, pos) +local rg11 = {} +rg11.get_formspec = function(player, pos) if player == nil then return end @@ -995,18 +838,18 @@ rg16.get_formspec = function(player, pos) .."label[0,1.9;You can get water and sky animals from the dna gift.]" .."label[0,2.2;There are turtles, sharks, gulls and many other.]" .."label[0,2.5;If you use the DNA craft you can get pets.]" - .."label[0,2.8;The dog and the cat will kill monsters and collect the wrapping paper]" + .."label[0,2.8;The dog and the cat will kill monsters and collect the wrapping paper and DNA strings]" .."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.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;>]" + .."label[0,4.3;You can change the color of the pets and they can follow you.]" + .."button[2,10; 2,0.5;rg10;<]" + .."button[4,10; 2,0.5;rg12;>]" return formspec end -local rg17 = {} -rg17.get_formspec = function(player, pos) +local rg12 = {} +rg12.get_formspec = function(player, pos) if player == nil then return end @@ -1036,81 +879,12 @@ rg17.get_formspec = function(player, pos) .."label[0,6.1;Look in the xp guide for your xp and how much xp you need.]" .."label[0,6.4;If you reach a new level you will get a reward]" .."label[0,6.7;Look in Xp items for the reward]" - .."button[2,10; 2,0.5;rg16;<]" - .."button[4,10; 2,0.5;rg18;>]" - return formspec -end -local rg10 = {} -rg10.get_formspec = function(player, pos) - if player == nil then - return - end - formspec = "size[9,10.3]" - .."button[0,0;2,0.5;inven;Back]" - .."button[2,0;2,0.5;main;Main]" - .."background[9,10.3;1,1;gui_formbg.png;true]" - .."listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF]" - .."bgcolor[#080808BB;true]" - .."label[0,1;I. 8. Achievements]" - .."label[0,1.3;Here you can see your achievement]" - .."label[0,1.6;If you have all 50 achievements,]" - .."label[0,1.9;you will have all Regnum things and you have completed the Regnum Game]" - .."label[0,2.2;If you have 25 or 50 achivements you will get a reward]" - .."label[0,2.5;There is also one spezial achievment.]" - .."label[0,2.8;You will get it for one year Regnum.]" - .."label[0,3.1;How to use Achievements:]" - .."label[0,3.4;1. Craft the needed items]" - .."label[0,3.7;2. Place them at the right place in the inventory]" - .."label[0,4.0;3. Get 25 or 50 achievements]" - .."label[0,4.3;4. Presse 'reward']" - .."label[0,4.6;5. Presse also 'spezial']" - .."button[2,10; 2,0.5;rg9;<]" - .."button[4,10; 2,0.5;rg11;>]" - return formspec -end -local rg11 = {} -rg11.get_formspec = function(player, pos) - if player == nil then - return - end - formspec = "size[9,10.3]" - .."button[0,0;2,0.5;inven;Back]" - .."button[2,0;2,0.5;main;Main]" - .."background[9,10.3;1,1;gui_formbg.png;true]" - .."listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF]" - .."bgcolor[#080808BB;true]" - .."label[0,1;I. 9. Regnum Guide]" - .."label[0,1.3;You can read something about the subgame]" - .."label[0,1.6;How to use Regnum Guide:]" - .."label[0,1.9;1. Read]" - .."button[2,10; 2,0.5;rg10;<]" - .."button[4,10; 2,0.5;rg12;>]" - return formspec -end -local rg12 = {} -rg12.get_formspec = function(player, pos) - if player == nil then - return - end - formspec = "size[9,10.3]" - .."button[0,0;2,0.5;inven;Back]" - .."button[2,0;2,0.5;main;Main]" - .."background[9,10.3;1,1;gui_formbg.png;true]" - .."listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF]" - .."bgcolor[#080808BB;true]" - .."label[0,1;I. 10. Awards]" - .."label[0,1.3;Here you can see your awards]" - .."label[0,1.6;If you have all awards, you will get the 'all awards' achievement.]" - .."label[0,1.9;How to use Awards:]" - .."label[0,2.2;1. Dig for the ores]" - .."label[0,2.5;2. For the '???' awards you have to die next to a block]" - .."label[0,2.8;3. Find out which block]" .."button[2,10; 2,0.5;rg11;<]" .."button[4,10; 2,0.5;rg13;>]" return formspec end -local rg13 = {} -rg13.get_formspec = function(player, pos) +local rg7 = {} +rg7.get_formspec = function(player, pos) if player == nil then return end @@ -1120,75 +894,19 @@ rg13.get_formspec = function(player, pos) .."background[9,10.3;1,1;gui_formbg.png;true]" .."listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF]" .."bgcolor[#080808BB;true]" - .."label[0,1;I. 11. Xp items]" - .."label[0,1.3;Here you can get your rewards if you reach a new level.]" - .."label[0,1.6;How to use Xp items:]" - .."label[0,1.9;1. Reach a new level]" - .."label[0,2.2;2. Take coins/max level blocks/keys/battleaxes/xp blocks from the 1st page]" - .."label[0,2.5;3. Take green level blocks from the 2nd page]" - .."label[0,2.8;4. Take red/blue level blocks from the 3rd page]" - .."label[0,3.1;5. Take grey level blocks from the 4th page]" - .."label[0,3.4;6. Take yellow level blocks from the 5th page]" - .."label[0,3.7;7. Take cyan level blocks from the 6th page]" - .."button[2,10; 2,0.5;rg12;<]" - .."button[4,10; 2,0.5;rg14;>]" - return formspec -end -local rg8 = {} -rg8.get_formspec = function(player, pos) - if player == nil then - return - end - formspec = "size[9,10.3]" - .."button[0,0;2,0.5;inven;Back]" - .."button[2,0;2,0.5;main;Main]" - .."background[9,10.3;1,1;gui_formbg.png;true]" - .."listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF]" - .."bgcolor[#080808BB;true]" - .."label[0,1;I. 6. Craft Guide]" - .."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.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]" - .."label[0,3.4;2. Click on the arrows below to switch to an other page]" - .."label[0,3.7;3. Click on the arrows below 'main' to see the last]" - .."label[0,4.0; crafting you use]" - .."label[0,4.3;4. Click on the arrows above and below the item to see]" - .."label[0,4.6; differend craftings for the same things]" - .."label[0,4.9;5. Click on the 'Regnum' for armor/battleaxe/gun crafts]" - .."button[2,10; 2,0.5;rg7;<]" - .."button[4,10; 2,0.5;rg9;>]" - return formspec -end -local rg9 = {} -rg9.get_formspec = function(player, pos) - if player == nil then - return - end - formspec = "size[9,10.3]" - .."button[0,0;2,0.5;inven;Back]" - .."button[2,0;2,0.5;main;Main]" - .."background[9,10.3;1,1;gui_formbg.png;true]" - .."listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF]" - .."bgcolor[#080808BB;true]" - .."label[0,1;I. 7. Crystals]" - .."label[0,1.3;Here you can get legendary fire balls]" - .."label[0,1.6;If you dig a legendary gift you can get a legendary crystal]" - .."label[0,1.9;With every new cristal you get, get can get better fire balls]" - .."label[0,2.2;After some time you will get the fire ball]" - .."label[0,2.5;If you have a crystalkey,the time will be halved]" - .."label[0,2.8;How to use Cristals:]" - .."label[0,3.1;1. Craft legendary gifts and dig them]" - .."label[0,3.4;2. If you have a cristal,click on a]" - .."label[0,3.7; ball damage, thunder damage and thunder length level]" - .."label[0,4.0;3. Click on create]" - .."label[0,4.3;4. Get the crystalkey]" - .."label[0,4.6;5. wait (seconds above 'crate') and you will get a fire ball]" - .."button[2,10; 2,0.5;rg8;<]" - .."button[4,10; 2,0.5;rg10;>]" + .."label[0,1;I. 5. Quests]" + .."label[0.0,1.3;a) Awards]" + .."label[0.2,1.6;Here you can see your awards.]" + .."label[0.2,1.9;Dig some ores to get an award.]" + .."label[0.2,2.2;If you have all awards, you will get the 'all awards' achievement.]" + .."label[0.0,2.5;b) Achievements]" + .."label[0.2,2.8;Here you can see your achievement]" + .."label[0.2,3.1;If you have all 50 achievements,]" + .."label[0.2,3.4;you will have all Regnum things and you have completed the Regnum Game]" + .."label[0.2,3.7;If you have 25 or 50 achivements you will get a reward]" + .."label[0.2,4.0;You will get spezial achievments for every aniversary.]" + .."button[2,10; 2,0.5;rg6;<]" + .."button[4,10; 2,0.5;rg8;>]" return formspec end local xpi0 = {} @@ -1211,6 +929,7 @@ xpi0.get_formspec = function(player, pos) return 0 end, }) + xpi01_inv:set_size("xpi01", 15) player_inv:set_size("xpi01", 15) xpi01_inv:set_size("xpi02", 15) @@ -1428,6 +1147,47 @@ xpi3.get_formspec = function(player, pos) .."button[9,12;2,0.5;xpi4;>]" return formspec end +local rg4 = {} +rg4.get_formspec = function(player, pos) + if player == nil then + return + end + formspec = "size[9,10.3]" + .."button[0,0;2,0.5;inven;Back]" + .."button[2,0;2,0.5;main;Main]" + .."background[9,10.3;1,1;gui_formbg.png;true]" + .."listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF]" + .."bgcolor[#080808BB;true]" + .."label[0,1;I. 2. Crafting]" + .."label[0,1.3;There are 11 differend crafts:]" + .."label[0,1.6;The '4x4 craft' and 5x5 to craft in a 4x4 and 5x5 field]" + .."label[0,1.9;Look in the Craft Guide which item you can craft in 4x4 and 5x5]" + .."label[0,2.2;The Regnum craft to craft a pixeled regnum]" + .."label[0,2.5;You will need regnum pixels. (You can get them from Regnum gifts)]" + .."label[0,2.8;The DNA craft to get mobs and ??? monster spawn-egg]" + .."label[0,3.1;You will need dna strings for pets (You can get them from monsters) ]" + .."label[0,3.4;and big dna for ???-monster spawn-egg. (You can craft them in the 5x5 craft)]" + .."label[0,3.7;If you press 'Mob Position' you can see the positions of your pets.]" + .."label[0,4.0;The Gem craft to get magic gems]" + .."label[0,4.3;You will need gem fragments and uranium ingots]" + .."label[0,4.6;The Cooking craft, works like furnaces but with (regnum) uranium (every level) as fuel]" + .."label[0,4.9;If you have the Cookingkey you will get more fuel.]" + .."label[0,5.2;The Mine craft to level your mining laser/drill up.]" + .."label[0,5.5;You will need the mining laser/drill and green coins.]" + .."label[0,5.8;The Medallion craft to get medallions]" + .."label[0,6.1;You will need Medallion pieces.(You will get them if you run around)]" + .."label[0,6.4;The Crystal craft to get crystalbottles]" + .."label[0,6.7;You have to wait 500s to get two crystallbottles.]" + .."label[0,7.0;You will get one bottle more for each crystal you have]" + .."label[0,7.3;and if you have a pixeled regnum key you only have to wait 250s.]" + .."label[0,7.6;The Trophy craft to get trophys]" + .."label[0,7.9;You will need Tears. (You can get them from monsters spawned by the ??? monster spawn-egg)]" + .."label[0,8.2;The Reverse craft to get your items back, if you craft the wrong one.]" + .."label[0,8.5;You can only use some items.]" + .."button[2,10; 2,0.5;rg3;<]" + .."button[4,10; 2,0.5;rg5;>]" + return formspec +end local rg6 = {} rg6.get_formspec = function(player, pos) if player == nil then @@ -1439,41 +1199,27 @@ rg6.get_formspec = function(player, pos) .."background[9,10.3;1,1;gui_formbg.png;true]" .."listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF]" .."bgcolor[#080808BB;true]" - .."label[0,1;I. 4. Crafting]" - .."label[0,1.3;There are 10 differend crafts:]" - .."label[0,1.6;The '4x4 craft' to craft in a 4x4 field]" - .."label[0,1.9;The '5x5 craft' to craft in a 5x5 field]" - .."label[0,2.2;The Regnum craft to craft a pixeled regnum]" - .."label[0,2.5;The DNA craft to get mobs]" - .."label[0,2.8;The Gem craft to get magic gems]" - .."label[0,3.1;The Mine craft to level you mining laser/drill up.]" - .."label[0,3.4;The Cooking craft, works like furnaces but without fuel]" - .."label[0,3.7;The Medallion craft to get medallions]" - .."label[0,4.0;The Crystal craft to get crystalbottles]" - .."label[0,4.3;The Trophy craft to get trophys]" - .."label[0,4.6;Look in the Craft Guide which item you can craft in 4x4 and 5x5]" - .."label[0,4.9;For Regnum craft you need regnum pixel.You can get them from Regnum gifts.]" - .."label[0,5.2;For DNA craft you need dna strings.You can get them from monsters.]" - .."label[0,5.5;You will get an animal spawn-egg if this animal has 100%.]" - .."label[0,5.8;For Gem craft you need gem fragments and uranium ingots]" - .."label[0,6.1;For Cooking use uranium to get fuel]" - .."label[0,6.4;For Mine craft you need the mining laser/drill and green coins]" - .."label[0,6.7;to level you mining laser/drill up.]" - .."label[0,7.0;For Medallion craft you need Medallions.You will get them if you run around.]" - .."label[0,7.3;For Crystal craft you have to wait.]" - .."label[0,7.6;For each crystal you have, the crafting will take 200s less.]" - .."label[0,7.9;For Trophy craft you need Tears.You can get them from monsters in the same color.]" - .."label[0,8.2;How to use Crafting:]" - .."label[0,8.5;1. For 4x4, 5x5, Regnum, Gem, Medallion craft and Cooking you need a key]" - .."label[0,8.8;2. Craft the key and put the needed items in the fields]" - .."label[0,9.1;3. Press 'craft/use/build DNA']" + .."label[0,1;I. 4. Spezial]" + .."label[0.0,1.3;a) Crystals]" + .."label[0.2,1.6;Here you can get legendary fire balls]" + .."label[0.2,1.9;If you dig a legendary gift you can get a legendary crystal]" + .."label[0.2,2.2;With every new cristal you get, get can get better fire balls]" + .."label[0.2,2.5;After some time you will get the fire ball]" + .."label[0.2,2.8;If you have a crystalkey,the time will be halved]" + .."label[0.0,3.1;b) Xp items]" + .."label[0.2,3.4;Here you can get your rewards if you reach a new level.]" + .."label[0.2,3.7;You will also get a block for every level.]" + .."label[0.0,4.0;c) Gems]" + .."label[0.2,4.3;You have to craft some magic gems in the gem craft.]" + .."label[0.2,4.6;If you have 5, you will get the home priv.]" + .."label[0.2,4.9;If you have 10, you will get the fast priv.]" .."button[2,10; 2,0.5;rg5;<]" .."button[4,10; 2,0.5;rg7;>]" return formspec end -local rg7 = {} -rg7.get_formspec = function(player, pos) - if player == nil then +local rg8 = {} +rg8.get_formspec = function(player, pos) + if player == nil then return end formspec = "size[9,10.3]" @@ -1482,19 +1228,40 @@ rg7.get_formspec = function(player, pos) .."background[9,10.3;1,1;gui_formbg.png;true]" .."listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF]" .."bgcolor[#080808BB;true]" - .."label[0,1;I. 5. Skins]" - .."label[0,1.3;Here you can change your skin]" - .."label[0,1.6;Click on one skin to change your skin]" - .."label[0,1.9;If you have the pixeled Regnum key you can use the see-through skin]" - .."label[0,2.2;If you have the knight Regnum key you can use the knight skins]" - .."label[0,2.5;How to use Skins:]" - .."label[0,2.8;1. Click on one skin]" - .."label[0,3.1;2. Craft the Pixeled Regnum key]" - .."label[0,3.4;3. Press 'see-through skin']" - .."label[0,3.7;4. Craft the Knight key]" - .."label[0,4.0;5. Press 'knight']" - .."button[2,10; 2,0.5;rg6;<]" - .."button[4,10; 2,0.5;rg8;>]" + .."label[0,1;I. 6. Color items]" + .."label[0.0,1.3;a) Artifacts]" + .."label[0.2,1.6;If you run around you will get artifacts]" + .."label[0.2,1.9;Collect 71 artifacts to get the Knightkey as a reward]" + .."label[0.0,2.2;b) Medallion]" + .."label[0.2,2.5;craft medallions in the medallion craft]" + .."label[0.2,2.8;Collect 7 medallions to get the Crystalkey as a reward]" + .."label[0.0,3.1;c) Treasures]" + .."label[0.2,3.4;get treasures from the fox]" + .."label[0.2,3.7;Collect 6 treasures to get the legend stick as a reward]" + .."label[0.0,4.0;d) Trophys]" + .."label[0.2,4.3;get trophys in the trophy craft]" + .."label[0.2,4.6;Collect 24 trothys to get the Protectionkey as a reward]" + .."button[2,10; 2,0.5;rg7;<]" + .."button[4,10; 2,0.5;rg9;>]" + return formspec +end +local rg9 = {} +rg9.get_formspec = function(player, pos) + if player == nil then + return + end + formspec = "size[9,10.3]" + .."button[0,0;2,0.5;inven;Back]" + .."button[2,0;2,0.5;main;Main]" + .."background[9,10.3;1,1;gui_formbg.png;true]" + .."listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF]" + .."bgcolor[#080808BB;true]" + .."label[0,1;I. 7. Music]" + .."label[0,1.3;Enable Background Music.]" + .."label[0,1.6;Choose Themes to be randomly selected]" + .."label[0,1.9;and listen to the Regnum Themes.]" + .."button[2,10; 2,0.5;rg8;<]" + .."button[4,10; 2,0.5;rg10;>]" return formspec end local rg2 = {} @@ -1510,30 +1277,21 @@ rg2.get_formspec = function(player, pos) .."bgcolor[#080808BB;true]" .."label[0,1; CONTENS]" .."label[0,1.3; I. Inventory]" - .."label[0,1.6; 1. Bags]" - .."label[0,1.9; 2. Armor]" - .."label[0,2.2; 3. XP Guide]" - .."label[0,2.5; 4. Crafting]" - .."label[0,2.8; 5. Skins]" - .."label[0,3.1; 6. Craft Guide]" - .."label[0,3.4; 7. Crystals]" - .."label[0,3.7; 8. Achievements]" - .."label[0,4.0; 9. Regnum guide]" - .."label[0,4.3; 10. Awards]" - .."label[0,4.6; 11. Xp items]" - .."label[0,4.9; 12. Gems]" - .."label[0,5.2; 13. Artifacts]" - .."label[0,5.5; 14. Medallion]" - .."label[0,5.8; 15. Treasures]" - .."label[0,6.1; 16. Trophys]" - .."label[0,6.4; 17. Music]" - .."label[0,6.7; II. Game]" - .."label[0,7.0; 1. Gifts]" - .."label[0,7.3; 2. Mobs]" - .."label[0,7.6; 3. Xp & Level]" - .."label[0,7.9; 4. Ores]" - .."label[0,8.2; 5. Armor, Battleaxes & Guns]" - .."label[0,8.5; 6. Chat commands]" + .."label[0,1.6; 1. Equipment]" + .."label[0,1.9; 2. Crafting]" + .."label[0,2.2; 3. Help]" + .."label[0,2.5; 4. Spezial]" + .."label[0,2.8; 5. Quests]" + .."label[0,3.1; 6. Color items]" + .."label[0,3.4; 7. Music]" + .."label[0,3.7; II. Game]" + .."label[0,4.0; 1. Gifts]" + .."label[0,4.3; 2. Mobs]" + .."label[0,4.6; 3. Xp & Level]" + .."label[0,4.9; 4. Ores]" + .."label[0,5.2; 5. Armor, Battleaxes & Guns]" + .."label[0,5.5; 6. Chat commands]" + .."label[0,5.8; 7. Keys]" .."button[2,10; 2,0.5;rg1;<]" .."button[4,10; 2,0.5;rg3;>]" return formspec @@ -1549,52 +1307,33 @@ rg3.get_formspec = function(player, pos) .."background[9,10.3;1,1;gui_formbg.png;true]" .."listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF]" .."bgcolor[#080808BB;true]" - .."label[0,1;I. 1. Bags]" - .."label[0,1.3;You can use bags to take more things with you.]" - .."label[0,1.6;You can have up to eight bags, every bag has eight level.]" - .."label[0,1.9;Every level for a bag give you more space for it.]" - .."label[0,2.2;If you want more then four bags you need also a bagkey.]" - .."label[0,2.5;With each new bagkey level you can get one more bag.]" - .."label[0,2.8;How to use bags:]" - .."label[0,3.1;1. You have to craft a bag (look in the craft guide how).]" - .."label[0,3.4;2. Put the bag in one of the fields and use the button below.]" - .."label[0,3.7;3. You can put your items in the new inventory.]" - .."label[0,4.0;4. If you put the bag in the lower field and you have no bagkey]" - .."label[0,4.3; you can not use it]" - .."label[0,4.6;5. You can use shift to move items quickly (as you use for chests)]" + .."label[0,1;I. 1. Equipment]" + .."label[0.0,1.3;a) Skins]" + .."label[0.2,1.6;Here you can change your skin]" + .."label[0.2,1.9;Click on one skin to change your skin]" + .."label[0.2,2.2;If you have the pixeled Regnum key you can use the see-through skin]" + .."label[0.2,2.5;If you have the knight Regnum key you can use the knight skins]" + .."label[0.0,2.8;b) Bags]" + .."label[0.2,3.1;You can use bags to take more things with you.]" + .."label[0.2,3.4;You can have up to eight bags, every bag has eight level.]" + .."label[0.2,3.7;Craft a bag (look in the craft guide how).]" + .."label[0.2,4.0;Put the bag in one of the fields and use the button below.]" + .."label[0.2,4.3;You can put your items in the new inventory.]" + .."label[0.2,4.6;Every level for a bag give you more space for it.]" + .."label[0.2,4.9;If you want more then four bags you need also a bagkey.]" + .."label[0.2,5.2;With each new Bagkey level you can get one more bag.]" + .."label[0.0,5.5;c) Armor]" + .."label[0.2,5.8;Craft some armor (look in the craft guide how).]" + .."label[0.2,6.1;You can use armor to save you from monsters.]" + .."label[0.2,6.4;There are 5 differend armor parts.]" + .."label[0.2,6.7;Helmets, chestplates, leggings, boots and shields]" + .."label[0.2,7.0;If you have afull regnum armor you can't burn or drown.]" + .."label[0.2,7.3;If you have the armor key you can make your armor invisible to other.]" + .."label[0.2,7.6;If you have the protection key you will have a higher protection.]" .."button[2,10; 2,0.5;rg2;<]" .."button[4,10; 2,0.5;rg4;>]" return formspec end -local rg4 = {} -rg4.get_formspec = function(player, pos) - if player == nil then - return - end - formspec = "size[9,10.3]" - .."button[0,0;2,0.5;inven;Back]" - .."button[2,0;2,0.5;main;Main]" - .."background[9,10.3;1,1;gui_formbg.png;true]" - .."listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF]" - .."bgcolor[#080808BB;true]" - .."label[0,1;I. 2. Armor]" - .."label[0,1.3;You can use armor to save you from monsters.]" - .."label[0,1.6;There are 5 differend armor parts.]" - .."label[0,1.9;Make your armor invisible to other when you have the armorkey.]" - .."label[0,2.2;Some armor will also save you from lava and fire]" - .."label[0,2.5;and there is also armor that regenerate you.]" - .."label[0,2.8;Get the Protectionkey to get a save bonus]" - .."label[0,3.1;How to use Armor:]" - .."label[0,3.4;1. You have to craft some armor (look in the craft guide how).]" - .."label[0,3.7;2. You can see five fields on the left.]" - .."label[0,4.0;3. You have to put the helmet at the top and the boots at the bottom.(like in minecraft)]" - .."label[0,4.3;4. You have to put the shield in the right field]" - .."label[0,4.6;5. Craft the armor key and than you can press 'armor off']" - .."label[0,4.9;6. Craft the protectionkey to get a save bonus]" - .."button[2,10; 2,0.5;rg3;<]" - .."button[4,10; 2,0.5;rg5;>]" - return formspec -end local rg5 = {} rg5.get_formspec = function(player, pos) if player == nil then @@ -1606,16 +1345,22 @@ rg5.get_formspec = function(player, pos) .."background[9,10.3;1,1;gui_formbg.png;true]" .."listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF]" .."bgcolor[#080808BB;true]" - .."label[0,1;I. 3. XP Guide]" - .."label[0,1.3;If you dig uranium/red ore/blue ore/Xp block/Xp Block (yellow)]" - .."label[0,1.6;or you place a Crystalbottle, you will get xp.]" - .."label[0,1.9;Use the Xp Guide to see how many xp you have]" - .."label[0,2.2;If you want to see how many xp you need for the next level]" - .."label[0,2.5;you have to use the xp key]" - .."label[0,2.8;There are 6 differend kinds of xp.]" - .."label[0,3.1;How to use Xp Guide:]" - .."label[0,3.4;1. On the left you can see how many xp you have]" - .."label[0,3.7;2. Craft the xp key and than you can press 'xp green/red/blue/grey/yellow/cyan you need']" + .."label[0,1;I. 3. Help]" + .."label[0.0,1.3;a) Regnum Guide]" + .."label[0.2,1.6;You can read something about the Regnum Game :)]" + .."label[0.0,1.9;b) Craft Guide]" + .."label[0.2,2.2;Here you can see how to craft items]" + .."label[0.2,2.5;Click on one item to see the crafting]" + .."label[0.2,2.8;You can also see 4x4 and 5x5 craftings,]" + .."label[0.2,3.1;You can see the craftings for battleaxes/armor/gun]" + .."label[0.2,3.4;in the Regnum Craft Guide.]" + .."label[0.0,3.7;c) Xp Guide]" + .."label[0.2,4.0;If you dig uranium (not from the technic mod), red ore, blue ore,]" + .."label[0.2,4.3;Xp block (grey), Xp Block (yellow) or you place a Crystalbottle, you will get xp.]" + .."label[0.2,4.6;There are 6 differend kinds of xp.]" + .."label[0.2,4.9;Use the Xp Guide to see how many xp you have]" + .."label[0.2,5.2;If you want to see how many xp you need for the next level]" + .."label[0.2,5.5;you will need the Xpkey]" .."button[2,10; 2,0.5;rg4;<]" .."button[4,10; 2,0.5;rg6;>]" return formspec @@ -1633,59 +1378,15 @@ rg.get_formspec = function(player, pos) .."bgcolor[#080808BB;true]" .."label[0,1;This is the first page of the Regnum guide.]" .."label[0,1.3;Here you can get some basic informations]" - .."label[0,1.6;about my subgame:Regnum]" - .."label[0,1.9;I develop the Regnum subgame over the last 5 years]" + .."label[0,1.6;about my game: Regnum]" + .."label[0,1.9;I develop the Regnum game over the last 8 years]" .."label[0,2.2;Thanks to:]" - .."label[0,2.5;NightmareLP who build a mod for my subgame]" + .."label[0,2.5;NightmareLP who build a mod for my game]" .."label[0,2.8;et77 who had some great ideas]" - .."label[0,3.1;wuschel1912 who tests the subgame]" + .."label[0,3.1;wuschel1912 who tested the game]" .."button[4,10;2,0.5;rg2;>]" return formspec end -minetest.register_on_dignode(function(pos, node, player) - if player == nil then - return - end - local name = player:get_player_name() - local inv = player:get_inventory() - if node.name == "tutorial:geschenk_dna" then - local x = math.random(0,15) - print (x) - if x == 0 then - inv:add_item("main", "mobs:watermob_crocodile_lg_egg") - elseif x == 1 then - inv:add_item("main", "mobs:watermob_crocodile_md_egg") - elseif x == 2 then - inv:add_item("main", "mobs:watermob_crocodile_sm_egg") - elseif x == 3 then - inv:add_item("main", "mobs:watermob_clownfish_egg") - elseif x == 4 then - inv:add_item("main", "mobs:watermob_tropical_fish_egg") - elseif x == 5 then - inv:add_item("main", "mobs:watermob_jellyfish_egg") - elseif x == 6 then - inv:add_item("main", "mobs:watermob_shark_sm_egg") - elseif x == 7 then - inv:add_item("main", "mobs:watermob_shark_md_egg") - elseif x == 8 then - inv:add_item("main", "mobs:watermob_shark_lg_egg") - elseif x == 9 then - inv:add_item("main", "mobs:watermob_turtle_lg_egg") - elseif x == 10 then - inv:add_item("main", "mobs:watermob_turtle_sm_egg") - elseif x == 11 then - inv:add_item("main", "mobs:skymob_butterfly_egg") - elseif x == 12 then - inv:add_item("main", "mobs:skymob_gull_egg") - elseif x == 13 then - inv:add_item("main", "mobs:skymob_bird_sm_egg") - elseif x == 14 then - inv:add_item("main", "mobs:skymob_bird_lg_egg") - elseif x == 15 then - inv:add_item("main", "mobs:skymob_bat_egg") - end - end -end) local dna = {} dna.get_formspec = function(player, pos) if player == nil then @@ -1934,21 +1635,9 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) if fields.rg15 then inventory_plus.set_inventory_formspec(player, rg15.get_formspec(player)) end - if fields.rg16 then + if fields.rg16 then inventory_plus.set_inventory_formspec(player, rg16.get_formspec(player)) end - if fields.rg17 then - inventory_plus.set_inventory_formspec(player, rg17.get_formspec(player)) - end - if fields.rg18 then - inventory_plus.set_inventory_formspec(player, rg18.get_formspec(player)) - end - if fields.rg19 then - inventory_plus.set_inventory_formspec(player, rg19.get_formspec(player)) - end - if fields.rg20 then - inventory_plus.set_inventory_formspec(player, rg20.get_formspec(player)) - end if fields.crafting5 then inventory_plus.set_inventory_formspec(player, crafting5.get_formspec(player)) end @@ -2021,8 +1710,9 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) player_inv:set_stack("dna", 6, "tutorial:big_dna_string "..(y6-1)) player_inv:set_stack("dna", 7, "tutorial:big_dna_string "..(y7-1)) player_inv:set_stack("dna", 8, "tutorial:big_dna_string "..(y8-1)) - player_inv:add_item("main","mobs:random_monster_egg") + player_inv:add_item("main","mobs:random_monster_egg 6") end + inventory_plus.set_inventory_formspec(player, dna.get_formspec(player)) end end) local ach = {} @@ -2359,44 +2049,44 @@ ach2.get_formspec = function(player, pos) .."label[0.8,5.9;Regnumkey]" .."label[0.8,6.7;Pixeled Regnumkey]" .."label[0.8,7.5;8 Regnum Trolleys]" - .."label[0.8,8.3;8 Legend crystals]" + .."label[0.8,8.3;8 Legend Crystals]" .."label[0.8,9.1;Xp green Lv.MAX]" .."label[0.8,9.9;Xp red Lv.MAX]" .."label[0.8,10.7;Xp blue Lv.MAX]" - .."label[3.3,1.1;Xp gray Lv.MAX]" - .."label[3.3,1.9;dog spawn-egg]" - .."label[3.3,2.7;cat spawn-egg]" - .."label[3.3,3.5;sheep spawn-egg]" - .."label[3.3,4.3;dragon spawn-egg]" - .."label[3.3,5.1;mining laser lv.150]" - .."label[3.3,5.9;all awards]" - .."label[3.3,6.7;mining drill lv.150]" - .."label[3.3,7.5;Dragon key]" - .."label[3.3,8.3;5 magic gems]" + .."label[3.3,1.1;Xp grey Lv.MAX]" + .."label[3.3,1.9;Dog spawn-egg]" + .."label[3.3,2.7;Cat spawn-egg]" + .."label[3.3,3.5;Sheep spawn-egg]" + .."label[3.3,4.3;Dragon spawn-egg]" + .."label[3.3,5.1;Mining Laser lv.150]" + .."label[3.3,5.9;All awards]" + .."label[3.3,6.7;Mining Drill lv.150]" + .."label[3.3,7.5;Dragonkey]" + .."label[3.3,8.3;10 magic gems]" .."label[3.3,9.1;Regnumhelmet]" .."label[3.3,9.9;Regnumchestplate]" .."label[3.3,10.7;Regnumleggings]" .."label[5.8,1.1;Regnumboots]" .."label[5.8,1.9;Regnumshield]" - .."label[5.8,2.7;fox spawn-egg]" - .."label[5.8,3.5;tortoise spawn-egg]" + .."label[5.8,2.7;Fox spawn-egg]" + .."label[5.8,3.5;Tortoise spawn-egg]" .."label[5.8,4.3;Foxkey]" - .."label[5.8,5.1;10 magic gems]" + .."label[5.8,5.1;5 magic gems]" .."label[5.8,5.9;Wallplacer lv.MAX]" .."label[5.8,6.7;Xp yellow Lv.MAX]" - .."label[5.8,7.5;all artifacts]" + .."label[5.8,7.5;All artifacts]" .."label[5.8,8.3;Tortoisekey]" .."label[5.8,9.1;Knightkey]" - .."label[5.8,9.9;all medallions]" + .."label[5.8,9.9;All medallions]" .."label[5.8,10.7;Crystalkey]" .."label[8.3,1.1;2 Regnum crystal]" .."label[8.3,1.9;Goldenkey]" .."label[8.3,2.7;Xp cyan Lv.MAX]" .."label[8.3,3.5;Cookingkey Lv.MAX]" .."label[8.3,4.3;2 Pixeled Regnumkeys]" - .."label[8.3,5.1;all trophys]" + .."label[8.3,5.1;All trophys]" .."label[8.3,5.9;Protectionkey lv.MAX]" - .."label[8.3,6.7;all treasures]" + .."label[8.3,6.7;All treasures]" .."label[8.3,7.5;Legendstick lv.MAX]" .."label[8.3,8.3;Regnumgun]" .."label[8.3,9.1;Colorstick (broken)]" @@ -2408,10 +2098,11 @@ ach3.get_formspec = function(player, pos) return end local player_inv = player:get_inventory() - player_inv:set_size("year", 3) + player_inv:set_size("year", 4) local year = player_inv:get_stack("year", 1):get_count() local year2 = player_inv:get_stack("year", 2):get_count() local year3 = player_inv:get_stack("year", 3):get_count() + local year4 = player_inv:get_stack("year", 4):get_count() local d = 0 if year == 1 then d = d+1 @@ -2421,6 +2112,9 @@ ach3.get_formspec = function(player, pos) end if year3 == 1 then d = d+1 + end + if year4 == 1 then + d = d+1 end formspec= "size[10.5,11.3]" .."background[10.5,11.3;1,1;gui_formbg.png;true]" @@ -2428,13 +2122,15 @@ ach3.get_formspec = function(player, pos) .."bgcolor[#080808BB;true]" .."button[0,0;2,0.5;ach;Back]" .."button[2,0;2,0.5;main;Main]" - .."label[0.8,1.1;one year Trophy]" - .."label[0.8,1.9;two years Trophy]" - .."label[0.8,2.7;three years Trophy]" - .."label[5.5,0;"..d.."/3]" + .."label[0.8,1.1;One year Trophy]" + .."label[0.8,1.9;Two years Trophy]" + .."label[0.8,2.7;Three years Trophy]" + .."label[0.8,3.5;Four years Trophy]" + .."label[5.5,0;"..d.."/4]" .."image[0,1;0.8,0.8;tutorial_"..year..".png]" .."image[0,1.8;0.8,0.8;tutorial_"..year2..".png]" .."image[0,2.6;0.8,0.8;tutorial_"..year3..".png]" + .."image[0,3.4;0.8,0.8;tutorial_"..year4..".png]" return formspec end for j = 1, 8, 1 do @@ -2547,19 +2243,18 @@ for k = 1, 8, 1 do end 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)"}, - {"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 "}, + {"give player Enemy rank. (revoke all privs)"}, + {"give player Member rank. (interact,shout)"}, + {"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"}, } local function server_hammer_setmode(user, itemstack, mode, keys) local puncher = user:get_player_name() if keys["sneak"] == false and mode == 0 then - minetest.chat_send_player(puncher, "Hold shift and use to change server hammer modes.") return end if keys["sneak"] == true then @@ -2770,19 +2465,34 @@ minetest.register_craftitem("tutorial:server_hammer", { description = "Admin tool 6: Server Hammer", inventory_image = "ban_hammer.png", stack_max = 1, + groups = {not_in_creative_inventory=1}, + on_secondary_use = function(itemstack, user, pointed_thing) + local mode = 0 + server_hammer_handler(itemstack, user, pointed_thing, mode) + return itemstack + end, on_use = function(itemstack, user, pointed_thing) local mode = 0 server_hammer_handler(itemstack, user, pointed_thing, mode) return itemstack end, }) -for i = 1, 8 do +minetest.register_craftitem("tutorial:server_hammer1", { + description = "Admin tool 6: Server Hammer Mode 1 ("..mode_text[1][1]..")", + inventory_image = "ban_hammer.png^technic_tool_mode1.png", + wield_image = "ban_hammer.png", + on_secondary_use = function(itemstack, user, pointed_thing) + server_hammer_handler(itemstack, user, pointed_thing, 1) + return itemstack + end, + }) +for i = 2, 8 do minetest.register_craftitem("tutorial:server_hammer"..i, { - description = "Admin tool 6: Server Hammer in Mode "..i, + description = "Admin tool 6: Server Hammer in Mode "..i.." ("..mode_text[i][1]..")", inventory_image = "ban_hammer.png^technic_tool_mode"..i..".png", wield_image = "ban_hammer.png", groups = {not_in_creative_inventory=1}, - on_use = function(itemstack, user, pointed_thing) + on_secondary_use = function(itemstack, user, pointed_thing) local mode = i server_hammer_handler(itemstack, user, pointed_thing, mode) return itemstack @@ -2854,6 +2564,7 @@ kri.get_formspec = function(player, pos) else time = "nil" end + formspec = "size[10,12.3]" .."button[0,0;2,0.5;inven;Back]" .."button[2,0;2,0.5;main;Main]" @@ -2884,7 +2595,7 @@ kri.get_formspec = function(player, pos) formspec = formspec .."button[2,5.75;1,0.5;adem;1]" .."button[2,6.75;1,0.5;athu;1]" .."button[2,7.75;1,0.5;athl;1]" - if time ~= "nil" then + if time ~= "nil" and tes == 0 then formspec = formspec .."label[7,3;creating..]" end end @@ -3034,11 +2745,11 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) local g3 = player_inv:get_stack("gem", 3):get_name() local g4 = player_inv:get_stack("gem", 4):get_name() local g5 = player_inv:get_stack("gem", 5):get_name() - local g11 = player_inv:get_stack("gem2", 1):get_name() - local g12 = player_inv:get_stack("gem2", 2):get_name() - local g13 = player_inv:get_stack("gem2", 3):get_name() - local g14 = player_inv:get_stack("gem2", 4):get_name() - local g15 = player_inv:get_stack("gem2", 5):get_name() + local g11 = player_inv:get_stack("2gem", 1):get_name() + local g12 = player_inv:get_stack("2gem", 2):get_name() + local g13 = player_inv:get_stack("2gem", 3):get_name() + local g14 = player_inv:get_stack("2gem", 4):get_name() + local g15 = player_inv:get_stack("2gem", 5):get_name() local ar1 = player_inv:get_stack("armor", 1):get_name() local ar2 = player_inv:get_stack("armor", 2):get_name() local ar3 = player_inv:get_stack("armor", 3):get_name() @@ -3183,7 +2894,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) end if fields.achc then local player_inv = player:get_inventory() - player_inv:set_size("year", 3) + player_inv:set_size("year", 4) if player:get_inventory():contains_item("main", "tutorial:trophy_year1") then player_inv:set_stack("year", 1,"tutorial:dirt") end @@ -3192,6 +2903,9 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) end if player:get_inventory():contains_item("main", "tutorial:trophy_year3") then player_inv:set_stack("year", 3,"tutorial:dirt") + end + if player:get_inventory():contains_item("main", "tutorial:trophy_year4") then + player_inv:set_stack("year", 4,"tutorial:dirt") end inventory_plus.set_inventory_formspec(player, ach3.get_formspec(player)) end @@ -3343,49 +3057,6 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) end) end end) -minetest.register_on_dignode(function(pos, node, player) - if player == nil then - return - end - local name = player:get_player_name() - local inv = player:get_inventory() - if node.name == "tutorial:geschenk_legend" then - local x = math.random(20) - if x == 16 then - local y = math.random(8) - inv:set_stack("kri", y,"tutorial:legenden_kristall_"..y) - else - local z = math.random(16) - if z == 1 then - inv:add_item("main","gems:emerald_gem 2") - elseif z < 3 then - inv:add_item("main","gems:shadow_gem 2") - elseif z < 5 then - inv:add_item("main","gems:pearl_gem 2") - elseif z < 8 then - inv:add_item("main","gems:amethyst_gem 2") - elseif z < 12 then - inv:add_item("main","gems:ruby_gem 2") - else - inv:add_item("main","gems:sapphire_gem 2") - end - end - end - if node.name == "tutorial:geschenk_regnum" then - local x = math.random(1, 5) - if x == 1 then - inv:add_item("main", "tutorial:regnum_pixel_gold 20") - elseif x == 2 then - inv:add_item("main", "tutorial:regnum_pixel_green 20") - elseif x == 3 then - inv:add_item("main", "tutorial:regnum_pixel_purple 55") - elseif x == 4 then - inv:add_item("main", "tutorial:regnum_pixel_red 185") - elseif x == 5 then - inv:add_item("main", "tutorial:regnum_pixel_blue 185") - end - end -end) local crafting4 = {} crafting4.get_formspec = function(player, pos) if player == nil then @@ -3436,16 +3107,6 @@ minetest.register_on_dignode(function(pos, node, player) else minetest.get_player_by_name(name):set_hp(0) end - elseif x < 36 then - inv:add_item("main", "default:mese_crystal_fragment 4") - elseif x < 41 then - inv:add_item("main", "tutorial:lightstone") - elseif x < 46 then - inv:add_item("main", "default:ice") - elseif x < 50 then - inv:add_item("main", "tutorial:geschenk_death") - elseif x == 50 then - inv:add_item("main", "tutorial:regnum_part") end end if node.name == "tutorial:geschenk_death_silber" then @@ -3463,17 +3124,6 @@ minetest.register_on_dignode(function(pos, node, player) else minetest.get_player_by_name(name):set_hp(0) end - elseif x < 32 then - inv:add_item("main", "default:mese_crystal") - elseif x < 38 then - inv:add_item("main", "tutorial:lightstone") - elseif x < 44 then - inv:add_item("main", "default:ice") - elseif x < 50 then - inv:add_item("main", "tutorial:geschenk_death_silber") - elseif x == 50 then - local y = math.random(1,2) - inv:add_item("main", "tutorial:regnum_part "..y) end end if node.name == "tutorial:geschenk_death_gold" then @@ -3491,17 +3141,6 @@ minetest.register_on_dignode(function(pos, node, player) else minetest.get_player_by_name(name):set_hp(0) end - elseif x < 28 then - inv:add_item("main", "default:mese_crystal 2") - elseif x < 35 then - inv:add_item("main", "tutorial:lightstone 2") - elseif x < 42 then - inv:add_item("main", "default:ice") - elseif x < 50 then - inv:add_item("main", "tutorial:geschenk_death_gold") - elseif x == 50 then - local y = math.random(1,3) - inv:add_item("main", "tutorial:regnum_part "..y) end end if node.name == "tutorial:geschenk_death_platin" then @@ -3519,17 +3158,35 @@ minetest.register_on_dignode(function(pos, node, player) else minetest.get_player_by_name(name):set_hp(0) end - elseif x < 24 then - inv:add_item("main", "default:mese_crystal 3") - elseif x < 33 then - inv:add_item("main", "tutorial:lightstone 2") - elseif x < 41 then - inv:add_item("main", "default:ice") - elseif x < 50 then - inv:add_item("main", "tutorial:geschenk_death_platin") - elseif x == 50 then - local y = math.random(1,4) - inv:add_item("main", "tutorial:regnum_part "..y) + end + end + if node.name == "tutorial:geschenk_dragon" then + local x = math.random(1,25) + if x == 8 then + inv:set_size("dgon", 1) + local dgon = inv:get_stack("dgon", 1):get_count() + if dgon == 0 and inv:room_for_item("main", "tutorial:dragon_schluessel") then + inv:add_item("main", "tutorial:dragon_schluessel") + inv:add_item("dgon", "default:dirt") + end + end + end + if node.name == "tutorial:geschenk_tortoise" then + local x = math.random(1,25) + if x == 8 then + inv:set_size("ttoise", 1) + local ttoise = inv:get_stack("ttoise", 1):get_count() + if ttoise == 0 and inv:room_for_item("main", "tutorial:tortoise_schluessel") then + inv:add_item("main", "tutorial:tortoise_schluessel") + inv:add_item("ttoise", "default:dirt") + end + end + end + if node.name == "tutorial:geschenk_legend" then + local x = math.random(10) + if x == 8 then + local y = math.random(8) + inv:set_stack("kri", y,"tutorial:legenden_kristall_"..y) end end end) @@ -3840,9 +3497,10 @@ cr.get_formspec = function(player,pos) .."button[8,2.5;2,0.5;"..image6..";Cooking]" .."button[10,2.5;2,0.5;"..image7..";Medallion craft]" .."button[12,2.5;2,0.5;"..image8..";Crystal craft]" - .."button[4,3.5;2,0.5;dna;DNA craft]" - .."button[6,3.5;2,0.5;mine;Mining craft]" - .."button[8,3.5;2,0.5;troph;Trophy craft]" + .."button[3,3.5;2,0.5;dna;DNA craft]" + .."button[5,3.5;2,0.5;mine;Mining craft]" + .."button[7,3.5;2,0.5;troph;Trophy craft]" + .."button[9,3.5;2,0.5;backward;Backward craft]" .."label[0.5,1.8;Craftkey]" .."label[2.4,1.8;Legendkey]" .."label[4.35,1.8;Regnumkey]" diff --git a/mods/tutorial/textures/tutorial_gem_fragment2.png b/mods/tutorial/textures/tutorial_gem_fragment2.png index 4c5e53c..0008c2e 100644 Binary files a/mods/tutorial/textures/tutorial_gem_fragment2.png and b/mods/tutorial/textures/tutorial_gem_fragment2.png differ diff --git a/mods/tutorial/textures/tutorial_geschenk_gem2.png b/mods/tutorial/textures/tutorial_geschenk_gem2.png index 932e31e..d38ec56 100644 Binary files a/mods/tutorial/textures/tutorial_geschenk_gem2.png and b/mods/tutorial/textures/tutorial_geschenk_gem2.png differ diff --git a/mods/tutorial/textures/tutorial_geschenk_tortoise.png b/mods/tutorial/textures/tutorial_geschenk_tortoise.png new file mode 100644 index 0000000..51c6b99 Binary files /dev/null and b/mods/tutorial/textures/tutorial_geschenk_tortoise.png differ diff --git a/mods/tutorial/textures/tutorial_trophy_year1.png b/mods/tutorial/textures/tutorial_trophy_year1.png new file mode 100644 index 0000000..0865c0f Binary files /dev/null and b/mods/tutorial/textures/tutorial_trophy_year1.png differ diff --git a/mods/tutorial/textures/tutorial_trophy_year2.png b/mods/tutorial/textures/tutorial_trophy_year2.png new file mode 100644 index 0000000..3bdce3e Binary files /dev/null and b/mods/tutorial/textures/tutorial_trophy_year2.png differ diff --git a/mods/tutorial/textures/tutorial_trophy_year3.png b/mods/tutorial/textures/tutorial_trophy_year3.png new file mode 100644 index 0000000..35fc55a Binary files /dev/null and b/mods/tutorial/textures/tutorial_trophy_year3.png differ diff --git a/mods/tutorial/textures/tutorial_trophy_year4.png b/mods/tutorial/textures/tutorial_trophy_year4.png new file mode 100644 index 0000000..7fe7aa9 Binary files /dev/null and b/mods/tutorial/textures/tutorial_trophy_year4.png differ diff --git a/mods/tutorial/tool.lua b/mods/tutorial/tool.lua index 3954225..f3b2c91 100644 --- a/mods/tutorial/tool.lua +++ b/mods/tutorial/tool.lua @@ -48,7 +48,7 @@ --v.1.0.1 --v.1.0.0 minetest.register_tool("tutorial:regnumbattleaxe1", { - description = "Regnumbattleaxe Mode 1. Can dig water/lava\nBattleaxe-lv.MAX", + description = "Regnumbattleaxe Mode 1 (dig no water and lava)\nBattleaxe-lv.MAX", inventory_image = "tutorial_regnumbattleaxe.png^technic_tool_mode1.png", wield_image = "tutorial_regnumbattleaxe.png", tool_capabilities = { @@ -63,10 +63,17 @@ minetest.register_tool("tutorial:regnumbattleaxe1", { }, damage_groups = {fleshy=150} }, - liquids_pointable = true, + liquids_pointable = false, + on_secondary_use = function(itemstack, user, pointed_thing) + local keys = user:get_player_control() + if keys["sneak"] == true then + itemstack:set_name("tutorial:regnumbattleaxe2") + end + return itemstack + end, }) minetest.register_tool("tutorial:regnumbattleaxe2", { - description = "Regnumbattleaxe Mode 2. Can not dig water/lava\nBattleaxe-lv.MAX", + description = "Regnumbattleaxe Mode 2 (dig water and lava)\nBattleaxe-lv.MAX", inventory_image = "tutorial_regnumbattleaxe.png^technic_tool_mode2.png", wield_image = "tutorial_regnumbattleaxe.png", groups = {not_in_creative_inventory=1}, @@ -82,10 +89,17 @@ minetest.register_tool("tutorial:regnumbattleaxe2", { }, damage_groups = {fleshy=150} }, - liquids_pointable = false, + liquids_pointable = true, + on_secondary_use = function(itemstack, user, pointed_thing) + local keys = user:get_player_control() + if keys["sneak"] == true then + itemstack:set_name("tutorial:regnumbattleaxe3") + end + return itemstack + end, }) minetest.register_tool("tutorial:superlegendenbattleaxe1", { - description = "Superlegendbattleaxe Mode 1. Can dig water/lava\nBattleaxe-lv.122", + description = "Superlegendbattleaxe Mode 1 (dig water and lava)\nBattleaxe-lv.122", inventory_image = "tutorial_superlegendenbattleaxe.png^technic_tool_mode1.png", wield_image = "tutorial_superlegendenbattleaxe.png", groups = {not_in_creative_inventory=1}, @@ -102,9 +116,16 @@ minetest.register_tool("tutorial:superlegendenbattleaxe1", { damage_groups = {fleshy=122} }, liquids_pointable = true, + on_secondary_use = function(itemstack, user, pointed_thing) + local keys = user:get_player_control() + if keys["sneak"] == true then + itemstack:set_name("tutorial:superlegendenbattleaxe2") + end + return itemstack + end, }) minetest.register_tool("tutorial:superlegendenbattleaxe2", { - description = "Superlegendbattleaxe Mode 2. Can not dig water/lava\nBattleaxe-lv.122", + description = "Superlegendbattleaxe Mode 2 (dig no water and lava)\nBattleaxe-lv.122", inventory_image = "tutorial_superlegendenbattleaxe.png^technic_tool_mode2.png", wield_image = "tutorial_superlegendenbattleaxe.png", groups = {not_in_creative_inventory=1}, @@ -121,6 +142,13 @@ minetest.register_tool("tutorial:superlegendenbattleaxe2", { damage_groups = {fleshy=122} }, liquids_pointable = false, + on_secondary_use = function(itemstack, user, pointed_thing) + local keys = user:get_player_control() + if keys["sneak"] == true then + itemstack:set_name("tutorial:superlegendenbattleaxe3") + end + return itemstack + end, }) minetest.register_tool("tutorial:lilabattleaxe2", { description = "Purplebattleaxe Lv.MAX", @@ -509,7 +537,7 @@ minetest.register_tool("tutorial:arena_battleaxe1", { }) --v.0.18.0 minetest.register_tool("tutorial:adminbattleaxe", { - description = "Admin tool 3: Admin battleaxe Mode 1. Can not dig water/lava", + description = "Admin tool 3: Admin battleaxe Mode 1 (dig water and lava)", inventory_image = "tutorial_adminbattleaxe.png^technic_tool_mode1.png", wield_image = "tutorial_adminbattleaxe.png", tool_capabilities = { @@ -525,9 +553,16 @@ minetest.register_tool("tutorial:adminbattleaxe", { damage_groups = {fleshy=2000} }, liquids_pointable = false, + on_secondary_use = function(itemstack, user, pointed_thing) + local keys = user:get_player_control() + if keys["sneak"] == true then + itemstack:set_name("tutorial:adminbattleaxe2") + end + return itemstack + end, }) minetest.register_tool("tutorial:adminbattleaxe2", { - description = "Admin tool 3: Admin battleaxe Mode 2. Can dig water/lava", + description = "Admin tool 3: Admin battleaxe Mode 2 (dig no water and lava)", inventory_image = "tutorial_adminbattleaxe.png^technic_tool_mode2.png", wield_image = "tutorial_adminbattleaxe.png", groups = {not_in_creative_inventory=1}, @@ -545,6 +580,13 @@ minetest.register_tool("tutorial:adminbattleaxe2", { damage_groups = {fleshy=2000} }, liquids_pointable = true, + on_secondary_use = function(itemstack, user, pointed_thing) + local keys = user:get_player_control() + if keys["sneak"] == true then + itemstack:set_name("tutorial:adminbattleaxe3") + end + return itemstack + end, }) --v.0.17.0 --v.0.16.0 diff --git a/mods/vessels/init.lua b/mods/vessels/init.lua index b330efc..71a0689 100644 --- a/mods/vessels/init.lua +++ b/mods/vessels/init.lua @@ -228,3 +228,10 @@ minetest.register_craft({ recipe = "vessels:shelf", burntime = 30, }) + +-- Register glass fragments as dungeon loot +if minetest.global_exists("dungeon_loot") then + dungeon_loot.register({ + name = "vessels:glass_fragments", chance = 0.35, count = {1, 4} + }) +end diff --git a/mods/vessels/locale/vessels.ms.tr b/mods/vessels/locale/vessels.ms.tr new file mode 100644 index 0000000..6d8348a --- /dev/null +++ b/mods/vessels/locale/vessels.ms.tr @@ -0,0 +1,8 @@ +# textdomain: vessels +Vessels Shelf=Rak Bekas Kaca +Empty Glass Bottle=Botol Kaca Kosong +Empty Drinking Glass=Gelas Minuman Kosong +Empty Heavy Steel Bottle=Botol Keluli Berat Kosong +Glass Fragments=Serpihan Kaca +Empty Vessels Shelf=Rak Bekas Kaca Kosong +Vessels Shelf (@1 items)=Rak Bekas Kaca (@1 barang) diff --git a/mods/vessels/locale/vessels.ru.tr b/mods/vessels/locale/vessels.ru.tr new file mode 100644 index 0000000..76dde6a --- /dev/null +++ b/mods/vessels/locale/vessels.ru.tr @@ -0,0 +1,8 @@ +# textdomain: vessels +Vessels Shelf=Полка с Сосудами +Empty Glass Bottle=Пустая Стеклянная Бутылка +Empty Drinking Glass=Пустая Питьевая Бутылка +Empty Heavy Steel Bottle=Пустая Стальная Бутылка +Glass Fragments=Стеклянные Осколки +Empty Vessels Shelf=Полка с Пустыми Сосудами +Vessels Shelf (@1 items)=Полка с Сосудами (@1 предметы) diff --git a/mods/vessels/locale/vessels.se.tr b/mods/vessels/locale/vessels.se.tr new file mode 100644 index 0000000..8277b33 --- /dev/null +++ b/mods/vessels/locale/vessels.se.tr @@ -0,0 +1,8 @@ +# textdomain: vessels +Vessels Shelf=Fartygshylla +Empty Glass Bottle=Tom Glasflska +Empty Drinking Glass=Tom Drycksflaska +Empty Heavy Steel Bottle=Tom Tung Stål Flaska +Glass Fragments=Glasbitar +Empty Vessels Shelf=Tom Fartygshylla +Vessels Shelf (@1 items)=Fartygshylla (@1 saker) diff --git a/mods/vessels/locale/vessels.zh_CN.tr b/mods/vessels/locale/vessels.zh_CN.tr new file mode 100644 index 0000000..f91ccd8 --- /dev/null +++ b/mods/vessels/locale/vessels.zh_CN.tr @@ -0,0 +1,8 @@ +# textdomain: vessels +Vessels Shelf=容器架 +Empty Glass Bottle=空玻璃瓶 +Empty Drinking Glass=空水杯 +Empty Heavy Steel Bottle=空重型钢瓶 +Glass Fragments=玻璃碎片 +Empty Vessels Shelf=空容器架 +Vessels Shelf (@1 items)=容器架(@1项) diff --git a/mods/vessels/locale/vessels.zh_TW.tr b/mods/vessels/locale/vessels.zh_TW.tr new file mode 100644 index 0000000..7936c88 --- /dev/null +++ b/mods/vessels/locale/vessels.zh_TW.tr @@ -0,0 +1,8 @@ +# textdomain: vessels +Vessels Shelf=容器架 +Empty Glass Bottle=空玻璃瓶 +Empty Drinking Glass=空水杯 +Empty Heavy Steel Bottle=空重型鋼瓶 +Glass Fragments=玻璃碎片 +Empty Vessels Shelf=空容器架 +Vessels Shelf (@1 items)=容器架(@1項) diff --git a/mods/vessels/mod.conf b/mods/vessels/mod.conf index 7551b54..eba9076 100644 --- a/mods/vessels/mod.conf +++ b/mods/vessels/mod.conf @@ -1,3 +1,4 @@ name = vessels description = Minetest Game mod: vessels depends = default +optional_depends = dungeon_loot diff --git a/mods/walls/locale/walls.ms.tr b/mods/walls/locale/walls.ms.tr new file mode 100644 index 0000000..9375342 --- /dev/null +++ b/mods/walls/locale/walls.ms.tr @@ -0,0 +1,4 @@ +# textdomain: walls +Cobblestone Wall=Pagar Batu Buntar +Mossy Cobblestone Wall=Pagar Batu Buntar Berlumut +Desert Cobblestone Wall=Pagar Batu Buntar Gurun diff --git a/mods/walls/locale/walls.ru.tr b/mods/walls/locale/walls.ru.tr new file mode 100644 index 0000000..1ed653f --- /dev/null +++ b/mods/walls/locale/walls.ru.tr @@ -0,0 +1,4 @@ +# textdomain: walls +Cobblestone Wall=Булыжниковая Ограда +Mossy Cobblestone Wall=Мшистая Булыжниковая Ограда +Desert Cobblestone Wall=Ограда Из Пустынного Булыжника diff --git a/mods/walls/locale/walls.se.tr b/mods/walls/locale/walls.se.tr new file mode 100644 index 0000000..8cca00e --- /dev/null +++ b/mods/walls/locale/walls.se.tr @@ -0,0 +1,4 @@ +# textdomain: walls +Cobblestone Wall=Kullerstens Vägg +Mossy Cobblestone Wall=Mossig Kullerstens Vägg +Desert Cobblestone Wall=Öken Kullerstens Vägg \ No newline at end of file diff --git a/mods/walls/locale/walls.zh_CN.tr b/mods/walls/locale/walls.zh_CN.tr new file mode 100644 index 0000000..f590e82 --- /dev/null +++ b/mods/walls/locale/walls.zh_CN.tr @@ -0,0 +1,4 @@ +# textdomain: walls +Cobblestone Wall=鹅卵石墙 +Mossy Cobblestone Wall=苔藓覆盖的鹅卵石墙 +Desert Cobblestone Wall=沙漠鹅卵石墙 diff --git a/mods/walls/locale/walls.zh_TW.tr b/mods/walls/locale/walls.zh_TW.tr new file mode 100644 index 0000000..ba1285f --- /dev/null +++ b/mods/walls/locale/walls.zh_TW.tr @@ -0,0 +1,4 @@ +# textdomain: walls +Cobblestone Wall=鵝卵石牆 +Mossy Cobblestone Wall=苔蘚覆蓋的鵝卵石牆 +Desert Cobblestone Wall=沙漠鵝卵石牆 diff --git a/mods/weather/README.txt b/mods/weather/README.txt new file mode 100644 index 0000000..6733460 --- /dev/null +++ b/mods/weather/README.txt @@ -0,0 +1,4 @@ +Minetest Game mod: weather +========================== +See license.txt for license information. +Source code by paramat (MIT). diff --git a/mods/weather/init.lua b/mods/weather/init.lua new file mode 100644 index 0000000..c0d1098 --- /dev/null +++ b/mods/weather/init.lua @@ -0,0 +1,116 @@ +-- Disable by mapgen or setting + +local mg_name = minetest.get_mapgen_setting("mg_name") +if mg_name == "v6" or mg_name == "singlenode" or + minetest.settings:get_bool("enable_weather") == false then + return +end + + +-- Parameters + +local TSCALE = 600 -- Time scale of noise variation in seconds +local CYCLE = 8 -- Time period of cyclic clouds update in seconds + +local np_density = { + offset = 0.5, + scale = 0.5, + spread = {x = TSCALE, y = TSCALE, z = TSCALE}, + seed = 813, + octaves = 1, + persist = 0, + lacunarity = 2, +} + +local np_thickness = { + offset = 0.5, + scale = 0.5, + spread = {x = TSCALE, y = TSCALE, z = TSCALE}, + seed = 96, + octaves = 1, + persist = 0, + lacunarity = 2, +} + +local np_speedx = { + offset = 0, + scale = 1, + spread = {x = TSCALE, y = TSCALE, z = TSCALE}, + seed = 911923, + octaves = 1, + persist = 0, + lacunarity = 2, +} + +local np_speedz = { + offset = 0, + scale = 1, + spread = {x = TSCALE, y = TSCALE, z = TSCALE}, + seed = 5728, + octaves = 1, + persist = 0, + lacunarity = 2, +} + +-- End parameters + + +-- Initialise noise objects to nil + +local nobj_density = nil +local nobj_thickness = nil +local nobj_speedx = nil +local nobj_speedz = nil + + +-- Update clouds function + +local function rangelim(value, lower, upper) + return math.min(math.max(value, lower), upper) +end + +local os_time_0 = os.time() +local t_offset = math.random(0, 300000) + +local function update_clouds() + -- Time in seconds. + -- Add random time offset to avoid identical behaviour each server session. + local time = os.difftime(os.time(), os_time_0) - t_offset + + nobj_density = nobj_density or minetest.get_perlin(np_density) + nobj_thickness = nobj_thickness or minetest.get_perlin(np_thickness) + nobj_speedx = nobj_speedx or minetest.get_perlin(np_speedx) + nobj_speedz = nobj_speedz or minetest.get_perlin(np_speedz) + + local n_density = nobj_density:get_2d({x = time, y = 0}) + local n_thickness = nobj_thickness:get_2d({x = time, y = 0}) + local n_speedx = nobj_speedx:get_2d({x = time, y = 0}) + local n_speedz = nobj_speedz:get_2d({x = time, y = 0}) + + for _, player in ipairs(minetest.get_connected_players()) do + local humid = minetest.get_humidity(player:get_pos()) + player:set_clouds({ + density = rangelim(humid / 100, 0.25, 1.0) * n_density, + thickness = math.max(math.floor( + rangelim(32 * humid / 100, 8, 32) * n_thickness + ), 1), + speed = {x = n_speedx * 4, z = n_speedz * 4}, + }) + end +end + + +local function cyclic_update() + update_clouds() + minetest.after(CYCLE, cyclic_update) +end + + +minetest.after(0, cyclic_update) + + +-- Update on player join to instantly alter clouds from the default + +minetest.register_on_joinplayer(function(player) + update_clouds() +end) diff --git a/mods/weather/license.txt b/mods/weather/license.txt new file mode 100644 index 0000000..33baa06 --- /dev/null +++ b/mods/weather/license.txt @@ -0,0 +1,24 @@ +License of source code +---------------------- + +The MIT License (MIT) +Copyright (C) 2019 paramat + +Permission is hereby granted, free of charge, to any person obtaining a copy of this +software and associated documentation files (the "Software"), to deal in the Software +without restriction, including without limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of the Software, and to permit +persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or +substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + +For more details: +https://opensource.org/licenses/MIT diff --git a/mods/weather/mod.conf b/mods/weather/mod.conf new file mode 100644 index 0000000..436ce67 --- /dev/null +++ b/mods/weather/mod.conf @@ -0,0 +1,2 @@ +name = weather +description = Minetest Game mod: weather diff --git a/mods/wool/locale/wool.ms.tr b/mods/wool/locale/wool.ms.tr new file mode 100644 index 0000000..18b5480 --- /dev/null +++ b/mods/wool/locale/wool.ms.tr @@ -0,0 +1,16 @@ +# textdomain: wool +White Wool=Bulu Biri-Biri Putih +Grey Wool=Bulu Biri-Biri Kelabu +Dark Grey Wool=Bulu Biri-Biri Kelabu Gelap +Black Wool=Bulu Biri-Biri Hitam +Violet Wool=Bulu Biri-Biri Ungu +Blue Wool=Bulu Biri-Biri Biru +Cyan Wool=Bulu Biri-Biri Biru Kehijauan +Dark Green Wool=Bulu Biri-Biri Hijau Gelap +Green Wool=Bulu Biri-Biri Hijau +Yellow Wool=Bulu Biri-Biri Kuning +Brown Wool=Bulu Biri-Biri Perang +Orange Wool=Bulu Biri-Biri Jingga +Red Wool=Bulu Biri-Biri Merah +Magenta Wool=Bulu Biri-Biri Merah Lembayung +Pink Wool=Bulu Biri-Biri Merah Jambu diff --git a/mods/wool/locale/wool.ru.tr b/mods/wool/locale/wool.ru.tr new file mode 100644 index 0000000..cd8c60b --- /dev/null +++ b/mods/wool/locale/wool.ru.tr @@ -0,0 +1,16 @@ +# textdomain: wool +White Wool=Белая Шерсть +Grey Wool=Серая Шерсть +Dark Grey Wool=Тёмно-Серая Шерсть +Black Wool=Чёрная Шерсть +Violet Wool=Фиолетовая Шерсть +Blue Wool=Синяя Шерсть +Cyan Wool=Голубая Шерсть +Dark Green Wool=Тёмно-Зелёная Шерсть +Green Wool=Зелёная Шерсть +Yellow Wool=Жёлтая Шерсть +Brown Wool=Бурая Шерсть +Orange Wool=Оранжевая Шерсть +Red Wool=Красная Шерсть +Magenta Wool=Пурпурная Шерсть +Pink Wool=Розовая Шерсть diff --git a/mods/wool/locale/wool.se.tr b/mods/wool/locale/wool.se.tr new file mode 100644 index 0000000..1d82e69 --- /dev/null +++ b/mods/wool/locale/wool.se.tr @@ -0,0 +1,16 @@ +# textdomain: wool +White Wool=Vit Ull +Grey Wool=Grå Ull +Dark Grey Wool=Mörk Grå Ull +Black Wool=Svart Ull +Violet Wool=Violett Ull +Blue Wool=Blå Ull +Cyan Wool=Cyan Ull +Dark Green Wool=Mörk Grön Ull +Green Wool=Grön Ull +Yellow Wool=Gul Ull +Brown Wool=Brun Ull +Orange Wool=Orange Ull +Red Wool=Röd Ull +Magenta Wool=Magenta Ull +Pink Wool=Rosa Ull \ No newline at end of file diff --git a/mods/wool/locale/wool.zh_CN.tr b/mods/wool/locale/wool.zh_CN.tr new file mode 100644 index 0000000..caac9ee --- /dev/null +++ b/mods/wool/locale/wool.zh_CN.tr @@ -0,0 +1,16 @@ +# textdomain: wool +White Wool=白羊毛 +Grey Wool=灰羊毛 +Dark Grey Wool=暗灰羊毛 +Black Wool=黑羊毛 +Violet Wool=紫羊毛 +Blue Wool=蓝羊毛 +Cyan Wool=青羊毛 +Dark Green Wool=暗绿羊毛 +Green Wool=绿羊毛 +Yellow Wool=黄羊毛 +Brown Wool=棕羊毛 +Orange Wool=橙羊毛 +Red Wool=红羊毛 +Magenta Wool=品红羊毛 +Pink Wool=粉红羊毛 diff --git a/mods/wool/locale/wool.zh_TW.tr b/mods/wool/locale/wool.zh_TW.tr new file mode 100644 index 0000000..290a1fe --- /dev/null +++ b/mods/wool/locale/wool.zh_TW.tr @@ -0,0 +1,16 @@ +# textdomain: wool +White Wool=白羊毛 +Grey Wool=灰羊毛 +Dark Grey Wool=暗灰羊毛 +Black Wool=黑羊毛 +Violet Wool=紫羊毛 +Blue Wool=藍羊毛 +Cyan Wool=青羊毛 +Dark Green Wool=暗綠羊毛 +Green Wool=綠羊毛 +Yellow Wool=黃羊毛 +Brown Wool=棕羊毛 +Orange Wool=橙羊毛 +Red Wool=紅羊毛 +Magenta Wool=品紅羊毛 +Pink Wool=粉紅羊毛 diff --git a/mods/xpanes/init.lua b/mods/xpanes/init.lua index 758fbbb..4f4f0f5 100644 --- a/mods/xpanes/init.lua +++ b/mods/xpanes/init.lua @@ -106,12 +106,12 @@ function xpanes.register_pane(name, def) wield_image = def.wield_image, paramtype2 = "facedir", tiles = { - def.textures[3], - def.textures[3], - def.textures[3], - def.textures[3], - def.textures[1], - def.textures[1] + def.textures[3], + def.textures[3], + def.textures[3], + def.textures[3], + def.textures[1], + def.textures[1] }, groups = flatgroups, drop = "xpanes:" .. name .. "_flat", @@ -137,7 +137,11 @@ function xpanes.register_pane(name, def) is_ground_content = false, sunlight_propagates = true, description = def.description, - tiles = {def.textures[3], def.textures[3], def.textures[1]}, + tiles = { + def.textures[3], + def.textures[3], + def.textures[1] + }, groups = groups, drop = "xpanes:" .. name .. "_flat", sounds = def.sounds, @@ -161,7 +165,7 @@ end xpanes.register_pane("pane", { description = S("Glass Pane"), - textures = {"default_glass.png","xpanes_pane_half.png","xpanes_edge.png"}, + textures = {"default_glass.png", "", "xpanes_edge.png"}, inventory_image = "default_glass.png", wield_image = "default_glass.png", sounds = default.node_sound_glass_defaults(), @@ -174,7 +178,7 @@ xpanes.register_pane("pane", { xpanes.register_pane("obsidian_pane", { description = S("Obsidian Glass Pane"), - textures = {"default_obsidian_glass.png","xpanes_pane_half.png","xpanes_edge_obsidian.png"}, + textures = {"default_obsidian_glass.png", "", "xpanes_edge_obsidian.png"}, inventory_image = "default_obsidian_glass.png", wield_image = "default_obsidian_glass.png", sounds = default.node_sound_glass_defaults(), @@ -187,7 +191,7 @@ xpanes.register_pane("obsidian_pane", { xpanes.register_pane("bar", { description = S("Steel Bars"), - textures = {"xpanes_bar.png","xpanes_bar.png","xpanes_bar_top.png"}, + textures = {"xpanes_bar.png", "", "xpanes_bar_top.png"}, inventory_image = "xpanes_bar.png", wield_image = "xpanes_bar.png", groups = {cracky=2}, diff --git a/mods/xpanes/locale/xpanes.ms.tr b/mods/xpanes/locale/xpanes.ms.tr new file mode 100644 index 0000000..dedfefa --- /dev/null +++ b/mods/xpanes/locale/xpanes.ms.tr @@ -0,0 +1,6 @@ +# textdomain: xpanes +Glass Pane=Kaca Tingkap +Obsidian Glass Pane=Kaca Tingkap Obsidia +Steel Bars=Jeriji Keluli +Steel Bar Door=Pintu Jeriji Keluli +Steel Bar Trapdoor=Pintu Kolong Jeriji Keluli diff --git a/mods/xpanes/locale/xpanes.ru.tr b/mods/xpanes/locale/xpanes.ru.tr new file mode 100644 index 0000000..166c62d --- /dev/null +++ b/mods/xpanes/locale/xpanes.ru.tr @@ -0,0 +1,6 @@ +# textdomain: xpanes +Glass Pane=Стеклянная Панель +Obsidian Glass Pane=Стеклянная Панель Из Обсидиана +Steel Bars=Стальная Решётка +Steel Bar Door=Стальная Решётчатая Дверь +Steel Bar Trapdoor=Стальной Решётчатый Люк diff --git a/mods/xpanes/locale/xpanes.se.tr b/mods/xpanes/locale/xpanes.se.tr new file mode 100644 index 0000000..fc3bbfe --- /dev/null +++ b/mods/xpanes/locale/xpanes.se.tr @@ -0,0 +1,6 @@ +# textdomain: xpanes +Glass Pane=Glasruta +Obsidian Glass Pane=Obsidian Glasruta +Steel Bars=Stålgaller +Steel Bar Door=Stålgallers Dörr +Steel Bar Trapdoor=Stålgallers Fallucka \ No newline at end of file diff --git a/mods/xpanes/locale/xpanes.zh_CN.tr b/mods/xpanes/locale/xpanes.zh_CN.tr new file mode 100644 index 0000000..7b1871c --- /dev/null +++ b/mods/xpanes/locale/xpanes.zh_CN.tr @@ -0,0 +1,6 @@ +# textdomain: xpanes +Glass Pane=玻璃窗 +Obsidian Glass Pane=黑曜石玻璃窗 +Steel Bars=钢筋 +Steel Bar Door=钢筋门 +Steel Bar Trapdoor=钢筋活板门 diff --git a/mods/xpanes/locale/xpanes.zh_TW.tr b/mods/xpanes/locale/xpanes.zh_TW.tr new file mode 100644 index 0000000..97ee7a2 --- /dev/null +++ b/mods/xpanes/locale/xpanes.zh_TW.tr @@ -0,0 +1,6 @@ +# textdomain: xpanes +Glass Pane=玻璃窗 +Obsidian Glass Pane=黑曜石玻璃窗 +Steel Bars=鋼筋 +Steel Bar Door=鋼筋門 +Steel Bar Trapdoor=鋼筋活板門 diff --git a/mods/xpanes/textures/xpanes_bar_top.png b/mods/xpanes/textures/xpanes_bar_top.png index 7b74508..2955d72 100644 Binary files a/mods/xpanes/textures/xpanes_bar_top.png and b/mods/xpanes/textures/xpanes_bar_top.png differ diff --git a/mods/xpanes/textures/xpanes_pane_half.png b/mods/xpanes/textures/xpanes_pane_half.png deleted file mode 100644 index 4e846df..0000000 Binary files a/mods/xpanes/textures/xpanes_pane_half.png and /dev/null differ diff --git a/mods/xpanes/textures/xpanes_space.png b/mods/xpanes/textures/xpanes_space.png deleted file mode 100644 index 331e365..0000000 Binary files a/mods/xpanes/textures/xpanes_space.png and /dev/null differ