summaryrefslogtreecommitdiff
path: root/lua/visual.lua
diff options
context:
space:
mode:
authorLNJ <git@lnj.li>2017-04-01 20:04:27 +0200
committerLNJ <git@lnj.li>2017-04-01 20:04:27 +0200
commit42206a1eca3991f3efed2c4c138d4e033a64c759 (patch)
tree62ddb7b9fecdf0120f9f3fbf822bb30dc3417e64 /lua/visual.lua
parenteaec8f74783b3672a18a4a0095994bf99aa9574e (diff)
Clean up visual.lua
Diffstat (limited to 'lua/visual.lua')
-rwxr-xr-xlua/visual.lua105
1 files changed, 56 insertions, 49 deletions
diff --git a/lua/visual.lua b/lua/visual.lua
index ccd3dd2..8f99e5e 100755
--- a/lua/visual.lua
+++ b/lua/visual.lua
@@ -77,9 +77,16 @@ core.register_entity("drawers:visual", {
colbox = {0, -0.4374, -0.4374, 0, 0.4374, 0.4374}
end
+ -- drawer values
+ local meta = core.get_meta(self.drawer_pos)
+ self.count = meta:get_int("count")
+ self.itemName = meta:get_string("name")
+ self.maxCount = meta:get_int("max_count")
+ self.itemStackMax = meta:get_int("base_stack_max")
+ self.stackMaxFactor = meta:get_int("stack_max_factor")
+
-- infotext
- local meta = core.get_meta(self.drawer_pos)
local infotext = meta:get_string("entity_infotext") .. "\n\n\n\n\n"
self.object:set_properties({
@@ -101,21 +108,19 @@ core.register_entity("drawers:visual", {
on_punch = function(self, puncher, time_from_last_punch, tool_capabilities, dir)
local meta = core.get_meta(self.drawer_pos)
- local count = meta:get_int("count")
- if count <= 0 then
+ if self.count <= 0 then
return
end
- local name = meta:get_string("name")
- local remove_count = 1
+ local removeCount = 1
if not puncher:get_player_control().sneak then
- remove_count = ItemStack(name):get_stack_max()
+ removeCount = ItemStack(self.itemName):get_stack_max()
end
- if remove_count > count then remove_count = count end
+ if removeCount > self.count then removeCount = self.count end
- local stack = ItemStack(name)
- stack:set_count(remove_count)
+ local stack = ItemStack(self.itemName)
+ stack:set_count(removeCount)
local inv = puncher:get_inventory()
if not inv:room_for_item("main", stack) then
@@ -123,25 +128,23 @@ core.register_entity("drawers:visual", {
end
inv:add_item("main", stack)
- count = count - remove_count
- meta:set_int("count", count)
+ self.count = self.count - removeCount
+ meta:set_int("count", self.count)
-- update infotext
- local stack_max_factor = meta:get_int("stack_max_factor")
- local base_stack_max = meta:get_int("base_stack_max")
- local item_description = ""
- if core.registered_items[name] then
- item_description = core.registered_items[name].description
+ local itemDescription = ""
+ if core.registered_items[self.itemName] then
+ itemDescription = core.registered_items[self.itemName].description
end
- if count <= 0 then
+ if self.count <= 0 then
meta:set_string("name", "")
self.texture = "drawers_empty.png"
- item_description = "Empty"
+ itemDescription = "Empty"
end
- local infotext = drawers.gen_info_text(item_description,
- count, stack_max_factor, base_stack_max)
+ local infotext = drawers.gen_info_text(itemDescription,
+ self.count, self.stackMaxFactor, self.itemStackMax)
meta:set_string("entity_infotext", infotext)
self.object:set_properties({
@@ -151,18 +154,9 @@ core.register_entity("drawers:visual", {
end,
try_insert_stack = function(self, itemstack, insert_stack)
- local node = core.get_node(self.drawer_pos)
local stackCount = itemstack:get_count()
local stackName = itemstack:get_name()
- local meta = core.get_meta(self.drawer_pos)
- local dName = meta:get_string("name")
- local dCount = meta:get_int("count")
- local dMaxCount = meta:get_int("max_count")
-
- local dStackMax = meta:get_int("base_stack_max")
- local dStackMaxFactor = meta:get_int("stack_max_factor")
-
-- if nothing to be added, return
if stackCount <= 0 then return itemstack end
-- if no itemstring, return
@@ -174,55 +168,68 @@ core.register_entity("drawers:visual", {
end
-- if current itemstring is not empty
- if dName ~= "" then
+ if self.itemName ~= "" then
-- check if same item
- if stackName ~= dName then return itemstack end
+ if stackName ~= self.itemName then return itemstack end
else -- is empty
- dName = stackName
- dCount = 0
+ self.itemName = stackName
+ self.count = 0
-- get new stack max
- dStackMax = ItemStack(dName):get_stack_max()
- dMaxCount = dStackMax * dStackMaxFactor
+ self.itemStackMax = ItemStack(self.itemName):get_stack_max()
+ self.maxCount = self.itemStackMax * self.stackMaxFactor
-- Don't add items stackable only to 1
- if dStackMax == 1 then
+ if self.itemStackMax == 1 then
return itemstack
end
-
- meta:set_string("name", stackName)
- meta:set_int("base_stack_max", dStackMax)
- meta:set_int("max_count", dStackMaxFactor)
end
-- set new counts:
-- if new count is more than max_count
- if (dCount + stackCount) > dMaxCount then
- dCount = dMaxCount
- itemstack:set_count((dCount + stackCount) - dMaxCount)
+ if (self.count + stackCount) > self.maxCount then
+ self.count = self.maxCount
+ itemstack:set_count((self.count + stackCount) - self.maxCount)
else -- new count fits
- dCount = dCount + stackCount
+ self.count = self.count + stackCount
-- this is for only removing one
itemstack:set_count(itemstack:get_count() - stackCount)
end
- -- set new drawer count
- meta:set_int("count", dCount)
+
+ -- get meta
+ local meta = core.get_meta(self.drawer_pos)
-- update infotext
- local infotext = drawers.gen_info_text(core.registered_items[dName].description,
- dCount, dStackMaxFactor, dStackMax)
+ local itemDescription
+ if core.registered_items[self.itemName] then
+ itemDescription = core.registered_items[self.itemName].description
+ else
+ itemDescription = "Empty"
+ end
+ local infotext = drawers.gen_info_text(itemDescription,
+ self.count, self.stackMaxFactor, self.itemStackMax)
meta:set_string("entity_infotext", infotext)
-- texture
- self.texture = drawers.get_inv_image(dName)
+ self.texture = drawers.get_inv_image(self.itemName)
self.object:set_properties({
infotext = infotext .. "\n\n\n\n\n",
textures = {self.texture}
})
+ self.saveMetaData(self, meta)
+
if itemstack:get_count() == 0 then itemstack = ItemStack("") end
return itemstack
+ end,
+
+ saveMetaData = function(self, meta)
+ meta:set_int("count", self.count)
+ meta:set_string("name", self.itemName)
+ meta:set_int("max_count", self.maxCount)
+ meta:set_int("base_stack_max", self.itemStackMax)
+ meta:set_int("stack_max_factor", self.stackMaxFactor)
end
})