From fe61c644253ecbf882c18d259eff6166f11ca440 Mon Sep 17 00:00:00 2001 From: oilboi <47129783+oilboi@users.noreply.github.com> Date: Sun, 5 Jul 2020 09:55:56 -0400 Subject: [PATCH] Add in prototype furnace engine --- mods/minecart/init.lua | 85 +++++++++++++++++++++++++++++++++++++----- 1 file changed, 76 insertions(+), 9 deletions(-) diff --git a/mods/minecart/init.lua b/mods/minecart/init.lua index a87d530..670fce6 100644 --- a/mods/minecart/init.lua +++ b/mods/minecart/init.lua @@ -304,15 +304,60 @@ minecart.on_step = function(self,dtime) end else rail_brain(self,pos) - collision_detect(self) + --collision_detect(self) end end + +minecart.on_punch = function(self, puncher) + if not puncher:get_wielded_item():get_name() == "minecart:wrench" then + return + end + if self.furnace then + self.object:set_velocity(vector.multiply(self.dir,6)) + minetest.add_particlespawner({ + amount = 30, + time = 0, + minpos = vector.new(0,0.5,0), + maxpos = vector.new(0,0.5,0), + minvel = vector.new(0,0,0), + maxvel = vector.new(0,0,0), + minacc = {x=0, y=3, z=0}, + maxacc = {x=0, y=5, z=0}, + minexptime = 1.1, + maxexptime = 1.5, + minsize = 1, + maxsize = 2, + collisiondetection = false, + collision_removal = false, + vertical = false, + texture = "smoke.png", + attached = self.object + }) + end + +end + + minecart.on_rightclick = function(self,clicker) + local pos = self.object:get_pos() + if clicker:get_wielded_item():get_name() == "utility:furnace" then + local obj = minetest.add_entity(pos, "minecart:furnace") + obj:set_attach(self.object,"",vector.new(0,0,0),vector.new(0,0,0)) + minetest.sound_play("wrench",{ + object = self.object, + gain = 1.0, + max_hear_distance = 64, + }) + coupling_particles(pos,true) + self.furnace = true + return + end + if not clicker:get_wielded_item():get_name() == "minecart:wrench" then return end - local pos = self.object:get_pos() + local name = clicker:get_player_name() if not pool[name] then if not self.coupler2 then @@ -385,12 +430,6 @@ minecart.initial_properties = { textures = {"minecart.png"}, } - -minecart.on_punch = function(self,puncher, time_from_last_punch, tool_capabilities, dir, damage) - --local obj = minetest.add_item(self.object:getpos(), "minecart:minecart") - --self.object:remove() -end - minetest.register_entity("minecart:minecart", minecart) @@ -505,4 +544,32 @@ minetest.register_craft({ {"main:iron", "main:lapis", "main:iron"}, {"", "main:lapis", ""} } -}) \ No newline at end of file +}) + + + +minetest.register_entity("minecart:furnace", { + initial_properties = { + visual = "wielditem", + visual_size = {x = 0.6, y = 0.6}, + textures = {}, + physical = true, + is_visible = false, + collide_with_objects = false, + pointable=false, + collisionbox = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, + }, + set_node = function(self) + self.object:set_properties({ + is_visible = true, + textures = {"utility:furnace"}, + }) + end, + + + on_activate = function(self, staticdata) + self.object:set_armor_groups({immortal = 1}) + + self:set_node() + end, +}) -- 2.44.0