diff options
author | TenPlus1 <kinsellaja@yahoo.com> | 2018-06-09 16:47:38 +0100 |
---|---|---|
committer | TenPlus1 <kinsellaja@yahoo.com> | 2018-06-09 16:47:38 +0100 |
commit | 6783670154386ae4a49ba689637fbf876349c42c (patch) | |
tree | acd0ac0f2c120febda3512db6c1a7a392031767f /hoebomb.lua | |
parent | aa6dc610cfd855dc2d7bf4b2d157f2e71c8fc688 (diff) |
tidy and tweak code
Diffstat (limited to 'hoebomb.lua')
-rw-r--r-- | hoebomb.lua | 142 |
1 files changed, 0 insertions, 142 deletions
diff --git a/hoebomb.lua b/hoebomb.lua deleted file mode 100644 index be8f828..0000000 --- a/hoebomb.lua +++ /dev/null @@ -1,142 +0,0 @@ - --- load support for intllib. -local MP = minetest.get_modpath(minetest.get_current_modname()) -local S, NS = dofile(MP.."/intllib.lua") - - --- hoe bomb function -local function hoe_area(pos, player) - - -- check for protection - if minetest.is_protected(pos, player:get_player_name()) then - minetest.record_protection_violation(pos, player:get_player_name()) - return - end - - local r = 5 -- radius - - -- remove flora (grass, flowers etc.) - local res = minetest.find_nodes_in_area( - {x = pos.x - r, y = pos.y - 1, z = pos.z - r}, - {x = pos.x + r, y = pos.y + 2, z = pos.z + r}, - {"group:flora"}) - - for n = 1, #res do - minetest.swap_node(res[n], {name = "air"}) - end - - -- replace dirt with tilled soil - res = nil - res = minetest.find_nodes_in_area_under_air( - {x = pos.x - r, y = pos.y - 1, z = pos.z - r}, - {x = pos.x + r, y = pos.y + 2, z = pos.z + r}, - {"group:soil"}) - - for n = 1, #res do - minetest.swap_node(res[n], {name = "farming:soil"}) - end -end - - --- throwable hoe bomb -minetest.register_entity("farming:hoebomb_entity", { - physical = true, - visual = "sprite", - visual_size = {x = 1.0, y = 1.0}, - textures = {"farming_hoe_bomb.png"}, - collisionbox = {0,0,0,0,0,0}, - lastpos = {}, - player = "", - - on_step = function(self, dtime) - - if not self.player then - - self.object:remove() - - return - end - - local pos = self.object:get_pos() - - if self.lastpos.x ~= nil then - - local vel = self.object:getvelocity() - - -- only when potion hits something physical - if vel.x == 0 - or vel.y == 0 - or vel.z == 0 then - - if self.player ~= "" then - - -- round up coords to fix glitching through doors - self.lastpos = vector.round(self.lastpos) - - hoe_area(self.lastpos, self.player) - end - - self.object:remove() - - return - - end - end - - self.lastpos = pos - end -}) - - --- actual throwing function -local function throw_potion(itemstack, player) - - local playerpos = player:get_pos() - - local obj = minetest.add_entity({ - x = playerpos.x, - y = playerpos.y + 1.5, - z = playerpos.z - }, "farming:hoebomb_entity") - - local dir = player:get_look_dir() - local velocity = 20 - - obj:setvelocity({ - x = dir.x * velocity, - y = dir.y * velocity, - z = dir.z * velocity - }) - - obj:setacceleration({ - x = dir.x * -3, - y = -9.5, - z = dir.z * -3 - }) - - obj:setyaw(player:get_look_yaw() + math.pi) - obj:get_luaentity().player = player -end - - --- hoe bomb item -minetest.register_craftitem("farming:hoe_bomb", { - description = S("Hoe Bomb (use or throw on grassy areas to hoe land"), - inventory_image = "farming_hoe_bomb.png", - groups = {flammable = 2, not_in_creative_inventory = 1}, - on_use = function(itemstack, user, pointed_thing) - - if pointed_thing.type == "node" then - hoe_area(pointed_thing.above, user) - else - throw_potion(itemstack, user) - - if not farming.is_creative(user:get_player_name()) then - - itemstack:take_item() - - return itemstack - end - end - end, -}) |