3 Commit-ok 9130b43ef8 ... aa399a6ef9

Szerző SHA1 Üzenet Dátum
  tenplus1 aa399a6ef9 shrink driver when riding horse to fit model 3 éve
  tenplus1 23ab8bddbd set lasso capture chance 100% 3 éve
  tenplus1 decb1c384c redo saddles and add overlay 3 éve
3 módosított fájl, 38 hozzáadás és 26 törlés
  1. 34 26
      init.lua
  2. 4 0
      readme.md
  3. BIN
      textures/mobs_saddle_overlay.png

+ 34 - 26
init.lua

@@ -77,6 +77,7 @@ mobs:register_mob("mob_horse:horse", {
 			self.terrain_type = 3
 			self.terrain_type = 3
 			self.driver_attach_at = {x = 0, y = y_off, z = -2}
 			self.driver_attach_at = {x = 0, y = y_off, z = -2}
 			self.driver_eye_offset = {x = 0, y = 3, z = 0}
 			self.driver_eye_offset = {x = 0, y = 3, z = 0}
+			self.driver_scale = {x = 0.8, y = 0.8} -- shrink driver to fit model
 		end
 		end
 
 
 		-- if driver present allow control of horse
 		-- if driver present allow control of horse
@@ -92,22 +93,20 @@ mobs:register_mob("mob_horse:horse", {
 
 
 	on_die = function(self, pos)
 	on_die = function(self, pos)
 
 
-		-- drop saddle when horse is killed while riding
-		-- also detach from horse properly
+		-- detach player from horse properly
 		if self.driver then
 		if self.driver then
-
-			minetest.add_item(pos, "mobs:saddle")
-
 			mobs.detach(self.driver, {x = 1, y = 0, z = 1})
 			mobs.detach(self.driver, {x = 1, y = 0, z = 1})
+		end
 
 
-			self.saddle = nil
+		-- drop saddle if found
+		if self.saddle then
+			minetest.add_item(pos, "mobs:saddle")
 		end
 		end
 
 
 		-- drop any horseshoes added
 		-- drop any horseshoes added
 		if self.shoed then
 		if self.shoed then
 			minetest.add_item(pos, self.shoed)
 			minetest.add_item(pos, self.shoed)
 		end
 		end
-
 	end,
 	end,
 
 
 	do_punch = function(self, hitter)
 	do_punch = function(self, hitter)
@@ -149,29 +148,27 @@ mobs:register_mob("mob_horse:horse", {
 
 
 				mobs.detach(clicker, {x = 1, y = 0, z = 1})
 				mobs.detach(clicker, {x = 1, y = 0, z = 1})
 
 
-				-- add saddle back to inventory
-				if inv:room_for_item("main", "mobs:saddle") then
-					inv:add_item("main", "mobs:saddle")
-				else
-					minetest.add_item(clicker:get_pos(), "mobs:saddle")
-				end
-
-				self.saddle = nil
+				return
+			end
 
 
-			-- attach player to horse
-			elseif (not self.driver and not self.child
-			and clicker:get_wielded_item():get_name() == "mobs:saddle")
-			or self.saddle then
+			-- attach saddle to horse
+			if not self.driver
+			and not self.child
+			and clicker:get_wielded_item():get_name() == "mobs:saddle"
+			and not self.saddle then
 
 
+				self.saddle = true
+				self.order = "stand"
 				self.object:set_properties({stepheight = 1.1})
 				self.object:set_properties({stepheight = 1.1})
-				mobs.attach(self, clicker)
 
 
 				-- take saddle from inventory
 				-- take saddle from inventory
-				if not self.saddle then
-					inv:remove_item("main", "mobs:saddle")
-				end
+				inv:remove_item("main", "mobs:saddle")
 
 
-				self.saddle = true
+				self.texture_mods = self.texture_mods .. "^mobs_saddle_overlay.png"
+
+				self.object:set_texture_mod(self.texture_mods)
+
+				return
 			end
 			end
 
 
 			-- apply horseshoes
 			-- apply horseshoes
@@ -196,6 +193,12 @@ mobs:register_mob("mob_horse:horse", {
 				-- apply horseshoe overlay to current horse texture
 				-- apply horseshoe overlay to current horse texture
 				if overlay then
 				if overlay then
 					self.texture_mods = "^" .. overlay
 					self.texture_mods = "^" .. overlay
+
+					if self.saddle then
+						self.texture_mods = self.texture_mods
+							.. "^mobs_saddle_overlay.png"
+					end
+
 					self.object:set_texture_mod(self.texture_mods)
 					self.object:set_texture_mod(self.texture_mods)
 				end
 				end
 
 
@@ -215,8 +218,13 @@ mobs:register_mob("mob_horse:horse", {
 		end
 		end
 
 
 		-- used to capture horse with magic lasso
 		-- used to capture horse with magic lasso
-		mobs:capture_mob(self, clicker, 0, 0, 80, false, nil)
-	end,
+		if mobs:capture_mob(self, clicker, nil, nil, 100, false, nil) then return end
+
+		-- ride horse if saddled
+		if self.saddle and self.owner == player_name then
+			mobs.attach(self, clicker)
+		end
+	end
 })
 })
 
 
 mobs:spawn({
 mobs:spawn({

+ 4 - 0
readme.md

@@ -8,6 +8,10 @@ There are three different horse textures (white, brown, black) which will spawn
 Horses can be tamed with 10x wheat, apple, barley, oats of corn which then allows the player to pick up the horse using a lasso and ride by right-clicking with a saddle.
 Horses can be tamed with 10x wheat, apple, barley, oats of corn which then allows the player to pick up the horse using a lasso and ride by right-clicking with a saddle.
 
 
 ---
 ---
+### Saddle
+Right clicking a horse with a saddle equips it and the horse will be ordered to stand still until you wish to ride.
+
+---
 ### Horseshoes
 ### Horseshoes
 Horseshoes can be crafted using steel, bronze, mese, diamond and crystal (4x ingots - 2 down either side with 1x block top middle) and placed on a horse by right clicking with the item.  These can make horses run faster or jump higher while riding depending on tier.
 Horseshoes can be crafted using steel, bronze, mese, diamond and crystal (4x ingots - 2 down either side with 1x block top middle) and placed on a horse by right clicking with the item.  These can make horses run faster or jump higher while riding depending on tier.
 
 

BIN
textures/mobs_saddle_overlay.png