text: IDRegistry.genBlockID("machineManaStorage");
  Block.createBlock("machineManaStorage", [{
      name: "Mana Storage", texture: [
          ["altar_top", 0],
          ["altar_top", 0],
          ["mana_storage", 0],
          ["mana_storage", 0],
          ["mana_storage", 0],
          ["mana_storage", 0]
      ], inCreative: true
  }], "opaque");
  
  Callback.addCallback("PostLoaded", function () {
      Recipes.addShaped({ id: BlockID.machineManaStorage, count: 1, data: 0 }, [
          "aaa",
          "aca",
          "aaa"
      ], ['a', ItemID.dustMana, -1, 'b', BlockID.runeEmpty, 0]);
  });
  
  var UIScreenManaStorage = new UI.StandartWindow({
      standart: {
          header: { text: { text: Translation.translate("Mana Storage") } },
          inventory: { standart: true },
          background: { standart: true }
      },
  
      drawing: [
          { type: "bitmap", x: 350, y: 50, bitmap: "liquid_ground", scale: 2.6 },
      ],
  
      elements: {
          "liquidScale": { type: "scale", x: 350, y: 50, bitmap: "liquid_mana", direction: 1, scale: 2.6 },
          "slotSource": { type: "slot", x: 520, y: 200, size: 85 }
      }
  });
  
  Tile.registerPrototype(BlockID.machineManaStorage, {
      getGuiScreen: function () {
          return UIScreenManaStorage;
      },
      getTransportSlots: function () {
          return { input: ["slotSource"] };
      },
      getManaStorage: function () {
          return 10000;
      },
      canReceiveEnergy: function (side, type) {
          return true;
      },
      canExtractEnergy: function (side, type) {
          return true;
      },
      tick: function () {
          var energyStorage = this.getEnergyStorage();
          this.container.setScale("liquidScale", this.data.energy / energyStorage);
          this.data.energy -= ChargeItemRegistry.addEnergyTo(this.container.getSlot("slotSource"), "Mana", 20, this.data.energy);
      }
  });