Post your screenshots!

ShadMOrdre
Member
 
Posts: 373
Joined: Mon Dec 29, 2014 08:07
Location: USA
GitHub: ShadMOrdre
In-game: shadmordre

Re: Post your screenshots!

by ShadMOrdre » Sat Jan 26, 2019 22:17

Soon to be released.

Image
Image

Crafting without formspecs. Inspired by Sokomine's Anvil mod, itemshelf, gramophone and others.

Turned out MC story mode uses this style as well, but had no influence or motivation towards the making of this mod.

This code, hacked from zorman2000s itemshelf mod, belongs within a WIP mod of mine, but I'll post here, in hopes that somone with better code skills can clean it up some, or better yet, give me direction to do this myself. There are still some issues as well, mainly, itemstacks are not handled properly ATM, so use only one item in a stack at a time for now.

Code: Select all
-- Item shelf for generic objects
-- Inventory overlay and blast code taken from vessels mod in MTG
-- All other code by Zorman2000

local function get_shelf_formspec(inv_size)
   return "size[8,8]"..
      default.gui_bg..
      default.gui_bg_img..
      default.gui_slots..

      --"list[context;main;"..(math.abs((inv_size / 2) - 8) / 2)..",0.25;"..(inv_size / 2)..",2;]"..
      "list[context;input;"..(math.abs((inv_size / 2) - 8) / 2)..",0.25;3,3;]"..
      "list[current_player;main;0,3.75;8,1;]"..
      "list[current_player;main;0,5;8,3;8]"..
      "listring[context;main]"..
      "listring[current_player;main]"
end

local temp_texture
local temp_size

local temp_slot

local function get_obj_dir(param2)
   return ((param2 + 1) % 4)
end

local function update_shelf(pos)
   -- Remove all objects
   local objs = minetest.get_objects_inside_radius(pos, 0.875)
   for _,obj in pairs(objs) do
      obj:remove()
   end
   
   -- if not slot then
      -- slot = temp_slot
   -- end

   local node = minetest.get_node(pos)
   local node_dir = minetest.facedir_to_dir(((node.param2 + 2) % 4))
   --local node_dir = minetest.facedir_to_dir(((node.param2) % 4))
   --local node_dir = minetest.facedir_to_dir(((node.param2 + 2)))
   local obj_dir = minetest.facedir_to_dir(get_obj_dir(node.param2))
   local max_shown_items = minetest.get_item_group(node.name, "itemshelf_shown_items")

   -- Calculate initial position for entities
   -- local start_pos = {
   --    x=pos.x - (0.25 * obj_dir.x) - (node_dir.x * 0.25),
   --    y=pos.y + 0.25,
   --    z=pos.z - (0.25 * obj_dir.z) - (node_dir.z * 0.25)
   -- }
   --x = Left,Right;     y = Down/Up;     z = Front/Back;     (axis = neg/pos)
   -- How the below works: Following is a top view of a node
   --                              | +z (N) 0
   --                              |
   --                ------------------------
   --                |           |          |
   --                |           |          |
   --                |           |          |
   --     -x (W) 3     |           | (0,0)    |      +x (E) 1
   --     -------------|-----------+----------|--------------
   --                |           |          |
   --                |           |          |
   --                |           |          |
   --                |           |          |
   --                ------------------------
   --                             |
   --                         | -z (S) 2

   -- From the picture above, your front could be at either -z, -z, x or z.
   -- To get the entity closer to the front, you need to add a certain amount
   -- (e.g. 0.25) to the x and z coordinates, and then multiply these by the
   -- the node direction (which is a vector pointing outwards of the node face).
   -- Therefore, start_pos is:
   --local displacement = 0.715
   --local displacement = 0.555   
   local displacement = 0.555
   if max_shown_items == 6 then
      displacement = 0.555
   end
   local start_pos = {
      x=pos.x - (obj_dir.x * displacement) + (node_dir.x * 0.25),
      --y=pos.y + 0.2375,
      y=pos.y + 0.5625,
      z=pos.z - (obj_dir.z * displacement) + (node_dir.z * 0.25)
   }
   -- local start_pos = {
      -- x=pos.x - (obj_dir.x) + (node_dir.x * 0.25),
      -- y=pos.y + 0.5625,
      -- z=pos.z - (obj_dir.z) + (node_dir.z * 0.25)
   -- }

   -- Calculate amount of objects in the inventory
   local inv = minetest.get_meta(pos):get_inventory()
   local list = inv:get_list("input")
   local obj_count = 0
   for key,itemstack in pairs(list) do
      if not itemstack:is_empty() then
         obj_count = obj_count + 1
      end
   end
   minetest.log("Found "..dump(obj_count).." items on shelf inventory")
   if obj_count > 0 then
      local shown_items = math.min(#list, max_shown_items)
      for i = 1, shown_items do
         --local i = temp_slot
         local overhead = i
         if i > (shown_items / 3) then
            overhead = i - (shown_items / 3)
         end
         -- if i == ((shown_items / 2) + 1) then
            -- --start_pos.y = start_pos.y - 0.5125
            -- start_pos.z = start_pos.z + 0.2775
         -- end
         -- --local addition = 0.475
         local addition = 0.2775
         -- if shown_items == 6 then
            -- addition = 0.2775
         -- end
         if i == 1 then
            start_pos.x = pos.x - 0.3125
            start_pos.y = pos.y + 0.5625
            start_pos.z = pos.z + 0.3125
         end
         if i == 2 then
            start_pos.x = pos.x
            start_pos.y = pos.y + 0.5625
            start_pos.z = pos.z + 0.3125
         end
         if i == 3 then
            start_pos.x = pos.x + 0.3125
            start_pos.y = pos.y + 0.5625
            start_pos.z = pos.z + 0.3125
         end
         if i == 4 then
            -- start_pos.z = start_pos.z + 0.2775
            
            start_pos.x = pos.x - 0.3125
            start_pos.y = pos.y + 0.5625
            start_pos.z = pos.z
         end
         if i == 5 then
            start_pos.x = pos.x
            start_pos.y = pos.y + 0.5625
            start_pos.z = pos.z
         end
         if i == 6 then
            start_pos.x = pos.x + 0.3125
            start_pos.y = pos.y + 0.5625
            start_pos.z = pos.z
         end
         if i == 7 then
            -- --start_pos.x = start_pos.x - (obj_dir.x * displacement) + (node_dir.x * 0.25)
            -- start_pos.x = start_pos.x - (obj_dir.x * displacement) - ((obj_dir.x * displacement) / 2)
            -- start_pos.z = start_pos.z + 0.2775
            
            start_pos.x = pos.x - 0.3125
            start_pos.y = pos.y + 0.5625
            start_pos.z = pos.z - 0.3125
         end
         if i == 8 then
            start_pos.x = pos.x
            start_pos.y = pos.y + 0.5625
            start_pos.z = pos.z - 0.3125
         end
         if i == 9 then
            start_pos.x = pos.x + 0.3125
            start_pos.y = pos.y + 0.5625
            start_pos.z = pos.z - 0.3125
         end
         -- local obj_pos = {
            -- x=start_pos.x + (addition * overhead * obj_dir.x), --- (node_dir.z * overhead * 0.25),
            -- y=start_pos.y,
            -- z=start_pos.z + (addition * overhead * obj_dir.z) --- (node_dir.x * overhead * 0.25),
         -- }
         local obj_pos = {
            x=start_pos.x,
            y=start_pos.y,
            z=start_pos.z,
         }

         if not list[i]:is_empty() then
            minetest.log("Adding item entity at "..minetest.pos_to_string(obj_pos))
            temp_texture = list[i]:get_name()
            temp_size = 0.8/max_shown_items
            minetest.log("Size: "..dump(temp_size))
            local ent = minetest.add_entity(obj_pos, "lib_tools:draft_table_item")
            ent:set_properties({
               wield_item = temp_texture,
               visual_size = {x = 0.8/max_shown_items, y = 0.8/max_shown_items}
            })
         end
      end
   end

end

draft_table = {}

-- Definable properties:
--   - description
--   - textures (if drawtype is nodebox)
--   - nodebox (like default minetest.register_node def)
--   - mesh (like default minetest.register_node def)
--   - item capacity (how many items will fit into the shelf, use even numbers, max 16)
--   - shown_items (how many items to show, will always show first (shown_items/2) items of each row, max 6)
function lib_tools.register_shelf(name, def)
   local drawtype = "nodebox"
   if def.mesh then
      drawtype = "mesh"
   end
   minetest.register_node("lib_tools:"..name, {
      description = def.description,
      tiles = def.textures,
      paramtype = "light",
      paramtype2 = "facedir",
      drawtype = drawtype,
      node_box = def.nodebox,
      mesh = def.mesh,
      groups = {cracky = 2, itemshelves = 1, itemshelf_shown_items = def.shown_items or 4},
      
      on_construct = function(pos)
         -- Initialize inventory
         local meta = minetest.get_meta(pos)
         local inv = meta:get_inventory()
          inv:set_size("input", def.capacity or 4)
          -- Initialize formspec
          --meta:set_string("formspec", get_shelf_formspec(def.capacity or 4))
      end,

      after_place_node = function(pos, placer)
         local meta = minetest.get_meta(pos)
         meta:set_string("owner", placer:get_player_name() or "")
      end,

      on_metadata_inventory_put = update_shelf,
      on_metadata_inventory_take = update_shelf,
      
      allow_metadata_inventory_put = function(pos, listname, index, stack, player)
         local meta = minetest.get_meta(pos)
         if listname~="input" then
            return 0
         end
         --    if minetest.get_item_group(stack:get_name(), "music_disc") ~= 0 then
         --       return stack:get_count()
         --    end
         --    return 0
         if meta:get_inventory():room_for_item("input", stack) then
            return stack:get_count()
         end
         return 0
      end,

      allow_metadata_inventory_take = function(pos, listname, index, stack, player)
         if listname~="input" then
            return 0
         end
         return stack:get_count()
      end,
      
      can_dig = function(pos,player)
         local meta  = minetest.get_meta(pos)
         local inv   = meta:get_inventory()
      
         if not inv:is_empty("input") then
            return false
         end
         return true
      end,

      on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
      
         local inv_index = 0
      
         local user_name=clicker:get_player_name()
         local normal,p = place_rotated.get_point(pointed_thing.above,pointed_thing.under,clicker)

         
         if p then
            minetest.chat_send_player(user_name,"Position within node:")
            minetest.chat_send_player(user_name,"X: "..p.x)
            minetest.chat_send_player(user_name,"Y: "..p.y)
            minetest.chat_send_player(user_name,"Z: "..p.z)
            
            if ((p.x >= -0.4375 and p.z >= 0.1875) and (p.x <= -0.1875 and p.z <= 0.4375)) then
            
               inv_index = 1
               minetest.chat_send_player(user_name,"inv_index: "..tostring(inv_index))
               
            elseif ((p.x >= -0.125 and p.z >= 0.1875) and (p.x <= 0.125 and p.z <= 0.4375)) then
            
               inv_index = 2
               minetest.chat_send_player(user_name,"inv_index: "..tostring(inv_index))
               
            elseif ((p.x >= 0.1875 and p.z >= 0.1875) and (p.x <= 0.4375 and p.z <= 0.4375)) then
            
               inv_index = 3
               minetest.chat_send_player(user_name,"inv_index: "..tostring(inv_index))
               
            elseif ((p.x >= -0.4375 and p.z >= -0.125) and (p.x <= -0.1875 and p.z <= 0.125)) then
            
               inv_index = 4
               minetest.chat_send_player(user_name,"inv_index: "..tostring(inv_index))
               
            elseif ((p.x >= -0.125 and p.z >= -0.125) and (p.x <= 0.125 and p.z <= 0.125)) then
            
               inv_index = 5
               minetest.chat_send_player(user_name,"inv_index: "..tostring(inv_index))
               
            elseif ((p.x >= 0.1875 and p.z >= -0.125) and (p.x <= 0.4375 and p.z <= 0.125)) then
            
               inv_index = 6
               minetest.chat_send_player(user_name,"inv_index: "..tostring(inv_index))
               
            elseif ((p.x >= -0.4375 and p.z >= -0.4375) and (p.x <= -0.1875 and p.z <= -0.1875)) then
            
               inv_index = 7
               minetest.chat_send_player(user_name,"inv_index: "..tostring(inv_index))
               
            elseif ((p.x >= -0.125 and p.z >= -0.4375) and (p.x <= 0.125 and p.z <= -0.1875)) then
            
               inv_index = 8
               minetest.chat_send_player(user_name,"inv_index: "..tostring(inv_index))
               
            elseif ((p.x >= 0.1875 and p.z >= -0.4375) and (p.x <= 0.4375 and p.z <= -0.1875)) then
            
               inv_index = 9
               minetest.chat_send_player(user_name,"inv_index: "..tostring(inv_index))
               
            end
         else
            minetest.chat_send_player(user_name,"Could not get point")
         end

         temp_slot = inv_index
         local meta = minetest.get_meta(pos)
         local inv = meta:get_inventory()

         if inv_index ~= 0 then
            if itemstack:get_count() == 0 then
               if not inv:is_empty("input") then
                  local return_stack = inv:get_stack("input", inv_index)
                  inv:set_stack("input", inv_index, nil)
                  local wield_index = clicker:get_wield_index()
                  clicker:get_inventory():set_stack("main", wield_index, return_stack)
                  --remove_item(pos, node)
                  update_shelf(pos)
                  return return_stack
               end      
            end
            local this_def = minetest.registered_nodes[node.name]
            if this_def.allow_metadata_inventory_put(pos, "input", inv_index, itemstack:peek_item(), clicker) > 0 then
               local return_stack = inv:get_stack("input", inv_index)
               
               local p_ctrl = clicker:get_player_control()
               local s
               if p_ctrl.sneak then
                  s = itemstack:take_item()
               else
                  s = itemstack:take_item(1)
               end
               --inv:add_item("input", s)
               inv:set_stack("input", inv_index, s)
               --update_item(pos,node)
               update_shelf(pos)
               return return_stack
            end
         else
            if not inv:is_empty("input") then
               local craft_recipe = {
                  method = "normal",
                  width = 3,
                  items = {
                     inv:get_stack("input", 1),
                     inv:get_stack("input", 2),
                     inv:get_stack("input", 3),
                     inv:get_stack("input", 4),
                     inv:get_stack("input", 5),
                     inv:get_stack("input", 6),
                     inv:get_stack("input", 7),
                     inv:get_stack("input", 8),
                     inv:get_stack("input", 9)
                  }
               }

               local craft_out, dec_inp = minetest.get_craft_result(craft_recipe)
               
               if craft_out.item:get_name() ~= "" then
                  minetest.chat_send_player(user_name, "craft_out.item:  " .. craft_out.item:get_name())
                  local t_pos = {
                     x = pos.x,
                     y = pos.y + 0.5625,
                     z = pos.z
                  }
                  inv:set_stack("input", 1, nil)
                  inv:set_stack("input", 2, nil)
                  inv:set_stack("input", 3, nil)
                  inv:set_stack("input", 4, nil)
                  inv:set_stack("input", 5, nil)
                  inv:set_stack("input", 6, nil)
                  inv:set_stack("input", 7, nil)
                  inv:set_stack("input", 8, nil)
                  inv:set_stack("input", 9, nil)
                  update_shelf(pos)
                  minetest.add_item(t_pos, craft_out.item:take_item())
                  -- local co = craft_out.item:take_item()
                  -- return co
                  return
               else
                  return itemstack
               end
            else
               return itemstack
            end
         end
      end,

      on_punch = function(pos, node, puncher)
         if( not( pos ) or not( node ) or not( puncher )) then
            return
         end

         local wielded = puncher:get_wielded_item()
         local meta = minetest.get_meta(pos)
         local inv  = meta:get_inventory()
         
         if wielded:get_count() == 0 then
            if not inv:is_empty("input") then
               local return_stack = inv:get_stack("input", 1)
               inv:set_stack("input", 1, nil)
               local wield_index = puncher:get_wield_index()
               puncher:get_inventory():set_stack("main", wield_index, return_stack)
               --remove_item(pos, node)
               update_shelf(pos)
            end      
         end
         
         -- -- only punching with the hammer is supposed to work
         -- if wielded:get_name() ~= 'lib_tools:anvil_hammer' then
            -- return
         -- end
         
         local input = inv:get_stack('input',1)
      
         -- -- only tools can be repaired
         -- if( not( input )
         -- or input:is_empty()
               -- or input:get_name() == "technic:water_can"
               -- or input:get_name() == "technic:lava_can" ) then
            -- return
         -- end
      
         -- -- 65535 is max damage
         -- local damage_state = 40-math.floor(input:get_wear()/1638)
      
         -- local tool_name = input:get_name()

         -- local hud2 = nil
         -- local hud3 = nil
         -- if( input:get_wear()>0 ) then
            -- hud2 = puncher:hud_add({
               -- hud_elem_type = "statbar",
               -- text = "default_cloud.png^[colorize:#ff0000:256",
               -- number = 40,
               -- direction = 0, -- left to right
               -- position = {x=0.5, y=0.65},
               -- alignment = {x = 0, y = 0},
               -- offset = {x = -320, y = 0},
               -- size = {x=32, y=32},
            -- })
            -- hud3 = puncher:hud_add({
               -- hud_elem_type = "statbar",
               -- text = "default_cloud.png^[colorize:#00ff00:256",
               -- number = damage_state,
               -- direction = 0, -- left to right
               -- position = {x=0.5, y=0.65},
               -- alignment = {x = 0, y = 0},
               -- offset = {x = -320, y = 0},
               -- size = {x=32, y=32},
            -- })
         -- end
         -- minetest.after(2, function()
            -- if( puncher ) then
               -- puncher:hud_remove(hud2)
               -- puncher:hud_remove(hud3)
            -- end
         -- end)
      
         -- -- tell the player when the job is done
         -- if(   input:get_wear() == 0 ) then
            -- local tool_desc
            -- if minetest.registered_items[tool_name] and minetest.registered_items[tool_name].description then
               -- tool_desc = minetest.registered_items[tool_name].description
            -- else
               -- tool_desc = tool_name
            -- end
            -- minetest.chat_send_player( puncher:get_player_name(), S('Your @1 has been repaired successfully.', tool_desc))
            -- return
         -- else
            -- --pos.y = pos.y + anvil_item_displacement
            -- pos.y = pos.y + 7/16
            -- minetest.sound_play({name="anvil_clang"}, {pos=pos})
            -- minetest.add_particlespawner({
               -- amount = 10,
               -- time = 0.1,
               -- minpos = pos,
               -- maxpos = pos,
               -- minvel = {x=2, y=3, z=2},
               -- maxvel = {x=-2, y=1, z=-2},
               -- minacc = {x=0, y= -10, z=0},
               -- maxacc = {x=0, y= -10, z=0},
               -- minexptime = 0.5,
               -- maxexptime = 1,
               -- minsize = 1,
               -- maxsize = 1,
               -- collisiondetection = true,
               -- vertical = false,
               -- texture = "anvil_spark.png",
            -- })
         -- end
      
         -- -- do the actual repair
         -- input:add_wear( -5000 ) -- equals to what technic toolshop does in 5 seconds
         -- inv:set_stack("input", 1, input)
      
         -- -- damage the hammer slightly
         -- wielded:add_wear( 100 )
         -- puncher:set_wielded_item( wielded )
      end,

      on_dig = function(pos, node, digger)
         -- Clear any object disc
         local objs = minetest.get_objects_inside_radius(pos, 0.7)
         for _,obj in pairs(objs) do
            obj:remove()
         end
         -- Pop-up disc if existing
         local meta = minetest.get_meta(pos)
         local list = meta:get_inventory():get_list("input")
         if list then
            for _,item in pairs(list) do
               local drop_pos = {
                  x=math.random(pos.x - 0.5, pos.x + 0.5),
                  y=pos.y,
                  z=math.random(pos.z - 0.5, pos.z + 0.5)}
               minetest.add_item(pos, item:get_name())
            end
         end
         -- Remove node
         minetest.remove_node(pos)
      end,
      
      on_blast = function(pos)
         local drops = {}
         default.get_inventory_drops(pos, "lib_tools:draft_table", drops)
         drops[#drops + 1] = "lib_tools:draft_table"
         minetest.remove_node(pos)
         return drops
      end
   })
end

-- Entity for shelf
minetest.register_entity("lib_tools:draft_table_item", {
   hp_max = 1,
   visual = "wielditem",
   visual_size = {x = 0.20, y = 0.20},
   collisionbox = {0,0,0, 0,0,0},
   physical = false,
   on_activate = function(self, staticdata)
      -- Staticdata
      local data = {}
      if staticdata ~= nil and staticdata ~= "" then
         local cols = string.split(staticdata, "|")
         data["itemstring"] = cols[1]
         data["visualsize"] = tonumber(cols[2])
      end

      -- Texture
      if temp_texture ~= nil then
         -- Set texture from temp
         self.itemstring = temp_texture
         temp_texture = nil
      elseif staticdata ~= nil and staticdata ~= "" then
         -- Set texture from static data
         self.itemstring = data.itemstring
      end
      -- Set texture if available
      if self.itemstring ~= nil then
         self.wield_item = self.itemstring
      end
      
      -- Visual size
      if temp_size ~= nil then
         self.visualsize = temp_size
         temp_size = nil
      elseif staticdata ~= nil and staticdata ~= "" then
         self.visualsize = data.visualsize
      end
      -- Set visual size if available
      if self.visualsize ~= nil then
         self.visual_size = {x=self.visualsize, y=self.visualsize}
      end

      -- Set object properties
      self.object:set_properties(self)
      
   end,
   get_staticdata = function(self)
      local result = ""
      if self.itemstring ~= nil then
         result = self.itemstring.."|"
      end
      if self.visualsize ~= nil then
         result = result..self.visualsize
      end
      return result
   end,
})

local default_table = {
   type = "fixed",
   fixed = {
      {-0.5, 0.375, -0.5, 0.5, 0.5, 0.5}, -- NodeBox1
      {-0.375, -0.5, -0.375, -0.25, 0.375, -0.25}, -- NodeBox3
      {0.25, -0.5, -0.375, 0.375, 0.375, -0.25}, -- NodeBox5
      {-0.375, -0.5, 0.25, -0.25, 0.375, 0.375}, -- NodeBox6
      {0.25, -0.5, 0.25, 0.375, 0.375, 0.375}, -- NodeBox7
      {-0.3125, -0.125, -0.3125, 0.3125, -0.0625, 0.3125}, -- NodeBox8
   }
}



lib_tools.register_shelf("draft_table", {
   description = "Drafting Table (For crafting)",
   textures = {
      "lib_tools_draft_table_top.png",
      "worktable_side.png",
      "worktable_side.png",
      "worktable_side.png",
      "worktable_side.png",
      "worktable_front.png",
   },
   nodebox = default_table,
   capacity = 9,
   shown_items = 9
})




Shad
Attachments
screenshot_20190126_134223.jpg
(248.29 KiB) Not downloaded yet
screenshot_20190126_112201.jpg
(257.98 KiB) Not downloaded yet
MY MODS: lib_ecology lib_materials lib_clouds lib_node_shapes ---- Inspired By: Open Source Virtual World Simulator Opensimulator.
 

User avatar
PEAK
Member
 
Posts: 144
Joined: Mon Jun 08, 2015 20:32
In-game: PEAK

My Vacations in Ethereal Valleys

by PEAK » Sun Jan 27, 2019 00:06

… just a photo album

+ Spoiler
I am okay with using the screenshots in all my posts for the website of Minetest (http://minetest.net).
 

Sokomine
Member
 
Posts: 3785
Joined: Sun Sep 09, 2012 17:31
GitHub: Sokomine

Re: Post your screenshots!

by Sokomine » Sun Jan 27, 2019 01:37

PEAK wrote:Little village

Where does the railtrack start that leads to that village? It seems to be a great place for a relaxed holliday.
A list of my mods can be found here.
 

User avatar
IcyDiamond
Member
 
Posts: 131
Joined: Fri Mar 30, 2018 08:55
Location: Estonia
GitHub: LunaSquee
IRC: IcyDiamond
In-game: IcyDiamond

Re: Post your screenshots!

by IcyDiamond » Sun Jan 27, 2019 18:05

This one looks like a naturally generated wizard's tower.
Image
Web developer | Minetest modder | Systems Administrator | Donate
Mods - elepower | melterns | towny
 

User avatar
PEAK
Member
 
Posts: 144
Joined: Mon Jun 08, 2015 20:32
In-game: PEAK

Re: Post your screenshots!

by PEAK » Mon Jan 28, 2019 03:42

Sokomine wrote:Where does the railtrack start that leads to that village?

Who knows…
Image
Sokomine wrote:It seems to be a great place for a relaxed holliday.

I tried to create atmosphere by letting only little space between the houses.
Last edited by PEAK on Mon Jan 28, 2019 14:19, edited 1 time in total.
I am okay with using the screenshots in all my posts for the website of Minetest (http://minetest.net).
 

User avatar
Superuser
Member
 
Posts: 11
Joined: Thu Jan 10, 2019 01:37
In-game: Superuser

Re: Post your screenshots!

by Superuser » Mon Jan 28, 2019 06:44

A realm I found around -20000 on Blocky Survival.
Image
I play on blocky survival server
All images on this site are free to use.
 

User avatar
Superuser
Member
 
Posts: 11
Joined: Thu Jan 10, 2019 01:37
In-game: Superuser

Re: Post your screenshots!

by Superuser » Mon Jan 28, 2019 23:46

sorcerykid wrote:Profiles allow users to build a personalized homepage, to describe themselves, their interests, etc. with access to the complete Bedrock Markup Language (currently used in the signs_rx mod) -- which has been extended to with support for embedded images, hyperlinks, and dynamic variables.

that's something that I would be excited to see
I play on blocky survival server
All images on this site are free to use.
 

User avatar
Hume2
Member
 
Posts: 280
Joined: Tue Jun 19, 2018 08:24
Location: Czech Republic
GitHub: Hume2
In-game: Hume2

Re: Post your screenshots!

by Hume2 » Tue Jan 29, 2019 10:23

I was experimenting with mapgen again. I was on a large plain and then I found a big hole. And then I found another one next to it. And then I didn't find any other.
PS: It's modified v7.
Image
Image
Attachments
screenshot_20190129_110840.jpg
(136.54 KiB) Not downloaded yet
screenshot_20190129_110750.jpg
(116.47 KiB) Not downloaded yet
If you lack the reality, go on a trip or find a job.
 

User avatar
voxelproof
Member
 
Posts: 837
Joined: Sat Aug 05, 2017 08:13
Location: Europe

Re: Post your screenshots!

by voxelproof » Wed Jan 30, 2019 13:58

For those who suffer from harsh winter conditions:

Image

Of course such summer idyll is possible only in Heaven. Or Minetest.
Attachments
summertime1.png
(634.32 KiB) Not downloaded yet
>>>there is life beyond the Cube>>>
 

User avatar
sorcerykid
Member
 
Posts: 1061
Joined: Fri Aug 26, 2016 15:36
Location: Illinois, USA
GitHub: sorcerykid
In-game: Nemo

Re: Post your screenshots!

by sorcerykid » Wed Jan 30, 2019 14:48

Toying around with my new image rendering library for Minetest :) To my knowledge this is the first attempt to dynamically generate bitmap and raster images in formspecs (without having to restart the server and preload textures at login). This workaround takes advantage of a unique "feature" of formspec text labels -- without relying on hundreds of box or image elements.

Currently, it is possible to import PPM images from disk as well as to draw primitive vector graphics (circle, line, etc.) into a newly initialized image. There are three rasterizer modes available, which support 1-bit and 2-bit grayscale images. True-color images are down-converted automatically, with optional depth and gamma parameters. I'm still working on adding support for RGB color output.

Imagen Graphic Rasterizer:
Image

Orignial PNG Image:
Image

Imagen Picture Rasterizer:
Image

Original PNG Image:
Image

Imagen Artwork Rasterizer:
Image

There is a slight interlacing effect with the "artwork" (line art) rasterizer, due to the fact Minetest renders text with shadows. I haven't found a suitable fix. However, these artifacts can be overcome somewhat by using the "picture" (photo) rasterizer instead. However graphical text will be slightly blurrier in this mode (although I'm still tweaking the parameters).

Altogether, the renderer is decently fast, clocking in at about 13 ms for a 500 x 250 bitmap. My main impetus for creating Imagen is so that players can share screenshots and drawings directly in game and eventually between different servers.
 

User avatar
texmex
Member
 
Posts: 1414
Joined: Mon Jul 11, 2016 21:08
GitHub: tacotexmex
In-game: texmex
 

User avatar
Hybrid Dog
Member
 
Posts: 2718
Joined: Thu Nov 01, 2012 12:46

Re: Post your screenshots!

by Hybrid Dog » Fri Feb 01, 2019 18:27

How can you make all the small pixels by only using text?

‮‪‮
‮‪‮
‮‪‮
‮‪‮
‮‪‮
‮‪‮
‮‪‮
‮‪‮
‮‪
 

Sokomine
Member
 
Posts: 3785
Joined: Sun Sep 09, 2012 17:31
GitHub: Sokomine

Re: Post your screenshots!

by Sokomine » Fri Feb 01, 2019 20:42

Hostile mobs of the NNSM (not so simple mobs) on the Not so simple server work pretty well, even when attacking in large masses:
Image

There are many decorative structures that spawn at mapgen time and which contai mob spawners. Those of manticores and blocos are particulary nice. This is the home of the famous ice boss. Even such large structures spawn pretty well most of the time:
Image

Manticores in love:
Image
Attachments
manticores_in_love.jpg
(90.98 KiB) Not downloaded yet
ice_boss_place.jpg
(191.7 KiB) Not downloaded yet
they_want_to_eat_you.jpg
(306.17 KiB) Not downloaded yet
A list of my mods can be found here.
 

User avatar
Wuzzy
Member
 
Posts: 3410
Joined: Mon Sep 24, 2012 15:01
GitHub: Wuzzy2
IRC: Wuzzy
In-game: Wuzzy

Termos' texture experiment

by Wuzzy » Fri Feb 01, 2019 21:28

Image
My creations. I gladly accept bitcoins: 17fsUywHxeMHKG41UFfu34F1rAxZcrVoqH
 

User avatar
Lone_Wolf
Member
 
Posts: 2160
Joined: Sun Apr 09, 2017 05:50
Location: Hopefully very far from yours, snoop :P
GitHub: LoneWolfHT
IRC: Lone_Wolf
In-game: Lone_Wolf

Re: Termos' texture experiment

by Lone_Wolf » Fri Feb 01, 2019 22:12

Wuzzy wrote:Image

That looks a lot better. Assuming the darker grass there has yet to be changed...
 

User avatar
voxelproof
Member
 
Posts: 837
Joined: Sat Aug 05, 2017 08:13
Location: Europe

Re: Post your screenshots!

by voxelproof » Fri Feb 01, 2019 23:14

Sokomine wrote:Manticores in love:


Rather mantes. Looks as if one of them will be soon devoured.

_____________________________________________________________

Playing around with that strange mod:

Image
Ultimate Peacemaker

Schematics will be uploaded as soon as I've completed the mod.
Attachments
flower_power.png
(396.8 KiB) Not downloaded yet
>>>there is life beyond the Cube>>>
 

User avatar
sorcerykid
Member
 
Posts: 1061
Joined: Fri Aug 26, 2016 15:36
Location: Illinois, USA
GitHub: sorcerykid
In-game: Nemo

Re: Post your screenshots!

by sorcerykid » Sat Feb 02, 2019 02:28

I just finished work on a brand new trophy mod, at the request of a player on JT2 that is soon to be holding a PvP tournament. I borrowed the model from VenessaE's HomeDecor modpack, then added about 200 lines of code to make trophies truly come to life :D

Image

Image

Image

The inscription information is retained in the node meta and the item meta. So once it is set by the presenter, then the trophy can placed, dug, dropped, and even stored in a chest, and it will always be associated with the winner.
 

User avatar
Lone_Wolf
Member
 
Posts: 2160
Joined: Sun Apr 09, 2017 05:50
Location: Hopefully very far from yours, snoop :P
GitHub: LoneWolfHT
IRC: Lone_Wolf
In-game: Lone_Wolf

Re: Post your screenshots!

by Lone_Wolf » Sat Feb 02, 2019 03:31

sorcerykid wrote:
+ Post

Nice
Maybe add support for 1st, 2nd, and 3rd places?
 

User avatar
Chibi ghost
Member
 
Posts: 820
Joined: Fri Jan 08, 2016 21:17
In-game: Ghost
 

User avatar
Lone_Wolf
Member
 
Posts: 2160
Joined: Sun Apr 09, 2017 05:50
Location: Hopefully very far from yours, snoop :P
GitHub: LoneWolfHT
IRC: Lone_Wolf
In-game: Lone_Wolf

Re: Post your screenshots!

by Lone_Wolf » Sun Feb 03, 2019 05:30

Minetest 5.0 Carpathian (Something sticking down the top middle. I need to take screenshots properly)
Image
 

User avatar
Chibi ghost
Member
 
Posts: 820
Joined: Fri Jan 08, 2016 21:17
In-game: Ghost
 

User avatar
voxelproof
Member
 
Posts: 837
Joined: Sat Aug 05, 2017 08:13
Location: Europe

Re: Post your screenshots!

by voxelproof » Sun Feb 03, 2019 10:58

Lone_Wolf wrote:Minetest 5.0 Carpathian (Something sticking down the top middle. I need to take screenshots properly)


Screenshot is very good. Btw interesting map generation seems to lurk behind this scene. On my laptop taking a decent shot requires usually doing a lot of flying to erase all gaps in terrain generation, so, well, even in games with apparently simple graphics obtaining desired results also needs some time.
_______________________________________________________________________________________

A little more ambitious attempt in 'voxel' art: re-creating "The Great Wave off Kanagawa" by Hokusai.
Despite I've chosen a simplified version of this world-famous print, cubic grid with proper node palette seems to add a lot of expression to the picture:

Image

The schematics will be uploaded in its horizontal version (as depicted above) -- the lighting reveals all colours properly, otherwise when it's put vertically the framing of the voxel picture casts a shadow, changing the look. It's of course up to the future users how they'd prefer to have this art displayed, its darker (horizontal) version seems to be somewhat yet more eerie:

Image

This creation as well as the former one ("Peace") has been made using Real Terrain by bobomb and my own custom palette mod.

Of course I'm aware that, technically speaking, this is not a 'true' voxel art; voxels, like pixels, have no textures and can represent only one colour. It should be probably better called a "cubic art" or "block art", something like that.
Attachments
Kanagawa2.png
(484.54 KiB) Not downloaded yet
Kanagawa.jpg
(64.51 KiB) Not downloaded yet
>>>there is life beyond the Cube>>>
 

User avatar
Chibi ghost
Member
 
Posts: 820
Joined: Fri Jan 08, 2016 21:17
In-game: Ghost

Re: Post your screenshots!

by Chibi ghost » Sun Feb 03, 2019 11:41

it's a very cool example of what two mods combined can do
 

User avatar
voxelproof
Member
 
Posts: 837
Joined: Sat Aug 05, 2017 08:13
Location: Europe

Re: Post your screenshots!

by voxelproof » Mon Feb 04, 2019 09:19

Chibi ghost wrote:it's a very cool example of what two mods combined can do


Another shot (slightly brightened and sharpened):

Image

Actually the hippie-psychedelic palette I used in both schematics is great for pop-art creations (and making voxel ads perhaps ;) ). However it's also possible to undertake more serious effort to reflect deeper layers of artistic expression. I've noticed that it's possible to re-create old masterpieces of painting giving them an even more convincing charge of aesthetic value, and revealing new dimension of well known artworks. It's strange, but, perhaps, sometimes it can be even better than the original as far as a viewer's experience is concerned.

This is re-creation of Bruegel's "Tower of Babel" made with Real Terrain and my Tapestry palette mod. The picture needs only 14 custom textures to achieve very interesting effect:

Image

Closeup of the canvas:

Image
Attachments
babel2.png
(320.57 KiB) Not downloaded yet
babel.png
(155.81 KiB) Not downloaded yet
Kanagawa3.png
(393.18 KiB) Not downloaded yet
Last edited by voxelproof on Mon Feb 04, 2019 12:57, edited 1 time in total.
>>>there is life beyond the Cube>>>
 

User avatar
Wuzzy
Member
 
Posts: 3410
Joined: Mon Sep 24, 2012 15:01
GitHub: Wuzzy2
IRC: Wuzzy
In-game: Wuzzy

Re: Post your screenshots!

by Wuzzy » Mon Feb 04, 2019 11:49

Image
My creations. I gladly accept bitcoins: 17fsUywHxeMHKG41UFfu34F1rAxZcrVoqH
 

PreviousNext

Return to General Discussion



Who is online

Users browsing this forum: No registered users and 1 guest