Advertisement
Guest User

mobspawner.lua

a guest
Jun 18th, 2018
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.48 KB | None | 0 0
  1. local component = require("component")
  2. local term = require("term")
  3. local sides = require("sides")
  4. local transposer = component.transposer
  5. local redstone = component.redstone
  6.  
  7. local GUI = require("GUI")
  8.  
  9. local duplicator = sides.south
  10. local chest = sides.up
  11. local rsOnoff = sides.up
  12.  
  13. local mobs = {}
  14. local dupMob = ""
  15. local lastSlot = ""
  16.  
  17. duplicatorState = "off"
  18.  
  19. redstone.setOutput(rsOnoff, 0)
  20.  
  21. function printTable(table)
  22.     for k, v in pairs(table) do
  23.         print(k, v)
  24.     end
  25. end
  26.  
  27. function mysplit(inputstr, sep)
  28.         if sep == nil then
  29.                 sep = "%s"
  30.         end
  31.         local t={} ; i=1
  32.         for str in string.gmatch(inputstr, "([^"..sep.."]+)") do
  33.                 t[i] = str
  34.                 i = i + 1
  35.         end
  36.         return t
  37. end
  38.  
  39. function getMob(label)
  40.   label = mysplit(label, "(")
  41.   label = mysplit(label[2], ")")
  42.   return label[1]
  43. end
  44.  
  45. print(transposer.getInventoryName(chest))
  46.  
  47. function loadChest()
  48.   mobs = {}
  49.   local items = transposer.getAllStacks(chest)
  50.  
  51.   for i=1, items.count() do
  52.     if items[i].name ~= "minecraft:air" then
  53.       local mob = getMob(items[i].label)
  54.       mobs[mob] = {}
  55.       mobs[mob]["Name"] = mob
  56.       mobs[mob]["Slot"] = i
  57.     end
  58.   end
  59.   lastSlot = items.count()
  60. end
  61.  
  62. function loadDup()
  63.   local dupItems = transposer.getAllStacks(duplicator)
  64.   for i=1, dupItems.count() do
  65.     if dupItems[i].name == "industrialforegoing:mob_imprisonment_tool" then
  66.       dupMob = getMob(dupItems[i].label)
  67.       -- print("Slot ID: " .. i)
  68.       -- os.execute("sleep 5")
  69.     end
  70.   end
  71. end
  72.  
  73. loadChest()
  74. loadDup()
  75.  
  76. local mainContainer = GUI.fullScreenContainer()
  77. mainContainer:addChild(GUI.panel(1, 1, mainContainer.width, mainContainer.height, 0x2D2D2D))
  78.  
  79. mainContainer:addChild(GUI.text(3, 2, 0xFFFFFF, "Mob in Spawner: "))
  80. if dupMob == "" then
  81.   dupMob = "None"
  82. end
  83. local labelMob = mainContainer:addChild(GUI.text(20, 2, 0xFF0000, dupMob))
  84.  
  85. mainContainer:addChild(GUI.text(3, 4, 0xFFFFFF, "Load Mob"))
  86.  
  87. local moblist = mainContainer:addChild(GUI.comboBox(3, 5, 25, 3, 0xEEEEEE, 0x2D2D2D, 0xCCCCCC, 0x888888))
  88. --for k,v in pairs(mobs) do
  89. --  moblist:addItem(v["Name"]).onTouch = changeMob(v)
  90. --end
  91.  
  92. function changeMob(mob)
  93.     local selMob = moblist:getItem(moblist.selectedItem)
  94.     --GUI.alert("Mob: " .. selMob.text .. "wird geladen!")
  95.     transposer.transferItem(duplicator, chest, 1, 7, lastSlot)
  96.     transposer.transferItem(chest, duplicator, 1, mob["Slot"], 7)
  97.     transposer.transferItem(chest, chest, 1, lastSlot, mob["Slot"])
  98.     loadChest()
  99.     loadDup()
  100.     labelMob.text = dupMob
  101.     reloadMoblist()
  102.     -- MobData
  103.     mainContainer:drawOnScreen()
  104. end
  105.  
  106. function reloadMoblist()
  107.   moblist:clear()
  108.   for k, v in pairs(mobs) do
  109.     moblist:addItem(v["Name"]).onTouch = function() changeMob(v) end
  110.   end
  111. end
  112.  
  113. reloadMoblist()
  114.  
  115. mainContainer:drawOnScreen()
  116.  
  117. mainContainer:addChild(GUI.text(55, 2, 0xFFFFFF, "Spawner ON / OFF"))
  118. local onoff = mainContainer:addChild(GUI.button(50, 4, 30, 10, 0xFF0000, 0x000000, 0x00FF00, 0x000000, "OFF"))
  119. onoff.switchMode = true
  120. onoff.onTouch = function ()
  121.   if duplicatorState == "off" then
  122.     redstone.setOutput(rsOnoff, 15)
  123.     onoff.text = "ON"
  124.     duplicatorState = "on"
  125.   else
  126.     redstone.setOutput(rsOnoff, 0)
  127.     onoff.text = "OFF"
  128.     duplicatorState = "off"
  129.   end
  130. end
  131. mainContainer:drawOnScreen()
  132.  
  133. local exit = mainContainer:addChild(GUI.button(mainContainer.width-3, mainContainer.height, 4, 1, 0xFFFFFF, 0x555555, 0x880000, 0xFFFFFF, "Exit"))
  134. exit.onTouch = function()
  135.     os.exit()
  136. end
  137.  
  138. mainContainer:drawOnScreen(true)
  139. mainContainer:startEventHandling()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement