diff --git a/data/config.example.lua b/data/config.example.lua index cda111b..204d576 100644 --- a/data/config.example.lua +++ b/data/config.example.lua @@ -18,4 +18,9 @@ url = "" } }, + sounds = { + started = "minecraft:block.note_block.harp", + purchase = "minecraft:entity.villager.yes", + error = "minecraft:block.anvil.land" + } } diff --git a/src/backend.lua b/src/backend.lua index 71eaae7..681b6c0 100644 --- a/src/backend.lua +++ b/src/backend.lua @@ -2,6 +2,7 @@ local utils = require("/src/utils") local logger = require("/src/logger"):new({ debugging = true }) local webhooks = require("/src/webhook") +local speakerLib = require("/src/speaker") logger:info("Starting Kristify! Thanks for choosing Kristify. <3") logger:debug("Debugging mode is enabled!") @@ -20,9 +21,14 @@ storage.refreshStorage() logger:info("Chests indexed.") +local speaker = speakerLib:new({ + config = config +}) + -- TODO Make autofix if utils.endsWith(config.name, ".kst") then logger:error("The krist name that is configured contains `.kst`, which it should not.") + speaker:play("error") return end @@ -32,6 +38,8 @@ ws:subscribe("transactions") logger:info("Subscribed to transactions.") + speaker:play("started") + while true do local _, data = os.pullEvent("kristly") @@ -51,6 +59,7 @@ logger.info("No metaname found. Refunding.") kristly.makeTransaction(config.pkey, transaction.from, transaction.value, config.messages.noMetaname) + speaker:play("error") end end @@ -68,6 +77,7 @@ kristly.makeTransaction(config.pkey, transaction.from, transaction.value, config.messages.nonexistantItem) logger:debug("Item does not exist.") + speaker:play("error") return end @@ -76,6 +86,7 @@ logger:info("Not enogth money sent. Refunding.") kristly.makeTransaction(config.pkey, transaction.from, transaction.value, config.messages.notEnogthMoney) + speaker:play("error") return end @@ -91,6 +102,7 @@ logger:debug("Stock for " .. product.id .. " was " .. itemsInStock .. ", requested " .. amount) kristly.makeTransaction(config.pkey, transaction.from, amount * product.price, config.messages.notEnogthStock) + speaker:play("error") return end @@ -135,6 +147,8 @@ webhooks.googleChat(webhook.URL, message) end end + + speaker:play("purchase") end local function startKristly() diff --git a/src/speaker.lua b/src/speaker.lua new file mode 100644 index 0000000..a2e4245 --- /dev/null +++ b/src/speaker.lua @@ -0,0 +1,26 @@ +local speaker = {} + +function speaker:new(o) + o = o or {} -- create object if user does not provide one + setmetatable(o, self) + self.__index = self + return o +end + +---Plays sounds! +---@param event string The event that happend +function speaker:play(event) + if self.config.sounds[event] == nil then + return + end + + if #self.config.speakers == 0 then + return + end + + for _, sp in ipairs(self.config.speakers) do + pcall(peripheral.call(sp, "playSound", self.config.sounds[event])) + end +end + +return speaker